@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.
Files changed (141) hide show
  1. package/README.md +150 -47
  2. package/dist/combat/CombatTransitionChain.d.ts +1 -3
  3. package/dist/combat/CombatTransitionChain.d.ts.map +1 -1
  4. package/dist/combat/CombatTransitionChain.js +1 -6
  5. package/dist/combat/CombatTransitionChain.js.map +1 -1
  6. package/dist/combat/LoadoutBuilder.js +1 -1
  7. package/dist/combat/LoadoutBuilder.js.map +1 -1
  8. package/dist/cover/CoverAccessAdapter.js +1 -1
  9. package/dist/cover/CoverAccessAdapter.js.map +1 -1
  10. package/dist/cover/CoverEvaluators.d.ts.map +1 -1
  11. package/dist/cover/CoverEvaluators.js +20 -13
  12. package/dist/cover/CoverEvaluators.js.map +1 -1
  13. package/dist/cover/CoverLockRegistry.d.ts.map +1 -1
  14. package/dist/cover/CoverLockRegistry.js +1 -0
  15. package/dist/cover/CoverLockRegistry.js.map +1 -1
  16. package/dist/cover/CoverRegistry.d.ts +2 -1
  17. package/dist/cover/CoverRegistry.d.ts.map +1 -1
  18. package/dist/cover/CoverRegistry.js +4 -3
  19. package/dist/cover/CoverRegistry.js.map +1 -1
  20. package/dist/goap/GOAPController.d.ts.map +1 -1
  21. package/dist/goap/GOAPController.js +21 -3
  22. package/dist/goap/GOAPController.js.map +1 -1
  23. package/dist/goap/GOAPDirector.d.ts +89 -0
  24. package/dist/goap/GOAPDirector.d.ts.map +1 -0
  25. package/dist/goap/GOAPDirector.js +142 -0
  26. package/dist/goap/GOAPDirector.js.map +1 -0
  27. package/dist/goap/GoalSelector.d.ts +1 -1
  28. package/dist/goap/GoalSelector.d.ts.map +1 -1
  29. package/dist/goap/GoalSelector.js +27 -2
  30. package/dist/goap/GoalSelector.js.map +1 -1
  31. package/dist/goap/WorldStateBuilder.js +2 -2
  32. package/dist/goap/WorldStateBuilder.js.map +1 -1
  33. package/dist/goap/index.d.ts +2 -0
  34. package/dist/goap/index.d.ts.map +1 -1
  35. package/dist/goap/index.js +1 -0
  36. package/dist/goap/index.js.map +1 -1
  37. package/dist/navigation/PathSmoother.d.ts.map +1 -1
  38. package/dist/navigation/PathSmoother.js +7 -2
  39. package/dist/navigation/PathSmoother.js.map +1 -1
  40. package/dist/navigation/RestrictedZoneManager.d.ts +10 -1
  41. package/dist/navigation/RestrictedZoneManager.d.ts.map +1 -1
  42. package/dist/navigation/RestrictedZoneManager.js +14 -3
  43. package/dist/navigation/RestrictedZoneManager.js.map +1 -1
  44. package/dist/navigation/SmoothPathFollower.d.ts +3 -0
  45. package/dist/navigation/SmoothPathFollower.d.ts.map +1 -1
  46. package/dist/navigation/SmoothPathFollower.js +8 -5
  47. package/dist/navigation/SmoothPathFollower.js.map +1 -1
  48. package/dist/perception/NPCSensors.d.ts +6 -6
  49. package/dist/perception/NPCSensors.d.ts.map +1 -1
  50. package/dist/perception/NPCSensors.js +6 -6
  51. package/dist/perception/NPCSensors.js.map +1 -1
  52. package/dist/perception/PerceptionQuery.d.ts +1 -5
  53. package/dist/perception/PerceptionQuery.d.ts.map +1 -1
  54. package/dist/perception/PerceptionQuery.js +2 -9
  55. package/dist/perception/PerceptionQuery.js.map +1 -1
  56. package/dist/states/INPCContext.d.ts +64 -0
  57. package/dist/states/INPCContext.d.ts.map +1 -1
  58. package/dist/states/INPCOnlineState.d.ts +64 -12
  59. package/dist/states/INPCOnlineState.d.ts.map +1 -1
  60. package/dist/states/IStateConfig.d.ts +22 -4
  61. package/dist/states/IStateConfig.d.ts.map +1 -1
  62. package/dist/states/IStateConfig.js +4 -2
  63. package/dist/states/IStateConfig.js.map +1 -1
  64. package/dist/states/IStateTransitionMap.d.ts +1 -0
  65. package/dist/states/IStateTransitionMap.d.ts.map +1 -1
  66. package/dist/states/IStateTransitionMap.js +1 -0
  67. package/dist/states/IStateTransitionMap.js.map +1 -1
  68. package/dist/states/NPCOnlineState.d.ts.map +1 -1
  69. package/dist/states/NPCOnlineState.js +8 -5
  70. package/dist/states/NPCOnlineState.js.map +1 -1
  71. package/dist/states/OnlineAIDriver.d.ts +34 -0
  72. package/dist/states/OnlineAIDriver.d.ts.map +1 -1
  73. package/dist/states/OnlineAIDriver.js +49 -0
  74. package/dist/states/OnlineAIDriver.js.map +1 -1
  75. package/dist/states/handlers/AlertState.d.ts.map +1 -1
  76. package/dist/states/handlers/AlertState.js +0 -1
  77. package/dist/states/handlers/AlertState.js.map +1 -1
  78. package/dist/states/handlers/CampState.js +5 -5
  79. package/dist/states/handlers/CampState.js.map +1 -1
  80. package/dist/states/handlers/ChargeState.d.ts.map +1 -1
  81. package/dist/states/handlers/ChargeState.js +14 -6
  82. package/dist/states/handlers/ChargeState.js.map +1 -1
  83. package/dist/states/handlers/CombatState.d.ts +1 -1
  84. package/dist/states/handlers/CombatState.d.ts.map +1 -1
  85. package/dist/states/handlers/CombatState.js +16 -7
  86. package/dist/states/handlers/CombatState.js.map +1 -1
  87. package/dist/states/handlers/CombatTransitionHandler.d.ts +8 -1
  88. package/dist/states/handlers/CombatTransitionHandler.d.ts.map +1 -1
  89. package/dist/states/handlers/CombatTransitionHandler.js +18 -4
  90. package/dist/states/handlers/CombatTransitionHandler.js.map +1 -1
  91. package/dist/states/handlers/DeadState.d.ts.map +1 -1
  92. package/dist/states/handlers/DeadState.js +0 -3
  93. package/dist/states/handlers/DeadState.js.map +1 -1
  94. package/dist/states/handlers/EvadeGrenadeState.d.ts +1 -1
  95. package/dist/states/handlers/EvadeGrenadeState.d.ts.map +1 -1
  96. package/dist/states/handlers/EvadeGrenadeState.js +8 -17
  97. package/dist/states/handlers/EvadeGrenadeState.js.map +1 -1
  98. package/dist/states/handlers/FleeState.d.ts.map +1 -1
  99. package/dist/states/handlers/FleeState.js +34 -5
  100. package/dist/states/handlers/FleeState.js.map +1 -1
  101. package/dist/states/handlers/IdleState.d.ts.map +1 -1
  102. package/dist/states/handlers/IdleState.js +16 -6
  103. package/dist/states/handlers/IdleState.js.map +1 -1
  104. package/dist/states/handlers/KillWoundedState.d.ts.map +1 -1
  105. package/dist/states/handlers/KillWoundedState.js +14 -0
  106. package/dist/states/handlers/KillWoundedState.js.map +1 -1
  107. package/dist/states/handlers/PatrolState.d.ts.map +1 -1
  108. package/dist/states/handlers/PatrolState.js +10 -0
  109. package/dist/states/handlers/PatrolState.js.map +1 -1
  110. package/dist/states/handlers/RetreatState.d.ts.map +1 -1
  111. package/dist/states/handlers/RetreatState.js +19 -9
  112. package/dist/states/handlers/RetreatState.js.map +1 -1
  113. package/dist/states/handlers/SleepState.d.ts.map +1 -1
  114. package/dist/states/handlers/SleepState.js +9 -12
  115. package/dist/states/handlers/SleepState.js.map +1 -1
  116. package/dist/states/handlers/StalkState.js +2 -2
  117. package/dist/states/handlers/TakeCoverState.d.ts.map +1 -1
  118. package/dist/states/handlers/TakeCoverState.js +6 -13
  119. package/dist/states/handlers/TakeCoverState.js.map +1 -1
  120. package/dist/states/handlers/WoundedState.d.ts.map +1 -1
  121. package/dist/states/handlers/WoundedState.js +4 -3
  122. package/dist/states/handlers/WoundedState.js.map +1 -1
  123. package/dist/states/handlers/_utils.d.ts +23 -0
  124. package/dist/states/handlers/_utils.d.ts.map +1 -1
  125. package/dist/states/handlers/_utils.js +52 -3
  126. package/dist/states/handlers/_utils.js.map +1 -1
  127. package/dist/states/index.d.ts +1 -1
  128. package/dist/states/index.d.ts.map +1 -1
  129. package/dist/states/index.js.map +1 -1
  130. package/dist/suspicion/SuspicionAccumulator.d.ts +6 -5
  131. package/dist/suspicion/SuspicionAccumulator.d.ts.map +1 -1
  132. package/dist/suspicion/SuspicionAccumulator.js +7 -6
  133. package/dist/suspicion/SuspicionAccumulator.js.map +1 -1
  134. package/dist/types/ICoverPoint.d.ts +6 -0
  135. package/dist/types/ICoverPoint.d.ts.map +1 -1
  136. package/dist/types/ICoverPoint.js.map +1 -1
  137. package/dist/types/IPerceptionTypes.d.ts +27 -4
  138. package/dist/types/IPerceptionTypes.d.ts.map +1 -1
  139. package/dist/types/IPerceptionTypes.js +9 -4
  140. package/dist/types/IPerceptionTypes.js.map +1 -1
  141. 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
