@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.
Files changed (120) hide show
  1. package/dist/combat/CombatTransitionChain.d.ts +1 -3
  2. package/dist/combat/CombatTransitionChain.d.ts.map +1 -1
  3. package/dist/combat/CombatTransitionChain.js +1 -6
  4. package/dist/combat/CombatTransitionChain.js.map +1 -1
  5. package/dist/combat/LoadoutBuilder.js +1 -1
  6. package/dist/combat/LoadoutBuilder.js.map +1 -1
  7. package/dist/cover/CoverEvaluators.d.ts.map +1 -1
  8. package/dist/cover/CoverEvaluators.js +20 -13
  9. package/dist/cover/CoverEvaluators.js.map +1 -1
  10. package/dist/cover/CoverLockRegistry.d.ts.map +1 -1
  11. package/dist/cover/CoverLockRegistry.js +1 -0
  12. package/dist/cover/CoverLockRegistry.js.map +1 -1
  13. package/dist/cover/CoverRegistry.d.ts +2 -1
  14. package/dist/cover/CoverRegistry.d.ts.map +1 -1
  15. package/dist/cover/CoverRegistry.js +4 -3
  16. package/dist/cover/CoverRegistry.js.map +1 -1
  17. package/dist/goap/GOAPController.d.ts.map +1 -1
  18. package/dist/goap/GOAPController.js +21 -3
  19. package/dist/goap/GOAPController.js.map +1 -1
  20. package/dist/goap/GoalSelector.d.ts +1 -1
  21. package/dist/goap/GoalSelector.d.ts.map +1 -1
  22. package/dist/goap/GoalSelector.js +27 -2
  23. package/dist/goap/GoalSelector.js.map +1 -1
  24. package/dist/goap/WorldStateBuilder.js +2 -2
  25. package/dist/goap/WorldStateBuilder.js.map +1 -1
  26. package/dist/navigation/PathSmoother.d.ts.map +1 -1
  27. package/dist/navigation/PathSmoother.js +7 -2
  28. package/dist/navigation/PathSmoother.js.map +1 -1
  29. package/dist/navigation/RestrictedZoneManager.d.ts +10 -1
  30. package/dist/navigation/RestrictedZoneManager.d.ts.map +1 -1
  31. package/dist/navigation/RestrictedZoneManager.js +14 -3
  32. package/dist/navigation/RestrictedZoneManager.js.map +1 -1
  33. package/dist/navigation/SmoothPathFollower.d.ts +3 -0
  34. package/dist/navigation/SmoothPathFollower.d.ts.map +1 -1
  35. package/dist/navigation/SmoothPathFollower.js +8 -5
  36. package/dist/navigation/SmoothPathFollower.js.map +1 -1
  37. package/dist/perception/NPCSensors.d.ts +6 -6
  38. package/dist/perception/NPCSensors.d.ts.map +1 -1
  39. package/dist/perception/NPCSensors.js +6 -6
  40. package/dist/perception/NPCSensors.js.map +1 -1
  41. package/dist/perception/PerceptionQuery.d.ts +1 -5
  42. package/dist/perception/PerceptionQuery.d.ts.map +1 -1
  43. package/dist/perception/PerceptionQuery.js +2 -9
  44. package/dist/perception/PerceptionQuery.js.map +1 -1
  45. package/dist/states/INPCOnlineState.d.ts +42 -12
  46. package/dist/states/INPCOnlineState.d.ts.map +1 -1
  47. package/dist/states/IStateConfig.d.ts +22 -4
  48. package/dist/states/IStateConfig.d.ts.map +1 -1
  49. package/dist/states/IStateConfig.js +4 -2
  50. package/dist/states/IStateConfig.js.map +1 -1
  51. package/dist/states/IStateTransitionMap.d.ts +1 -0
  52. package/dist/states/IStateTransitionMap.d.ts.map +1 -1
  53. package/dist/states/IStateTransitionMap.js +1 -0
  54. package/dist/states/IStateTransitionMap.js.map +1 -1
  55. package/dist/states/NPCOnlineState.js +6 -5
  56. package/dist/states/NPCOnlineState.js.map +1 -1
  57. package/dist/states/handlers/AlertState.d.ts.map +1 -1
  58. package/dist/states/handlers/AlertState.js +0 -1
  59. package/dist/states/handlers/AlertState.js.map +1 -1
  60. package/dist/states/handlers/CampState.js +5 -5
  61. package/dist/states/handlers/CampState.js.map +1 -1
  62. package/dist/states/handlers/ChargeState.d.ts.map +1 -1
  63. package/dist/states/handlers/ChargeState.js +14 -6
  64. package/dist/states/handlers/ChargeState.js.map +1 -1
  65. package/dist/states/handlers/CombatState.d.ts +1 -1
  66. package/dist/states/handlers/CombatState.d.ts.map +1 -1
  67. package/dist/states/handlers/CombatState.js +16 -7
  68. package/dist/states/handlers/CombatState.js.map +1 -1
  69. package/dist/states/handlers/CombatTransitionHandler.d.ts +8 -1
  70. package/dist/states/handlers/CombatTransitionHandler.d.ts.map +1 -1
  71. package/dist/states/handlers/CombatTransitionHandler.js +18 -4
  72. package/dist/states/handlers/CombatTransitionHandler.js.map +1 -1
  73. package/dist/states/handlers/DeadState.d.ts.map +1 -1
  74. package/dist/states/handlers/DeadState.js +0 -3
  75. package/dist/states/handlers/DeadState.js.map +1 -1
  76. package/dist/states/handlers/EvadeGrenadeState.d.ts +1 -1
  77. package/dist/states/handlers/EvadeGrenadeState.d.ts.map +1 -1
  78. package/dist/states/handlers/EvadeGrenadeState.js +8 -17
  79. package/dist/states/handlers/EvadeGrenadeState.js.map +1 -1
  80. package/dist/states/handlers/FleeState.d.ts.map +1 -1
  81. package/dist/states/handlers/FleeState.js +34 -5
  82. package/dist/states/handlers/FleeState.js.map +1 -1
  83. package/dist/states/handlers/IdleState.d.ts.map +1 -1
  84. package/dist/states/handlers/IdleState.js +16 -6
  85. package/dist/states/handlers/IdleState.js.map +1 -1
  86. package/dist/states/handlers/KillWoundedState.d.ts.map +1 -1
  87. package/dist/states/handlers/KillWoundedState.js +14 -0
  88. package/dist/states/handlers/KillWoundedState.js.map +1 -1
  89. package/dist/states/handlers/PatrolState.d.ts.map +1 -1
  90. package/dist/states/handlers/PatrolState.js +10 -0
  91. package/dist/states/handlers/PatrolState.js.map +1 -1
  92. package/dist/states/handlers/RetreatState.d.ts.map +1 -1
  93. package/dist/states/handlers/RetreatState.js +19 -9
  94. package/dist/states/handlers/RetreatState.js.map +1 -1
  95. package/dist/states/handlers/SleepState.d.ts.map +1 -1
  96. package/dist/states/handlers/SleepState.js +9 -12
  97. package/dist/states/handlers/SleepState.js.map +1 -1
  98. package/dist/states/handlers/StalkState.js +2 -2
  99. package/dist/states/handlers/TakeCoverState.d.ts.map +1 -1
  100. package/dist/states/handlers/TakeCoverState.js +6 -13
  101. package/dist/states/handlers/TakeCoverState.js.map +1 -1
  102. package/dist/states/handlers/WoundedState.d.ts.map +1 -1
  103. package/dist/states/handlers/WoundedState.js +4 -3
  104. package/dist/states/handlers/WoundedState.js.map +1 -1
  105. package/dist/states/handlers/_utils.d.ts +2 -0
  106. package/dist/states/handlers/_utils.d.ts.map +1 -1
  107. package/dist/states/handlers/_utils.js +16 -3
  108. package/dist/states/handlers/_utils.js.map +1 -1
  109. package/dist/suspicion/SuspicionAccumulator.d.ts +6 -5
  110. package/dist/suspicion/SuspicionAccumulator.d.ts.map +1 -1
  111. package/dist/suspicion/SuspicionAccumulator.js +7 -6
  112. package/dist/suspicion/SuspicionAccumulator.js.map +1 -1
  113. package/dist/types/ICoverPoint.d.ts +6 -0
  114. package/dist/types/ICoverPoint.d.ts.map +1 -1
  115. package/dist/types/ICoverPoint.js.map +1 -1
  116. package/dist/types/IPerceptionTypes.d.ts +27 -4
  117. package/dist/types/IPerceptionTypes.d.ts.map +1 -1
  118. package/dist/types/IPerceptionTypes.js +9 -4
  119. package/dist/types/IPerceptionTypes.js.map +1 -1
  120. 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
