@alife-sdk/ai 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +150 -47
- package/dist/combat/CombatTransitionChain.d.ts +1 -3
- package/dist/combat/CombatTransitionChain.d.ts.map +1 -1
- package/dist/combat/CombatTransitionChain.js +1 -6
- package/dist/combat/CombatTransitionChain.js.map +1 -1
- package/dist/combat/LoadoutBuilder.js +1 -1
- package/dist/combat/LoadoutBuilder.js.map +1 -1
- package/dist/cover/CoverAccessAdapter.js +1 -1
- package/dist/cover/CoverAccessAdapter.js.map +1 -1
- package/dist/cover/CoverEvaluators.d.ts.map +1 -1
- package/dist/cover/CoverEvaluators.js +20 -13
- package/dist/cover/CoverEvaluators.js.map +1 -1
- package/dist/cover/CoverLockRegistry.d.ts.map +1 -1
- package/dist/cover/CoverLockRegistry.js +1 -0
- package/dist/cover/CoverLockRegistry.js.map +1 -1
- package/dist/cover/CoverRegistry.d.ts +2 -1
- package/dist/cover/CoverRegistry.d.ts.map +1 -1
- package/dist/cover/CoverRegistry.js +4 -3
- package/dist/cover/CoverRegistry.js.map +1 -1
- package/dist/goap/GOAPController.d.ts.map +1 -1
- package/dist/goap/GOAPController.js +21 -3
- package/dist/goap/GOAPController.js.map +1 -1
- package/dist/goap/GOAPDirector.d.ts +89 -0
- package/dist/goap/GOAPDirector.d.ts.map +1 -0
- package/dist/goap/GOAPDirector.js +142 -0
- package/dist/goap/GOAPDirector.js.map +1 -0
- package/dist/goap/GoalSelector.d.ts +1 -1
- package/dist/goap/GoalSelector.d.ts.map +1 -1
- package/dist/goap/GoalSelector.js +27 -2
- package/dist/goap/GoalSelector.js.map +1 -1
- package/dist/goap/WorldStateBuilder.js +2 -2
- package/dist/goap/WorldStateBuilder.js.map +1 -1
- package/dist/goap/index.d.ts +2 -0
- package/dist/goap/index.d.ts.map +1 -1
- package/dist/goap/index.js +1 -0
- package/dist/goap/index.js.map +1 -1
- package/dist/navigation/PathSmoother.d.ts.map +1 -1
- package/dist/navigation/PathSmoother.js +7 -2
- package/dist/navigation/PathSmoother.js.map +1 -1
- package/dist/navigation/RestrictedZoneManager.d.ts +10 -1
- package/dist/navigation/RestrictedZoneManager.d.ts.map +1 -1
- package/dist/navigation/RestrictedZoneManager.js +14 -3
- package/dist/navigation/RestrictedZoneManager.js.map +1 -1
- package/dist/navigation/SmoothPathFollower.d.ts +3 -0
- package/dist/navigation/SmoothPathFollower.d.ts.map +1 -1
- package/dist/navigation/SmoothPathFollower.js +8 -5
- package/dist/navigation/SmoothPathFollower.js.map +1 -1
- package/dist/perception/NPCSensors.d.ts +6 -6
- package/dist/perception/NPCSensors.d.ts.map +1 -1
- package/dist/perception/NPCSensors.js +6 -6
- package/dist/perception/NPCSensors.js.map +1 -1
- package/dist/perception/PerceptionQuery.d.ts +1 -5
- package/dist/perception/PerceptionQuery.d.ts.map +1 -1
- package/dist/perception/PerceptionQuery.js +2 -9
- package/dist/perception/PerceptionQuery.js.map +1 -1
- package/dist/states/INPCContext.d.ts +64 -0
- package/dist/states/INPCContext.d.ts.map +1 -1
- package/dist/states/INPCOnlineState.d.ts +64 -12
- package/dist/states/INPCOnlineState.d.ts.map +1 -1
- package/dist/states/IStateConfig.d.ts +22 -4
- package/dist/states/IStateConfig.d.ts.map +1 -1
- package/dist/states/IStateConfig.js +4 -2
- package/dist/states/IStateConfig.js.map +1 -1
- package/dist/states/IStateTransitionMap.d.ts +1 -0
- package/dist/states/IStateTransitionMap.d.ts.map +1 -1
- package/dist/states/IStateTransitionMap.js +1 -0
- package/dist/states/IStateTransitionMap.js.map +1 -1
- package/dist/states/NPCOnlineState.d.ts.map +1 -1
- package/dist/states/NPCOnlineState.js +8 -5
- package/dist/states/NPCOnlineState.js.map +1 -1
- package/dist/states/OnlineAIDriver.d.ts +34 -0
- package/dist/states/OnlineAIDriver.d.ts.map +1 -1
- package/dist/states/OnlineAIDriver.js +49 -0
- package/dist/states/OnlineAIDriver.js.map +1 -1
- package/dist/states/handlers/AlertState.d.ts.map +1 -1
- package/dist/states/handlers/AlertState.js +0 -1
- package/dist/states/handlers/AlertState.js.map +1 -1
- package/dist/states/handlers/CampState.js +5 -5
- package/dist/states/handlers/CampState.js.map +1 -1
- package/dist/states/handlers/ChargeState.d.ts.map +1 -1
- package/dist/states/handlers/ChargeState.js +14 -6
- package/dist/states/handlers/ChargeState.js.map +1 -1
- package/dist/states/handlers/CombatState.d.ts +1 -1
- package/dist/states/handlers/CombatState.d.ts.map +1 -1
- package/dist/states/handlers/CombatState.js +16 -7
- package/dist/states/handlers/CombatState.js.map +1 -1
- package/dist/states/handlers/CombatTransitionHandler.d.ts +8 -1
- package/dist/states/handlers/CombatTransitionHandler.d.ts.map +1 -1
- package/dist/states/handlers/CombatTransitionHandler.js +18 -4
- package/dist/states/handlers/CombatTransitionHandler.js.map +1 -1
- package/dist/states/handlers/DeadState.d.ts.map +1 -1
- package/dist/states/handlers/DeadState.js +0 -3
- package/dist/states/handlers/DeadState.js.map +1 -1
- package/dist/states/handlers/EvadeGrenadeState.d.ts +1 -1
- package/dist/states/handlers/EvadeGrenadeState.d.ts.map +1 -1
- package/dist/states/handlers/EvadeGrenadeState.js +8 -17
- package/dist/states/handlers/EvadeGrenadeState.js.map +1 -1
- package/dist/states/handlers/FleeState.d.ts.map +1 -1
- package/dist/states/handlers/FleeState.js +34 -5
- package/dist/states/handlers/FleeState.js.map +1 -1
- package/dist/states/handlers/IdleState.d.ts.map +1 -1
- package/dist/states/handlers/IdleState.js +16 -6
- package/dist/states/handlers/IdleState.js.map +1 -1
- package/dist/states/handlers/KillWoundedState.d.ts.map +1 -1
- package/dist/states/handlers/KillWoundedState.js +14 -0
- package/dist/states/handlers/KillWoundedState.js.map +1 -1
- package/dist/states/handlers/PatrolState.d.ts.map +1 -1
- package/dist/states/handlers/PatrolState.js +10 -0
- package/dist/states/handlers/PatrolState.js.map +1 -1
- package/dist/states/handlers/RetreatState.d.ts.map +1 -1
- package/dist/states/handlers/RetreatState.js +19 -9
- package/dist/states/handlers/RetreatState.js.map +1 -1
- package/dist/states/handlers/SleepState.d.ts.map +1 -1
- package/dist/states/handlers/SleepState.js +9 -12
- package/dist/states/handlers/SleepState.js.map +1 -1
- package/dist/states/handlers/StalkState.js +2 -2
- package/dist/states/handlers/TakeCoverState.d.ts.map +1 -1
- package/dist/states/handlers/TakeCoverState.js +6 -13
- package/dist/states/handlers/TakeCoverState.js.map +1 -1
- package/dist/states/handlers/WoundedState.d.ts.map +1 -1
- package/dist/states/handlers/WoundedState.js +4 -3
- package/dist/states/handlers/WoundedState.js.map +1 -1
- package/dist/states/handlers/_utils.d.ts +23 -0
- package/dist/states/handlers/_utils.d.ts.map +1 -1
- package/dist/states/handlers/_utils.js +52 -3
- package/dist/states/handlers/_utils.js.map +1 -1
- package/dist/states/index.d.ts +1 -1
- package/dist/states/index.d.ts.map +1 -1
- package/dist/states/index.js.map +1 -1
- package/dist/suspicion/SuspicionAccumulator.d.ts +6 -5
- package/dist/suspicion/SuspicionAccumulator.d.ts.map +1 -1
- package/dist/suspicion/SuspicionAccumulator.js +7 -6
- package/dist/suspicion/SuspicionAccumulator.js.map +1 -1
- package/dist/types/ICoverPoint.d.ts +6 -0
- package/dist/types/ICoverPoint.d.ts.map +1 -1
- package/dist/types/ICoverPoint.js.map +1 -1
- package/dist/types/IPerceptionTypes.d.ts +27 -4
- package/dist/types/IPerceptionTypes.d.ts.map +1 -1
- package/dist/types/IPerceptionTypes.js +9 -4
- package/dist/types/IPerceptionTypes.js.map +1 -1
- package/package.json +3 -3
|
@@ -36,7 +36,7 @@ export interface IMovementConfig {
|
|
|
36
36
|
/** Melee attack range (px) for monster close-combat states. */
|
|
37
37
|
meleeRange: number;
|
|
38
38
|
/** Distance at which a bloodsucker uncloaks for the melee strike (px). */
|
|
39
|
-
|
|
39
|
+
stalkUncloakDistance: number;
|
|
40
40
|
/** Interval (ms) between restricted-zone position checks. */
|
|
41
41
|
restrictedZoneCheckIntervalMs: number;
|
|
42
42
|
/**
|
|
@@ -68,7 +68,7 @@ export interface ICombatConfig {
|
|
|
68
68
|
bulletDamage: number;
|
|
69
69
|
/** Fraction of max HP restored by a single medkit use. */
|
|
70
70
|
medkitHealRatio: number;
|
|
71
|
-
/**
|
|
71
|
+
/** Minimum cooldown (ms) between successive medkit uses. */
|
|
72
72
|
medkitUseDurationMs: number;
|
|
73
73
|
/**
|
|
74
74
|
* HP ratio below which a visible enemy is considered "wounded" and may trigger
|
|
@@ -83,6 +83,12 @@ export interface ICombatConfig {
|
|
|
83
83
|
* @default 80
|
|
84
84
|
*/
|
|
85
85
|
killWoundedExecuteRange: number;
|
|
86
|
+
/**
|
|
87
|
+
* Minimum interval (ms) between successive cover-seek transitions in CombatState.
|
|
88
|
+
* Prevents ping-pong between COMBAT and TakeCoverState on consecutive frames.
|
|
89
|
+
* @default 3000
|
|
90
|
+
*/
|
|
91
|
+
coverSeekCooldownMs: number;
|
|
86
92
|
}
|
|
87
93
|
/**
|
|
88
94
|
* Monster-specific melee, ability, and lair parameters.
|
|
@@ -99,6 +105,13 @@ export interface IMonsterConfig {
|
|
|
99
105
|
meleeCooldownMs: number;
|
|
100
106
|
/** Wind-up phase duration (ms) before boar starts charging. */
|
|
101
107
|
chargeWindupMs: number;
|
|
108
|
+
/**
|
|
109
|
+
* Maximum time (ms) the boar may spend in the CHARGING phase before the
|
|
110
|
+
* charge is aborted. Prevents infinite charges when the locked target is
|
|
111
|
+
* unreachable (e.g. blocked by a wall).
|
|
112
|
+
* @default 3000
|
|
113
|
+
*/
|
|
114
|
+
chargeTimeoutMs: number;
|
|
102
115
|
/** Wind-up phase duration (ms) before a snork leaps. */
|
|
103
116
|
leapWindupMs: number;
|
|
104
117
|
/** Airborne phase duration (ms) for the snork leap. */
|
|
@@ -113,8 +126,6 @@ export interface IMonsterConfig {
|
|
|
113
126
|
outerRadius: number;
|
|
114
127
|
/** Alpha while fully invisible during stalk approach. */
|
|
115
128
|
stalkAlphaInvisible: number;
|
|
116
|
-
/** Alpha shimmer while moving during stalk approach. */
|
|
117
|
-
stalkAlphaShimmer: number;
|
|
118
129
|
}
|
|
119
130
|
/**
|
|
120
131
|
* Timeouts, durations, and periodic intervals that drive state timing.
|
|
@@ -214,6 +225,13 @@ export interface ITimingConfig {
|
|
|
214
225
|
* @default 1000
|
|
215
226
|
*/
|
|
216
227
|
killWoundedPauseMs: number;
|
|
228
|
+
/**
|
|
229
|
+
* How long (ms) the NPC sprints away from a grenade before checking whether
|
|
230
|
+
* to return to COMBAT or SEARCH. Long enough to clear a typical blast radius
|
|
231
|
+
* at sprint speed.
|
|
232
|
+
* @default 2000
|
|
233
|
+
*/
|
|
234
|
+
evadeGrenadeDurationMs: number;
|
|
217
235
|
/**
|
|
218
236
|
* Minimum interval (ms) between outgoing pack broadcasts from MonsterCombatController.
|
|
219
237
|
* Prevents saturating the host's pack record with per-frame writes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IStateConfig.d.ts","sourceRoot":"","sources":["../../src/states/IStateConfig.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAMpE;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAK9B,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;IAEtB,0DAA0D;IAC1D,mBAAmB,EAAE,MAAM,CAAC;IAE5B,mEAAmE;IACnE,mBAAmB,EAAE,MAAM,CAAC;IAE5B,wDAAwD;IACxD,sBAAsB,EAAE,MAAM,CAAC;IAE/B,mDAAmD;IACnD,oBAAoB,EAAE,MAAM,CAAC;IAE7B,iDAAiD;IACjD,qBAAqB,EAAE,MAAM,CAAC;IAE9B,uDAAuD;IACvD,oBAAoB,EAAE,MAAM,CAAC;IAM7B,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAC;IAExB,0DAA0D;IAC1D,uBAAuB,EAAE,MAAM,CAAC;IAEhC,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IAEpB,kFAAkF;IAClF,YAAY,EAAE,MAAM,CAAC;IAErB,sFAAsF;IACtF,iBAAiB,EAAE,MAAM,CAAC;IAE1B,mEAAmE;IACnE,qBAAqB,EAAE,MAAM,CAAC;IAE9B,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IAEnB,0EAA0E;IAC1E,oBAAoB,EAAE,MAAM,CAAC;IAE7B,6DAA6D;IAC7D,6BAA6B,EAAE,MAAM,CAAC;IAEtC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CAC9C;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAK5B,6DAA6D;IAC7D,kBAAkB,EAAE,MAAM,CAAC;IAM3B,wEAAwE;IACxE,sBAAsB,EAAE,MAAM,CAAC;IAE/B,wEAAwE;IACxE,oBAAoB,EAAE,MAAM,CAAC;IAM7B,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,eAAe,EAAE,MAAM,CAAC;IAMxB,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IAErB,0DAA0D;IAC1D,eAAe,EAAE,MAAM,CAAC;IAExB,
|
|
1
|
+
{"version":3,"file":"IStateConfig.d.ts","sourceRoot":"","sources":["../../src/states/IStateConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ export function createDefaultStateConfig(overrides) {
|
|
|
33
33
|
evadeSafeDistance: 200,
|
|
34
34
|
woundedLastStandRange: 100,
|
|
35
35
|
meleeRange: 48,
|
|
36
|
-
|
|
36
|
+
stalkUncloakDistance: 80,
|
|
37
37
|
restrictedZoneCheckIntervalMs: 1000,
|
|
38
38
|
// -----------------------------------------------------------------------
|
|
39
39
|
// ICombatConfig
|
|
@@ -48,6 +48,7 @@ export function createDefaultStateConfig(overrides) {
|
|
|
48
48
|
medkitUseDurationMs: 3000,
|
|
49
49
|
killWoundedEnemyHpThreshold: 0.25,
|
|
50
50
|
killWoundedExecuteRange: 80,
|
|
51
|
+
coverSeekCooldownMs: 3000,
|
|
51
52
|
// -----------------------------------------------------------------------
|
|
52
53
|
// IMonsterConfig
|
|
53
54
|
// -----------------------------------------------------------------------
|
|
@@ -55,6 +56,7 @@ export function createDefaultStateConfig(overrides) {
|
|
|
55
56
|
chargeDamageMultiplier: 2.0,
|
|
56
57
|
meleeCooldownMs: 1000,
|
|
57
58
|
chargeWindupMs: 600,
|
|
59
|
+
chargeTimeoutMs: 3000,
|
|
58
60
|
leapWindupMs: 400,
|
|
59
61
|
leapAirtimeMs: 350,
|
|
60
62
|
psiChannelMs: 2000,
|
|
@@ -62,7 +64,6 @@ export function createDefaultStateConfig(overrides) {
|
|
|
62
64
|
patrolRadius: 180,
|
|
63
65
|
outerRadius: 350,
|
|
64
66
|
stalkAlphaInvisible: 0.08,
|
|
65
|
-
stalkAlphaShimmer: 0.3,
|
|
66
67
|
// -----------------------------------------------------------------------
|
|
67
68
|
// ITimingConfig
|
|
68
69
|
// -----------------------------------------------------------------------
|
|
@@ -87,6 +88,7 @@ export function createDefaultStateConfig(overrides) {
|
|
|
87
88
|
killWoundedTauntMs: 1200,
|
|
88
89
|
killWoundedBurstCount: 3,
|
|
89
90
|
killWoundedPauseMs: 1000,
|
|
91
|
+
evadeGrenadeDurationMs: 2000,
|
|
90
92
|
packAlertIntervalMs: 500,
|
|
91
93
|
packAlertTtlMs: 5000,
|
|
92
94
|
loopholeWaitMinMs: 1500,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IStateConfig.js","sourceRoot":"","sources":["../../src/states/IStateConfig.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,+DAA+D;AAC/D,oEAAoE;AACpE,6CAA6C;
|
|
1
|
+
{"version":3,"file":"IStateConfig.js","sourceRoot":"","sources":["../../src/states/IStateConfig.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,+DAA+D;AAC/D,oEAAoE;AACpE,6CAA6C;AA4Z7C,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,SAAiC;IAEjC,OAAO;QACL,0EAA0E;QAC1E,kBAAkB;QAClB,0EAA0E;QAC1E,aAAa,EAAE,GAAG;QAClB,mBAAmB,EAAE,GAAG;QACxB,mBAAmB,EAAE,GAAG;QACxB,sBAAsB,EAAE,GAAG;QAC3B,oBAAoB,EAAE,GAAG;QACzB,qBAAqB,EAAE,GAAG;QAC1B,oBAAoB,EAAE,GAAG;QAEzB,eAAe,EAAE,EAAE;QACnB,uBAAuB,EAAE,EAAE;QAC3B,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,GAAG;QACjB,iBAAiB,EAAE,GAAG;QACtB,qBAAqB,EAAE,GAAG;QAC1B,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,EAAE;QACxB,6BAA6B,EAAE,IAAK;QAEpC,0EAA0E;QAC1E,gBAAgB;QAChB,0EAA0E;QAC1E,kBAAkB,EAAE,GAAG;QACvB,sBAAsB,EAAE,CAAC,GAAG;QAC5B,oBAAoB,EAAE,CAAC,GAAG;QAE1B,UAAU,EAAE,IAAK;QACjB,eAAe,EAAE,IAAK;QAEtB,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,GAAG;QACpB,mBAAmB,EAAE,IAAK;QAC1B,2BAA2B,EAAE,IAAI;QACjC,uBAAuB,EAAE,EAAE;QAC3B,mBAAmB,EAAE,IAAK;QAE1B,0EAA0E;QAC1E,iBAAiB;QACjB,0EAA0E;QAC1E,WAAW,EAAE,EAAE;QACf,sBAAsB,EAAE,GAAG;QAC3B,eAAe,EAAE,IAAK;QAEtB,cAAc,EAAE,GAAG;QACnB,eAAe,EAAE,IAAK;QACtB,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,GAAG;QAClB,YAAY,EAAE,IAAK;QAEnB,eAAe,EAAE,EAAE;QACnB,YAAY,EAAE,GAAG;QACjB,WAAW,EAAE,GAAG;QAEhB,mBAAmB,EAAE,IAAI;QAEzB,0EAA0E;QAC1E,gBAAgB;QAChB,0EAA0E;QAC1E,aAAa,EAAE,IAAK;QACpB,cAAc,EAAE,IAAK;QACrB,oBAAoB,EAAE,KAAM;QAC5B,oBAAoB,EAAE,IAAK;QAC3B,qBAAqB,EAAE,IAAK;QAC5B,aAAa,EAAE,IAAK;QACpB,qBAAqB,EAAE,GAAG;QAC1B,wBAAwB,EAAE,GAAG;QAE7B,oBAAoB,EAAE,SAAS;QAC/B,sBAAsB,EAAE,GAAG;QAC3B,uBAAuB,EAAE,GAAG;QAC5B,wBAAwB,EAAE,KAAM;QAChC,uBAAuB,EAAE,IAAK;QAC9B,mBAAmB,EAAE,IAAK;QAC1B,wBAAwB,EAAE,KAAM;QAChC,oBAAoB,EAAE,GAAG;QACzB,wBAAwB,EAAE,IAAK;QAC/B,gBAAgB,EAAE,GAAG;QACrB,kBAAkB,EAAE,IAAK;QACzB,qBAAqB,EAAE,CAAC;QACxB,kBAAkB,EAAE,IAAK;QACzB,sBAAsB,EAAE,IAAK;QAC7B,mBAAmB,EAAE,GAAG;QACxB,cAAc,EAAE,IAAK;QAErB,iBAAiB,EAAE,IAAK;QACxB,iBAAiB,EAAE,IAAK;QACxB,sBAAsB,EAAE,GAAG;QAC3B,sBAAsB,EAAE,IAAK;QAC7B,wBAAwB,EAAE,GAAG;QAE7B,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IStateTransitionMap.d.ts","sourceRoot":"","sources":["../../src/states/IStateTransitionMap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,mBAAmB;IAElC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAG3B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IAGrB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAG1B,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"IStateTransitionMap.d.ts","sourceRoot":"","sources":["../../src/states/IStateTransitionMap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,mBAAmB;IAElC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAG3B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IAGrB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAG1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IAGnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IAGxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IAGxB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IAGxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IAGrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAG3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IAGtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IAGvB,UAAU,EAAE,MAAM,CAAC;IAGnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IAGrB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAG5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAG3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAG3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAG7B,eAAe,EAAI,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACvC,mBAAmB,CAsErB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IStateTransitionMap.js","sourceRoot":"","sources":["../../src/states/IStateTransitionMap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IStateTransitionMap.js","sourceRoot":"","sources":["../../src/states/IStateTransitionMap.ts"],"names":[],"mappings":"AAgIA;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,SAAwC;IAExC,OAAO;QACL,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,MAAM;QACnB,gBAAgB,EAAE,OAAO;QACzB,aAAa,EAAE,OAAO;QACtB,kBAAkB,EAAE,OAAO;QAC3B,kBAAkB,EAAE,OAAO;QAC3B,kBAAkB,EAAE,MAAM;QAC1B,YAAY,EAAE,QAAQ;QACtB,cAAc,EAAE,QAAQ;QACxB,YAAY,EAAE,MAAM;QACpB,eAAe,EAAE,MAAM;QACvB,iBAAiB,EAAE,QAAQ;QAC3B,gBAAgB,EAAE,MAAM;QACxB,cAAc,EAAE,SAAS;QACzB,eAAe,EAAE,SAAS;QAC1B,aAAa,EAAE,YAAY;QAC3B,kBAAkB,EAAE,QAAQ;QAC5B,mBAAmB,EAAE,MAAM;QAC3B,iBAAiB,EAAE,SAAS;QAC5B,YAAY,EAAE,OAAO;QACrB,UAAU,EAAE,QAAQ;QACpB,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,MAAM;QACvB,iBAAiB,EAAE,QAAQ;QAC3B,eAAe,EAAE,QAAQ;QACzB,YAAY,EAAE,QAAQ;QACtB,cAAc,EAAE,QAAQ;QACxB,eAAe,EAAE,QAAQ;QACzB,eAAe,EAAE,QAAQ;QACzB,cAAc,EAAE,MAAM;QACtB,gBAAgB,EAAE,MAAM;QACxB,iBAAiB,EAAE,MAAM;QACzB,eAAe,EAAE,QAAQ;QACzB,gBAAgB,EAAE,QAAQ;QAC1B,WAAW,EAAE,QAAQ;QACrB,YAAY,EAAE,OAAO;QACrB,YAAY,EAAE,OAAO;QACrB,gBAAgB,EAAE,MAAM;QACxB,kBAAkB,EAAE,QAAQ;QAC5B,gBAAgB,EAAE,QAAQ;QAC1B,aAAa,EAAE,MAAM;QACrB,aAAa,EAAE,QAAQ;QACvB,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;QACpB,aAAa,EAAE,QAAQ;QACvB,YAAY,EAAE,MAAM;QACpB,eAAe,EAAE,MAAM;QACvB,oBAAoB,EAAE,OAAO;QAC7B,mBAAmB,EAAE,MAAM;QAC3B,kBAAkB,EAAE,OAAO;QAC3B,oBAAoB,EAAE,QAAQ;QAC9B,kBAAkB,EAAE,MAAM;QAC1B,mBAAmB,EAAE,cAAc;QACnC,iBAAiB,EAAE,cAAc;QACjC,kBAAkB,EAAE,OAAO;QAC3B,qBAAqB,EAAE,QAAQ;QAC/B,kBAAkB,EAAE,MAAM;QAC1B,mBAAmB,EAAE,cAAc;QACnC,kBAAkB,EAAE,cAAc;QAClC,qBAAqB,EAAE,QAAQ;QAC/B,qBAAqB,EAAE,QAAQ;QAC/B,kBAAkB,EAAE,MAAM;QAC1B,oBAAoB,EAAE,QAAQ;QAC9B,eAAe,EAAI,OAAO;QAC1B,iBAAiB,EAAE,OAAO;QAC1B,iBAAiB,EAAE,QAAQ;QAC3B,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NPCOnlineState.d.ts","sourceRoot":"","sources":["../../src/states/NPCOnlineState.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,IAAI,eAAe,
|
|
1
|
+
{"version":3,"file":"NPCOnlineState.d.ts","sourceRoot":"","sources":["../../src/states/NPCOnlineState.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,IAAI,eAAe,CAkE7D"}
|
|
@@ -31,11 +31,13 @@ export function createDefaultNPCOnlineState() {
|
|
|
31
31
|
lastShootMs: 0,
|
|
32
32
|
lastVocalizationMs: 0,
|
|
33
33
|
lastGrenadeMs: 0,
|
|
34
|
-
|
|
34
|
+
lastSuppressiveFireMs: 0,
|
|
35
35
|
grenadeThrowStartMs: 0,
|
|
36
36
|
evadeStartMs: 0,
|
|
37
37
|
woundedStartMs: 0,
|
|
38
|
-
|
|
38
|
+
sleepReactionStartMs: 0,
|
|
39
|
+
retreatStartMs: 0,
|
|
40
|
+
lastMedkitMs: 0,
|
|
39
41
|
investigateStartMs: 0,
|
|
40
42
|
investigateLookAroundStartMs: -1,
|
|
41
43
|
helpWoundedTargetId: null,
|
|
@@ -53,9 +55,6 @@ export function createDefaultNPCOnlineState() {
|
|
|
53
55
|
killWoundedTargetX: 0,
|
|
54
56
|
killWoundedTargetY: 0,
|
|
55
57
|
packLastBroadcastMs: 0,
|
|
56
|
-
// Navigation
|
|
57
|
-
patrolWaypointIndex: 0,
|
|
58
|
-
searchWaypointIndex: 0,
|
|
59
58
|
// Loadout
|
|
60
59
|
primaryWeapon: null,
|
|
61
60
|
secondaryWeapon: null,
|
|
@@ -64,12 +63,16 @@ export function createDefaultNPCOnlineState() {
|
|
|
64
63
|
// State flags
|
|
65
64
|
isAlert: false,
|
|
66
65
|
hasTakenCover: false,
|
|
66
|
+
lastSeekCoverMs: 0,
|
|
67
67
|
coverPointX: 0,
|
|
68
68
|
coverPointY: 0,
|
|
69
69
|
loophole: null,
|
|
70
|
+
loopholeWaitEndMs: 0,
|
|
70
71
|
// Morale
|
|
71
72
|
morale: 0,
|
|
72
73
|
moraleState: 'STABLE',
|
|
74
|
+
// Extensible game-specific state
|
|
75
|
+
custom: {},
|
|
73
76
|
};
|
|
74
77
|
}
|
|
75
78
|
//# sourceMappingURL=NPCOnlineState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NPCOnlineState.js","sourceRoot":"","sources":["../../src/states/NPCOnlineState.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,2EAA2E;AAI3E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,kBAAkB;QAClB,QAAQ,EAAE,IAAI;QACd,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,CAAC;QAEpB,8DAA8D;QAC9D,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;QAChB,oBAAoB,EAAE,CAAC;QACvB,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,kBAAkB,EAAE,CAAC;QACrB,aAAa,EAAE,CAAC;QAChB,
|
|
1
|
+
{"version":3,"file":"NPCOnlineState.js","sourceRoot":"","sources":["../../src/states/NPCOnlineState.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,2EAA2E;AAI3E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,kBAAkB;QAClB,QAAQ,EAAE,IAAI;QACd,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,CAAC;QAEpB,8DAA8D;QAC9D,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;QAChB,oBAAoB,EAAE,CAAC;QACvB,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,kBAAkB,EAAE,CAAC;QACrB,aAAa,EAAE,CAAC;QAChB,qBAAqB,EAAE,CAAC;QACxB,mBAAmB,EAAE,CAAC;QACtB,YAAY,EAAE,CAAC;QACf,cAAc,EAAE,CAAC;QACjB,oBAAoB,EAAE,CAAC;QACvB,cAAc,EAAE,CAAC;QACjB,YAAY,EAAE,CAAC;QACf,kBAAkB,EAAE,CAAC;QACrB,4BAA4B,EAAE,CAAC,CAAC;QAEhC,mBAAmB,EAAE,IAAI;QACzB,kBAAkB,EAAE,CAAC;QACrB,wBAAwB,EAAE,CAAC,CAAC;QAC5B,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QAEf,mBAAmB,EAAE,IAAI;QACzB,kBAAkB,EAAE,CAAC;QACrB,qBAAqB,EAAE,CAAC,CAAC;QACzB,uBAAuB,EAAE,CAAC,CAAC;QAC3B,yBAAyB,EAAE,CAAC,CAAC;QAC7B,qBAAqB,EAAE,CAAC;QACxB,uBAAuB,EAAE,CAAC,CAAC;QAC3B,kBAAkB,EAAE,CAAC;QACrB,kBAAkB,EAAE,CAAC;QAErB,mBAAmB,EAAE,CAAC;QAEtB,UAAU;QACV,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,IAAI;QACrB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;QAEd,cAAc;QACd,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,CAAC;QAClB,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,IAAI;QACd,iBAAiB,EAAE,CAAC;QAEpB,SAAS;QACT,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,QAAQ;QAErB,iCAAiC;QACjC,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC"}
|
|
@@ -36,6 +36,8 @@ export declare class OnlineAIDriver {
|
|
|
36
36
|
private readonly ctx;
|
|
37
37
|
/** True while a transition is in progress (guards against re-entrant transitions). */
|
|
38
38
|
private _transitioning;
|
|
39
|
+
/** Transition event listeners. */
|
|
40
|
+
private _transitionListeners;
|
|
39
41
|
/** True after destroy() has been called. Guards against use-after-destroy. */
|
|
40
42
|
private _destroyed;
|
|
41
43
|
constructor(host: IOnlineDriverHost, handlers: StateHandlerMap | ReadonlyMap<string, IOnlineStateHandler>, initialState: string);
|
|
@@ -57,6 +59,38 @@ export declare class OnlineAIDriver {
|
|
|
57
59
|
* Call when the NPC entity is destroyed or the scene shuts down.
|
|
58
60
|
*/
|
|
59
61
|
destroy(): void;
|
|
62
|
+
/**
|
|
63
|
+
* Force an FSM state transition from outside the handler.
|
|
64
|
+
*
|
|
65
|
+
* Calls exit() on the current state and enter() on the new one,
|
|
66
|
+
* exactly like an internal ctx.transition() call. Useful for
|
|
67
|
+
* GOAP directors, scripted events, or any external system that
|
|
68
|
+
* needs to steer the FSM.
|
|
69
|
+
*
|
|
70
|
+
* No-op if the driver has been destroyed.
|
|
71
|
+
* Re-entrant calls are silently ignored (same as internal transitions).
|
|
72
|
+
*
|
|
73
|
+
* @param newStateId - Target state identifier.
|
|
74
|
+
*/
|
|
75
|
+
forceTransition(newStateId: string): void;
|
|
76
|
+
/**
|
|
77
|
+
* Register a callback that fires after every state transition.
|
|
78
|
+
*
|
|
79
|
+
* Returns an unsubscribe function. Listeners fire synchronously
|
|
80
|
+
* after enter() completes on the new state, in registration order.
|
|
81
|
+
*
|
|
82
|
+
* @param cb - Callback receiving the previous and new state IDs.
|
|
83
|
+
* @returns Unsubscribe function.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```ts
|
|
87
|
+
* const unsub = driver.onTransition((from, to) => {
|
|
88
|
+
* console.log(`${npcId}: ${from} → ${to}`);
|
|
89
|
+
* });
|
|
90
|
+
* // Later: unsub();
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
onTransition(cb: (from: string, to: string) => void): () => void;
|
|
60
94
|
/** @internal Called by {@link DriverContext.transition}. */
|
|
61
95
|
_doTransition(newStateId: string): void;
|
|
62
96
|
private getHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnlineAIDriver.d.ts","sourceRoot":"","sources":["../../src/states/OnlineAIDriver.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMpD;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,gBAAgB,CAAC,CAAC;AAMnF;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2C;IACpE,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;IAElC,sFAAsF;IACtF,OAAO,CAAC,cAAc,CAAS;IAE/B,8EAA8E;IAC9E,OAAO,CAAC,UAAU,CAAS;gBAGzB,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,eAAe,GAAG,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACpE,YAAY,EAAE,MAAM;IAkBtB,gDAAgD;IAChD,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK7B;;;;OAIG;IACH,OAAO,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"OnlineAIDriver.d.ts","sourceRoot":"","sources":["../../src/states/OnlineAIDriver.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMpD;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,gBAAgB,CAAC,CAAC;AAMnF;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2C;IACpE,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;IAElC,sFAAsF;IACtF,OAAO,CAAC,cAAc,CAAS;IAE/B,kCAAkC;IAClC,OAAO,CAAC,oBAAoB,CAAiD;IAE7E,8EAA8E;IAC9E,OAAO,CAAC,UAAU,CAAS;gBAGzB,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,eAAe,GAAG,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACpE,YAAY,EAAE,MAAM;IAkBtB,gDAAgD;IAChD,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK7B;;;;OAIG;IACH,OAAO,IAAI,IAAI;IAMf;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKzC;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;IAWhE,4DAA4D;IAC5D,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAyBvC,OAAO,CAAC,UAAU;CAOnB"}
|
|
@@ -39,6 +39,8 @@ export class OnlineAIDriver {
|
|
|
39
39
|
constructor(host, handlers, initialState) {
|
|
40
40
|
/** True while a transition is in progress (guards against re-entrant transitions). */
|
|
41
41
|
this._transitioning = false;
|
|
42
|
+
/** Transition event listeners. */
|
|
43
|
+
this._transitionListeners = [];
|
|
42
44
|
/** True after destroy() has been called. Guards against use-after-destroy. */
|
|
43
45
|
this._destroyed = false;
|
|
44
46
|
this.handlers = handlers instanceof StateHandlerMap ? handlers.toMap() : handlers;
|
|
@@ -82,6 +84,47 @@ export class OnlineAIDriver {
|
|
|
82
84
|
this._destroyed = true;
|
|
83
85
|
this.getHandler(this._currentStateId).exit(this.ctx);
|
|
84
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Force an FSM state transition from outside the handler.
|
|
89
|
+
*
|
|
90
|
+
* Calls exit() on the current state and enter() on the new one,
|
|
91
|
+
* exactly like an internal ctx.transition() call. Useful for
|
|
92
|
+
* GOAP directors, scripted events, or any external system that
|
|
93
|
+
* needs to steer the FSM.
|
|
94
|
+
*
|
|
95
|
+
* No-op if the driver has been destroyed.
|
|
96
|
+
* Re-entrant calls are silently ignored (same as internal transitions).
|
|
97
|
+
*
|
|
98
|
+
* @param newStateId - Target state identifier.
|
|
99
|
+
*/
|
|
100
|
+
forceTransition(newStateId) {
|
|
101
|
+
if (this._destroyed)
|
|
102
|
+
return;
|
|
103
|
+
this._doTransition(newStateId);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Register a callback that fires after every state transition.
|
|
107
|
+
*
|
|
108
|
+
* Returns an unsubscribe function. Listeners fire synchronously
|
|
109
|
+
* after enter() completes on the new state, in registration order.
|
|
110
|
+
*
|
|
111
|
+
* @param cb - Callback receiving the previous and new state IDs.
|
|
112
|
+
* @returns Unsubscribe function.
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```ts
|
|
116
|
+
* const unsub = driver.onTransition((from, to) => {
|
|
117
|
+
* console.log(`${npcId}: ${from} → ${to}`);
|
|
118
|
+
* });
|
|
119
|
+
* // Later: unsub();
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
onTransition(cb) {
|
|
123
|
+
this._transitionListeners.push(cb);
|
|
124
|
+
return () => {
|
|
125
|
+
this._transitionListeners = this._transitionListeners.filter(l => l !== cb);
|
|
126
|
+
};
|
|
127
|
+
}
|
|
85
128
|
// -------------------------------------------------------------------------
|
|
86
129
|
// Internal — called by DriverContext
|
|
87
130
|
// -------------------------------------------------------------------------
|
|
@@ -93,10 +136,15 @@ export class OnlineAIDriver {
|
|
|
93
136
|
return;
|
|
94
137
|
}
|
|
95
138
|
this._transitioning = true;
|
|
139
|
+
const previousStateId = this._currentStateId;
|
|
96
140
|
try {
|
|
97
141
|
this.getHandler(this._currentStateId).exit(this.ctx);
|
|
98
142
|
this._currentStateId = newStateId;
|
|
99
143
|
this.getHandler(newStateId).enter(this.ctx);
|
|
144
|
+
// Copy to avoid issues if a listener unsubscribes during iteration.
|
|
145
|
+
const listeners = [...this._transitionListeners];
|
|
146
|
+
for (const cb of listeners)
|
|
147
|
+
cb(previousStateId, newStateId);
|
|
100
148
|
}
|
|
101
149
|
finally {
|
|
102
150
|
this._transitioning = false;
|
|
@@ -149,6 +197,7 @@ class DriverContext {
|
|
|
149
197
|
get pack() { return this.host.pack; }
|
|
150
198
|
get conditions() { return this.host.conditions; }
|
|
151
199
|
get suspicion() { return this.host.suspicion; }
|
|
200
|
+
get pathfinding() { return this.host.pathfinding; }
|
|
152
201
|
// Movement & rendering — delegate to host
|
|
153
202
|
setVelocity(vx, vy) { this.host.setVelocity(vx, vy); }
|
|
154
203
|
halt() { this.host.halt(); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnlineAIDriver.js","sourceRoot":"","sources":["../../src/states/OnlineAIDriver.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,8CAA8C;AAC9C,EAAE;AACF,QAAQ;AACR,kEAAkE;AAClE,2DAA2D;AAC3D,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,mCAAmC;AACnC,EAAE;AACF,sCAAsC;AACtC,qCAAqC;AACrC,qDAAqD;AAIrD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAkBpD,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"OnlineAIDriver.js","sourceRoot":"","sources":["../../src/states/OnlineAIDriver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/AlertState.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE;;;;GAIG;AACH,qBAAa,UAAW,YAAW,mBAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;gBAE7B,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAKhE,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAc7B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"AlertState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/AlertState.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE;;;;GAIG;AACH,qBAAa,UAAW,YAAW,mBAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;gBAE7B,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAKhE,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAc7B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAwEhD,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;CAG9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertState.js","sourceRoot":"","sources":["../../../src/states/handlers/AlertState.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AlertState.js","sourceRoot":"","sources":["../../../src/states/handlers/AlertState.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// - NPC inside an inaccessible/restricted zone → ALERT (walk away first)
|
|
13
13
|
import { createDefaultTransitionMap } from '../IStateTransitionMap';
|
|
14
14
|
import { moveToward } from './_utils';
|
|
15
|
-
// Internal flag stored in ctx.state.
|
|
15
|
+
// Internal flag stored in ctx.state.evadeStartMs repurposed as the
|
|
16
16
|
// reaction-pending timer timestamp. We use a sentinel value of 0 for "none".
|
|
17
17
|
const NO_PENDING_REACTION = 0;
|
|
18
18
|
/**
|
|
@@ -75,10 +75,10 @@ export class CampState {
|
|
|
75
75
|
];
|
|
76
76
|
const safe = ctx.restrictedZones.filterAccessible(candidates);
|
|
77
77
|
if (safe.length > 0) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
moveToward(ctx,
|
|
78
|
+
// Walk toward the safe exit without touching lastKnownEnemyX/Y —
|
|
79
|
+
// writing those fields would broadcast a false enemy position to pack
|
|
80
|
+
// members (same fix as IdleState).
|
|
81
|
+
moveToward(ctx, safe[0].x, safe[0].y, this.cfg.approachSpeed);
|
|
82
82
|
}
|
|
83
83
|
ctx.transition(this.tr.campOnDanger);
|
|
84
84
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CampState.js","sourceRoot":"","sources":["../../../src/states/handlers/CampState.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,8EAA8E;AAC9E,EAAE;AACF,YAAY;AACZ,6CAA6C;AAC7C,4EAA4E;AAC5E,iDAAiD;AACjD,iEAAiE;AACjE,EAAE;AACF,2BAA2B;AAC3B,iEAAiE;AACjE,kFAAkF;AAKlF,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,
|
|
1
|
+
{"version":3,"file":"CampState.js","sourceRoot":"","sources":["../../../src/states/handlers/CampState.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChargeState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/ChargeState.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ChargeState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/ChargeState.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAIlE;;;;GAIG;AACH,qBAAa,WAAY,YAAW,mBAAmB;IAInD,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;gBAGtB,GAAG,EAAE,YAAY,EAClC,EAAE,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAKnC,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IA4B7B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IA+DhD,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;CAK7B"}
|
|
@@ -33,12 +33,13 @@ export class ChargeState {
|
|
|
33
33
|
const targetX = enemies.length > 0 ? enemies[0].x : ctx.state.lastKnownEnemyX;
|
|
34
34
|
const targetY = enemies.length > 0 ? enemies[0].y : ctx.state.lastKnownEnemyY;
|
|
35
35
|
// Lazy-initialise charge phase data if not yet present.
|
|
36
|
-
(_a = ctx.state).chargePhase ?? (_a.chargePhase = { active: false, windupStartMs: 0, charging: false, targetX: 0, targetY: 0 });
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
const phase = (_a = ctx.state).chargePhase ?? (_a.chargePhase = { active: false, windupStartMs: 0, charging: false, chargeStartMs: 0, targetX: 0, targetY: 0 });
|
|
37
|
+
phase.active = true;
|
|
38
|
+
phase.charging = false;
|
|
39
|
+
phase.chargeStartMs = 0;
|
|
40
|
+
phase.windupStartMs = now;
|
|
41
|
+
phase.targetX = targetX;
|
|
42
|
+
phase.targetY = targetY;
|
|
42
43
|
// Stop completely during the windup telegraph.
|
|
43
44
|
ctx.halt();
|
|
44
45
|
// Face the target while winding up.
|
|
@@ -73,10 +74,17 @@ export class ChargeState {
|
|
|
73
74
|
}
|
|
74
75
|
// Windup complete — transition to charging phase.
|
|
75
76
|
phase.charging = true;
|
|
77
|
+
phase.chargeStartMs = now;
|
|
76
78
|
}
|
|
77
79
|
// -----------------------------------------------------------------------
|
|
78
80
|
// CHARGING phase — move toward locked target at charge speed
|
|
79
81
|
// -----------------------------------------------------------------------
|
|
82
|
+
// Abort if the charge has taken too long (target unreachable, e.g. behind a wall).
|
|
83
|
+
if (now - phase.chargeStartMs >= this.cfg.chargeTimeoutMs) {
|
|
84
|
+
ctx.halt();
|
|
85
|
+
ctx.transition(this.tr.chargeOnAbort);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
80
88
|
const chargeSpeed = this.cfg.approachSpeed * this.cfg.chargeSpeedMultiplier;
|
|
81
89
|
const dist = distanceTo(ctx.x, ctx.y, phase.targetX, phase.targetY);
|
|
82
90
|
if (dist <= this.cfg.meleeRange) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChargeState.js","sourceRoot":"","sources":["../../../src/states/handlers/ChargeState.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,oDAAoD;AACpD,EAAE;AACF,oDAAoD;AACpD,+EAA+E;AAC/E,yDAAyD;AACzD,0FAA0F;AAC1F,8FAA8F;AAC9F,sEAAsE;AACtE,EAAE;AACF,eAAe;AACf,kFAAkF;AAClF,EAAE;AACF,4EAA4E;AAC5E,uDAAuD;
|
|
1
|
+
{"version":3,"file":"ChargeState.js","sourceRoot":"","sources":["../../../src/states/handlers/ChargeState.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,oDAAoD;AACpD,EAAE;AACF,oDAAoD;AACpD,+EAA+E;AAC/E,yDAAyD;AACzD,0FAA0F;AAC1F,8FAA8F;AAC9F,sEAAsE;AACtE,EAAE;AACF,eAAe;AACf,kFAAkF;AAClF,EAAE;AACF,4EAA4E;AAC5E,uDAAuD;AAOvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAElD;;;;GAIG;AACH,MAAM,OAAO,WAAW;IAGtB,YACmB,GAAiB,EAClC,EAAiC;QADhB,QAAG,GAAH,GAAG,CAAc;QAGlC,IAAI,CAAC,EAAE,GAAG,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,GAAgB;;QACpB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QAEtB,2EAA2E;QAC3E,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC;QAC9E,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC;QAE9E,wDAAwD;QACxD,MAAM,KAAK,SAAiB,GAAG,CAAC,KAAK,EAAC,WAAW,QAAX,WAAW,GAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA,CAAC;QACrJ,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QACvB,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QACxB,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC1B,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAExB,+CAA+C;QAC/C,GAAG,CAAC,IAAI,EAAE,CAAC;QAEX,oCAAoC;QACpC,MAAM,EAAE,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;QAC3B,MAAM,EAAE,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;QAC3B,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAgB,EAAE,QAAgB;QACvC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;QACpC,MAAM,OAAO,GAAG,GAAG,GAAG,KAAM,CAAC,aAAa,CAAC;QAE3C,IAAI,CAAC,KAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,0EAA0E;YAC1E,iEAAiE;YACjE,0EAA0E;YAE1E,2DAA2D;YAC3D,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,KAAK,CAAC;YAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;gBACtC,OAAO;YACT,CAAC;YAED,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;gBACtC,iDAAiD;gBACjD,MAAM,EAAE,GAAG,KAAM,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;gBAClC,MAAM,EAAE,GAAG,KAAM,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;gBAClC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;oBACzB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBACtC,CAAC;gBACD,OAAO;YACT,CAAC;YAED,kDAAkD;YAClD,KAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;YACvB,KAAM,CAAC,aAAa,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,0EAA0E;QAC1E,6DAA6D;QAC7D,0EAA0E;QAE1E,mFAAmF;QACnF,IAAI,GAAG,GAAG,KAAM,CAAC,aAAa,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;YAC3D,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;QAC5E,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAM,CAAC,OAAO,EAAE,KAAM,CAAC,OAAO,CAAC,CAAC;QAEtE,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YAChC,qDAAqD;YACrD,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;YAC5B,GAAG,CAAC,YAAY,CAAC;gBACf,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;gBAClC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB;aAC/D,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,8CAA8C;QAC9C,UAAU,CAAC,GAAG,EAAE,KAAM,CAAC,OAAO,EAAE,KAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,GAAgB;QACnB,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC1B,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC;QACvC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -5,7 +5,7 @@ import type { IStateTransitionMap } from '../IStateTransitionMap';
|
|
|
5
5
|
/**
|
|
6
6
|
* Stateless combat state handler for human NPCs.
|
|
7
7
|
*
|
|
8
|
-
* Monsters use a separate controller (MonsterCombatController
|
|
8
|
+
* Monsters use a separate controller (MonsterCombatController).
|
|
9
9
|
* A single instance can be shared across all NPC entities.
|
|
10
10
|
*/
|
|
11
11
|
export declare class CombatState implements IOnlineStateHandler {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CombatState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/CombatState.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,mBAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;gBAE7B,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAKhE,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAI9B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"CombatState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/CombatState.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,mBAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;gBAE7B,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAKhE,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAI9B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IA0HhD,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;CAG9B"}
|