@alife-sdk/ai 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +385 -0
  3. package/dist/animation/AnimationController.d.ts +60 -0
  4. package/dist/animation/AnimationController.d.ts.map +1 -0
  5. package/dist/animation/AnimationController.js +71 -0
  6. package/dist/animation/AnimationController.js.map +1 -0
  7. package/dist/animation/AnimationSelector.d.ts +108 -0
  8. package/dist/animation/AnimationSelector.d.ts.map +1 -0
  9. package/dist/animation/AnimationSelector.js +194 -0
  10. package/dist/animation/AnimationSelector.js.map +1 -0
  11. package/dist/animation/index.d.ts +5 -0
  12. package/dist/animation/index.d.ts.map +1 -0
  13. package/dist/animation/index.js +4 -0
  14. package/dist/animation/index.js.map +1 -0
  15. package/dist/combat/CombatTransitionChain.d.ts +95 -0
  16. package/dist/combat/CombatTransitionChain.d.ts.map +1 -0
  17. package/dist/combat/CombatTransitionChain.js +117 -0
  18. package/dist/combat/CombatTransitionChain.js.map +1 -0
  19. package/dist/combat/LoadoutBuilder.d.ts +83 -0
  20. package/dist/combat/LoadoutBuilder.d.ts.map +1 -0
  21. package/dist/combat/LoadoutBuilder.js +213 -0
  22. package/dist/combat/LoadoutBuilder.js.map +1 -0
  23. package/dist/combat/MonsterAbilityData.d.ts +97 -0
  24. package/dist/combat/MonsterAbilityData.d.ts.map +1 -0
  25. package/dist/combat/MonsterAbilityData.js +94 -0
  26. package/dist/combat/MonsterAbilityData.js.map +1 -0
  27. package/dist/combat/WeaponSelector.d.ts +47 -0
  28. package/dist/combat/WeaponSelector.d.ts.map +1 -0
  29. package/dist/combat/WeaponSelector.js +180 -0
  30. package/dist/combat/WeaponSelector.js.map +1 -0
  31. package/dist/combat/index.d.ts +9 -0
  32. package/dist/combat/index.d.ts.map +1 -0
  33. package/dist/combat/index.js +6 -0
  34. package/dist/combat/index.js.map +1 -0
  35. package/dist/conditions/ConditionBank.d.ts +179 -0
  36. package/dist/conditions/ConditionBank.d.ts.map +1 -0
  37. package/dist/conditions/ConditionBank.js +220 -0
  38. package/dist/conditions/ConditionBank.js.map +1 -0
  39. package/dist/conditions/index.d.ts +3 -0
  40. package/dist/conditions/index.d.ts.map +1 -0
  41. package/dist/conditions/index.js +3 -0
  42. package/dist/conditions/index.js.map +1 -0
  43. package/dist/config/createDefaultAIConfig.d.ts +25 -0
  44. package/dist/config/createDefaultAIConfig.d.ts.map +1 -0
  45. package/dist/config/createDefaultAIConfig.js +147 -0
  46. package/dist/config/createDefaultAIConfig.js.map +1 -0
  47. package/dist/config/index.d.ts +2 -0
  48. package/dist/config/index.d.ts.map +1 -0
  49. package/dist/config/index.js +3 -0
  50. package/dist/config/index.js.map +1 -0
  51. package/dist/cover/CoverAccessAdapter.d.ts +61 -0
  52. package/dist/cover/CoverAccessAdapter.d.ts.map +1 -0
  53. package/dist/cover/CoverAccessAdapter.js +74 -0
  54. package/dist/cover/CoverAccessAdapter.js.map +1 -0
  55. package/dist/cover/CoverEvaluators.d.ts +43 -0
  56. package/dist/cover/CoverEvaluators.d.ts.map +1 -0
  57. package/dist/cover/CoverEvaluators.js +193 -0
  58. package/dist/cover/CoverEvaluators.js.map +1 -0
  59. package/dist/cover/CoverLockRegistry.d.ts +50 -0
  60. package/dist/cover/CoverLockRegistry.d.ts.map +1 -0
  61. package/dist/cover/CoverLockRegistry.js +164 -0
  62. package/dist/cover/CoverLockRegistry.js.map +1 -0
  63. package/dist/cover/CoverRecommender.d.ts +32 -0
  64. package/dist/cover/CoverRecommender.d.ts.map +1 -0
  65. package/dist/cover/CoverRecommender.js +45 -0
  66. package/dist/cover/CoverRecommender.js.map +1 -0
  67. package/dist/cover/CoverRegistry.d.ts +97 -0
  68. package/dist/cover/CoverRegistry.d.ts.map +1 -0
  69. package/dist/cover/CoverRegistry.js +223 -0
  70. package/dist/cover/CoverRegistry.js.map +1 -0
  71. package/dist/cover/ICoverEvaluator.d.ts +15 -0
  72. package/dist/cover/ICoverEvaluator.d.ts.map +1 -0
  73. package/dist/cover/ICoverEvaluator.js +4 -0
  74. package/dist/cover/ICoverEvaluator.js.map +1 -0
  75. package/dist/cover/ICoverLockConfig.d.ts +83 -0
  76. package/dist/cover/ICoverLockConfig.d.ts.map +1 -0
  77. package/dist/cover/ICoverLockConfig.js +21 -0
  78. package/dist/cover/ICoverLockConfig.js.map +1 -0
  79. package/dist/cover/LoopholeGenerator.d.ts +44 -0
  80. package/dist/cover/LoopholeGenerator.d.ts.map +1 -0
  81. package/dist/cover/LoopholeGenerator.js +96 -0
  82. package/dist/cover/LoopholeGenerator.js.map +1 -0
  83. package/dist/cover/index.d.ts +11 -0
  84. package/dist/cover/index.d.ts.map +1 -0
  85. package/dist/cover/index.js +8 -0
  86. package/dist/cover/index.js.map +1 -0
  87. package/dist/goap/EvadeHazardAction.d.ts +34 -0
  88. package/dist/goap/EvadeHazardAction.d.ts.map +1 -0
  89. package/dist/goap/EvadeHazardAction.js +48 -0
  90. package/dist/goap/EvadeHazardAction.js.map +1 -0
  91. package/dist/goap/GOAPController.d.ts +114 -0
  92. package/dist/goap/GOAPController.d.ts.map +1 -0
  93. package/dist/goap/GOAPController.js +191 -0
  94. package/dist/goap/GOAPController.js.map +1 -0
  95. package/dist/goap/GoalSelector.d.ts +40 -0
  96. package/dist/goap/GoalSelector.d.ts.map +1 -0
  97. package/dist/goap/GoalSelector.js +115 -0
  98. package/dist/goap/GoalSelector.js.map +1 -0
  99. package/dist/goap/IHazardZoneAccess.d.ts +16 -0
  100. package/dist/goap/IHazardZoneAccess.d.ts.map +1 -0
  101. package/dist/goap/IHazardZoneAccess.js +2 -0
  102. package/dist/goap/IHazardZoneAccess.js.map +1 -0
  103. package/dist/goap/WorldStateBuilder.d.ts +27 -0
  104. package/dist/goap/WorldStateBuilder.d.ts.map +1 -0
  105. package/dist/goap/WorldStateBuilder.js +51 -0
  106. package/dist/goap/WorldStateBuilder.js.map +1 -0
  107. package/dist/goap/index.d.ts +9 -0
  108. package/dist/goap/index.d.ts.map +1 -0
  109. package/dist/goap/index.js +6 -0
  110. package/dist/goap/index.js.map +1 -0
  111. package/dist/index.d.ts +16 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +18 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/navigation/PathSmoother.d.ts +29 -0
  116. package/dist/navigation/PathSmoother.d.ts.map +1 -0
  117. package/dist/navigation/PathSmoother.js +172 -0
  118. package/dist/navigation/PathSmoother.js.map +1 -0
  119. package/dist/navigation/RestrictedZoneManager.d.ts +83 -0
  120. package/dist/navigation/RestrictedZoneManager.d.ts.map +1 -0
  121. package/dist/navigation/RestrictedZoneManager.js +179 -0
  122. package/dist/navigation/RestrictedZoneManager.js.map +1 -0
  123. package/dist/navigation/SmoothPathFollower.d.ts +55 -0
  124. package/dist/navigation/SmoothPathFollower.d.ts.map +1 -0
  125. package/dist/navigation/SmoothPathFollower.js +132 -0
  126. package/dist/navigation/SmoothPathFollower.js.map +1 -0
  127. package/dist/navigation/SteeringBehaviors.d.ts +123 -0
  128. package/dist/navigation/SteeringBehaviors.d.ts.map +1 -0
  129. package/dist/navigation/SteeringBehaviors.js +211 -0
  130. package/dist/navigation/SteeringBehaviors.js.map +1 -0
  131. package/dist/navigation/index.d.ts +7 -0
  132. package/dist/navigation/index.d.ts.map +1 -0
  133. package/dist/navigation/index.js +6 -0
  134. package/dist/navigation/index.js.map +1 -0
  135. package/dist/perception/NPCSensors.d.ts +129 -0
  136. package/dist/perception/NPCSensors.d.ts.map +1 -0
  137. package/dist/perception/NPCSensors.js +147 -0
  138. package/dist/perception/NPCSensors.js.map +1 -0
  139. package/dist/perception/PerceptionQuery.d.ts +65 -0
  140. package/dist/perception/PerceptionQuery.d.ts.map +1 -0
  141. package/dist/perception/PerceptionQuery.js +199 -0
  142. package/dist/perception/PerceptionQuery.js.map +1 -0
  143. package/dist/perception/index.d.ts +4 -0
  144. package/dist/perception/index.d.ts.map +1 -0
  145. package/dist/perception/index.js +4 -0
  146. package/dist/perception/index.js.map +1 -0
  147. package/dist/plugin/AIPlugin.d.ts +71 -0
  148. package/dist/plugin/AIPlugin.d.ts.map +1 -0
  149. package/dist/plugin/AIPlugin.js +134 -0
  150. package/dist/plugin/AIPlugin.js.map +1 -0
  151. package/dist/plugin/index.d.ts +3 -0
  152. package/dist/plugin/index.d.ts.map +1 -0
  153. package/dist/plugin/index.js +3 -0
  154. package/dist/plugin/index.js.map +1 -0
  155. package/dist/ports/AIPorts.d.ts +13 -0
  156. package/dist/ports/AIPorts.d.ts.map +1 -0
  157. package/dist/ports/AIPorts.js +14 -0
  158. package/dist/ports/AIPorts.js.map +1 -0
  159. package/dist/ports/ICoverPointSource.d.ts +27 -0
  160. package/dist/ports/ICoverPointSource.d.ts.map +1 -0
  161. package/dist/ports/ICoverPointSource.js +4 -0
  162. package/dist/ports/ICoverPointSource.js.map +1 -0
  163. package/dist/ports/IPerceptionProvider.d.ts +42 -0
  164. package/dist/ports/IPerceptionProvider.d.ts.map +1 -0
  165. package/dist/ports/IPerceptionProvider.js +4 -0
  166. package/dist/ports/IPerceptionProvider.js.map +1 -0
  167. package/dist/ports/index.d.ts +4 -0
  168. package/dist/ports/index.d.ts.map +1 -0
  169. package/dist/ports/index.js +3 -0
  170. package/dist/ports/index.js.map +1 -0
  171. package/dist/sound/VocalizationTypes.d.ts +57 -0
  172. package/dist/sound/VocalizationTypes.d.ts.map +1 -0
  173. package/dist/sound/VocalizationTypes.js +87 -0
  174. package/dist/sound/VocalizationTypes.js.map +1 -0
  175. package/dist/sound/index.d.ts +3 -0
  176. package/dist/sound/index.d.ts.map +1 -0
  177. package/dist/sound/index.js +3 -0
  178. package/dist/sound/index.js.map +1 -0
  179. package/dist/squad/SquadSharedTarget.d.ts +137 -0
  180. package/dist/squad/SquadSharedTarget.d.ts.map +1 -0
  181. package/dist/squad/SquadSharedTarget.js +145 -0
  182. package/dist/squad/SquadSharedTarget.js.map +1 -0
  183. package/dist/squad/SquadTactics.d.ts +63 -0
  184. package/dist/squad/SquadTactics.d.ts.map +1 -0
  185. package/dist/squad/SquadTactics.js +76 -0
  186. package/dist/squad/SquadTactics.js.map +1 -0
  187. package/dist/squad/index.d.ts +5 -0
  188. package/dist/squad/index.d.ts.map +1 -0
  189. package/dist/squad/index.js +4 -0
  190. package/dist/squad/index.js.map +1 -0
  191. package/dist/states/INPCContext.d.ts +550 -0
  192. package/dist/states/INPCContext.d.ts.map +1 -0
  193. package/dist/states/INPCContext.js +17 -0
  194. package/dist/states/INPCContext.js.map +1 -0
  195. package/dist/states/INPCOnlineState.d.ts +202 -0
  196. package/dist/states/INPCOnlineState.d.ts.map +1 -0
  197. package/dist/states/INPCOnlineState.js +9 -0
  198. package/dist/states/INPCOnlineState.js.map +1 -0
  199. package/dist/states/IOnlineStateHandler.d.ts +58 -0
  200. package/dist/states/IOnlineStateHandler.d.ts.map +1 -0
  201. package/dist/states/IOnlineStateHandler.js +13 -0
  202. package/dist/states/IOnlineStateHandler.js.map +1 -0
  203. package/dist/states/IStateConfig.d.ts +272 -0
  204. package/dist/states/IStateConfig.d.ts.map +1 -0
  205. package/dist/states/IStateConfig.js +100 -0
  206. package/dist/states/IStateConfig.js.map +1 -0
  207. package/dist/states/IStateTransitionMap.d.ts +89 -0
  208. package/dist/states/IStateTransitionMap.d.ts.map +1 -0
  209. package/dist/states/IStateTransitionMap.js +75 -0
  210. package/dist/states/IStateTransitionMap.js.map +1 -0
  211. package/dist/states/NPCOnlineState.d.ts +19 -0
  212. package/dist/states/NPCOnlineState.d.ts.map +1 -0
  213. package/dist/states/NPCOnlineState.js +75 -0
  214. package/dist/states/NPCOnlineState.js.map +1 -0
  215. package/dist/states/NPCPerception.d.ts +108 -0
  216. package/dist/states/NPCPerception.d.ts.map +1 -0
  217. package/dist/states/NPCPerception.js +122 -0
  218. package/dist/states/NPCPerception.js.map +1 -0
  219. package/dist/states/OnlineAIDriver.d.ts +64 -0
  220. package/dist/states/OnlineAIDriver.d.ts.map +1 -0
  221. package/dist/states/OnlineAIDriver.js +171 -0
  222. package/dist/states/OnlineAIDriver.js.map +1 -0
  223. package/dist/states/OnlineStateRegistryBuilder.d.ts +115 -0
  224. package/dist/states/OnlineStateRegistryBuilder.d.ts.map +1 -0
  225. package/dist/states/OnlineStateRegistryBuilder.js +184 -0
  226. package/dist/states/OnlineStateRegistryBuilder.js.map +1 -0
  227. package/dist/states/StateHandlerMap.d.ts +52 -0
  228. package/dist/states/StateHandlerMap.d.ts.map +1 -0
  229. package/dist/states/StateHandlerMap.js +88 -0
  230. package/dist/states/StateHandlerMap.js.map +1 -0
  231. package/dist/states/eat-corpse/EatCorpseState.d.ts +32 -0
  232. package/dist/states/eat-corpse/EatCorpseState.d.ts.map +1 -0
  233. package/dist/states/eat-corpse/EatCorpseState.js +126 -0
  234. package/dist/states/eat-corpse/EatCorpseState.js.map +1 -0
  235. package/dist/states/eat-corpse/EatCorpseTransitionGuard.d.ts +34 -0
  236. package/dist/states/eat-corpse/EatCorpseTransitionGuard.d.ts.map +1 -0
  237. package/dist/states/eat-corpse/EatCorpseTransitionGuard.js +82 -0
  238. package/dist/states/eat-corpse/EatCorpseTransitionGuard.js.map +1 -0
  239. package/dist/states/eat-corpse/ICorpseSource.d.ts +87 -0
  240. package/dist/states/eat-corpse/ICorpseSource.d.ts.map +1 -0
  241. package/dist/states/eat-corpse/ICorpseSource.js +5 -0
  242. package/dist/states/eat-corpse/ICorpseSource.js.map +1 -0
  243. package/dist/states/eat-corpse/IEatCorpseConfig.d.ts +75 -0
  244. package/dist/states/eat-corpse/IEatCorpseConfig.d.ts.map +1 -0
  245. package/dist/states/eat-corpse/IEatCorpseConfig.js +23 -0
  246. package/dist/states/eat-corpse/IEatCorpseConfig.js.map +1 -0
  247. package/dist/states/eat-corpse/IEatCorpsePhase.d.ts +23 -0
  248. package/dist/states/eat-corpse/IEatCorpsePhase.d.ts.map +1 -0
  249. package/dist/states/eat-corpse/IEatCorpsePhase.js +5 -0
  250. package/dist/states/eat-corpse/IEatCorpsePhase.js.map +1 -0
  251. package/dist/states/eat-corpse/index.d.ts +7 -0
  252. package/dist/states/eat-corpse/index.d.ts.map +1 -0
  253. package/dist/states/eat-corpse/index.js +11 -0
  254. package/dist/states/eat-corpse/index.js.map +1 -0
  255. package/dist/states/handlers/AlertState.d.ts +18 -0
  256. package/dist/states/handlers/AlertState.d.ts.map +1 -0
  257. package/dist/states/handlers/AlertState.js +104 -0
  258. package/dist/states/handlers/AlertState.js.map +1 -0
  259. package/dist/states/handlers/CampState.d.ts +18 -0
  260. package/dist/states/handlers/CampState.d.ts.map +1 -0
  261. package/dist/states/handlers/CampState.js +94 -0
  262. package/dist/states/handlers/CampState.js.map +1 -0
  263. package/dist/states/handlers/ChargeState.d.ts +18 -0
  264. package/dist/states/handlers/ChargeState.d.ts.map +1 -0
  265. package/dist/states/handlers/ChargeState.js +103 -0
  266. package/dist/states/handlers/ChargeState.js.map +1 -0
  267. package/dist/states/handlers/CombatState.d.ts +19 -0
  268. package/dist/states/handlers/CombatState.d.ts.map +1 -0
  269. package/dist/states/handlers/CombatState.js +137 -0
  270. package/dist/states/handlers/CombatState.js.map +1 -0
  271. package/dist/states/handlers/CombatTransitionHandler.d.ts +34 -0
  272. package/dist/states/handlers/CombatTransitionHandler.d.ts.map +1 -0
  273. package/dist/states/handlers/CombatTransitionHandler.js +137 -0
  274. package/dist/states/handlers/CombatTransitionHandler.js.map +1 -0
  275. package/dist/states/handlers/DeadState.d.ts +16 -0
  276. package/dist/states/handlers/DeadState.d.ts.map +1 -0
  277. package/dist/states/handlers/DeadState.js +35 -0
  278. package/dist/states/handlers/DeadState.js.map +1 -0
  279. package/dist/states/handlers/EvadeGrenadeState.d.ts +23 -0
  280. package/dist/states/handlers/EvadeGrenadeState.d.ts.map +1 -0
  281. package/dist/states/handlers/EvadeGrenadeState.js +93 -0
  282. package/dist/states/handlers/EvadeGrenadeState.js.map +1 -0
  283. package/dist/states/handlers/FleeState.d.ts +18 -0
  284. package/dist/states/handlers/FleeState.d.ts.map +1 -0
  285. package/dist/states/handlers/FleeState.js +61 -0
  286. package/dist/states/handlers/FleeState.js.map +1 -0
  287. package/dist/states/handlers/GrenadeState.d.ts +18 -0
  288. package/dist/states/handlers/GrenadeState.d.ts.map +1 -0
  289. package/dist/states/handlers/GrenadeState.js +61 -0
  290. package/dist/states/handlers/GrenadeState.js.map +1 -0
  291. package/dist/states/handlers/HelpWoundedState.d.ts +27 -0
  292. package/dist/states/handlers/HelpWoundedState.d.ts.map +1 -0
  293. package/dist/states/handlers/HelpWoundedState.js +131 -0
  294. package/dist/states/handlers/HelpWoundedState.js.map +1 -0
  295. package/dist/states/handlers/IdleState.d.ts +18 -0
  296. package/dist/states/handlers/IdleState.d.ts.map +1 -0
  297. package/dist/states/handlers/IdleState.js +127 -0
  298. package/dist/states/handlers/IdleState.js.map +1 -0
  299. package/dist/states/handlers/InvestigateState.d.ts +27 -0
  300. package/dist/states/handlers/InvestigateState.d.ts.map +1 -0
  301. package/dist/states/handlers/InvestigateState.js +145 -0
  302. package/dist/states/handlers/InvestigateState.js.map +1 -0
  303. package/dist/states/handlers/KillWoundedState.d.ts +27 -0
  304. package/dist/states/handlers/KillWoundedState.d.ts.map +1 -0
  305. package/dist/states/handlers/KillWoundedState.js +147 -0
  306. package/dist/states/handlers/KillWoundedState.js.map +1 -0
  307. package/dist/states/handlers/LeapState.d.ts +18 -0
  308. package/dist/states/handlers/LeapState.d.ts.map +1 -0
  309. package/dist/states/handlers/LeapState.js +115 -0
  310. package/dist/states/handlers/LeapState.js.map +1 -0
  311. package/dist/states/handlers/MonsterCombatController.d.ts +55 -0
  312. package/dist/states/handlers/MonsterCombatController.d.ts.map +1 -0
  313. package/dist/states/handlers/MonsterCombatController.js +152 -0
  314. package/dist/states/handlers/MonsterCombatController.js.map +1 -0
  315. package/dist/states/handlers/PatrolState.d.ts +18 -0
  316. package/dist/states/handlers/PatrolState.d.ts.map +1 -0
  317. package/dist/states/handlers/PatrolState.js +137 -0
  318. package/dist/states/handlers/PatrolState.js.map +1 -0
  319. package/dist/states/handlers/PsiAttackState.d.ts +18 -0
  320. package/dist/states/handlers/PsiAttackState.d.ts.map +1 -0
  321. package/dist/states/handlers/PsiAttackState.js +101 -0
  322. package/dist/states/handlers/PsiAttackState.js.map +1 -0
  323. package/dist/states/handlers/RetreatState.d.ts +18 -0
  324. package/dist/states/handlers/RetreatState.d.ts.map +1 -0
  325. package/dist/states/handlers/RetreatState.js +131 -0
  326. package/dist/states/handlers/RetreatState.js.map +1 -0
  327. package/dist/states/handlers/SearchState.d.ts +18 -0
  328. package/dist/states/handlers/SearchState.d.ts.map +1 -0
  329. package/dist/states/handlers/SearchState.js +64 -0
  330. package/dist/states/handlers/SearchState.js.map +1 -0
  331. package/dist/states/handlers/SleepState.d.ts +18 -0
  332. package/dist/states/handlers/SleepState.d.ts.map +1 -0
  333. package/dist/states/handlers/SleepState.js +94 -0
  334. package/dist/states/handlers/SleepState.js.map +1 -0
  335. package/dist/states/handlers/StalkState.d.ts +18 -0
  336. package/dist/states/handlers/StalkState.d.ts.map +1 -0
  337. package/dist/states/handlers/StalkState.js +82 -0
  338. package/dist/states/handlers/StalkState.js.map +1 -0
  339. package/dist/states/handlers/TakeCoverState.d.ts +18 -0
  340. package/dist/states/handlers/TakeCoverState.d.ts.map +1 -0
  341. package/dist/states/handlers/TakeCoverState.js +208 -0
  342. package/dist/states/handlers/TakeCoverState.js.map +1 -0
  343. package/dist/states/handlers/WoundedState.d.ts +18 -0
  344. package/dist/states/handlers/WoundedState.d.ts.map +1 -0
  345. package/dist/states/handlers/WoundedState.js +71 -0
  346. package/dist/states/handlers/WoundedState.js.map +1 -0
  347. package/dist/states/handlers/_utils.d.ts +55 -0
  348. package/dist/states/handlers/_utils.d.ts.map +1 -0
  349. package/dist/states/handlers/_utils.js +88 -0
  350. package/dist/states/handlers/_utils.js.map +1 -0
  351. package/dist/states/handlers/index.d.ts +25 -0
  352. package/dist/states/handlers/index.d.ts.map +1 -0
  353. package/dist/states/handlers/index.js +28 -0
  354. package/dist/states/handlers/index.js.map +1 -0
  355. package/dist/states/index.d.ts +17 -0
  356. package/dist/states/index.d.ts.map +1 -0
  357. package/dist/states/index.js +12 -0
  358. package/dist/states/index.js.map +1 -0
  359. package/dist/states/pack/IPackAccess.d.ts +46 -0
  360. package/dist/states/pack/IPackAccess.d.ts.map +1 -0
  361. package/dist/states/pack/IPackAccess.js +8 -0
  362. package/dist/states/pack/IPackAccess.js.map +1 -0
  363. package/dist/suspicion/SuspicionAccumulator.d.ts +166 -0
  364. package/dist/suspicion/SuspicionAccumulator.d.ts.map +1 -0
  365. package/dist/suspicion/SuspicionAccumulator.js +191 -0
  366. package/dist/suspicion/SuspicionAccumulator.js.map +1 -0
  367. package/dist/suspicion/index.d.ts +3 -0
  368. package/dist/suspicion/index.d.ts.map +1 -0
  369. package/dist/suspicion/index.js +2 -0
  370. package/dist/suspicion/index.js.map +1 -0
  371. package/dist/types/IAnimationTypes.d.ts +28 -0
  372. package/dist/types/IAnimationTypes.d.ts.map +1 -0
  373. package/dist/types/IAnimationTypes.js +17 -0
  374. package/dist/types/IAnimationTypes.js.map +1 -0
  375. package/dist/types/ICoverPoint.d.ts +76 -0
  376. package/dist/types/ICoverPoint.d.ts.map +1 -0
  377. package/dist/types/ICoverPoint.js +21 -0
  378. package/dist/types/ICoverPoint.js.map +1 -0
  379. package/dist/types/IOnlineAIConfig.d.ts +150 -0
  380. package/dist/types/IOnlineAIConfig.d.ts.map +1 -0
  381. package/dist/types/IOnlineAIConfig.js +5 -0
  382. package/dist/types/IOnlineAIConfig.js.map +1 -0
  383. package/dist/types/IPerceptionTypes.d.ts +94 -0
  384. package/dist/types/IPerceptionTypes.d.ts.map +1 -0
  385. package/dist/types/IPerceptionTypes.js +37 -0
  386. package/dist/types/IPerceptionTypes.js.map +1 -0
  387. package/dist/types/IWeaponTypes.d.ts +56 -0
  388. package/dist/types/IWeaponTypes.d.ts.map +1 -0
  389. package/dist/types/IWeaponTypes.js +15 -0
  390. package/dist/types/IWeaponTypes.js.map +1 -0
  391. package/dist/types/index.d.ts +10 -0
  392. package/dist/types/index.d.ts.map +1 -0
  393. package/dist/types/index.js +5 -0
  394. package/dist/types/index.js.map +1 -0
  395. package/package.json +123 -0