- stalkUnclockDistance: 80,
36
+ stalkUncloakDistance: 80,
37
37
  restrictedZoneCheckIntervalMs: 1000,
38
38
  // -----------------------------------------------------------------------
39
39
  // ICombatConfig
@@ -48,6 +48,7 @@ export function createDefaultStateConfig(overrides) {
48
48
  medkitUseDurationMs: 3000,
49
49
  killWoundedEnemyHpThreshold: 0.25,
50
50
  killWoundedExecuteRange: 80,
51
+ coverSeekCooldownMs: 3000,
51
52
  // -----------------------------------------------------------------------
52
53
  // IMonsterConfig
53
54
  // -----------------------------------------------------------------------
@@ -55,6 +56,7 @@ export function createDefaultStateConfig(overrides) {
55
56
  chargeDamageMultiplier: 2.0,
56
57
  meleeCooldownMs: 1000,
57
58
  chargeWindupMs: 600,
59
+ chargeTimeoutMs: 3000,
58
60
  leapWindupMs: 400,
59
61
  leapAirtimeMs: 350,
60
62
  psiChannelMs: 2000,
@@ -62,7 +64,6 @@ export function createDefaultStateConfig(overrides) {
62
64
  patrolRadius: 180,
63
65
  outerRadius: 350,
64
66
  stalkAlphaInvisible: 0.08,
65
- stalkAlphaShimmer: 0.3,
66
67
  // -----------------------------------------------------------------------
67
68
  // ITimingConfig
68
69
  // -----------------------------------------------------------------------
@@ -87,6 +88,7 @@ export function createDefaultStateConfig(overrides) {
87
88
  killWoundedTauntMs: 1200,
88
89
  killWoundedBurstCount: 3,
89
90
  killWoundedPauseMs: 1000,
91
+ evadeGrenadeDurationMs: 2000,
90
92
  packAlertIntervalMs: 500,
91
93
  packAlertTtlMs: 5000,
92
94
  loopholeWaitMinMs: 1500,
@@ -1 +1 @@
1
- {"version":3,"file":"IStateConfig.js","sourceRoot":"","sources":["../../src/states/IStateConfig.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,+DAA+D;AAC/D,oEAAoE;AACpE,6CAA6C;AAwY7C,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,SAAiC;IAEjC,OAAO;QACL,0EAA0E;QAC1E,kBAAkB;QAClB,0EAA0E;QAC1E,aAAa,EAAE,GAAG;QAClB,mBAAmB,EAAE,GAAG;QACxB,mBAAmB,EAAE,GAAG;QACxB,sBAAsB,EAAE,GAAG;QAC3B,oBAAoB,EAAE,GAAG;QACzB,qBAAqB,EAAE,GAAG;QAC1B,oBAAoB,EAAE,GAAG;QAEzB,eAAe,EAAE,EAAE;QACnB,uBAAuB,EAAE,EAAE;QAC3B,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,GAAG;QACjB,iBAAiB,EAAE,GAAG;QACtB,qBAAqB,EAAE,GAAG;QAC1B,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,EAAE;QACxB,6BAA6B,EAAE,IAAK;QAEpC,0EAA0E;QAC1E,gBAAgB;QAChB,0EAA0E;QAC1E,kBAAkB,EAAE,GAAG;QACvB,sBAAsB,EAAE,CAAC,GAAG;QAC5B,oBAAoB,EAAE,CAAC,GAAG;QAE1B,UAAU,EAAE,IAAK;QACjB,eAAe,EAAE,IAAK;QAEtB,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,GAAG;QACpB,mBAAmB,EAAE,IAAK;QAC1B,2BAA2B,EAAE,IAAI;QACjC,uBAAuB,EAAE,EAAE;QAE3B,0EAA0E;QAC1E,iBAAiB;QACjB,0EAA0E;QAC1E,WAAW,EAAE,EAAE;QACf,sBAAsB,EAAE,GAAG;QAC3B,eAAe,EAAE,IAAK;QAEtB,cAAc,EAAE,GAAG;QACnB,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,GAAG;QAClB,YAAY,EAAE,IAAK;QAEnB,eAAe,EAAE,EAAE;QACnB,YAAY,EAAE,GAAG;QACjB,WAAW,EAAE,GAAG;QAEhB,mBAAmB,EAAE,IAAI;QACzB,iBAAiB,EAAE,GAAG;QAEtB,0EAA0E;QAC1E,gBAAgB;QAChB,0EAA0E;QAC1E,aAAa,EAAE,IAAK;QACpB,cAAc,EAAE,IAAK;QACrB,oBAAoB,EAAE,KAAM;QAC5B,oBAAoB,EAAE,IAAK;QAC3B,qBAAqB,EAAE,IAAK;QAC5B,aAAa,EAAE,IAAK;QACpB,qBAAqB,EAAE,GAAG;QAC1B,wBAAwB,EAAE,GAAG;QAE7B,oBAAoB,EAAE,SAAS;QAC/B,sBAAsB,EAAE,GAAG;QAC3B,uBAAuB,EAAE,GAAG;QAC5B,wBAAwB,EAAE,KAAM;QAChC,uBAAuB,EAAE,IAAK;QAC9B,mBAAmB,EAAE,IAAK;QAC1B,wBAAwB,EAAE,KAAM;QAChC,oBAAoB,EAAE,GAAG;QACzB,wBAAwB,EAAE,IAAK;QAC/B,gBAAgB,EAAE,GAAG;QACrB,kBAAkB,EAAE,IAAK;QACzB,qBAAqB,EAAE,CAAC;QACxB,kBAAkB,EAAE,IAAK;QACzB,mBAAmB,EAAE,GAAG;QACxB,cAAc,EAAE,IAAK;QAErB,iBAAiB,EAAE,IAAK;QACxB,iBAAiB,EAAE,IAAK;QACxB,sBAAsB,EAAE,GAAG;QAC3B,sBAAsB,EAAE,IAAK;QAC7B,wBAAwB,EAAE,GAAG;QAE7B,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"IStateConfig.js","sourceRoot":"","sources":["../../src/states/IStateConfig.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,+DAA+D;AAC/D,oEAAoE;AACpE,6CAA6C;AA4Z7C,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,SAAiC;IAEjC,OAAO;QACL,0EAA0E;QAC1E,kBAAkB;QAClB,0EAA0E;QAC1E,aAAa,EAAE,GAAG;QAClB,mBAAmB,EAAE,GAAG;QACxB,mBAAmB,EAAE,GAAG;QACxB,sBAAsB,EAAE,GAAG;QAC3B,oBAAoB,EAAE,GAAG;QACzB,qBAAqB,EAAE,GAAG;QAC1B,oBAAoB,EAAE,GAAG;QAEzB,eAAe,EAAE,EAAE;QACnB,uBAAuB,EAAE,EAAE;QAC3B,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,GAAG;QACjB,iBAAiB,EAAE,GAAG;QACtB,qBAAqB,EAAE,GAAG;QAC1B,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,EAAE;QACxB,6BAA6B,EAAE,IAAK;QAEpC,0EAA0E;QAC1E,gBAAgB;QAChB,0EAA0E;QAC1E,kBAAkB,EAAE,GAAG;QACvB,sBAAsB,EAAE,CAAC,GAAG;QAC5B,oBAAoB,EAAE,CAAC,GAAG;QAE1B,UAAU,EAAE,IAAK;QACjB,eAAe,EAAE,IAAK;QAEtB,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,GAAG;QACpB,mBAAmB,EAAE,IAAK;QAC1B,2BAA2B,EAAE,IAAI;QACjC,uBAAuB,EAAE,EAAE;QAC3B,mBAAmB,EAAE,IAAK;QAE1B,0EAA0E;QAC1E,iBAAiB;QACjB,0EAA0E;QAC1E,WAAW,EAAE,EAAE;QACf,sBAAsB,EAAE,GAAG;QAC3B,eAAe,EAAE,IAAK;QAEtB,cAAc,EAAE,GAAG;QACnB,eAAe,EAAE,IAAK;QACtB,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,GAAG;QAClB,YAAY,EAAE,IAAK;QAEnB,eAAe,EAAE,EAAE;QACnB,YAAY,EAAE,GAAG;QACjB,WAAW,EAAE,GAAG;QAEhB,mBAAmB,EAAE,IAAI;QAEzB,0EAA0E;QAC1E,gBAAgB;QAChB,0EAA0E;QAC1E,aAAa,EAAE,IAAK;QACpB,cAAc,EAAE,IAAK;QACrB,oBAAoB,EAAE,KAAM;QAC5B,oBAAoB,EAAE,IAAK;QAC3B,qBAAqB,EAAE,IAAK;QAC5B,aAAa,EAAE,IAAK;QACpB,qBAAqB,EAAE,GAAG;QAC1B,wBAAwB,EAAE,GAAG;QAE7B,oBAAoB,EAAE,SAAS;QAC/B,sBAAsB,EAAE,GAAG;QAC3B,uBAAuB,EAAE,GAAG;QAC5B,wBAAwB,EAAE,KAAM;QAChC,uBAAuB,EAAE,IAAK;QAC9B,mBAAmB,EAAE,IAAK;QAC1B,wBAAwB,EAAE,KAAM;QAChC,oBAAoB,EAAE,GAAG;QACzB,wBAAwB,EAAE,IAAK;QAC/B,gBAAgB,EAAE,GAAG;QACrB,kBAAkB,EAAE,IAAK;QACzB,qBAAqB,EAAE,CAAC;QACxB,kBAAkB,EAAE,IAAK;QACzB,sBAAsB,EAAE,IAAK;QAC7B,mBAAmB,EAAE,GAAG;QACxB,cAAc,EAAE,IAAK;QAErB,iBAAiB,EAAE,IAAK;QACxB,iBAAiB,EAAE,IAAK;QACxB,sBAAsB,EAAE,GAAG;QAC3B,sBAAsB,EAAE,IAAK;QAC7B,wBAAwB,EAAE,GAAG;QAE7B,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
@@ -35,6 +35,7 @@ export interface IStateTransitionMap {
35
35
  takeCoverOnPanicked: string;
36
36
  takeCoverOnShaken: string;
37
37
  fleeOnCalmed: string;
38
+ fleeOnSafe: string;
38
39
  searchOnEnemy: string;
39
40
  searchOnTimeout: string;
40
41
  grenadeOnComplete: string;
@@ -1 +1 @@
1
- {"version":3,"file":"IStateTransitionMap.d.ts","sourceRoot":"","sources":["../../src/states/IStateTransitionMap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,mBAAmB;IAElC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAG3B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IAGrB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAG1B,YAAY,EAAE,MAAM,CAAC;IAGrB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IAGxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IAGxB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IAGxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IAGrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAG3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IAGtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IAGvB,UAAU,EAAE,MAAM,CAAC;IAGnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IAGrB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAG5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAG3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAG3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAG7B,eAAe,EAAI,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACvC,mBAAmB,CAqErB"}
1
+ {"version":3,"file":"IStateTransitionMap.d.ts","sourceRoot":"","sources":["../../src/states/IStateTransitionMap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,mBAAmB;IAElC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAG3B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IAGrB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAG1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IAGnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IAGxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IAGxB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IAGxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IAGrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAG3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IAGtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IAGvB,UAAU,EAAE,MAAM,CAAC;IAGnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IAGrB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAG5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAG3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAG3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAG7B,eAAe,EAAI,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACvC,mBAAmB,CAsErB"}
@@ -24,6 +24,7 @@ export function createDefaultTransitionMap(overrides) {
24
24
  takeCoverOnPanicked: 'FLEE',
25
25
  takeCoverOnShaken: 'RETREAT',
26
26
  fleeOnCalmed: 'ALERT',
27
+ fleeOnSafe: 'PATROL',
27
28
  searchOnEnemy: 'ALERT',
28
29
  searchOnTimeout: 'IDLE',
29
30
  grenadeOnComplete: 'COMBAT',
@@ -1 +1 @@
1
- {"version":3,"file":"IStateTransitionMap.js","sourceRoot":"","sources":["../../src/states/IStateTransitionMap.ts"],"names":[],"mappings":"AA+HA;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,SAAwC;IAExC,OAAO;QACL,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,MAAM;QACnB,gBAAgB,EAAE,OAAO;QACzB,aAAa,EAAE,OAAO;QACtB,kBAAkB,EAAE,OAAO;QAC3B,kBAAkB,EAAE,OAAO;QAC3B,kBAAkB,EAAE,MAAM;QAC1B,YAAY,EAAE,QAAQ;QACtB,cAAc,EAAE,QAAQ;QACxB,YAAY,EAAE,MAAM;QACpB,eAAe,EAAE,MAAM;QACvB,iBAAiB,EAAE,QAAQ;QAC3B,gBAAgB,EAAE,MAAM;QACxB,cAAc,EAAE,SAAS;QACzB,eAAe,EAAE,SAAS;QAC1B,aAAa,EAAE,YAAY;QAC3B,kBAAkB,EAAE,QAAQ;QAC5B,mBAAmB,EAAE,MAAM;QAC3B,iBAAiB,EAAE,SAAS;QAC5B,YAAY,EAAE,OAAO;QACrB,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,MAAM;QACvB,iBAAiB,EAAE,QAAQ;QAC3B,eAAe,EAAE,QAAQ;QACzB,YAAY,EAAE,QAAQ;QACtB,cAAc,EAAE,QAAQ;QACxB,eAAe,EAAE,QAAQ;QACzB,eAAe,EAAE,QAAQ;QACzB,cAAc,EAAE,MAAM;QACtB,gBAAgB,EAAE,MAAM;QACxB,iBAAiB,EAAE,MAAM;QACzB,eAAe,EAAE,QAAQ;QACzB,gBAAgB,EAAE,QAAQ;QAC1B,WAAW,EAAE,QAAQ;QACrB,YAAY,EAAE,OAAO;QACrB,YAAY,EAAE,OAAO;QACrB,gBAAgB,EAAE,MAAM;QACxB,kBAAkB,EAAE,QAAQ;QAC5B,gBAAgB,EAAE,QAAQ;QAC1B,aAAa,EAAE,MAAM;QACrB,aAAa,EAAE,QAAQ;QACvB,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;QACpB,aAAa,EAAE,QAAQ;QACvB,YAAY,EAAE,MAAM;QACpB,eAAe,EAAE,MAAM;QACvB,oBAAoB,EAAE,OAAO;QAC7B,mBAAmB,EAAE,MAAM;QAC3B,kBAAkB,EAAE,OAAO;QAC3B,oBAAoB,EAAE,QAAQ;QAC9B,kBAAkB,EAAE,MAAM;QAC1B,mBAAmB,EAAE,cAAc;QACnC,iBAAiB,EAAE,cAAc;QACjC,kBAAkB,EAAE,OAAO;QAC3B,qBAAqB,EAAE,QAAQ;QAC/B,kBAAkB,EAAE,MAAM;QAC1B,mBAAmB,EAAE,cAAc;QACnC,kBAAkB,EAAE,cAAc;QAClC,qBAAqB,EAAE,QAAQ;QAC/B,qBAAqB,EAAE,QAAQ;QAC/B,kBAAkB,EAAE,MAAM;QAC1B,oBAAoB,EAAE,QAAQ;QAC9B,eAAe,EAAI,OAAO;QAC1B,iBAAiB,EAAE,OAAO;QAC1B,iBAAiB,EAAE,QAAQ;QAC3B,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"IStateTransitionMap.js","sourceRoot":"","sources":["../../src/states/IStateTransitionMap.ts"],"names":[],"mappings":"AAgIA;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,SAAwC;IAExC,OAAO;QACL,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,MAAM;QACnB,gBAAgB,EAAE,OAAO;QACzB,aAAa,EAAE,OAAO;QACtB,kBAAkB,EAAE,OAAO;QAC3B,kBAAkB,EAAE,OAAO;QAC3B,kBAAkB,EAAE,MAAM;QAC1B,YAAY,EAAE,QAAQ;QACtB,cAAc,EAAE,QAAQ;QACxB,YAAY,EAAE,MAAM;QACpB,eAAe,EAAE,MAAM;QACvB,iBAAiB,EAAE,QAAQ;QAC3B,gBAAgB,EAAE,MAAM;QACxB,cAAc,EAAE,SAAS;QACzB,eAAe,EAAE,SAAS;QAC1B,aAAa,EAAE,YAAY;QAC3B,kBAAkB,EAAE,QAAQ;QAC5B,mBAAmB,EAAE,MAAM;QAC3B,iBAAiB,EAAE,SAAS;QAC5B,YAAY,EAAE,OAAO;QACrB,UAAU,EAAE,QAAQ;QACpB,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,MAAM;QACvB,iBAAiB,EAAE,QAAQ;QAC3B,eAAe,EAAE,QAAQ;QACzB,YAAY,EAAE,QAAQ;QACtB,cAAc,EAAE,QAAQ;QACxB,eAAe,EAAE,QAAQ;QACzB,eAAe,EAAE,QAAQ;QACzB,cAAc,EAAE,MAAM;QACtB,gBAAgB,EAAE,MAAM;QACxB,iBAAiB,EAAE,MAAM;QACzB,eAAe,EAAE,QAAQ;QACzB,gBAAgB,EAAE,QAAQ;QAC1B,WAAW,EAAE,QAAQ;QACrB,YAAY,EAAE,OAAO;QACrB,YAAY,EAAE,OAAO;QACrB,gBAAgB,EAAE,MAAM;QACxB,kBAAkB,EAAE,QAAQ;QAC5B,gBAAgB,EAAE,QAAQ;QAC1B,aAAa,EAAE,MAAM;QACrB,aAAa,EAAE,QAAQ;QACvB,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;QACpB,aAAa,EAAE,QAAQ;QACvB,YAAY,EAAE,MAAM;QACpB,eAAe,EAAE,MAAM;QACvB,oBAAoB,EAAE,OAAO;QAC7B,mBAAmB,EAAE,MAAM;QAC3B,kBAAkB,EAAE,OAAO;QAC3B,oBAAoB,EAAE,QAAQ;QAC9B,kBAAkB,EAAE,MAAM;QAC1B,mBAAmB,EAAE,cAAc;QACnC,iBAAiB,EAAE,cAAc;QACjC,kBAAkB,EAAE,OAAO;QAC3B,qBAAqB,EAAE,QAAQ;QAC/B,kBAAkB,EAAE,MAAM;QAC1B,mBAAmB,EAAE,cAAc;QACnC,kBAAkB,EAAE,cAAc;QAClC,qBAAqB,EAAE,QAAQ;QAC/B,qBAAqB,EAAE,QAAQ;QAC/B,kBAAkB,EAAE,MAAM;QAC1B,oBAAoB,EAAE,QAAQ;QAC9B,eAAe,EAAI,OAAO;QAC1B,iBAAiB,EAAE,OAAO;QAC1B,iBAAiB,EAAE,QAAQ;QAC3B,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
@@ -31,11 +31,13 @@ export function createDefaultNPCOnlineState() {
31
31
  lastShootMs: 0,
32
32
  lastVocalizationMs: 0,
33
33
  lastGrenadeMs: 0,
34
- lastSupressiveFireMs: 0,
34
+ lastSuppressiveFireMs: 0,
35
35
  grenadeThrowStartMs: 0,
36
36
  evadeStartMs: 0,
37
37
  woundedStartMs: 0,
38
- psiPhaseStartMs: 0,
38
+ sleepReactionStartMs: 0,
39
+ retreatStartMs: 0,
40
+ lastMedkitMs: 0,
39
41
  investigateStartMs: 0,
40
42
  investigateLookAroundStartMs: -1,
41
43
  helpWoundedTargetId: null,
@@ -53,9 +55,6 @@ export function createDefaultNPCOnlineState() {
53
55
  killWoundedTargetX: 0,
54
56
  killWoundedTargetY: 0,
55
57
  packLastBroadcastMs: 0,
56
- // Navigation
57
- patrolWaypointIndex: 0,
58
- searchWaypointIndex: 0,
59
58
  // Loadout
60
59
  primaryWeapon: null,
61
60
  secondaryWeapon: null,
@@ -64,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,oBAAoB,EAAE,CAAC;QACvB,mBAAmB,EAAE,CAAC;QACtB,YAAY,EAAE,CAAC;QACf,cAAc,EAAE,CAAC;QACjB,eAAe,EAAE,CAAC;QAClB,kBAAkB,EAAE,CAAC;QACrB,4BAA4B,EAAE,CAAC,CAAC;QAEhC,mBAAmB,EAAE,IAAI;QACzB,kBAAkB,EAAE,CAAC;QACrB,wBAAwB,EAAE,CAAC,CAAC;QAC5B,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QAEf,mBAAmB,EAAE,IAAI;QACzB,kBAAkB,EAAE,CAAC;QACrB,qBAAqB,EAAE,CAAC,CAAC;QACzB,uBAAuB,EAAE,CAAC,CAAC;QAC3B,yBAAyB,EAAE,CAAC,CAAC;QAC7B,qBAAqB,EAAE,CAAC;QACxB,uBAAuB,EAAE,CAAC,CAAC;QAC3B,kBAAkB,EAAE,CAAC;QACrB,kBAAkB,EAAE,CAAC;QAErB,mBAAmB,EAAE,CAAC;QAEtB,aAAa;QACb,mBAAmB,EAAE,CAAC;QACtB,mBAAmB,EAAE,CAAC;QAEtB,UAAU;QACV,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,IAAI;QACrB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;QAEd,cAAc;QACd,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,IAAI;QAEd,SAAS;QACT,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,QAAQ;KACtB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"NPCOnlineState.js","sourceRoot":"","sources":["../../src/states/NPCOnlineState.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,2EAA2E;AAI3E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,kBAAkB;QAClB,QAAQ,EAAE,IAAI;QACd,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,CAAC;QAEpB,8DAA8D;QAC9D,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;QAChB,oBAAoB,EAAE,CAAC;QACvB,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,kBAAkB,EAAE,CAAC;QACrB,aAAa,EAAE,CAAC;QAChB,qBAAqB,EAAE,CAAC;QACxB,mBAAmB,EAAE,CAAC;QACtB,YAAY,EAAE,CAAC;QACf,cAAc,EAAE,CAAC;QACjB,oBAAoB,EAAE,CAAC;QACvB,cAAc,EAAE,CAAC;QACjB,YAAY,EAAE,CAAC;QACf,kBAAkB,EAAE,CAAC;QACrB,4BAA4B,EAAE,CAAC,CAAC;QAEhC,mBAAmB,EAAE,IAAI;QACzB,kBAAkB,EAAE,CAAC;QACrB,wBAAwB,EAAE,CAAC,CAAC;QAC5B,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QAEf,mBAAmB,EAAE,IAAI;QACzB,kBAAkB,EAAE,CAAC;QACrB,qBAAqB,EAAE,CAAC,CAAC;QACzB,uBAAuB,EAAE,CAAC,CAAC;QAC3B,yBAAyB,EAAE,CAAC,CAAC;QAC7B,qBAAqB,EAAE,CAAC;QACxB,uBAAuB,EAAE,CAAC,CAAC;QAC3B,kBAAkB,EAAE,CAAC;QACrB,kBAAkB,EAAE,CAAC;QAErB,mBAAmB,EAAE,CAAC;QAEtB,UAAU;QACV,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,IAAI;QACrB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;QAEd,cAAc;QACd,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,CAAC;QAClB,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,IAAI;QACd,iBAAiB,EAAE,CAAC;QAEpB,SAAS;QACT,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,QAAQ;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;IAyEhD,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;CAG9B"}
1
+ {"version":3,"file":"AlertState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/AlertState.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE;;;;GAIG;AACH,qBAAa,UAAW,YAAW,mBAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;gBAE7B,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAKhE,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAc7B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAwEhD,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;CAG9B"}
@@ -96,7 +96,6 @@ export class AlertState {
96
96
  moveToward(ctx, targetX, targetY, this.cfg.approachSpeed);
97
97
  }
98
98
  }
99
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
100
99
  exit(_ctx) {
101
100
  // Nothing to clean up.
102
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AlertState.js","sourceRoot":"","sources":["../../../src/states/handlers/AlertState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AlertState.js","sourceRoot":"","sources":["../../../src/states/handlers/AlertState.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@
12
12
  // - NPC inside an inaccessible/restricted zone → ALERT (walk away first)
13
13
  import { createDefaultTransitionMap } from '../IStateTransitionMap';
14
14
  import { moveToward } from './_utils';
15
- // Internal flag stored in ctx.state.psiPhaseStartMs repurposed as the
15
+ // Internal flag stored in ctx.state.evadeStartMs repurposed as the
16
16
  // reaction-pending timer timestamp. We use a sentinel value of 0 for "none".
17
17
  const NO_PENDING_REACTION = 0;
18
18
  /**
@@ -75,10 +75,10 @@ export class CampState {
75
75
  ];
76
76
  const safe = ctx.restrictedZones.filterAccessible(candidates);
77
77
  if (safe.length > 0) {
78
- const dest = safe[0];
79
- ctx.state.lastKnownEnemyX = dest.x;
80
- ctx.state.lastKnownEnemyY = dest.y;
81
- moveToward(ctx, dest.x, dest.y, this.cfg.approachSpeed);
78
+ // Walk toward the safe exit without touching lastKnownEnemyX/Y —
79
+ // writing those fields would broadcast a false enemy position to pack
80
+ // members (same fix as IdleState).
81
+ moveToward(ctx, safe[0].x, safe[0].y, this.cfg.approachSpeed);
82
82
  }
83
83
  ctx.transition(this.tr.campOnDanger);
84
84
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"CampState.js","sourceRoot":"","sources":["../../../src/states/handlers/CampState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CampState.js","sourceRoot":"","sources":["../../../src/states/handlers/CampState.ts"],"names":[],"mappings":"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,mEAAmE;AACnE,6EAA6E;AAC7E,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B;;;;GAIG;AACH,MAAM,OAAO,SAAS;IAIpB,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,GAAgB;QACpB,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,mEAAmE;QACnE,kEAAkE;QAClE,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,mBAAmB,CAAC;QAC7C,8DAA8D;QAC9D,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QACtB,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,kBAAkB,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAClC,GAAG,CAAC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACrC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAgB,EAAE,QAAgB;QACvC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QAEtB,8CAA8C;QAC9C,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC;QAC7C,IAAI,aAAa,KAAK,mBAAmB,EAAE,CAAC;YAC1C,IAAI,GAAG,GAAG,aAAa,IAAI,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;gBAC1D,iDAAiD;gBACjD,oDAAoD;gBACpD,mBAAmB;gBACnB,kBAAkB;gBAClB,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,mBAAmB,CAAC;gBAC7C,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;gBAC/E,OAAO;YACT,CAAC;YACD,wDAAwD;YACxD,OAAO;QACT,CAAC;QAED,wDAAwD;QACxD,IAAI,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;YACnD,MAAM,MAAM,GAAI,OAAO,CAAC,CAAC,CAAC,CAAC;YAC3B,GAAG,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC;YACrC,GAAG,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC;YACrC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAM,IAAI,CAAC;YAC5B,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,wEAAwE;QACxE,IAAI,GAAG,CAAC,eAAe,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC;YACxC,MAAM,UAAU,GAAG;gBACjB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;gBAC7B,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;gBAC7B,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAS,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE;gBACpC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAS,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE;aACrC,CAAC;YAEF,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAC9D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,iEAAiE;gBACjE,sEAAsE;gBACtE,mCAAmC;gBACnC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAChE,CAAC;YAED,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;IACH,CAAC;IAED,IAAI,CAAC,GAAgB;QACnB,sEAAsE;QACtE,4BAA4B;QAC5B,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,mBAAmB,CAAC;QAC7C,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;IAC5B,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChargeState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/ChargeState.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAIlE;;;;GAIG;AACH,qBAAa,WAAY,YAAW,mBAAmB;IAInD,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;gBAGtB,GAAG,EAAE,YAAY,EAClC,EAAE,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAKnC,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IA2B7B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAsDhD,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;CAK7B"}
1
+ {"version":3,"file":"ChargeState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/ChargeState.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAIlE;;;;GAIG;AACH,qBAAa,WAAY,YAAW,mBAAmB;IAInD,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;gBAGtB,GAAG,EAAE,YAAY,EAClC,EAAE,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAKnC,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IA4B7B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IA+DhD,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;CAK7B"}
@@ -33,12 +33,13 @@ export class ChargeState {
33
33
  const targetX = enemies.length > 0 ? enemies[0].x : ctx.state.lastKnownEnemyX;
34
34
  const targetY = enemies.length > 0 ? enemies[0].y : ctx.state.lastKnownEnemyY;
35
35
  // Lazy-initialise charge phase data if not yet present.
36
- (_a = ctx.state).chargePhase ?? (_a.chargePhase = { active: false, windupStartMs: 0, charging: false, targetX: 0, targetY: 0 });
37
- ctx.state.chargePhase.active = true;
38
- ctx.state.chargePhase.charging = false;
39
- ctx.state.chargePhase.windupStartMs = now;
40
- ctx.state.chargePhase.targetX = targetX;
41
- ctx.state.chargePhase.targetY = targetY;
36
+ const phase = (_a = ctx.state).chargePhase ?? (_a.chargePhase = { active: false, windupStartMs: 0, charging: false, chargeStartMs: 0, targetX: 0, targetY: 0 });
37
+ phase.active = true;
38
+ phase.charging = false;
39
+ phase.chargeStartMs = 0;
40
+ phase.windupStartMs = now;
41
+ phase.targetX = targetX;
42
+ phase.targetY = targetY;
42
43
  // Stop completely during the windup telegraph.
43
44
  ctx.halt();
44
45
  // Face the target while winding up.
@@ -73,10 +74,17 @@ export class ChargeState {
73
74
  }
74
75
  // Windup complete — transition to charging phase.
75
76
  phase.charging = true;
77
+ phase.chargeStartMs = now;
76
78
  }
77
79
  // -----------------------------------------------------------------------
78
80
  // CHARGING phase — move toward locked target at charge speed
79
81
  // -----------------------------------------------------------------------
82
+ // Abort if the charge has taken too long (target unreachable, e.g. behind a wall).
83
+ if (now - phase.chargeStartMs >= this.cfg.chargeTimeoutMs) {
84
+ ctx.halt();
85
+ ctx.transition(this.tr.chargeOnAbort);
86
+ return;
87
+ }
80
88
  const chargeSpeed = this.cfg.approachSpeed * this.cfg.chargeSpeedMultiplier;
81
89
  const dist = distanceTo(ctx.x, ctx.y, phase.targetX, phase.targetY);
82
90
  if (dist <= this.cfg.meleeRange) {
@@ -1 +1 @@
1
- {"version":3,"file":"ChargeState.js","sourceRoot":"","sources":["../../../src/states/handlers/ChargeState.ts"],"names":[],"mappings":"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;AAMvD,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,MAAA,GAAG,CAAC,KAAK,EAAC,WAAW,QAAX,WAAW,GAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAC;QACvG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC;QACpC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;QACvC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,GAAG,GAAG,CAAC;QAC1C,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;QACxC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;QAExC,+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;QACzB,CAAC;QAED,0EAA0E;QAC1E,6DAA6D;QAC7D,0EAA0E;QAC1E,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"}
1
+ {"version":3,"file":"ChargeState.js","sourceRoot":"","sources":["../../../src/states/handlers/ChargeState.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import type { IStateTransitionMap } from '../IStateTransitionMap';
5
5
  /**
6
6
  * Stateless combat state handler for human NPCs.
7
7
  *
8
- * Monsters use a separate controller (MonsterCombatController from Slice 14).
8
+ * Monsters use a separate controller (MonsterCombatController).
9
9
  * A single instance can be shared across all NPC entities.
10
10
  */
11
11
  export declare class CombatState implements IOnlineStateHandler {
@@ -1 +1 @@
1
- {"version":3,"file":"CombatState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/CombatState.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,mBAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;gBAE7B,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAKhE,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAI9B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAiHhD,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;CAG9B"}
1
+ {"version":3,"file":"CombatState.d.ts","sourceRoot":"","sources":["../../../src/states/handlers/CombatState.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,mBAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;gBAE7B,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAKhE,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAI9B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IA0HhD,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;CAG9B"}
@@ -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 from Slice 14).
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
- // 3. HP threshold — wounded
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
- // 4. Kill-wounded seam (opt-in) — only when morale is STABLE
76
+ // 5. Kill-wounded seam (opt-in) — only when morale is STABLE
75
77
  // -------------------------------------------------------------------------
76
- const woundedEnemies = ctx.perception?.getWoundedEnemies?.() ?? [];
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
- // 5. Movement — approach or halt
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
- if (ctx.cover !== null) {
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":"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"}
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
- constructor(cfg: IStateConfig, transitionCfgOverrides?: Partial<ICombatTransitionConfig>, rules?: readonly ITransitionRule[], _tr?: Partial<IStateTransitionMap>);
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;AACpD,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;IAK/D,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJtB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0B;IACxD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;gBAGhC,GAAG,EAAE,YAAY,EAClC,sBAAsB,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,EACzD,KAAK,CAAC,EAAE,SAAS,eAAe,EAAE,EAElC,GAAG,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAUpC,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAI9B,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQhD,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAQ7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAiEtB;;;;OAIG;IACH,OAAO,CAAC,aAAa;CAkCtB"}
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;AAMlB,OAAO,EACL,mBAAmB,EACnB,mCAAmC,EACnC,oBAAoB,GACrB,MAAM,oCAAoC,CAAC;AAM5C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D;;;;;;;;GAQG;AACH,MAAM,OAAO,uBAAuB;IAIlC,YACmB,GAAiB,EAClC,sBAAyD,EACzD,KAAkC;IAClC,6DAA6D;IAC7D,GAAkC;QAJjB,QAAG,GAAH,GAAG,CAAc;QAMlC,IAAI,CAAC,aAAa,GAAG,mCAAmC,CAAC;YACvD,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;YAC1C,sBAAsB,EAAE,GAAG,CAAC,sBAAsB;YAClD,GAAG,sBAAsB;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,oBAAoB,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,IAAiB;QACrB,qBAAqB;IACvB,CAAC;IAED,MAAM,CAAC,GAAgB,EAAE,QAAgB;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3E,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAiB;QACpB,uBAAuB;IACzB,CAAC;IAED,8EAA8E;IAC9E,mBAAmB;IACnB,8EAA8E;IAE9E;;OAEG;IACK,cAAc,CAAC,GAAgB;QACrC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;QAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAEjC,MAAM,OAAO,GACX,GAAG,CAAC,MAAM,KAAK,IAAI;YACjB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS;YACtB,CAAC,CAAC,CAAC,CAAC;QAER,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QACrC,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,UAAU,CAAC;QAExD,4EAA4E;QAC5E,6EAA6E;QAC7E,oCAAoC;QACpC,MAAM,WAAW,GAAG,KAAK,KAAK,IAAI;YAChC,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAE/E,MAAM,eAAe,GAAG,KAAK,KAAK,IAAI;YACpC,CAAC,CAAC,IAAI,CAAC,IAAI,CACP,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAC5D;YACH,CAAC,CAAC,IAAI,CAAC,IAAI,CACP,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAC/C,CAAC;QAEN,qDAAqD;QACrD,MAAM,eAAe,GAAG,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAEjE,+CAA+C;QAC/C,MAAM,kBAAkB,GACtB,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC;QAE9D,0CAA0C;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAExC,wFAAwF;QACxF,MAAM,OAAO,GACX,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;YACtD,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;YAC1D,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;QAE3D,qDAAqD;QACrD,MAAM,kBAAkB,GACtB,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC;YAC1B,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc;YACtC,CAAC,CAAC,QAAQ,CAAC;QAEf,OAAO;YACL,OAAO;YACP,WAAW;YACX,UAAU;YACV,WAAW;YACX,eAAe;YACf,iBAAiB,EAAE,OAAO,CAAC,MAAM;YACjC,OAAO;YACP,eAAe;YACf,kBAAkB;YAClB,kBAAkB;YAClB,OAAO;SACR,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,aAAa,CAAC,GAAgB;QACpC,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC;QAC9C,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC;QAElD,kFAAkF;QAClF,MAAM,OAAO,GAAG,aAAa,KAAK,IAAI;YACpC,CAAC,CAAC;gBACE,QAAQ,EAAE,cAAc,CAAC,KAAK;gBAC9B,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;gBAC7B,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY;gBAC7B,QAAQ,EAAE,CAAC;aACZ;YACH,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,SAAS,GAAG,eAAe,KAAK,IAAI;YACxC,CAAC,CAAC;gBACE,QAAQ,EAAE,cAAc,CAAC,MAAM;gBAC/B,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;gBAC3B,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,GAAG;gBACnC,QAAQ,EAAE,CAAC;aACZ;YACH,CAAC,CAAC,IAAI,CAAC;QAET,OAAO;YACL,OAAO;YACP,SAAS;YACT,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY;YAChC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW;SAC/B,CAAC;IACJ,CAAC;CACF"}
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;gBAKvC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAElE,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAM7B,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKjD,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;CAI9B"}
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,6DAA6D;IAC7D,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,6DAA6D;IAC7D,MAAM,CAAC,IAAiB,EAAE,QAAgB;QACxC,2DAA2D;IAC7D,CAAC;IAED,6DAA6D;IAC7D,IAAI,CAAC,IAAiB;QACpB,uDAAuD;QACvD,gDAAgD;IAClD,CAAC;CACF"}
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 → SEARCH.
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":"AAuBA,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;AASlE;;;;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;IAqChD,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAQ5B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAOzB"}
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"}