- stalkUnclockDistance: number;
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
- /** Duration (ms) of the medkit use animation before the heal is applied. */
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":"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"}
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
- stalkUnclockDistance: 80,
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;AAwY7C,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;QAE3B,0EAA0E;QAC1E,iBAAiB;QACjB,0EAA0E;QAC1E,WAAW,EAAE,EAAE;QACf,sBAAsB,EAAE,GAAG;QAC3B,eAAe,EAAE,IAAK;QAEtB,cAAc,EAAE,GAAG;QACnB,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;QACzB,iBAAiB,EAAE,GAAG;QAEtB,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,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
+ {"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"}
@@ -35,6 +35,7 @@ export interface IStateTransitionMap {
35
35
  takeCoverOnPanicked: string;
36
36
  takeCoverOnShaken: string;
37
37
  fleeOnCalmed: string;
38
+ fleeOnSafe: string;
38
39
  searchOnEnemy: string;
39
40
  searchOnTimeout: string;
40
41
  grenadeOnComplete: string;
@@ -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;IAGrB,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,CAqErB"}
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"}
@@ -24,6 +24,7 @@ export function createDefaultTransitionMap(overrides) {
24
24
  takeCoverOnPanicked: 'FLEE',
25
25
  takeCoverOnShaken: 'RETREAT',
26
26
  fleeOnCalmed: 'ALERT',
27
+ fleeOnSafe: 'PATROL',
27
28
  searchOnEnemy: 'ALERT',
28
29
  searchOnTimeout: 'IDLE',
29
30
  grenadeOnComplete: 'COMBAT',
@@ -1 +1 @@
1
- {"version":3,"file":"IStateTransitionMap.js","sourceRoot":"","sources":["../../src/states/IStateTransitionMap.ts"],"names":[],"mappings":"AA+HA;;;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,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
+ {"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,CA+D7D"}
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
- lastSupressiveFireMs: 0,
34
+ lastSuppressiveFireMs: 0,
35
35
  grenadeThrowStartMs: 0,
36
36
  evadeStartMs: 0,
37
37
  woundedStartMs: 0,
38
- psiPhaseStartMs: 0,
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,oBAAoB,EAAE,CAAC;QACvB,mBAAmB,EAAE,CAAC;QACtB,YAAY,EAAE,CAAC;QACf,cAAc,EAAE,CAAC;QACjB,eAAe,EAAE,CAAC;QAClB,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,aAAa;QACb,mBAAmB,EAAE,CAAC;QACtB,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,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,IAAI;QAEd,SAAS;QACT,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,QAAQ;KACtB,CAAC;AACJ,CAAC"}
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;IAUf,4DAA4D;IAC5D,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAqBvC,OAAO,CAAC,UAAU;CAOnB"}
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":"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"}
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;IAyEhD,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;CAG9B"}
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"}
@@ -96,7 +96,6 @@ export class AlertState {
96
96
  moveToward(ctx, targetX, targetY, this.cfg.approachSpeed);
97
97
  }
98
98
  }
99
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
100
99
  exit(_ctx) {
101
100
  // Nothing to clean up.
102
101
  }
@@ -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.psiPhaseStartMs repurposed as the
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
- const dest = safe[0];
79
- ctx.state.lastKnownEnemyX = dest.x;
80
- ctx.state.lastKnownEnemyY = dest.y;
81
- moveToward(ctx, dest.x, dest.y, this.cfg.approachSpeed);
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":"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"}
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;AACpD,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;IA2B7B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAsDhD,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;CAK7B"}
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
- ctx.state.chargePhase.active = true;
38
- ctx.state.chargePhase.charging = false;
39
- ctx.state.chargePhase.windupStartMs = now;
40
- ctx.state.chargePhase.targetX = targetX;
41
- ctx.state.chargePhase.targetY = targetY;
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":"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"}
1
+ {"version":3,"file":"ChargeState.js","sourceRoot":"","sources":["../../../src/states/handlers/ChargeState.ts"],"names":[],"mappings":"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"}
@@ -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 from Slice 14).
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;IAiHhD,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;CAG9B"}
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"}