@alife-sdk/ai 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +150 -47
- package/dist/combat/CombatTransitionChain.d.ts +1 -3
- package/dist/combat/CombatTransitionChain.d.ts.map +1 -1
- package/dist/combat/CombatTransitionChain.js +1 -6
- package/dist/combat/CombatTransitionChain.js.map +1 -1
- package/dist/combat/LoadoutBuilder.js +1 -1
- package/dist/combat/LoadoutBuilder.js.map +1 -1
- package/dist/cover/CoverAccessAdapter.js +1 -1
- package/dist/cover/CoverAccessAdapter.js.map +1 -1
- package/dist/cover/CoverEvaluators.d.ts.map +1 -1
- package/dist/cover/CoverEvaluators.js +20 -13
- package/dist/cover/CoverEvaluators.js.map +1 -1
- package/dist/cover/CoverLockRegistry.d.ts.map +1 -1
- package/dist/cover/CoverLockRegistry.js +1 -0
- package/dist/cover/CoverLockRegistry.js.map +1 -1
- package/dist/cover/CoverRegistry.d.ts +2 -1
- package/dist/cover/CoverRegistry.d.ts.map +1 -1
- package/dist/cover/CoverRegistry.js +4 -3
- package/dist/cover/CoverRegistry.js.map +1 -1
- package/dist/goap/GOAPController.d.ts.map +1 -1
- package/dist/goap/GOAPController.js +21 -3
- package/dist/goap/GOAPController.js.map +1 -1
- package/dist/goap/GOAPDirector.d.ts +89 -0
- package/dist/goap/GOAPDirector.d.ts.map +1 -0
- package/dist/goap/GOAPDirector.js +142 -0
- package/dist/goap/GOAPDirector.js.map +1 -0
- package/dist/goap/GoalSelector.d.ts +1 -1
- package/dist/goap/GoalSelector.d.ts.map +1 -1
- package/dist/goap/GoalSelector.js +27 -2
- package/dist/goap/GoalSelector.js.map +1 -1
- package/dist/goap/WorldStateBuilder.js +2 -2
- package/dist/goap/WorldStateBuilder.js.map +1 -1
- package/dist/goap/index.d.ts +2 -0
- package/dist/goap/index.d.ts.map +1 -1
- package/dist/goap/index.js +1 -0
- package/dist/goap/index.js.map +1 -1
- package/dist/navigation/PathSmoother.d.ts.map +1 -1
- package/dist/navigation/PathSmoother.js +7 -2
- package/dist/navigation/PathSmoother.js.map +1 -1
- package/dist/navigation/RestrictedZoneManager.d.ts +10 -1
- package/dist/navigation/RestrictedZoneManager.d.ts.map +1 -1
- package/dist/navigation/RestrictedZoneManager.js +14 -3
- package/dist/navigation/RestrictedZoneManager.js.map +1 -1
- package/dist/navigation/SmoothPathFollower.d.ts +3 -0
- package/dist/navigation/SmoothPathFollower.d.ts.map +1 -1
- package/dist/navigation/SmoothPathFollower.js +8 -5
- package/dist/navigation/SmoothPathFollower.js.map +1 -1
- package/dist/perception/NPCSensors.d.ts +6 -6
- package/dist/perception/NPCSensors.d.ts.map +1 -1
- package/dist/perception/NPCSensors.js +6 -6
- package/dist/perception/NPCSensors.js.map +1 -1
- package/dist/perception/PerceptionQuery.d.ts +1 -5
- package/dist/perception/PerceptionQuery.d.ts.map +1 -1
- package/dist/perception/PerceptionQuery.js +2 -9
- package/dist/perception/PerceptionQuery.js.map +1 -1
- package/dist/states/INPCContext.d.ts +64 -0
- package/dist/states/INPCContext.d.ts.map +1 -1
- package/dist/states/INPCOnlineState.d.ts +64 -12
- package/dist/states/INPCOnlineState.d.ts.map +1 -1
- package/dist/states/IStateConfig.d.ts +22 -4
- package/dist/states/IStateConfig.d.ts.map +1 -1
- package/dist/states/IStateConfig.js +4 -2
- package/dist/states/IStateConfig.js.map +1 -1
- package/dist/states/IStateTransitionMap.d.ts +1 -0
- package/dist/states/IStateTransitionMap.d.ts.map +1 -1
- package/dist/states/IStateTransitionMap.js +1 -0
- package/dist/states/IStateTransitionMap.js.map +1 -1
- package/dist/states/NPCOnlineState.d.ts.map +1 -1
- package/dist/states/NPCOnlineState.js +8 -5
- package/dist/states/NPCOnlineState.js.map +1 -1
- package/dist/states/OnlineAIDriver.d.ts +34 -0
- package/dist/states/OnlineAIDriver.d.ts.map +1 -1
- package/dist/states/OnlineAIDriver.js +49 -0
- package/dist/states/OnlineAIDriver.js.map +1 -1
- package/dist/states/handlers/AlertState.d.ts.map +1 -1
- package/dist/states/handlers/AlertState.js +0 -1
- package/dist/states/handlers/AlertState.js.map +1 -1
- package/dist/states/handlers/CampState.js +5 -5
- package/dist/states/handlers/CampState.js.map +1 -1
- package/dist/states/handlers/ChargeState.d.ts.map +1 -1
- package/dist/states/handlers/ChargeState.js +14 -6
- package/dist/states/handlers/ChargeState.js.map +1 -1
- package/dist/states/handlers/CombatState.d.ts +1 -1
- package/dist/states/handlers/CombatState.d.ts.map +1 -1
- package/dist/states/handlers/CombatState.js +16 -7
- package/dist/states/handlers/CombatState.js.map +1 -1
- package/dist/states/handlers/CombatTransitionHandler.d.ts +8 -1
- package/dist/states/handlers/CombatTransitionHandler.d.ts.map +1 -1
- package/dist/states/handlers/CombatTransitionHandler.js +18 -4
- package/dist/states/handlers/CombatTransitionHandler.js.map +1 -1
- package/dist/states/handlers/DeadState.d.ts.map +1 -1
- package/dist/states/handlers/DeadState.js +0 -3
- package/dist/states/handlers/DeadState.js.map +1 -1
- package/dist/states/handlers/EvadeGrenadeState.d.ts +1 -1
- package/dist/states/handlers/EvadeGrenadeState.d.ts.map +1 -1
- package/dist/states/handlers/EvadeGrenadeState.js +8 -17
- package/dist/states/handlers/EvadeGrenadeState.js.map +1 -1
- package/dist/states/handlers/FleeState.d.ts.map +1 -1
- package/dist/states/handlers/FleeState.js +34 -5
- package/dist/states/handlers/FleeState.js.map +1 -1
- package/dist/states/handlers/IdleState.d.ts.map +1 -1
- package/dist/states/handlers/IdleState.js +16 -6
- package/dist/states/handlers/IdleState.js.map +1 -1
- package/dist/states/handlers/KillWoundedState.d.ts.map +1 -1
- package/dist/states/handlers/KillWoundedState.js +14 -0
- package/dist/states/handlers/KillWoundedState.js.map +1 -1
- package/dist/states/handlers/PatrolState.d.ts.map +1 -1
- package/dist/states/handlers/PatrolState.js +10 -0
- package/dist/states/handlers/PatrolState.js.map +1 -1
- package/dist/states/handlers/RetreatState.d.ts.map +1 -1
- package/dist/states/handlers/RetreatState.js +19 -9
- package/dist/states/handlers/RetreatState.js.map +1 -1
- package/dist/states/handlers/SleepState.d.ts.map +1 -1
- package/dist/states/handlers/SleepState.js +9 -12
- package/dist/states/handlers/SleepState.js.map +1 -1
- package/dist/states/handlers/StalkState.js +2 -2
- package/dist/states/handlers/TakeCoverState.d.ts.map +1 -1
- package/dist/states/handlers/TakeCoverState.js +6 -13
- package/dist/states/handlers/TakeCoverState.js.map +1 -1
- package/dist/states/handlers/WoundedState.d.ts.map +1 -1
- package/dist/states/handlers/WoundedState.js +4 -3
- package/dist/states/handlers/WoundedState.js.map +1 -1
- package/dist/states/handlers/_utils.d.ts +23 -0
- package/dist/states/handlers/_utils.d.ts.map +1 -1
- package/dist/states/handlers/_utils.js +52 -3
- package/dist/states/handlers/_utils.js.map +1 -1
- package/dist/states/index.d.ts +1 -1
- package/dist/states/index.d.ts.map +1 -1
- package/dist/states/index.js.map +1 -1
- package/dist/suspicion/SuspicionAccumulator.d.ts +6 -5
- package/dist/suspicion/SuspicionAccumulator.d.ts.map +1 -1
- package/dist/suspicion/SuspicionAccumulator.js +7 -6
- package/dist/suspicion/SuspicionAccumulator.js.map +1 -1
- package/dist/types/ICoverPoint.d.ts +6 -0
- package/dist/types/ICoverPoint.d.ts.map +1 -1
- package/dist/types/ICoverPoint.js.map +1 -1
- package/dist/types/IPerceptionTypes.d.ts +27 -4
- package/dist/types/IPerceptionTypes.d.ts.map +1 -1
- package/dist/types/IPerceptionTypes.js +9 -4
- package/dist/types/IPerceptionTypes.js.map +1 -1
- package/package.json +3 -3
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
|
-
- **
|
|
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
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
//
|
|
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
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
176
|
-
//
|
|
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:
|
|
245
|
-
danger:
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
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 `
|
|
421
|
-
| 2 `
|
|
422
|
-
| 3 `
|
|
423
|
-
| 4 `
|
|
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:
|
|
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,
|
|
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:
|
|
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":"AAAA,kCAAkC;AAClC,gEAAgE;AAChE,4DAA4D;
|
|
1
|
+
{"version":3,"file":"CombatTransitionChain.js","sourceRoot":"","sources":["../../src/combat/CombatTransitionChain.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadoutBuilder.js","sourceRoot":"","sources":["../../src/combat/LoadoutBuilder.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,oDAAoD;AACpD,iDAAiD;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAIvD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,cAAc;IAOzB,YAAY,aAAqC;QANzC,YAAO,GAAuB,IAAI,CAAC;QACnC,cAAS,GAAuB,IAAI,CAAC;QACrC,aAAQ,GAAG,CAAC,CAAC;QACb,YAAO,GAAG,CAAC,CAAC;QAIlB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,QAAwB,EAAE,IAAa;QACjD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,QAAwB,EAAE,IAAa;QACnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,KAAa;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,QAAwB,EAAE,YAAqB;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,6CAA6C,MAAM,CAAC,QAAQ,CAAC,kDAAkD,CAAC,CAAC;QACnI,CAAC;QACD,MAAM,IAAI,GAAG,YAAY,IAAI,GAAG,CAAC,WAAW,CAAC;QAC7C,OAAO;YACL,QAAQ;YACR,IAAI;YACJ,OAAO,EAAE,GAAG,CAAC,WAAW;
|
|
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,
|
|
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;
|
|
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
|
|
84
|
-
const proximityScore = clamp01(1.0 - coverDist / 400) *
|
|
85
|
-
// Factor 2: distance from enemies (farther = safer, max
|
|
86
|
-
const safetyScore = clamp01(enemyDist / 600) *
|
|
87
|
-
// Factor 3:
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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 +
|
|
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;
|
|
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"}
|
|
@@ -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;
|
|
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
|