@alife-sdk/ai 0.3.0 → 0.4.1
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/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/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/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/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/INPCOnlineState.d.ts +42 -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.js +6 -5
- package/dist/states/NPCOnlineState.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 +2 -0
- package/dist/states/handlers/_utils.d.ts.map +1 -1
- package/dist/states/handlers/_utils.js +16 -3
- package/dist/states/handlers/_utils.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
|
@@ -33,7 +33,7 @@ export function createDefaultStateConfig(overrides) {
|
|
|
33
33
|
evadeSafeDistance: 200,
|
|
34
34
|
woundedLastStandRange: 100,
|
|
35
35
|
meleeRange: 48,
|
|
36
|
-
|
|
36
|
+
stalkUncloakDistance: 80,
|
|
37
37
|
restrictedZoneCheckIntervalMs: 1000,
|
|
38
38
|
// -----------------------------------------------------------------------
|
|
39
39
|
// ICombatConfig
|
|
@@ -48,6 +48,7 @@ export function createDefaultStateConfig(overrides) {
|
|
|
48
48
|
medkitUseDurationMs: 3000,
|
|
49
49
|
killWoundedEnemyHpThreshold: 0.25,
|
|
50
50
|
killWoundedExecuteRange: 80,
|
|
51
|
+
coverSeekCooldownMs: 3000,
|
|
51
52
|
// -----------------------------------------------------------------------
|
|
52
53
|
// IMonsterConfig
|
|
53
54
|
// -----------------------------------------------------------------------
|
|
@@ -55,6 +56,7 @@ export function createDefaultStateConfig(overrides) {
|
|
|
55
56
|
chargeDamageMultiplier: 2.0,
|
|
56
57
|
meleeCooldownMs: 1000,
|
|
57
58
|
chargeWindupMs: 600,
|
|
59
|
+
chargeTimeoutMs: 3000,
|
|
58
60
|
leapWindupMs: 400,
|
|
59
61
|
leapAirtimeMs: 350,
|
|
60
62
|
psiChannelMs: 2000,
|
|
@@ -62,7 +64,6 @@ export function createDefaultStateConfig(overrides) {
|
|
|
62
64
|
patrolRadius: 180,
|
|
63
65
|
outerRadius: 350,
|
|
64
66
|
stalkAlphaInvisible: 0.08,
|
|
65
|
-
stalkAlphaShimmer: 0.3,
|
|
66
67
|
// -----------------------------------------------------------------------
|
|
67
68
|
// ITimingConfig
|
|
68
69
|
// -----------------------------------------------------------------------
|
|
@@ -87,6 +88,7 @@ export function createDefaultStateConfig(overrides) {
|
|
|
87
88
|
killWoundedTauntMs: 1200,
|
|
88
89
|
killWoundedBurstCount: 3,
|
|
89
90
|
killWoundedPauseMs: 1000,
|
|
91
|
+
evadeGrenadeDurationMs: 2000,
|
|
90
92
|
packAlertIntervalMs: 500,
|
|
91
93
|
packAlertTtlMs: 5000,
|
|
92
94
|
loopholeWaitMinMs: 1500,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IStateConfig.js","sourceRoot":"","sources":["../../src/states/IStateConfig.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,+DAA+D;AAC/D,oEAAoE;AACpE,6CAA6C;
|
|
1
|
+
{"version":3,"file":"IStateConfig.js","sourceRoot":"","sources":["../../src/states/IStateConfig.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,+DAA+D;AAC/D,oEAAoE;AACpE,6CAA6C;AA4Z7C,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,SAAiC;IAEjC,OAAO;QACL,0EAA0E;QAC1E,kBAAkB;QAClB,0EAA0E;QAC1E,aAAa,EAAE,GAAG;QAClB,mBAAmB,EAAE,GAAG;QACxB,mBAAmB,EAAE,GAAG;QACxB,sBAAsB,EAAE,GAAG;QAC3B,oBAAoB,EAAE,GAAG;QACzB,qBAAqB,EAAE,GAAG;QAC1B,oBAAoB,EAAE,GAAG;QAEzB,eAAe,EAAE,EAAE;QACnB,uBAAuB,EAAE,EAAE;QAC3B,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,GAAG;QACjB,iBAAiB,EAAE,GAAG;QACtB,qBAAqB,EAAE,GAAG;QAC1B,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,EAAE;QACxB,6BAA6B,EAAE,IAAK;QAEpC,0EAA0E;QAC1E,gBAAgB;QAChB,0EAA0E;QAC1E,kBAAkB,EAAE,GAAG;QACvB,sBAAsB,EAAE,CAAC,GAAG;QAC5B,oBAAoB,EAAE,CAAC,GAAG;QAE1B,UAAU,EAAE,IAAK;QACjB,eAAe,EAAE,IAAK;QAEtB,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,GAAG;QACpB,mBAAmB,EAAE,IAAK;QAC1B,2BAA2B,EAAE,IAAI;QACjC,uBAAuB,EAAE,EAAE;QAC3B,mBAAmB,EAAE,IAAK;QAE1B,0EAA0E;QAC1E,iBAAiB;QACjB,0EAA0E;QAC1E,WAAW,EAAE,EAAE;QACf,sBAAsB,EAAE,GAAG;QAC3B,eAAe,EAAE,IAAK;QAEtB,cAAc,EAAE,GAAG;QACnB,eAAe,EAAE,IAAK;QACtB,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,GAAG;QAClB,YAAY,EAAE,IAAK;QAEnB,eAAe,EAAE,EAAE;QACnB,YAAY,EAAE,GAAG;QACjB,WAAW,EAAE,GAAG;QAEhB,mBAAmB,EAAE,IAAI;QAEzB,0EAA0E;QAC1E,gBAAgB;QAChB,0EAA0E;QAC1E,aAAa,EAAE,IAAK;QACpB,cAAc,EAAE,IAAK;QACrB,oBAAoB,EAAE,KAAM;QAC5B,oBAAoB,EAAE,IAAK;QAC3B,qBAAqB,EAAE,IAAK;QAC5B,aAAa,EAAE,IAAK;QACpB,qBAAqB,EAAE,GAAG;QAC1B,wBAAwB,EAAE,GAAG;QAE7B,oBAAoB,EAAE,SAAS;QAC/B,sBAAsB,EAAE,GAAG;QAC3B,uBAAuB,EAAE,GAAG;QAC5B,wBAAwB,EAAE,KAAM;QAChC,uBAAuB,EAAE,IAAK;QAC9B,mBAAmB,EAAE,IAAK;QAC1B,wBAAwB,EAAE,KAAM;QAChC,oBAAoB,EAAE,GAAG;QACzB,wBAAwB,EAAE,IAAK;QAC/B,gBAAgB,EAAE,GAAG;QACrB,kBAAkB,EAAE,IAAK;QACzB,qBAAqB,EAAE,CAAC;QACxB,kBAAkB,EAAE,IAAK;QACzB,sBAAsB,EAAE,IAAK;QAC7B,mBAAmB,EAAE,GAAG;QACxB,cAAc,EAAE,IAAK;QAErB,iBAAiB,EAAE,IAAK;QACxB,iBAAiB,EAAE,IAAK;QACxB,sBAAsB,EAAE,GAAG;QAC3B,sBAAsB,EAAE,IAAK;QAC7B,wBAAwB,EAAE,GAAG;QAE7B,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IStateTransitionMap.d.ts","sourceRoot":"","sources":["../../src/states/IStateTransitionMap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,mBAAmB;IAElC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAG3B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IAGrB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAG1B,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"IStateTransitionMap.d.ts","sourceRoot":"","sources":["../../src/states/IStateTransitionMap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,mBAAmB;IAElC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAG3B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IAGrB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAG1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IAGnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IAGxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IAGxB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IAGxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IAGrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAG3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IAGtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IAGvB,UAAU,EAAE,MAAM,CAAC;IAGnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IAGrB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAG5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAG3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAG3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAG7B,eAAe,EAAI,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACvC,mBAAmB,CAsErB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IStateTransitionMap.js","sourceRoot":"","sources":["../../src/states/IStateTransitionMap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IStateTransitionMap.js","sourceRoot":"","sources":["../../src/states/IStateTransitionMap.ts"],"names":[],"mappings":"AAgIA;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,SAAwC;IAExC,OAAO;QACL,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,MAAM;QACnB,gBAAgB,EAAE,OAAO;QACzB,aAAa,EAAE,OAAO;QACtB,kBAAkB,EAAE,OAAO;QAC3B,kBAAkB,EAAE,OAAO;QAC3B,kBAAkB,EAAE,MAAM;QAC1B,YAAY,EAAE,QAAQ;QACtB,cAAc,EAAE,QAAQ;QACxB,YAAY,EAAE,MAAM;QACpB,eAAe,EAAE,MAAM;QACvB,iBAAiB,EAAE,QAAQ;QAC3B,gBAAgB,EAAE,MAAM;QACxB,cAAc,EAAE,SAAS;QACzB,eAAe,EAAE,SAAS;QAC1B,aAAa,EAAE,YAAY;QAC3B,kBAAkB,EAAE,QAAQ;QAC5B,mBAAmB,EAAE,MAAM;QAC3B,iBAAiB,EAAE,SAAS;QAC5B,YAAY,EAAE,OAAO;QACrB,UAAU,EAAE,QAAQ;QACpB,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,MAAM;QACvB,iBAAiB,EAAE,QAAQ;QAC3B,eAAe,EAAE,QAAQ;QACzB,YAAY,EAAE,QAAQ;QACtB,cAAc,EAAE,QAAQ;QACxB,eAAe,EAAE,QAAQ;QACzB,eAAe,EAAE,QAAQ;QACzB,cAAc,EAAE,MAAM;QACtB,gBAAgB,EAAE,MAAM;QACxB,iBAAiB,EAAE,MAAM;QACzB,eAAe,EAAE,QAAQ;QACzB,gBAAgB,EAAE,QAAQ;QAC1B,WAAW,EAAE,QAAQ;QACrB,YAAY,EAAE,OAAO;QACrB,YAAY,EAAE,OAAO;QACrB,gBAAgB,EAAE,MAAM;QACxB,kBAAkB,EAAE,QAAQ;QAC5B,gBAAgB,EAAE,QAAQ;QAC1B,aAAa,EAAE,MAAM;QACrB,aAAa,EAAE,QAAQ;QACvB,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;QACpB,aAAa,EAAE,QAAQ;QACvB,YAAY,EAAE,MAAM;QACpB,eAAe,EAAE,MAAM;QACvB,oBAAoB,EAAE,OAAO;QAC7B,mBAAmB,EAAE,MAAM;QAC3B,kBAAkB,EAAE,OAAO;QAC3B,oBAAoB,EAAE,QAAQ;QAC9B,kBAAkB,EAAE,MAAM;QAC1B,mBAAmB,EAAE,cAAc;QACnC,iBAAiB,EAAE,cAAc;QACjC,kBAAkB,EAAE,OAAO;QAC3B,qBAAqB,EAAE,QAAQ;QAC/B,kBAAkB,EAAE,MAAM;QAC1B,mBAAmB,EAAE,cAAc;QACnC,kBAAkB,EAAE,cAAc;QAClC,qBAAqB,EAAE,QAAQ;QAC/B,qBAAqB,EAAE,QAAQ;QAC/B,kBAAkB,EAAE,MAAM;QAC1B,oBAAoB,EAAE,QAAQ;QAC9B,eAAe,EAAI,OAAO;QAC1B,iBAAiB,EAAE,OAAO;QAC1B,iBAAiB,EAAE,QAAQ;QAC3B,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -31,11 +31,13 @@ export function createDefaultNPCOnlineState() {
|
|
|
31
31
|
lastShootMs: 0,
|
|
32
32
|
lastVocalizationMs: 0,
|
|
33
33
|
lastGrenadeMs: 0,
|
|
34
|
-
|
|
34
|
+
lastSuppressiveFireMs: 0,
|
|
35
35
|
grenadeThrowStartMs: 0,
|
|
36
36
|
evadeStartMs: 0,
|
|
37
37
|
woundedStartMs: 0,
|
|
38
|
-
|
|
38
|
+
sleepReactionStartMs: 0,
|
|
39
|
+
retreatStartMs: 0,
|
|
40
|
+
lastMedkitMs: 0,
|
|
39
41
|
investigateStartMs: 0,
|
|
40
42
|
investigateLookAroundStartMs: -1,
|
|
41
43
|
helpWoundedTargetId: null,
|
|
@@ -53,9 +55,6 @@ export function createDefaultNPCOnlineState() {
|
|
|
53
55
|
killWoundedTargetX: 0,
|
|
54
56
|
killWoundedTargetY: 0,
|
|
55
57
|
packLastBroadcastMs: 0,
|
|
56
|
-
// Navigation
|
|
57
|
-
patrolWaypointIndex: 0,
|
|
58
|
-
searchWaypointIndex: 0,
|
|
59
58
|
// Loadout
|
|
60
59
|
primaryWeapon: null,
|
|
61
60
|
secondaryWeapon: null,
|
|
@@ -64,9 +63,11 @@ 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',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NPCOnlineState.js","sourceRoot":"","sources":["../../src/states/NPCOnlineState.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,2EAA2E;AAI3E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,kBAAkB;QAClB,QAAQ,EAAE,IAAI;QACd,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,CAAC;QAEpB,8DAA8D;QAC9D,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;QAChB,oBAAoB,EAAE,CAAC;QACvB,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,kBAAkB,EAAE,CAAC;QACrB,aAAa,EAAE,CAAC;QAChB,
|
|
1
|
+
{"version":3,"file":"NPCOnlineState.js","sourceRoot":"","sources":["../../src/states/NPCOnlineState.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,2EAA2E;AAI3E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,kBAAkB;QAClB,QAAQ,EAAE,IAAI;QACd,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,CAAC;QAEpB,8DAA8D;QAC9D,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;QAChB,oBAAoB,EAAE,CAAC;QACvB,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,kBAAkB,EAAE,CAAC;QACrB,aAAa,EAAE,CAAC;QAChB,qBAAqB,EAAE,CAAC;QACxB,mBAAmB,EAAE,CAAC;QACtB,YAAY,EAAE,CAAC;QACf,cAAc,EAAE,CAAC;QACjB,oBAAoB,EAAE,CAAC;QACvB,cAAc,EAAE,CAAC;QACjB,YAAY,EAAE,CAAC;QACf,kBAAkB,EAAE,CAAC;QACrB,4BAA4B,EAAE,CAAC,CAAC;QAEhC,mBAAmB,EAAE,IAAI;QACzB,kBAAkB,EAAE,CAAC;QACrB,wBAAwB,EAAE,CAAC,CAAC;QAC5B,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QAEf,mBAAmB,EAAE,IAAI;QACzB,kBAAkB,EAAE,CAAC;QACrB,qBAAqB,EAAE,CAAC,CAAC;QACzB,uBAAuB,EAAE,CAAC,CAAC;QAC3B,yBAAyB,EAAE,CAAC,CAAC;QAC7B,qBAAqB,EAAE,CAAC;QACxB,uBAAuB,EAAE,CAAC,CAAC;QAC3B,kBAAkB,EAAE,CAAC;QACrB,kBAAkB,EAAE,CAAC;QAErB,mBAAmB,EAAE,CAAC;QAEtB,UAAU;QACV,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,IAAI;QACrB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;QAEd,cAAc;QACd,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,CAAC;QAClB,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,IAAI;QACd,iBAAiB,EAAE,CAAC;QAEpB,SAAS;QACT,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,QAAQ;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/AlertState.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE;;;;GAIG;AACH,qBAAa,UAAW,YAAW,mBAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;gBAE7B,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAKhE,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAc7B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"AlertState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/AlertState.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE;;;;GAIG;AACH,qBAAa,UAAW,YAAW,mBAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;gBAE7B,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAKhE,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAc7B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAwEhD,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;CAG9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertState.js","sourceRoot":"","sources":["../../../src/states/handlers/AlertState.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AlertState.js","sourceRoot":"","sources":["../../../src/states/handlers/AlertState.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// - NPC inside an inaccessible/restricted zone → ALERT (walk away first)
|
|
13
13
|
import { createDefaultTransitionMap } from '../IStateTransitionMap';
|
|
14
14
|
import { moveToward } from './_utils';
|
|
15
|
-
// Internal flag stored in ctx.state.
|
|
15
|
+
// Internal flag stored in ctx.state.evadeStartMs repurposed as the
|
|
16
16
|
// reaction-pending timer timestamp. We use a sentinel value of 0 for "none".
|
|
17
17
|
const NO_PENDING_REACTION = 0;
|
|
18
18
|
/**
|
|
@@ -75,10 +75,10 @@ export class CampState {
|
|
|
75
75
|
];
|
|
76
76
|
const safe = ctx.restrictedZones.filterAccessible(candidates);
|
|
77
77
|
if (safe.length > 0) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
moveToward(ctx,
|
|
78
|
+
// Walk toward the safe exit without touching lastKnownEnemyX/Y —
|
|
79
|
+
// writing those fields would broadcast a false enemy position to pack
|
|
80
|
+
// members (same fix as IdleState).
|
|
81
|
+
moveToward(ctx, safe[0].x, safe[0].y, this.cfg.approachSpeed);
|
|
82
82
|
}
|
|
83
83
|
ctx.transition(this.tr.campOnDanger);
|
|
84
84
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CampState.js","sourceRoot":"","sources":["../../../src/states/handlers/CampState.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,8EAA8E;AAC9E,EAAE;AACF,YAAY;AACZ,6CAA6C;AAC7C,4EAA4E;AAC5E,iDAAiD;AACjD,iEAAiE;AACjE,EAAE;AACF,2BAA2B;AAC3B,iEAAiE;AACjE,kFAAkF;AAKlF,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,
|
|
1
|
+
{"version":3,"file":"CampState.js","sourceRoot":"","sources":["../../../src/states/handlers/CampState.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChargeState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/ChargeState.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ChargeState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/ChargeState.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAIlE;;;;GAIG;AACH,qBAAa,WAAY,YAAW,mBAAmB;IAInD,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;gBAGtB,GAAG,EAAE,YAAY,EAClC,EAAE,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAKnC,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IA4B7B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IA+DhD,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;CAK7B"}
|
|
@@ -33,12 +33,13 @@ export class ChargeState {
|
|
|
33
33
|
const targetX = enemies.length > 0 ? enemies[0].x : ctx.state.lastKnownEnemyX;
|
|
34
34
|
const targetY = enemies.length > 0 ? enemies[0].y : ctx.state.lastKnownEnemyY;
|
|
35
35
|
// Lazy-initialise charge phase data if not yet present.
|
|
36
|
-
(_a = ctx.state).chargePhase ?? (_a.chargePhase = { active: false, windupStartMs: 0, charging: false, targetX: 0, targetY: 0 });
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
const phase = (_a = ctx.state).chargePhase ?? (_a.chargePhase = { active: false, windupStartMs: 0, charging: false, chargeStartMs: 0, targetX: 0, targetY: 0 });
|
|
37
|
+
phase.active = true;
|
|
38
|
+
phase.charging = false;
|
|
39
|
+
phase.chargeStartMs = 0;
|
|
40
|
+
phase.windupStartMs = now;
|
|
41
|
+
phase.targetX = targetX;
|
|
42
|
+
phase.targetY = targetY;
|
|
42
43
|
// Stop completely during the windup telegraph.
|
|
43
44
|
ctx.halt();
|
|
44
45
|
// Face the target while winding up.
|
|
@@ -73,10 +74,17 @@ export class ChargeState {
|
|
|
73
74
|
}
|
|
74
75
|
// Windup complete — transition to charging phase.
|
|
75
76
|
phase.charging = true;
|
|
77
|
+
phase.chargeStartMs = now;
|
|
76
78
|
}
|
|
77
79
|
// -----------------------------------------------------------------------
|
|
78
80
|
// CHARGING phase — move toward locked target at charge speed
|
|
79
81
|
// -----------------------------------------------------------------------
|
|
82
|
+
// Abort if the charge has taken too long (target unreachable, e.g. behind a wall).
|
|
83
|
+
if (now - phase.chargeStartMs >= this.cfg.chargeTimeoutMs) {
|
|
84
|
+
ctx.halt();
|
|
85
|
+
ctx.transition(this.tr.chargeOnAbort);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
80
88
|
const chargeSpeed = this.cfg.approachSpeed * this.cfg.chargeSpeedMultiplier;
|
|
81
89
|
const dist = distanceTo(ctx.x, ctx.y, phase.targetX, phase.targetY);
|
|
82
90
|
if (dist <= this.cfg.meleeRange) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChargeState.js","sourceRoot":"","sources":["../../../src/states/handlers/ChargeState.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,oDAAoD;AACpD,EAAE;AACF,oDAAoD;AACpD,+EAA+E;AAC/E,yDAAyD;AACzD,0FAA0F;AAC1F,8FAA8F;AAC9F,sEAAsE;AACtE,EAAE;AACF,eAAe;AACf,kFAAkF;AAClF,EAAE;AACF,4EAA4E;AAC5E,uDAAuD;
|
|
1
|
+
{"version":3,"file":"ChargeState.js","sourceRoot":"","sources":["../../../src/states/handlers/ChargeState.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,oDAAoD;AACpD,EAAE;AACF,oDAAoD;AACpD,+EAA+E;AAC/E,yDAAyD;AACzD,0FAA0F;AAC1F,8FAA8F;AAC9F,sEAAsE;AACtE,EAAE;AACF,eAAe;AACf,kFAAkF;AAClF,EAAE;AACF,4EAA4E;AAC5E,uDAAuD;AAOvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAElD;;;;GAIG;AACH,MAAM,OAAO,WAAW;IAGtB,YACmB,GAAiB,EAClC,EAAiC;QADhB,QAAG,GAAH,GAAG,CAAc;QAGlC,IAAI,CAAC,EAAE,GAAG,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,GAAgB;;QACpB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QAEtB,2EAA2E;QAC3E,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC;QAC9E,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC;QAE9E,wDAAwD;QACxD,MAAM,KAAK,SAAiB,GAAG,CAAC,KAAK,EAAC,WAAW,QAAX,WAAW,GAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA,CAAC;QACrJ,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QACvB,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;QACxB,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC1B,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAExB,+CAA+C;QAC/C,GAAG,CAAC,IAAI,EAAE,CAAC;QAEX,oCAAoC;QACpC,MAAM,EAAE,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;QAC3B,MAAM,EAAE,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;QAC3B,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAgB,EAAE,QAAgB;QACvC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;QACpC,MAAM,OAAO,GAAG,GAAG,GAAG,KAAM,CAAC,aAAa,CAAC;QAE3C,IAAI,CAAC,KAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,0EAA0E;YAC1E,iEAAiE;YACjE,0EAA0E;YAE1E,2DAA2D;YAC3D,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,KAAK,CAAC;YAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;gBACtC,OAAO;YACT,CAAC;YAED,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;gBACtC,iDAAiD;gBACjD,MAAM,EAAE,GAAG,KAAM,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;gBAClC,MAAM,EAAE,GAAG,KAAM,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;gBAClC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;oBACzB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBACtC,CAAC;gBACD,OAAO;YACT,CAAC;YAED,kDAAkD;YAClD,KAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;YACvB,KAAM,CAAC,aAAa,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,0EAA0E;QAC1E,6DAA6D;QAC7D,0EAA0E;QAE1E,mFAAmF;QACnF,IAAI,GAAG,GAAG,KAAM,CAAC,aAAa,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;YAC3D,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;QAC5E,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAM,CAAC,OAAO,EAAE,KAAM,CAAC,OAAO,CAAC,CAAC;QAEtE,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YAChC,qDAAqD;YACrD,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;YAC5B,GAAG,CAAC,YAAY,CAAC;gBACf,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;gBAClC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB;aAC/D,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,8CAA8C;QAC9C,UAAU,CAAC,GAAG,EAAE,KAAM,CAAC,OAAO,EAAE,KAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,GAAgB;QACnB,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC1B,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC;QACvC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -5,7 +5,7 @@ import type { IStateTransitionMap } from '../IStateTransitionMap';
|
|
|
5
5
|
/**
|
|
6
6
|
* Stateless combat state handler for human NPCs.
|
|
7
7
|
*
|
|
8
|
-
* Monsters use a separate controller (MonsterCombatController
|
|
8
|
+
* Monsters use a separate controller (MonsterCombatController).
|
|
9
9
|
* A single instance can be shared across all NPC entities.
|
|
10
10
|
*/
|
|
11
11
|
export declare class CombatState implements IOnlineStateHandler {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CombatState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/CombatState.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,mBAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;gBAE7B,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAKhE,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAI9B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"CombatState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/CombatState.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,mBAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;gBAE7B,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAKhE,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAI9B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IA0HhD,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;CAG9B"}
|
|
@@ -18,7 +18,7 @@ import { moveToward } from './_utils';
|
|
|
18
18
|
/**
|
|
19
19
|
* Stateless combat state handler for human NPCs.
|
|
20
20
|
*
|
|
21
|
-
* Monsters use a separate controller (MonsterCombatController
|
|
21
|
+
* Monsters use a separate controller (MonsterCombatController).
|
|
22
22
|
* A single instance can be shared across all NPC entities.
|
|
23
23
|
*/
|
|
24
24
|
export class CombatState {
|
|
@@ -38,6 +38,7 @@ export class CombatState {
|
|
|
38
38
|
const hasEnemy = enemies.length > 0;
|
|
39
39
|
if (!hasEnemy) {
|
|
40
40
|
// No visual contact — transition based on whether a last position is known.
|
|
41
|
+
ctx.halt();
|
|
41
42
|
if (ctx.state.lastKnownEnemyX !== 0 || ctx.state.lastKnownEnemyY !== 0) {
|
|
42
43
|
ctx.transition(this.tr.combatOnLastKnown);
|
|
43
44
|
}
|
|
@@ -46,10 +47,11 @@ export class CombatState {
|
|
|
46
47
|
}
|
|
47
48
|
return;
|
|
48
49
|
}
|
|
49
|
-
// Update last known enemy position from the closest visible enemy.
|
|
50
|
+
// Update last known enemy position and identity from the closest visible enemy.
|
|
50
51
|
const enemy = enemies[0];
|
|
51
52
|
ctx.state.lastKnownEnemyX = enemy.x;
|
|
52
53
|
ctx.state.lastKnownEnemyY = enemy.y;
|
|
54
|
+
ctx.state.targetId = enemy.id;
|
|
53
55
|
// -------------------------------------------------------------------------
|
|
54
56
|
// 2. Morale checks (highest priority after target acquisition)
|
|
55
57
|
// -------------------------------------------------------------------------
|
|
@@ -62,7 +64,7 @@ export class CombatState {
|
|
|
62
64
|
return;
|
|
63
65
|
}
|
|
64
66
|
// -------------------------------------------------------------------------
|
|
65
|
-
//
|
|
67
|
+
// 4. HP threshold — wounded
|
|
66
68
|
// -------------------------------------------------------------------------
|
|
67
69
|
if (ctx.health !== null) {
|
|
68
70
|
if (ctx.health.hpPercent < this.cfg.woundedHpThreshold) {
|
|
@@ -71,9 +73,11 @@ export class CombatState {
|
|
|
71
73
|
}
|
|
72
74
|
}
|
|
73
75
|
// -------------------------------------------------------------------------
|
|
74
|
-
//
|
|
76
|
+
// 5. Kill-wounded seam (opt-in) — only when morale is STABLE
|
|
75
77
|
// -------------------------------------------------------------------------
|
|
76
|
-
const woundedEnemies = ctx.
|
|
78
|
+
const woundedEnemies = ctx.state.moraleState === 'STABLE'
|
|
79
|
+
? (ctx.perception?.getWoundedEnemies?.() ?? [])
|
|
80
|
+
: [];
|
|
77
81
|
if (woundedEnemies.length > 0) {
|
|
78
82
|
const we = woundedEnemies[0];
|
|
79
83
|
ctx.state.killWoundedTargetId = we.id;
|
|
@@ -86,7 +90,7 @@ export class CombatState {
|
|
|
86
90
|
return;
|
|
87
91
|
}
|
|
88
92
|
// -------------------------------------------------------------------------
|
|
89
|
-
//
|
|
93
|
+
// 6. Movement — approach or halt
|
|
90
94
|
// -------------------------------------------------------------------------
|
|
91
95
|
const dx = enemy.x - ctx.x;
|
|
92
96
|
const dy = enemy.y - ctx.y;
|
|
@@ -98,11 +102,15 @@ export class CombatState {
|
|
|
98
102
|
ctx.halt();
|
|
99
103
|
ctx.setRotation(Math.atan2(dy, dx));
|
|
100
104
|
// Check cover transition when already in combat range.
|
|
101
|
-
|
|
105
|
+
// Guard with a cooldown so that returning from TakeCoverState doesn't
|
|
106
|
+
// immediately re-trigger the transition (ping-pong every frame).
|
|
107
|
+
const coverCooldownElapsed = now - ctx.state.lastSeekCoverMs >= this.cfg.coverSeekCooldownMs;
|
|
108
|
+
if (ctx.cover !== null && coverCooldownElapsed) {
|
|
102
109
|
const coverPt = ctx.cover.findCover(ctx.x, ctx.y, enemy.x, enemy.y, 'CLOSE');
|
|
103
110
|
if (coverPt !== null) {
|
|
104
111
|
ctx.state.coverPointX = coverPt.x;
|
|
105
112
|
ctx.state.coverPointY = coverPt.y;
|
|
113
|
+
ctx.state.lastSeekCoverMs = now;
|
|
106
114
|
ctx.transition(this.tr.combatOnCover);
|
|
107
115
|
return;
|
|
108
116
|
}
|
|
@@ -110,6 +118,7 @@ export class CombatState {
|
|
|
110
118
|
}
|
|
111
119
|
// -------------------------------------------------------------------------
|
|
112
120
|
// 7. Fire when cooldown elapsed
|
|
121
|
+
// (numbering matches header comment)
|
|
113
122
|
// -------------------------------------------------------------------------
|
|
114
123
|
if (now - ctx.state.lastShootMs >= this.cfg.fireRateMs) {
|
|
115
124
|
ctx.state.lastShootMs = now;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CombatState.js","sourceRoot":"","sources":["../../../src/states/handlers/CombatState.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,8CAA8C;AAC9C,EAAE;AACF,SAAS;AACT,wEAAwE;AACxE,aAAa;AACb,gEAAgE;AAChE,iCAAiC;AACjC,oCAAoC;AACpC,+CAA+C;AAC/C,sEAAsE;AACtE,iFAAiF;AACjF,oCAAoC;AACpC,8CAA8C;AAC9C,qBAAqB;AAKrB,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IAItB,YAAY,GAAiB,EAAE,EAAiC;QAC9D,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAiB;QACrB,qEAAqE;IACvE,CAAC;IAED,MAAM,CAAC,GAAgB,EAAE,QAAgB;QACvC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QAEtB,4EAA4E;QAC5E,uCAAuC;QACvC,4EAA4E;QAC5E,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAEpC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,4EAA4E;YAC5E,IAAI,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,CAAC,EAAE,CAAC;gBACvE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO;QACT,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"CombatState.js","sourceRoot":"","sources":["../../../src/states/handlers/CombatState.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,9 +16,16 @@ export declare class CombatTransitionHandler implements IOnlineStateHandler {
|
|
|
16
16
|
private readonly cfg;
|
|
17
17
|
private readonly transitionCfg;
|
|
18
18
|
private readonly rules;
|
|
19
|
-
|
|
19
|
+
private readonly tr;
|
|
20
|
+
constructor(cfg: IStateConfig, transitionCfgOverrides?: Partial<ICombatTransitionConfig>, rules?: readonly ITransitionRule[], tr?: Partial<IStateTransitionMap>);
|
|
20
21
|
enter(_ctx: INPCContext): void;
|
|
21
22
|
update(ctx: INPCContext, _deltaMs: number): void;
|
|
23
|
+
/**
|
|
24
|
+
* Map a CombatTransitionChain result string to the corresponding
|
|
25
|
+
* IStateTransitionMap key so callers can remap state names via `tr` overrides.
|
|
26
|
+
* Unmapped rule results (e.g. 'EVADE_GRENADE', 'GRENADE') fall through as-is.
|
|
27
|
+
*/
|
|
28
|
+
private _resolveTransition;
|
|
22
29
|
exit(_ctx: INPCContext): void;
|
|
23
30
|
/**
|
|
24
31
|
* Build a framework-agnostic ICombatContext snapshot from INPCContext.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CombatTransitionHandler.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/CombatTransitionHandler.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"CombatTransitionHandler.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/CombatTransitionHandler.ts"],"names":[],"mappings":"AAYA,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;AAMlE,OAAO,KAAK,EAEV,uBAAuB,EACvB,eAAe,EAChB,MAAM,oCAAoC,CAAC;AAI5C;;;;;;;;GAQG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IAM/D,OAAO,CAAC,QAAQ,CAAC,GAAG;IALtB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0B;IACxD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IACnD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;gBAGtB,GAAG,EAAE,YAAY,EAClC,sBAAsB,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,EACzD,KAAK,CAAC,EAAE,SAAS,eAAe,EAAE,EAClC,EAAE,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAWnC,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAI9B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQhD;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAU1B,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAQ7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAiEtB;;;;OAIG;IACH,OAAO,CAAC,aAAa;CAkCtB"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
// update: build ICombatContext snapshot from ctx, run evaluateTransitions(),
|
|
10
10
|
// call ctx.transition() if a rule fires
|
|
11
11
|
// exit: nothing
|
|
12
|
+
import { createDefaultTransitionMap } from '../IStateTransitionMap';
|
|
12
13
|
import { evaluateTransitions, createDefaultCombatTransitionConfig, DEFAULT_COMBAT_RULES, } from '../../combat/CombatTransitionChain';
|
|
13
14
|
import { WeaponCategory } from '../../types/IWeaponTypes';
|
|
14
15
|
/**
|
|
@@ -21,9 +22,7 @@ import { WeaponCategory } from '../../types/IWeaponTypes';
|
|
|
21
22
|
* A single instance can be shared across all NPC entities.
|
|
22
23
|
*/
|
|
23
24
|
export class CombatTransitionHandler {
|
|
24
|
-
constructor(cfg, transitionCfgOverrides, rules,
|
|
25
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
26
|
-
_tr) {
|
|
25
|
+
constructor(cfg, transitionCfgOverrides, rules, tr) {
|
|
27
26
|
this.cfg = cfg;
|
|
28
27
|
this.transitionCfg = createDefaultCombatTransitionConfig({
|
|
29
28
|
woundedHpThreshold: cfg.woundedHpThreshold,
|
|
@@ -31,6 +30,7 @@ export class CombatTransitionHandler {
|
|
|
31
30
|
...transitionCfgOverrides,
|
|
32
31
|
});
|
|
33
32
|
this.rules = rules ?? DEFAULT_COMBAT_RULES;
|
|
33
|
+
this.tr = createDefaultTransitionMap(tr);
|
|
34
34
|
}
|
|
35
35
|
enter(_ctx) {
|
|
36
36
|
// Nothing to set up.
|
|
@@ -39,7 +39,21 @@ export class CombatTransitionHandler {
|
|
|
39
39
|
const snapshot = this._buildSnapshot(ctx);
|
|
40
40
|
const next = evaluateTransitions(this.rules, snapshot, this.transitionCfg);
|
|
41
41
|
if (next !== null) {
|
|
42
|
-
ctx.transition(next);
|
|
42
|
+
ctx.transition(this._resolveTransition(next));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Map a CombatTransitionChain result string to the corresponding
|
|
47
|
+
* IStateTransitionMap key so callers can remap state names via `tr` overrides.
|
|
48
|
+
* Unmapped rule results (e.g. 'EVADE_GRENADE', 'GRENADE') fall through as-is.
|
|
49
|
+
*/
|
|
50
|
+
_resolveTransition(result) {
|
|
51
|
+
switch (result) {
|
|
52
|
+
case 'WOUNDED': return this.tr.combatOnWounded;
|
|
53
|
+
case 'RETREAT': return this.tr.combatOnShaken;
|
|
54
|
+
case 'FLEE': return this.tr.combatOnPanicked;
|
|
55
|
+
case 'SEARCH': return this.tr.combatOnLastKnown;
|
|
56
|
+
default: return result;
|
|
43
57
|
}
|
|
44
58
|
}
|
|
45
59
|
exit(_ctx) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CombatTransitionHandler.js","sourceRoot":"","sources":["../../../src/states/handlers/CombatTransitionHandler.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,8EAA8E;AAC9E,iBAAiB;AACjB,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,EAAE;AACF,kBAAkB;AAClB,6EAA6E;AAC7E,gDAAgD;AAChD,kBAAkB;
|
|
1
|
+
{"version":3,"file":"CombatTransitionHandler.js","sourceRoot":"","sources":["../../../src/states/handlers/CombatTransitionHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeadState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/DeadState.ts"],"names":[],"mappings":"AAUA,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;AAElE;;;;GAIG;AACH,qBAAa,SAAU,YAAW,mBAAmB;
|
|
1
|
+
{"version":3,"file":"DeadState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/DeadState.ts"],"names":[],"mappings":"AAUA,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;AAElE;;;;GAIG;AACH,qBAAa,SAAU,YAAW,mBAAmB;gBAIvC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAElE,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAK7B,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIjD,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;CAI9B"}
|
|
@@ -16,17 +16,14 @@ export class DeadState {
|
|
|
16
16
|
// IStateConfig and IStateTransitionMap are accepted but not used in this
|
|
17
17
|
// terminal state — kept for constructor signature consistency with all other
|
|
18
18
|
// handlers.
|
|
19
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
20
19
|
constructor(_cfg, _tr) { }
|
|
21
20
|
enter(ctx) {
|
|
22
21
|
ctx.halt();
|
|
23
22
|
ctx.disablePhysics();
|
|
24
23
|
}
|
|
25
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
26
24
|
update(_ctx, _deltaMs) {
|
|
27
25
|
// Intentional no-op — dead entities do nothing each frame.
|
|
28
26
|
}
|
|
29
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
30
27
|
exit(_ctx) {
|
|
31
28
|
// The FSM should not exit DEAD under normal operation.
|
|
32
29
|
// No cleanup required — this is a safety no-op.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeadState.js","sourceRoot":"","sources":["../../../src/states/handlers/DeadState.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,oCAAoC;AACpC,EAAE;AACF,2EAA2E;AAC3E,iDAAiD;AACjD,0EAA0E;AAC1E,yEAAyE;AACzE,wEAAwE;AACxE,4EAA4E;AAO5E;;;;GAIG;AACH,MAAM,OAAO,SAAS;IACpB,yEAAyE;IACzE,6EAA6E;IAC7E,YAAY;IACZ,
|
|
1
|
+
{"version":3,"file":"DeadState.js","sourceRoot":"","sources":["../../../src/states/handlers/DeadState.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,oCAAoC;AACpC,EAAE;AACF,2EAA2E;AAC3E,iDAAiD;AACjD,0EAA0E;AAC1E,yEAAyE;AACzE,wEAAwE;AACxE,4EAA4E;AAO5E;;;;GAIG;AACH,MAAM,OAAO,SAAS;IACpB,yEAAyE;IACzE,6EAA6E;IAC7E,YAAY;IACZ,YAAY,IAAkB,EAAE,GAAkC,IAAG,CAAC;IAEtE,KAAK,CAAC,GAAgB;QACpB,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,cAAc,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,IAAiB,EAAE,QAAgB;QACxC,2DAA2D;IAC7D,CAAC;IAED,IAAI,CAAC,IAAiB;QACpB,uDAAuD;QACvD,gDAAgD;IAClD,CAAC;CACF"}
|
|
@@ -16,7 +16,7 @@ export declare class EvadeGrenadeState implements IOnlineStateHandler {
|
|
|
16
16
|
exit(ctx: INPCContext): void;
|
|
17
17
|
/**
|
|
18
18
|
* Choose the post-evade state based on whether an enemy is currently visible.
|
|
19
|
-
* enemy visible → evadeOnClear (default: 'COMBAT'), no enemy →
|
|
19
|
+
* enemy visible → evadeOnClear (default: 'COMBAT'), no enemy → evadeOnTimeout (default: 'COMBAT').
|
|
20
20
|
*/
|
|
21
21
|
private _exitToNextState;
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvadeGrenadeState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/EvadeGrenadeState.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EvadeGrenadeState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/EvadeGrenadeState.ts"],"names":[],"mappings":"AAsBA,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,iBAAkB,YAAW,mBAAmB;IAC3D,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;IAI7B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAiChD,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAQ5B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAOzB"}
|