@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
package/README.md CHANGED
@@ -22,7 +22,8 @@ view and must behave in real-time.
22
22
  - **Cover system** — 6 evaluators, loophole peek/fire cycles, TTL-based cover locking
23
23
  - **Perception** — FOV queries, hearing radius, intel freshness filters
24
24
  - **GOAP** — elite NPC goal-oriented planning over a 16-property world state bitmask
25
- - **Navigation** — Catmull-Rom + Dubins arc path smoothing, restricted zones, pack steering
25
+ - **GOAPDirector** — built-in bridge between GOAP planner and FSM; replans on entry, dispatches actions as sub-states, handles interrupts and plan lifecycle
26
+ - **Navigation** — Catmull-Rom + Dubins arc path smoothing, restricted zones, pack steering, pluggable `IPathfindingAccess` for grid/navmesh A*
26
27
  - **Squad tactics** — situational assessment, 6 commands, shared target table
27
28
  - **Animation** — 8-direction state→key mapping, layered debounced controller
28
29
  - **Suspicion** — stimulus accumulation → alert threshold crossing
@@ -81,10 +82,19 @@ function update(deltaMs: number): void {
81
82
  // 6. Read current state
82
83
  const state = driver.currentStateId; // e.g. 'COMBAT'
83
84
 
84
- // 7. Force a state transition from within a state handler (e.g. on NPC death)
85
- // Transitions happen via ctx.transition(), called from inside a state handler:
86
- // ctx.transition(ONLINE_STATE.DEAD);
87
- // To force a transition externally, call driver.update() after mutating ctx.state.
85
+ // 7. Force a state transition from OUTSIDE a handler (new!)
86
+ driver.forceTransition(ONLINE_STATE.DEAD);
87
+
88
+ // 8. Listen to state transitions (new!)
89
+ const unsub = driver.onTransition((from, to) => {
90
+ console.log(`NPC ${npcId}: ${from} → ${to}`);
91
+ });
92
+ // unsub() to remove the listener
93
+
94
+ // 9. Store game-specific data in the extensible state bag (new!)
95
+ ctx.state.custom ??= {};
96
+ ctx.state.custom.ammo = 30;
97
+ ctx.state.custom.goapPlan = planner.plan(worldState, goal);
88
98
  ```
89
99
 
90
100
  ---
@@ -100,7 +110,7 @@ Each module has its own import path for optimal tree-shaking:
100
110
  | `@alife-sdk/ai/states` | `OnlineAIDriver`, `StateHandlerMap`, `ONLINE_STATE`, all handlers, builder functions | [states/](src/states/) |
101
111
  | `@alife-sdk/ai/cover` | `CoverRegistry`, `CoverLockRegistry`, 6 evaluators, `LoopholeGenerator` | [cover/](src/cover/) |
102
112
  | `@alife-sdk/ai/perception` | `NPCSensors`, `isInFOV`, `filterVisibleEntities`, `filterHearingEntities`, `filterHostileEntities`, `filterFriendlyEntities`, `filterFreshIntel`, `distanceSq`, `findClosest`, `scanForEnemies` | [perception/](src/perception/) |
103
- | `@alife-sdk/ai/goap` | `GOAPController`, `buildWorldState`, `selectGoal`, `EvadeHazardAction` | [goap/](src/goap/) |
113
+ | `@alife-sdk/ai/goap` | `GOAPController`, `GOAPDirector`, `buildWorldState`, `selectGoal`, `EvadeHazardAction` | [goap/](src/goap/) |
104
114
  | `@alife-sdk/ai/navigation` | `smoothPath`, `smoothPathWithTurning`, `SmoothPathFollower`, `RestrictedZoneManager`, `SteeringBehaviors` | [navigation/](src/navigation/) |
105
115
  | `@alife-sdk/ai/squad` | `evaluateSituation`, `SquadCommand`, `SquadSharedTargetTable` | [squad/](src/squad/) |
106
116
  | `@alife-sdk/ai/animation` | `getDirection`, `getAnimationKey`, `getAnimationRequest`, `AnimationController`, `DirectionCache`, `CompassIndex`, `AnimLayer`, `DEFAULT_STATE_ANIM_MAP`, `DEFAULT_WEAPON_SUFFIXES` | [animation/](src/animation/) |
@@ -117,43 +127,47 @@ Each module has its own import path for optimal tree-shaking:
117
127
  ## Architecture
118
128
 
119
129
  ```
120
- ┌────────────────────────────────────────┐
121
- ALifeKernel
122
- (from @alife-sdk/core)
123
- └──────────────┬─────────────────────────┘
124
- │ kernel.use(aiPlugin)
125
- ┌──────────────▼─────────────────────────┐
126
- AIPlugin
127
- │ CoverRegistry · CoverLockRegistry
128
- │ RestrictedZoneManager
129
- │ createCoverAccess(npcId) ─────────────┼──► ICoverAccess (per NPC)
130
- └────────────────────────────────────────┘
130
+ ┌───────────────────────────────────────────────────────────┐
131
+ ALifeKernel
132
+ (from @alife-sdk/core)
133
+ └──────────────────────────┬────────────────────────────────┘
134
+ │ kernel.use(aiPlugin)
135
+ ┌──────────────────────────▼────────────────────────────────┐
136
+ AIPlugin
137
+ │ CoverRegistry · CoverLockRegistry
138
+ │ RestrictedZoneManager
139
+ │ createCoverAccess(npcId) ──► ICoverAccess (per NPC)
140
+ └───────────────────────────────────────────────────────────┘
131
141
 
132
142
  Per-NPC (created on online transition):
133
- ┌──────────────────────────────────────────────────────┐
134
- │ OnlineAIDriver
135
-
136
- │ StateHandlerMap ──► IOnlineStateHandler
137
- DEAD · IDLE · PATROL · ALERT · FLEE · SEARCH
138
- CAMP · SLEEP · COMBAT · TAKE_COVER · GRENADE
139
- EVADE_GRENADE · WOUNDED · RETREAT
140
- CHARGE · STALK · LEAP · PSI_ATTACK
141
-
142
- │ INPCContext ─┬─ INPCPerception (FOV / hearing)
143
- │ ├─ INPCHealth (hp / morale)
144
- │ ├─ ICoverAccess (find / lock cover)
145
- │ ├─ IDangerAccess (DangerManager port)
146
- │ ├─ ISquadAccess (commands / target)
147
- │ ├─ ISuspicionAccess
148
- └─ IConditionAccess
149
- └──────────────────────────────────────────────────────┘
143
+ ┌───────────────────────────────────────────────────────────┐
144
+ │ OnlineAIDriver
145
+
146
+ │ StateHandlerMap ──► IOnlineStateHandler
147
+ DEAD · IDLE · PATROL · ALERT · FLEE · SEARCH
148
+ CAMP · SLEEP · COMBAT · TAKE_COVER · GRENADE
149
+ EVADE_GRENADE · WOUNDED · RETREAT
150
+ CHARGE · STALK · LEAP · PSI_ATTACK
151
+
152
+ │ INPCContext ─┬─ INPCPerception (FOV / hearing)
153
+ │ ├─ INPCHealth (hp / morale)
154
+ │ ├─ ICoverAccess (find / lock cover)
155
+ │ ├─ IDangerAccess (DangerManager port)
156
+ │ ├─ IPathfindingAccess (A* / NavMesh port)
157
+ │ ├─ ISquadAccess (commands / target)
158
+ ├─ ISuspicionAccess
159
+ │ └─ IConditionAccess │
160
+ │ │
161
+ │ state.custom ── extensible Record<string, unknown> bag │
162
+ └───────────────────────────────────────────────────────────┘
150
163
 
151
164
  Shared systems (optional, compose as needed):
152
165
  NPCSensors filterVisibleEntities / filterHearingEntities
153
- GOAPController elite NPC A* planning (rank 5)
166
+ GOAPController elite NPC A* planning (rank >= 5)
167
+ GOAPDirector GOAP -> FSM bridge (register as COMBAT handler)
154
168
  SmoothPathFollower Catmull-Rom + Dubins arc path cursor
155
169
  AnimationController layered, debounced animation dispatch
156
- SuspicionAccumulator stimulus alert threshold crossing
170
+ SuspicionAccumulator stimulus -> alert threshold crossing
157
171
  ConditionBank multi-channel boolean state
158
172
  ```
159
173
 
@@ -172,13 +186,21 @@ const driver = new OnlineAIDriver(ctx, handlers, ONLINE_STATE.IDLE);
172
186
 
173
187
  driver.update(deltaMs); // call every frame
174
188
  driver.currentStateId; // current state ID string
175
- // Transitions happen via ctx.transition() from inside a state handler:
176
- // ctx.transition('PATROL');
189
+
190
+ // Transitions from inside a handler:
191
+ ctx.transition('PATROL');
192
+
193
+ // Transitions from OUTSIDE a handler (e.g. GOAP director, scripted events):
194
+ driver.forceTransition('DEAD');
195
+
196
+ // Listen to transitions:
197
+ driver.onTransition((from, to) => console.log(`${from} → ${to}`));
177
198
  ```
178
199
 
179
200
  Each state handler is a stateless object — all per-NPC runtime data lives in
180
201
  `INPCOnlineState` (position, target, phase flags, timer, etc.), not in the handler.
181
202
  The handler map can be shared across all NPCs of the same type.
203
+ Game-specific data (GOAP plans, ammo, personality) goes in `ctx.state.custom`.
182
204
 
183
205
  ### StateHandlerMap — three built-in presets
184
206
 
@@ -241,11 +263,12 @@ const ctx: INPCContext = {
241
263
  faction: npc.faction,
242
264
  perception: new MyPerception(npc), // INPCPerception | null
243
265
  health: new MyHealth(npc), // INPCHealth | null
244
- cover: coverAccess, // ICoverAccess | null (from AIPlugin)
245
- danger: dangerAdapter, // IDangerAccess | null
246
- squad: squadAccess, // ISquadAccess | null
247
- suspicion: suspicionAccess, // ISuspicionAccess | null
248
- conditions: conditionAccess, // IConditionAccess | null
266
+ cover: coverAccess, // ICoverAccess | null (from AIPlugin)
267
+ danger: dangerAdapter, // IDangerAccess | null
268
+ pathfinding: gridPathfinding, // IPathfindingAccess | null (A* / NavMesh)
269
+ squad: squadAccess, // ISquadAccess | null
270
+ suspicion: suspicionAccess, // ISuspicionAccess | null
271
+ conditions: conditionAccess, // IConditionAccess | null
249
272
  // pack, restrictedZones also nullable — omit if not used
250
273
  emitShoot: (payload) => fireWeapon(npc, payload),
251
274
  emitMeleeHit:(payload) => applyMelee(npc, payload),
@@ -258,6 +281,85 @@ const ctx: INPCContext = {
258
281
  > Omitting a subsystem (setting it to `null`) silently disables the
259
282
  > features that depend on it, with no code changes required in the handlers.
260
283
 
284
+ ### GOAPDirector — GOAP-to-FSM bridge
285
+
286
+ `GOAPDirector` bridges `GOAPPlanner` with the FSM. Register it as the `COMBAT`
287
+ handler — when NPCs enter combat, the director replans and dispatches each
288
+ action as a sub-state with full lifecycle management.
289
+
290
+ ```ts
291
+ import { GOAPDirector } from '@alife-sdk/ai/goap';
292
+ import type { IGOAPActionHandler } from '@alife-sdk/ai/goap';
293
+
294
+ const director = new GOAPDirector(planner, {
295
+ buildWorldState: (ctx) => WorldState.from({
296
+ isHealthy: ctx.health!.hpPercent >= 0.5,
297
+ inCover: ctx.state.hasTakenCover,
298
+ seeEnemy: ctx.perception?.hasVisibleEnemy() ?? false,
299
+ }),
300
+ goal: WorldState.from({ targetEliminated: true }),
301
+ actionHandlers: {
302
+ TakeCover: {
303
+ enter(ctx) { ctx.pathfinding?.findPath(coverX, coverY); },
304
+ update(ctx, dt) { return ctx.pathfinding?.isNavigating() ? 'running' : 'success'; },
305
+ exit(ctx) {},
306
+ },
307
+ Suppress: {
308
+ enter(ctx) { /* start firing */ },
309
+ update(ctx, dt) { return shotsFired >= 4 ? 'success' : 'running'; },
310
+ exit(ctx) {},
311
+ },
312
+ Attack: {
313
+ enter(ctx) { /* engage */ },
314
+ update(ctx, dt) { return 'running'; }, // terminal — stays until interrupted
315
+ exit(ctx) {},
316
+ },
317
+ },
318
+ interrupts: [
319
+ { condition: ctx => ctx.state.moraleState === 'PANICKED', targetState: 'FLEE' },
320
+ { condition: ctx => ctx.health!.hpPercent < 0.2, targetState: 'WOUNDED' },
321
+ ],
322
+ onNoPlan: (ctx, dt) => { /* fallback when plan is empty */ },
323
+ });
324
+
325
+ handlers.register(ONLINE_STATE.COMBAT, director);
326
+ ```
327
+
328
+ The director:
329
+ - **Replans** on every entry (including after interrupts like WOUNDED → COMBAT)
330
+ - **Dispatches** actions: calls `enter()` → `update()` each tick → `exit()` on success/failure
331
+ - **Advances** to the next action on `'success'`, replans on `'failure'`
332
+ - **Checks interrupts** every tick before the action handler runs
333
+ - **Prevents infinite replans** — stops after 3 consecutive empty plans
334
+ - Stores plan state in `ctx.state.custom` (keys prefixed with `__goap`)
335
+
336
+ ### IPathfindingAccess — pluggable pathfinding
337
+
338
+ State handlers can use obstacle-aware navigation via the optional `IPathfindingAccess`
339
+ subsystem. When provided, `moveAlongPath()` follows waypoints from the pathfinder
340
+ instead of moving in a straight line.
341
+
342
+ ```ts
343
+ // Host implements IPathfindingAccess (e.g. wrapping PathFinding.js, EasyStar, or NavMesh)
344
+ class GridPathfinding implements IPathfindingAccess {
345
+ findPath(targetX, targetY) { /* A* search on grid */ }
346
+ getNextWaypoint() { /* return next waypoint, advance cursor */ }
347
+ setPath(waypoints) { /* replace current path */ }
348
+ isNavigating() { /* true if cursor < path.length */ }
349
+ clearPath() { /* stop following path */ }
350
+ }
351
+
352
+ // Wire to NPC context:
353
+ const ctx = { ..., pathfinding: new GridPathfinding(npc) };
354
+
355
+ // In action handlers:
356
+ ctx.pathfinding?.findPath(target.x, target.y); // compute path
357
+ ctx.pathfinding?.isNavigating(); // check if walking
358
+ ctx.pathfinding?.clearPath(); // stop
359
+ ```
360
+
361
+ When `ctx.pathfinding` is null, all handlers fall back to direct straight-line movement.
362
+
261
363
  ### Cover system
262
364
 
263
365
  The cover module provides a full pipeline from raw cover points to per-NPC
@@ -417,10 +519,11 @@ number wins):
417
519
  | Priority | Goal | Trigger |
418
520
  |---|---|---|
419
521
  | 0 `CRITICALLY_WOUNDED` | Heal + disengage | `hpRatio <= healHpThreshold` |
420
- | 1 `ENEMY_PRESENT` | Eliminate enemy | `snapshot.enemyPresent` |
421
- | 2 `DANGER` | Evade danger | `snapshot.hasDanger` |
422
- | 3 `ANOMALY_AVOID` | Exit anomaly zone | `snapshot.nearAnomalyZone` |
423
- | 4 `DEFAULT` | Patrol / idle | always (fallback) |
522
+ | 1 `PANIC_FLEE` | Flee (morale collapsed) | `isPanicked && hasDanger` |
523
+ | 2 `ENEMY_PRESENT` | Eliminate enemy | `snapshot.enemyPresent` |
524
+ | 3 `DANGER` | Evade danger | `snapshot.hasDanger` |
525
+ | 4 `ANOMALY_AVOID` | Exit anomaly zone | `snapshot.nearAnomalyZone` |
526
+ | 5 `DEFAULT` | Patrol / idle | always (fallback) |
424
527
 
425
528
  #### Integration example
426
529
 
@@ -53,8 +53,6 @@ export interface ICombatTransitionConfig {
53
53
  readonly woundedReentryCooldownMs: number;
54
54
  /** Morale below which the NPC should retreat. */
55
55
  readonly retreatMoraleThreshold: number;
56
- /** Time without visual contact before throwing a grenade (ms). */
57
- readonly grenadeLostSightMs: number;
58
56
  /** Time without visual contact before searching (ms). */
59
57
  readonly lostSightThresholdMs: number;
60
58
  /** Minimum enemies for grenade throw. */
@@ -73,7 +71,7 @@ export declare const NoAmmoRule: ITransitionRule;
73
71
  export declare const EvadeDangerRule: ITransitionRule;
74
72
  /** Priority 4: Low morale → retreat; panicked → flee. */
75
73
  export declare const MoraleRule: ITransitionRule;
76
- /** Priority 5: Lost sight long enough, has grenades → throw. */
74
+ /** Priority 5: Multiple enemies visible and clustered in range → throw grenade. */
77
75
  export declare const GrenadeOpportunityRule: ITransitionRule;
78
76
  /** Priority 6: Lost sight for extended time → search. */
79
77
  export declare const SearchRule: ITransitionRule;
@@ -1 +1 @@
1
- {"version":3,"file":"CombatTransitionChain.d.ts","sourceRoot":"","sources":["../../src/combat/CombatTransitionChain.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4BAA4B;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,mCAAmC;IACnC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,iCAAiC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,4EAA4E;IAC5E,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,iEAAiE;IACjE,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,uBAAuB,GAAG,gBAAgB,CAAC;CACtF;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,0DAA0D;IAC1D,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,0DAA0D;IAC1D,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,iDAAiD;IACjD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,kEAAkE;IAClE,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,yDAAyD;IACzD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,yCAAyC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,oDAAoD;IACpD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,wCAAwC;AACxC,wBAAgB,mCAAmC,CACjD,SAAS,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAC3C,uBAAuB,CAYzB;AAMD,uDAAuD;AACvD,eAAO,MAAM,WAAW,EAAE,eAQzB,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,UAAU,EAAE,eAMxB,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,eAAe,EAAE,eAM7B,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,eASxB,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,EAAE,eAepC,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,eAMxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,eAAe,EAO1D,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,uBAAuB,GAC9B,gBAAgB,CAMlB"}
1
+ {"version":3,"file":"CombatTransitionChain.d.ts","sourceRoot":"","sources":["../../src/combat/CombatTransitionChain.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4BAA4B;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,mCAAmC;IACnC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,iCAAiC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,4EAA4E;IAC5E,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,iEAAiE;IACjE,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,uBAAuB,GAAG,gBAAgB,CAAC;CACtF;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,0DAA0D;IAC1D,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,0DAA0D;IAC1D,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,iDAAiD;IACjD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,yDAAyD;IACzD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,yCAAyC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,oDAAoD;IACpD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,wCAAwC;AACxC,wBAAgB,mCAAmC,CACjD,SAAS,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAC3C,uBAAuB,CAWzB;AAMD,uDAAuD;AACvD,eAAO,MAAM,WAAW,EAAE,eAQzB,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,UAAU,EAAE,eAMxB,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,eAAe,EAAE,eAM7B,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,eASxB,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,sBAAsB,EAAE,eAapC,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,eAMxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,eAAe,EAO1D,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,uBAAuB,GAC9B,gBAAgB,CAMlB"}
@@ -7,7 +7,6 @@ export function createDefaultCombatTransitionConfig(overrides) {
7
7
  woundedHpThreshold: 0.2,
8
8
  woundedReentryCooldownMs: 10000,
9
9
  retreatMoraleThreshold: -0.3,
10
- grenadeLostSightMs: 2000,
11
10
  lostSightThresholdMs: 3000,
12
11
  grenadeMinEnemies: 2,
13
12
  grenadeMinDistance: 80,
@@ -58,15 +57,11 @@ export const MoraleRule = {
58
57
  return null;
59
58
  },
60
59
  };
61
- /** Priority 5: Lost sight long enough, has grenades → throw. */
60
+ /** Priority 5: Multiple enemies visible and clustered in range → throw grenade. */
62
61
  export const GrenadeOpportunityRule = {
63
62
  name: 'grenadeOpportunity',
64
63
  priority: 5,
65
64
  evaluate(ctx, cfg) {
66
- if (ctx.lostSightMs < cfg.grenadeLostSightMs)
67
- return null;
68
- if (ctx.lostSightMs >= cfg.lostSightThresholdMs)
69
- return null;
70
65
  if (ctx.loadout.grenades <= 0)
71
66
  return null;
72
67
  if (ctx.visibleEnemyCount < cfg.grenadeMinEnemies)
@@ -1 +1 @@
1
- {"version":3,"file":"CombatTransitionChain.js","sourceRoot":"","sources":["../../src/combat/CombatTransitionChain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CombatTransitionChain.js","sourceRoot":"","sources":["../../src/combat/CombatTransitionChain.ts"],"names":[],"mappings":"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"}
@@ -56,7 +56,7 @@ export class LoadoutBuilder {
56
56
  return {
57
57
  category,
58
58
  ammo,
59
- maxAmmo: cfg.defaultAmmo,
59
+ maxAmmo: Math.max(ammo, cfg.defaultAmmo),
60
60
  range: cfg.range,
61
61
  damage: cfg.damage,
62
62
  fireRate: cfg.fireRate,
@@ -1 +1 @@
1
- {"version":3,"file":"LoadoutBuilder.js","sourceRoot":"","sources":["../../src/combat/LoadoutBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LoadoutBuilder.js","sourceRoot":"","sources":["../../src/combat/LoadoutBuilder.ts"],"names":[],"mappings":"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"}
@@ -44,7 +44,7 @@ export class CoverAccessAdapter {
44
44
  // ICoverAccess
45
45
  // -------------------------------------------------------------------------
46
46
  findCover(x, y, enemyX, enemyY, type) {
47
- const coverType = type ?? CoverTypeConst.BALANCED;
47
+ const coverType = type?.toLowerCase() ?? CoverTypeConst.BALANCED;
48
48
  const point = this._registry.findCover(coverType, { x, y }, [{ x: enemyX, y: enemyY }], this._npcId);
49
49
  this._lastFoundId = point?.id ?? null;
50
50
  return point !== null ? { x: point.x, y: point.y } : null;
@@ -1 +1 @@
1
- {"version":3,"file":"CoverAccessAdapter.js","sourceRoot":"","sources":["../../src/cover/CoverAccessAdapter.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,yEAAyE;AACzE,sCAAsC;AAItC,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAInE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,kBAAkB;IAG7B;;;;;;OAMG;IACH,YACmB,SAAwB,EACxB,aAAwC,EACxC,MAAc;QAFd,cAAS,GAAT,SAAS,CAAe;QACxB,kBAAa,GAAb,aAAa,CAA2B;QACxC,WAAM,GAAN,MAAM,CAAQ;QAZzB,iBAAY,GAAkB,IAAI,CAAC;IAaxC,CAAC;IAEJ,4EAA4E;IAC5E,eAAe;IACf,4EAA4E;IAE5E,SAAS,CACP,CAAS,EACT,CAAS,EACT,MAAc,EACd,MAAc,EACd,IAAa;QAEb,MAAM,SAAS,GAAe,IAAkB,IAAI,cAAc,CAAC,QAAQ,CAAC;QAE5E,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CACpC,SAAS,EACT,EAAE,CAAC,EAAE,CAAC,EAAE,EACR,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAC1B,IAAI,CAAC,MAAM,CACZ,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC;QAEtC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,CAAC;IAED;;;;;;;;OAQG;IACH,aAAa,CAAC,KAAa,EAAE,KAAc;QACzC,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC3E,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAC/B,IAAI,CAAC,YAAY,EACjB,KAAK,EACL,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAC5C,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"CoverAccessAdapter.js","sourceRoot":"","sources":["../../src/cover/CoverAccessAdapter.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,yEAAyE;AACzE,sCAAsC;AAItC,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAInE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,kBAAkB;IAG7B;;;;;;OAMG;IACH,YACmB,SAAwB,EACxB,aAAwC,EACxC,MAAc;QAFd,cAAS,GAAT,SAAS,CAAe;QACxB,kBAAa,GAAb,aAAa,CAA2B;QACxC,WAAM,GAAN,MAAM,CAAQ;QAZzB,iBAAY,GAAkB,IAAI,CAAC;IAaxC,CAAC;IAEJ,4EAA4E;IAC5E,eAAe;IACf,4EAA4E;IAE5E,SAAS,CACP,CAAS,EACT,CAAS,EACT,MAAc,EACd,MAAc,EACd,IAAa;QAEb,MAAM,SAAS,GAAe,IAAI,EAAE,WAAW,EAAgB,IAAI,cAAc,CAAC,QAAQ,CAAC;QAE3F,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CACpC,SAAS,EACT,EAAE,CAAC,EAAE,CAAC,EAAE,EACR,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAC1B,IAAI,CAAC,MAAM,CACZ,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC;QAEtC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,CAAC;IAED;;;;;;;;OAQG;IACH,aAAa,CAAC,KAAa,EAAE,KAAc;QACzC,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC3E,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAC/B,IAAI,CAAC,YAAY,EACjB,KAAK,EACL,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAC5C,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,KAAa;QACrB,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"CoverEvaluators.d.ts","sourceRoot":"","sources":["../../src/cover/CoverEvaluators.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAkB,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AA6B7D,qBAAa,mBAAoB,YAAW,eAAe;IACzD,QAAQ,CAAC,IAAI,UAAmB;IAEhC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,MAAM,EAAE,YAAY;IAIhC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM;CAajE;AAMD,qBAAa,iBAAkB,YAAW,eAAe;IACvD,QAAQ,CAAC,IAAI,QAAiB;IAE9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,MAAM,EAAE,YAAY;IAIhC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM;CAajE;AAMD,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,QAAQ,CAAC,IAAI,aAAsB;IAEnC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM;CAwBjE;AAMD,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,QAAQ,CAAC,IAAI,WAAoB;IAEjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,YAAY;IAOhC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM;CAsCjE;AAMD,qBAAa,kBAAmB,YAAW,eAAe;IACxD,QAAQ,CAAC,IAAI,SAAkB;IAE/B,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM;CAkBjE;AAMD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,GACnB,WAAW,CAAC,SAAS,EAAE,eAAe,CAAC,CAQzC;AAED,6CAA6C;AAC7C,eAAO,MAAM,kBAAkB,+BAAyB,CAAC"}
1
+ {"version":3,"file":"CoverEvaluators.d.ts","sourceRoot":"","sources":["../../src/cover/CoverEvaluators.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAkB,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AA6B7D,qBAAa,mBAAoB,YAAW,eAAe;IACzD,QAAQ,CAAC,IAAI,UAAmB;IAEhC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,MAAM,EAAE,YAAY;IAIhC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM;CAajE;AAMD,qBAAa,iBAAkB,YAAW,eAAe;IACvD,QAAQ,CAAC,IAAI,QAAiB;IAE9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,MAAM,EAAE,YAAY;IAIhC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM;CAajE;AAMD,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,QAAQ,CAAC,IAAI,aAAsB;IAEnC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM;CA+BjE;AAMD,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,QAAQ,CAAC,IAAI,WAAoB;IAEjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,YAAY;IAOhC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM;CAsCjE;AAMD,qBAAa,kBAAmB,YAAW,eAAe;IACxD,QAAQ,CAAC,IAAI,SAAkB;IAE/B,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM;CAkBjE;AAMD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,GACnB,WAAW,CAAC,SAAS,EAAE,eAAe,CAAC,CAQzC;AAED,6CAA6C;AAC7C,eAAO,MAAM,kBAAkB,+BAAyB,CAAC"}
@@ -80,20 +80,27 @@ export class BalancedCoverEvaluator {
80
80
  const centroid = averageEnemyPosition(context.enemies);
81
81
  const coverDist = Math.sqrt(distanceSq(context.npcPosition, point));
82
82
  const enemyDist = Math.sqrt(distanceSq(point, centroid));
83
- // Factor 1: proximity to NPC (closer = better, max 30 points).
84
- const proximityScore = clamp01(1.0 - coverDist / 400) * 30;
85
- // Factor 2: distance from enemies (farther = safer, max 30 points).
86
- const safetyScore = clamp01(enemyDist / 600) * 30;
87
- // Factor 3: angle quality — cover between NPC and enemy is ideal (max 30 points).
88
- const npcToEnemy = angleBetween(context.npcPosition, centroid);
89
- const npcToCover = angleBetween(context.npcPosition, point);
90
- let angleDelta = Math.abs(npcToEnemy - npcToCover);
91
- if (angleDelta > Math.PI)
92
- angleDelta = 2 * Math.PI - angleDelta;
93
- // Small angle difference means cover is roughly toward/away from enemy.
94
- const angleScore = clamp01(1.0 - angleDelta / Math.PI) * 30;
83
+ // Factor 1: proximity to NPC (closer = better, max 25 points).
84
+ const proximityScore = clamp01(1.0 - coverDist / 400) * 25;
85
+ // Factor 2: distance from enemies (farther = safer, max 25 points).
86
+ const safetyScore = clamp01(enemyDist / 600) * 25;
87
+ // Factor 3: shielding quality (max 40 points).
88
+ // If facingAngle is available, check that the obstacle (building) is
89
+ // between the cover point and the enemy. facingAngle points from the
90
+ // cover point toward the building center. The enemy should be roughly
91
+ // in the same direction as the building (so the building blocks fire).
92
+ let shieldingScore = 15; // neutral default when facingAngle is missing
93
+ if (point.facingAngle !== undefined) {
94
+ const coverToEnemy = angleBetween(point, centroid);
95
+ let angleDiff = Math.abs(coverToEnemy - point.facingAngle);
96
+ if (angleDiff > Math.PI)
97
+ angleDiff = 2 * Math.PI - angleDiff;
98
+ // angleDiff ≈ 0 means enemy is behind the building (ideal cover)
99
+ // angleDiff ≈ π means enemy is on the NPC's side (no protection)
100
+ shieldingScore = clamp01(1.0 - angleDiff / (Math.PI * 0.75)) * 40;
101
+ }
95
102
  // Normalize to [0, 1] (max raw = 90).
96
- return (proximityScore + safetyScore + angleScore) / 90;
103
+ return (proximityScore + safetyScore + shieldingScore) / 90;
97
104
  }
98
105
  }
99
106
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"CoverEvaluators.js","sourceRoot":"","sources":["../../src/cover/CoverEvaluators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CoverEvaluators.js","sourceRoot":"","sources":["../../src/cover/CoverEvaluators.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CoverLockRegistry.d.ts","sourceRoot":"","sources":["../../src/cover/CoverLockRegistry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA4B/E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,aAAa,CAAK;IAE1B;;;;OAIG;gBACS,MAAM,EAAE,MAAM,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IASpE,OAAO,CACL,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9C,OAAO;IAkDV,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAU5C,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAc9B,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAkBpD,YAAY,IAAI,MAAM;IAoBtB,KAAK,IAAI,IAAI;IAKb;;;;OAIG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAMD,OAAO,CAAC,eAAe;CAOxB"}
1
+ {"version":3,"file":"CoverLockRegistry.d.ts","sourceRoot":"","sources":["../../src/cover/CoverLockRegistry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA4B/E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,aAAa,CAAK;IAE1B;;;;OAIG;gBACS,MAAM,EAAE,MAAM,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IASpE,OAAO,CACL,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9C,OAAO;IAkDV,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAY5C,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAc9B,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAkBpD,YAAY,IAAI,MAAM;IAoBtB,KAAK,IAAI,IAAI;IAKb;;;;OAIG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAMD,OAAO,CAAC,eAAe;CAOxB"}
@@ -85,6 +85,7 @@ export class CoverLockRegistry {
85
85
  return true;
86
86
  }
87
87
  unlock(pointId, npcId) {
88
+ this._maybeAutoPurge();
88
89
  const entry = this._points.get(pointId);
89
90
  if (entry === undefined)
90
91
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"CoverLockRegistry.js","sourceRoot":"","sources":["../../src/cover/CoverLockRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CoverLockRegistry.js","sourceRoot":"","sources":["../../src/cover/CoverLockRegistry.ts"],"names":[],"mappings":"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"}
@@ -47,7 +47,7 @@ export declare class CoverRegistry {
47
47
  /**
48
48
  * Add a single cover point. Returns the created point with a generated ID.
49
49
  */
50
- addPoint(x: number, y: number, radius?: number): ICoverPoint;
50
+ addPoint(x: number, y: number, radius?: number, facingAngle?: number): ICoverPoint;
51
51
  /**
52
52
  * Bulk-register cover points from coordinate data.
53
53
  */
@@ -55,6 +55,7 @@ export declare class CoverRegistry {
55
55
  x: number;
56
56
  y: number;
57
57
  radius?: number;
58
+ facingAngle?: number;
58
59
  }[]): void;
59
60
  /**
60
61
  * Remove a cover point by ID. Releases any occupancy.
@@ -1 +1 @@
1
- {"version":3,"file":"CoverRegistry.d.ts","sourceRoot":"","sources":["../../src/cover/CoverRegistry.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAqB,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IACzD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0C;IACrE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAQ;IAE/B;;;;;;;;OAQG;gBACS,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,kBAAkB;IAWpF;;OAEG;IACH,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW;IAe5D;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,SAAS;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI;IAM3E;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAMrC,+CAA+C;IAC/C,OAAO,IAAI,MAAM;IAIjB,sCAAsC;IACtC,MAAM,IAAI,SAAS,WAAW,EAAE;IAahC;;;;;OAKG;IACH,SAAS,CACP,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,IAAI,EACjB,OAAO,EAAE,SAAS,IAAI,EAAE,EACxB,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,GACjB,WAAW,GAAG,IAAI;IAsCrB;;;OAGG;IACH,oBAAoB,CAClB,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,IAAI,EACjB,OAAO,EAAE,SAAS,IAAI,EAAE,EACxB,KAAK,EAAE,MAAM,GACZ,WAAW,GAAG,IAAI;IASrB;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,IAAI,GAAG,WAAW,GAAG,IAAI;IAqB7C,sCAAsC;IACtC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5C,gFAAgF;IAChF,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ9C,iEAAiE;IACjE,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAY/B,0DAA0D;IAC1D,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,SAAS,EAAE;IAItD,oEAAoE;IACpE,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAStF,yEAAyE;IACzE,KAAK,IAAI,IAAI;CAQd"}
1
+ {"version":3,"file":"CoverRegistry.d.ts","sourceRoot":"","sources":["../../src/cover/CoverRegistry.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAqB,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IACzD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0C;IACrE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAQ;IAE/B;;;;;;;;OAQG;gBACS,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,kBAAkB;IAWpF;;OAEG;IACH,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW;IAgBlF;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,SAAS;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI;IAMjG;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAMrC,+CAA+C;IAC/C,OAAO,IAAI,MAAM;IAIjB,sCAAsC;IACtC,MAAM,IAAI,SAAS,WAAW,EAAE;IAahC;;;;;OAKG;IACH,SAAS,CACP,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,IAAI,EACjB,OAAO,EAAE,SAAS,IAAI,EAAE,EACxB,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,GACjB,WAAW,GAAG,IAAI;IAsCrB;;;OAGG;IACH,oBAAoB,CAClB,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,IAAI,EACjB,OAAO,EAAE,SAAS,IAAI,EAAE,EACxB,KAAK,EAAE,MAAM,GACZ,WAAW,GAAG,IAAI;IASrB;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,IAAI,GAAG,WAAW,GAAG,IAAI;IAqB7C,sCAAsC;IACtC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5C,gFAAgF;IAChF,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ9C,iEAAiE;IACjE,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAY/B,0DAA0D;IAC1D,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,SAAS,EAAE;IAItD,oEAAoE;IACpE,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAStF,yEAAyE;IACzE,KAAK,IAAI,IAAI;CAQd"}
@@ -52,13 +52,14 @@ export class CoverRegistry {
52
52
  /**
53
53
  * Add a single cover point. Returns the created point with a generated ID.
54
54
  */
55
- addPoint(x, y, radius) {
55
+ addPoint(x, y, radius, facingAngle) {
56
56
  const id = `cover_${String(this.idCounter++).padStart(4, '0')}`;
57
57
  const point = {
58
58
  id,
59
59
  x,
60
60
  y,
61
61
  radius: radius ?? this.config.pointRadius,
62
+ facingAngle,
62
63
  occupiedBy: null,
63
64
  loopholes: [],
64
65
  };
@@ -71,7 +72,7 @@ export class CoverRegistry {
71
72
  */
72
73
  addPoints(data) {
73
74
  for (const p of data) {
74
- this.addPoint(p.x, p.y, p.radius);
75
+ this.addPoint(p.x, p.y, p.radius, p.facingAngle);
75
76
  }
76
77
  }
77
78
  /**
@@ -95,7 +96,7 @@ export class CoverRegistry {
95
96
  this._allPointsCache.push(p);
96
97
  this._allPointsDirty = false;
97
98
  }
98
- return this._allPointsCache;
99
+ return [...this._allPointsCache];
99
100
  }
100
101
  // -----------------------------------------------------------------
101
102
  // Cover Search