@@ -0,0 +1,550 @@
1
+ import type { INPCOnlineState } from './INPCOnlineState';
2
+ import type { ISharedTargetInfo } from '../squad/SquadSharedTarget';
3
+ import type { ConditionChannel } from '../conditions/ConditionBank';
4
+ import type { SuspicionStimulus } from '../suspicion/SuspicionAccumulator';
5
+ import type { IPackAccess } from './pack/IPackAccess';
6
+ /**
7
+ * Snapshot of what the NPC can currently see and hear.
8
+ *
9
+ * Populated by the host's perception system (e.g. ScenePerceptionSystem) before
10
+ * each state handler update. State handlers call these methods to drive
11
+ * threat detection and target acquisition.
12
+ */
13
+ export interface INPCPerception {
14
+ /**
15
+ * All visible enemies this frame.
16
+ * Returns a read-only snapshot — do not hold references across frames.
17
+ */
18
+ getVisibleEnemies(): ReadonlyArray<{
19
+ id: string;
20
+ x: number;
21
+ y: number;
22
+ factionId: string;
23
+ }>;
24
+ /**
25
+ * All visible allied NPCs this frame.
26
+ * Returns a read-only snapshot — do not hold references across frames.
27
+ */
28
+ getVisibleAllies(): ReadonlyArray<{
29
+ id: string;
30
+ x: number;
31
+ y: number;
32
+ }>;
33
+ /**
34
+ * Items visible or in immediate vicinity of the NPC.
35
+ * Returns a read-only snapshot.
36
+ */
37
+ getNearbyItems(): ReadonlyArray<{
38
+ id: string;
39
+ x: number;
40
+ y: number;
41
+ type: string;
42
+ }>;
43
+ /** Quick guard — returns true if there is at least one visible enemy. */
44
+ hasVisibleEnemy(): boolean;
45
+ /**
46
+ * Allied NPCs that are wounded (below HP threshold) this frame.
47
+ *
48
+ * Opt-in — implement only when using `HelpWoundedState`. Omitting this method
49
+ * (or returning an empty array) disables the help-wounded seam in PatrolState /
50
+ * IdleState without any code changes.
51
+ */
52
+ getWoundedAllies?(): ReadonlyArray<{
53
+ id: string;
54
+ x: number;
55
+ y: number;
56
+ hpPercent: number;
57
+ }>;
58
+ /**
59
+ * Visible enemy NPCs that are wounded (below HP threshold) this frame.
60
+ *
61
+ * Opt-in — implement only when using `KillWoundedState`. Omitting this method
62
+ * (or returning an empty array) disables the kill-wounded seam in CombatState /
63
+ * AlertState without any code changes.
64
+ *
65
+ * The host should filter `getVisibleEnemies()` to those whose HP is below
66
+ * `cfg.killWoundedEnemyHpThreshold` and that are still alive.
67
+ */
68
+ getWoundedEnemies?(): ReadonlyArray<{
69
+ id: string;
70
+ x: number;
71
+ y: number;
72
+ hpPercent: number;
73
+ }>;
74
+ /**
75
+ * Dead allied NPCs (corpses) visible this frame.
76
+ *
77
+ * Opt-in — implement only when enabling corpse-detection suspicion accumulation
78
+ * in PatrolState / IdleState. Omitting this method disables the seam silently.
79
+ *
80
+ * **Host contract — deduplication is the host's responsibility.**
81
+ * PatrolState and IdleState call `suspicion.add(BODY_FOUND, ...)` for every
82
+ * corpse returned here, every frame. To prevent an infinite
83
+ * PATROL → ALERT → PATROL oscillation when the same corpse remains visible
84
+ * across multiple PATROL entries, the host must filter out corpses that the
85
+ * NPC has already reacted to (e.g. by maintaining a per-NPC `Set<string>` of
86
+ * known corpse IDs and only returning new ones).
87
+ */
88
+ getVisibleCorpses?(): ReadonlyArray<{
89
+ id: string;
90
+ x: number;
91
+ y: number;
92
+ }>;
93
+ }
94
+ /**
95
+ * Read/write access to the NPC's health.
96
+ *
97
+ * Exposed as a separate seam so state handlers (e.g. WoundedState) can
98
+ * trigger heals without needing a direct reference to HealthComponent.
99
+ */
100
+ export interface INPCHealth {
101
+ /** Current hit points. */
102
+ readonly hp: number;
103
+ /** Maximum hit points. */
104
+ readonly maxHp: number;
105
+ /** Current HP expressed as a ratio in [0, 1]. */
106
+ readonly hpPercent: number;
107
+ /**
108
+ * Apply a heal for the given amount.
109
+ * Clamps the result to maxHp.
110
+ *
111
+ * @param amount - Positive number of HP to restore.
112
+ */
113
+ heal(amount: number): void;
114
+ }
115
+ /**
116
+ * Cover point query interface.
117
+ *
118
+ * Wraps the engine-specific CoverRegistry / CoverSystem so state handlers
119
+ * can request a cover position without a direct scene reference.
120
+ */
121
+ export interface ICoverAccess {
122
+ /**
123
+ * Find the best available cover point near the given position.
124
+ *
125
+ * @param x - Searcher world X.
126
+ * @param y - Searcher world Y.
127
+ * @param enemyX - Enemy world X (cover must hide from this direction).
128
+ * @param enemyY - Enemy world Y.
129
+ * @param type - Optional cover evaluator type hint (e.g. 'close', 'far', 'balanced', 'ambush', 'safe').
130
+ * @returns Cover point world position, or null if no suitable cover is found.
131
+ */
132
+ findCover(x: number, y: number, enemyX: number, enemyY: number, type?: string): {
133
+ x: number;
134
+ y: number;
135
+ } | null;
136
+ /**
137
+ * Lock the most recently returned cover point for a given NPC.
138
+ *
139
+ * Called by state handlers immediately after a successful `findCover`.
140
+ * Implementations that wrap `CoverRegistry` with a `CoverLockRegistry` should
141
+ * store the last returned `ICoverPoint.id` and acquire a TTL lock here.
142
+ *
143
+ * No-op if the implementation does not support locking (optional method).
144
+ * State handlers use optional chaining: `ctx.cover?.lockLastFound?.(npcId)`.
145
+ *
146
+ * @returns true if the lock was acquired or refreshed, false if contested.
147
+ * Returns true (vacuous success) when locking is not supported.
148
+ */
149
+ lockLastFound?(npcId: string, ttlMs?: number): boolean;
150
+ /**
151
+ * Release all cover locks held by the given NPC.
152
+ *
153
+ * Called by state handlers in `exit()` to free the point immediately
154
+ * rather than waiting for TTL expiry.
155
+ *
156
+ * No-op if the implementation does not support locking (optional method).
157
+ */
158
+ unlockAll?(npcId: string): void;
159
+ }
160
+ /**
161
+ * Danger-level query interface.
162
+ *
163
+ * Wraps the engine-specific DangerManager so state handlers can check
164
+ * threat levels without importing game-layer classes.
165
+ */
166
+ export interface IDangerAccess {
167
+ /**
168
+ * Return the aggregate threat score at the given position in [0, 1].
169
+ *
170
+ * @param x - World X to query.
171
+ * @param y - World Y to query.
172
+ */
173
+ getDangerLevel(x: number, y: number): number;
174
+ /**
175
+ * Return active grenade/explosion danger affecting the given position, or null.
176
+ *
177
+ * @param x - World X to query.
178
+ * @param y - World Y to query.
179
+ * @returns Danger descriptor with its origin, or null if no active danger.
180
+ */
181
+ getGrenadeDanger(x: number, y: number): {
182
+ active: boolean;
183
+ originX: number;
184
+ originY: number;
185
+ } | null;
186
+ }
187
+ /**
188
+ * Restricted zone query interface.
189
+ *
190
+ * Wraps the engine-specific RestrictedZoneManager so state handlers can
191
+ * check movement constraints without a direct manager reference.
192
+ */
193
+ export interface IRestrictedZoneAccess {
194
+ /**
195
+ * Return true if the position satisfies all hard movement constraints.
196
+ *
197
+ * @param x - World X to test.
198
+ * @param y - World Y to test.
199
+ */
200
+ isAccessible(x: number, y: number): boolean;
201
+ /**
202
+ * Filter a list of waypoints to those in accessible positions.
203
+ *
204
+ * @param points - Candidate world positions.
205
+ * @returns Subset that passes all hard constraints.
206
+ */
207
+ filterAccessible(points: ReadonlyArray<{
208
+ x: number;
209
+ y: number;
210
+ }>): Array<{
211
+ x: number;
212
+ y: number;
213
+ }>;
214
+ }
215
+ /**
216
+ * Condition state accessor.
217
+ *
218
+ * Wraps the per-NPC {@link ConditionBank} so state handlers can read
219
+ * HP-independent condition levels (radiation, bleeding, etc.) without
220
+ * importing the ConditionBank class directly.
221
+ *
222
+ * The host implements this interface by delegating to `ConditionBank`.
223
+ * If not provided (`ctx.conditions === null`), all state handler checks
224
+ * silently no-op via optional chaining.
225
+ */
226
+ export interface IConditionAccess {
227
+ /**
228
+ * Current intensity of the given condition channel.
229
+ * Returns `0` if the channel has never been applied or has fully recovered.
230
+ *
231
+ * @param channel - Any string channel key (e.g. 'radiation', 'stamina').
232
+ */
233
+ getLevel(channel: ConditionChannel): number;
234
+ /**
235
+ * Apply a condition effect to this NPC.
236
+ *
237
+ * **Host use only.** State handlers read conditions via `hasCondition()` / `getLevel()` only.
238
+ *
239
+ * Used by the host when an NPC takes damage from an anomaly, bleeds, etc.
240
+ * Clamped to the configured `maxLevel`.
241
+ *
242
+ * @param channel - Target condition channel.
243
+ * @param amount - Positive amount to add.
244
+ */
245
+ apply(channel: ConditionChannel, amount: number): void;
246
+ /**
247
+ * Returns `true` if the channel intensity is **strictly greater than**
248
+ * the given threshold.
249
+ *
250
+ * @param channel - Condition channel to check.
251
+ * @param threshold - Exclusive lower bound. @default 0
252
+ */
253
+ hasCondition(channel: ConditionChannel, threshold?: number): boolean;
254
+ }
255
+ /**
256
+ * Suspicion level accessor.
257
+ *
258
+ * Wraps the per-NPC {@link SuspicionAccumulator} so state handlers can check
259
+ * accumulated threat intensity without importing the accumulator class.
260
+ *
261
+ * The host implements this interface by delegating to `SuspicionAccumulator`.
262
+ * If not provided (`ctx.suspicion === null`), all state handler checks
263
+ * silently no-op via optional chaining.
264
+ */
265
+ export interface ISuspicionAccess {
266
+ /** Current suspicion level in `[0, maxLevel]`. */
267
+ getLevel(): number;
268
+ /**
269
+ * Returns `true` if the current level is **strictly greater than**
270
+ * the given threshold.
271
+ *
272
+ * @param threshold - Exclusive comparison value. Defaults to configured maxLevel.
273
+ */
274
+ hasReachedAlert(threshold?: number): boolean;
275
+ /**
276
+ * Last threat position associated with a suspicion stimulus.
277
+ * Returns `null` if no position has been provided.
278
+ */
279
+ getLastKnownPosition(): {
280
+ x: number;
281
+ y: number;
282
+ } | null;
283
+ /**
284
+ * Add suspicion from a stimulus event.
285
+ *
286
+ * **Host use only.** State handlers read via `hasReachedAlert()` / `getLevel()` only.
287
+ *
288
+ * @param stimulus - Type of stimulus (semantic label).
289
+ * @param amount - Positive amount to add. Negative values are ignored.
290
+ * @param x - Optional threat X position → `getLastKnownPosition`.
291
+ * @param y - Optional threat Y position → `getLastKnownPosition`.
292
+ */
293
+ add(stimulus: SuspicionStimulus, amount: number, x?: number, y?: number): void;
294
+ /**
295
+ * Clear the stored threat position without resetting the suspicion level.
296
+ * Useful when the host wants to discard a stale position.
297
+ */
298
+ clearPosition(): void;
299
+ /**
300
+ * Reset suspicion level and threat position.
301
+ *
302
+ * State handlers call this after triggering an alert transition so
303
+ * the NPC starts fresh in the new state rather than re-triggering
304
+ * immediately on re-entry to PATROL/IDLE.
305
+ */
306
+ clear(): void;
307
+ }
308
+ /**
309
+ * Squad communication interface.
310
+ *
311
+ * Wraps the engine-specific SquadManager so state handlers can issue
312
+ * commands and share intel without importing game-layer classes.
313
+ */
314
+ export interface ISquadAccess {
315
+ /**
316
+ * Broadcast a target sighting to all squad members.
317
+ *
318
+ * @param targetId - Stable entity ID of the sighted enemy.
319
+ * @param x - Enemy world X.
320
+ * @param y - Enemy world Y.
321
+ */
322
+ shareTarget(targetId: string, x: number, y: number): void;
323
+ /**
324
+ * Return the stable entity ID of the squad leader, or null if the NPC is
325
+ * not in a squad or there is no elected leader.
326
+ */
327
+ getLeaderId(): string | null;
328
+ /** Total member count of the squad (including this NPC). */
329
+ getMemberCount(): number;
330
+ /**
331
+ * Issue a tactical command to the whole squad.
332
+ *
333
+ * @param command - Command string (e.g. 'ATTACK', 'RETREAT', 'HOLD').
334
+ */
335
+ issueCommand(command: string): void;
336
+ /**
337
+ * Optional. Return shared enemy intel from squad members, or null if none.
338
+ *
339
+ * If not implemented, PatrolState's squad intel check silently no-ops via
340
+ * `ctx.squad?.getSharedTarget?.()`. Implement using
341
+ * {@link SquadSharedTargetTable.getSharedTarget}.
342
+ *
343
+ * Returning null means either no intel is available or it has expired (TTL).
344
+ */
345
+ getSharedTarget?(): ISharedTargetInfo | null;
346
+ }
347
+ /**
348
+ * Payload emitted when an NPC fires a shot.
349
+ * The host listens to this event to spawn the actual projectile.
350
+ */
351
+ export interface IShootPayload {
352
+ /** Stable NPC identifier. */
353
+ npcId: string;
354
+ /** NPC world X at time of shot. */
355
+ x: number;
356
+ /** NPC world Y at time of shot. */
357
+ y: number;
358
+ /** Target world X. */
359
+ targetX: number;
360
+ /** Target world Y. */
361
+ targetY: number;
362
+ /** Active weapon type string (e.g. 'rifle', 'pistol'). */
363
+ weaponType: string;
364
+ }
365
+ /**
366
+ * Payload emitted when an NPC lands a melee hit.
367
+ * The host listens to this event to apply damage to the target.
368
+ */
369
+ export interface IMeleeHitPayload {
370
+ /** Stable NPC identifier of the attacker. */
371
+ npcId: string;
372
+ /** Stable entity ID of the target hit. */
373
+ targetId: string;
374
+ /** Raw damage value to apply. */
375
+ damage: number;
376
+ }
377
+ /**
378
+ * Per-NPC context facade used by all online state handlers.
379
+ *
380
+ * Implement this interface on the Phaser side (PhaserNPCContext) to bridge
381
+ * the game-layer Entity/Component world to the framework-agnostic state
382
+ * handler SDK.
383
+ *
384
+ * All optional subsystem accessors (cover, danger, restrictedZones, squad)
385
+ * may return null — state handlers must handle that case gracefully.
386
+ *
387
+ * @example
388
+ * ```ts
389
+ * class PhaserNPCContext implements INPCContext {
390
+ * constructor(private readonly entity: Entity) {}
391
+ * get npcId() { return this.entity.npcId; }
392
+ * get x() { return this.entity.x; }
393
+ * // ...
394
+ * }
395
+ * ```
396
+ */
397
+ export interface INPCContext {
398
+ /** Stable, unique identifier for this NPC. */
399
+ readonly npcId: string;
400
+ /** The NPC's faction identifier (e.g. 'military', 'bandits'). */
401
+ readonly factionId: string;
402
+ /**
403
+ * High-level entity type string (e.g. 'npc', 'monster', 'player').
404
+ * State handlers use this to distinguish human NPCs from monsters.
405
+ */
406
+ readonly entityType: string;
407
+ /** Current world X of the NPC (px). */
408
+ readonly x: number;
409
+ /** Current world Y of the NPC (px). */
410
+ readonly y: number;
411
+ /**
412
+ * Per-NPC mutable AI data bag.
413
+ *
414
+ * All state handlers read and write this object each frame.
415
+ * Create with {@link createDefaultNPCOnlineState}.
416
+ */
417
+ readonly state: INPCOnlineState;
418
+ /**
419
+ * Perception snapshot for the current frame, or null if no perception
420
+ * system is active for this NPC.
421
+ */
422
+ readonly perception: INPCPerception | null;
423
+ /**
424
+ * Health accessor, or null if the entity does not have a health component
425
+ * (e.g. invincible story NPCs, scripted props).
426
+ */
427
+ readonly health: INPCHealth | null;
428
+ /**
429
+ * Set the NPC's velocity in world space.
430
+ *
431
+ * @param vx - Horizontal velocity (px/s).
432
+ * @param vy - Vertical velocity (px/s).
433
+ */
434
+ setVelocity(vx: number, vy: number): void;
435
+ /** Immediately stop all movement (set velocity to zero). */
436
+ halt(): void;
437
+ /**
438
+ * Set the NPC's facing direction.
439
+ *
440
+ * @param radians - Angle in radians (0 = right, π/2 = down).
441
+ */
442
+ setRotation(radians: number): void;
443
+ /**
444
+ * Set the NPC's visual transparency.
445
+ *
446
+ * @param alpha - Opacity in [0, 1].
447
+ */
448
+ setAlpha(alpha: number): void;
449
+ /**
450
+ * Teleport the NPC to a new world position instantly.
451
+ * Bypasses physics and animation.
452
+ *
453
+ * @param x - Target world X (px).
454
+ * @param y - Target world Y (px).
455
+ */
456
+ teleport(x: number, y: number): void;
457
+ /**
458
+ * Disable the NPC's physics body (e.g. when transitioning to DEAD state).
459
+ * The NPC will no longer participate in collision detection.
460
+ */
461
+ disablePhysics(): void;
462
+ /**
463
+ * Trigger an FSM state transition.
464
+ *
465
+ * Calls exit() on the current state handler and enter() on the new one.
466
+ * The transition is performed synchronously in the current update frame.
467
+ *
468
+ * @param newStateId - Target state identifier (e.g. 'COMBAT', 'FLEE').
469
+ */
470
+ transition(newStateId: string): void;
471
+ /** The identifier of the currently active FSM state. */
472
+ readonly currentStateId: string;
473
+ /**
474
+ * Emit a shoot event so the host can spawn a projectile.
475
+ *
476
+ * @param payload - Shoot event data.
477
+ */
478
+ emitShoot(payload: IShootPayload): void;
479
+ /**
480
+ * Emit a melee-hit event so the host can apply damage to the target.
481
+ *
482
+ * @param payload - Melee hit event data.
483
+ */
484
+ emitMeleeHit(payload: IMeleeHitPayload): void;
485
+ /**
486
+ * Emit a vocalization event (NPC voice line / bark).
487
+ *
488
+ * @param type - Vocalization type string (e.g. 'ENEMY_SPOTTED', 'PAIN').
489
+ */
490
+ emitVocalization(type: string): void;
491
+ /**
492
+ * Emit a PSI attack start event (Controller special ability).
493
+ *
494
+ * @param x - World X of the attack origin.
495
+ * @param y - World Y of the attack origin.
496
+ */
497
+ emitPsiAttackStart(x: number, y: number): void;
498
+ /**
499
+ * Cover system accessor, or null if no cover system is registered.
500
+ * TakeCoverState and RetreatState use this to locate cover points.
501
+ */
502
+ readonly cover: ICoverAccess | null;
503
+ /**
504
+ * Danger assessment accessor, or null if no DangerManager is registered.
505
+ * CombatState and EvadeGrenadeState use this to detect grenade/explosion threats.
506
+ */
507
+ readonly danger: IDangerAccess | null;
508
+ /**
509
+ * Restricted zone accessor, or null if no RestrictedZoneManager is registered.
510
+ * IdleState uses this to detect and escape active DANGER zones.
511
+ */
512
+ readonly restrictedZones: IRestrictedZoneAccess | null;
513
+ /**
514
+ * Squad communication accessor, or null if the NPC is not in a squad.
515
+ * CombatState uses this to share target sightings with squad members.
516
+ */
517
+ readonly squad: ISquadAccess | null;
518
+ /**
519
+ * Pack coordination accessor, or null if the monster is not in a pack.
520
+ * Used by AlertState, MonsterCombatController, IdleState, PatrolState, and
521
+ * FleeState to broadcast and receive group alert signals (opt-in).
522
+ */
523
+ readonly pack: IPackAccess | null;
524
+ /**
525
+ * Condition bank accessor, or null if no condition system is registered.
526
+ * IdleState uses this to detect fatigue/radiation and trigger rest transitions.
527
+ */
528
+ readonly conditions: IConditionAccess | null;
529
+ /**
530
+ * Suspicion accumulator accessor, or null if no suspicion system is registered.
531
+ * PatrolState and IdleState use this to detect accumulated threat and trigger ALERT.
532
+ */
533
+ readonly suspicion: ISuspicionAccess | null;
534
+ /**
535
+ * Return the current elapsed time in milliseconds.
536
+ *
537
+ * In Phaser this maps to `scene.time.now`. In tests use a deterministic
538
+ * counter. All state timers are stored as absolute ms values and compared
539
+ * against this return value.
540
+ */
541
+ now(): number;
542
+ /**
543
+ * Return a pseudo-random number in [0, 1).
544
+ *
545
+ * Allows tests to inject deterministic randomness via a seeded PRNG without
546
+ * overriding `Math.random`.
547
+ */
548
+ random(): number;
549
+ }
550
+ //# sourceMappingURL=INPCContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"INPCContext.d.ts","sourceRoot":"","sources":["../../src/states/INPCContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ // states/INPCContext.ts
2
+ // Facade interface that online state handlers use to interact with an NPC.
3
+ //
4
+ // Design goals:
5
+ // - Zero framework dependencies — no Phaser, no DOM, no Node APIs.
6
+ // - Thin seams for each subsystem (perception, health, cover, etc.) so the
7
+ // host implementation (PhaserNPCContext) wires them in lazily.
8
+ // - All subsystems are optional (nullable) — state handlers must gracefully
9
+ // degrade when a subsystem is absent (e.g. tests that mock only a subset).
10
+ //
11
+ // Usage pattern:
12
+ // 1. Host (Phaser layer) implements INPCContext on a per-entity wrapper.
13
+ // 2. State handlers receive INPCContext in enter/update/exit — no direct
14
+ // Entity or Phaser.Physics.Arcade.Body references.
15
+ // 3. Tests provide a minimal mock implementing only the fields they need.
16
+ export {};
17
+ //# sourceMappingURL=INPCContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"INPCContext.js","sourceRoot":"","sources":["../../src/states/INPCContext.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,2EAA2E;AAC3E,EAAE;AACF,gBAAgB;AAChB,qEAAqE;AACrE,6EAA6E;AAC7E,mEAAmE;AACnE,8EAA8E;AAC9E,+EAA+E;AAC/E,EAAE;AACF,iBAAiB;AACjB,2EAA2E;AAC3E,2EAA2E;AAC3E,wDAAwD;AACxD,4EAA4E"}