@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,9 @@
1
+ export { selectBestWeapon, shouldThrowGrenade, shouldUseMedkit } from './WeaponSelector';
2
+ export type { IWeaponContext } from './WeaponSelector';
3
+ export { LoadoutBuilder, createLoadout, FactionWeaponPreference, DEFAULT_LOADOUT_RECIPES } from './LoadoutBuilder';
4
+ export type { ILoadoutRecipe } from './LoadoutBuilder';
5
+ export { evaluateTransitions, DEFAULT_COMBAT_RULES, createDefaultCombatTransitionConfig, WoundedRule, NoAmmoRule, EvadeDangerRule, MoraleRule, GrenadeOpportunityRule, SearchRule, } from './CombatTransitionChain';
6
+ export type { ICombatContext, ITransitionRule, ICombatTransitionConfig, TransitionResult, } from './CombatTransitionChain';
7
+ export { MonsterAbility, DEFAULT_ABILITY_RULES, DEFAULT_MONSTER_FLEE_CONFIG, createLinearChargeData, createApproachData, createLeapData, createChannelAbilityData, selectMonsterAbility, shouldMonsterFlee, } from './MonsterAbilityData';
8
+ export type { ILinearChargeData, LinearChargePhase, IApproachData, ApproachPhase, ILeapData, LeapPhase, IChannelAbilityData, ChannelAbilityPhase, IMonsterAbilityContext, IMonsterAbilityRule, IMonsterFleeConfig, } from './MonsterAbilityData';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/combat/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACzF,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACnH,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mCAAmC,EACnC,WAAW,EACX,UAAU,EACV,eAAe,EACf,UAAU,EACV,sBAAsB,EACtB,UAAU,GACX,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,2BAA2B,EAC3B,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,EACd,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,6 @@
1
+ // combat sub-path barrel
2
+ export { selectBestWeapon, shouldThrowGrenade, shouldUseMedkit } from './WeaponSelector';
3
+ export { LoadoutBuilder, createLoadout, FactionWeaponPreference, DEFAULT_LOADOUT_RECIPES } from './LoadoutBuilder';
4
+ export { evaluateTransitions, DEFAULT_COMBAT_RULES, createDefaultCombatTransitionConfig, WoundedRule, NoAmmoRule, EvadeDangerRule, MoraleRule, GrenadeOpportunityRule, SearchRule, } from './CombatTransitionChain';
5
+ export { MonsterAbility, DEFAULT_ABILITY_RULES, DEFAULT_MONSTER_FLEE_CONFIG, createLinearChargeData, createApproachData, createLeapData, createChannelAbilityData, selectMonsterAbility, shouldMonsterFlee, } from './MonsterAbilityData';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/combat/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEzF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAEnH,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mCAAmC,EACnC,WAAW,EACX,UAAU,EACV,eAAe,EACf,UAAU,EACV,sBAAsB,EACtB,UAAU,GACX,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,2BAA2B,EAC3B,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,EACd,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Named constants for the built-in condition channels.
3
+ *
4
+ * Using these avoids magic strings in your code, but they are purely
5
+ * convenience — any string is a valid {@link ConditionChannel}.
6
+ */
7
+ export declare const ConditionChannels: {
8
+ /** Haemorrhage — damage over time from wounds. */
9
+ readonly BLEEDING: "bleeding";
10
+ /** Ionising radiation from anomalies or contaminated zones. */
11
+ readonly RADIATION: "radiation";
12
+ /** Hunger / food deprivation. */
13
+ readonly HUNGER: "hunger";
14
+ /** Fatigue / physical tiredness (stamina depletion). */
15
+ readonly STAMINA: "stamina";
16
+ /** Alcohol or drug intoxication. */
17
+ readonly INTOXICATION: "intoxication";
18
+ };
19
+ /**
20
+ * Open condition channel type.
21
+ *
22
+ * Derived from {@link ConditionChannels} so the type and constants stay in sync.
23
+ * Any string is valid — games can extend with their own channels without
24
+ * touching the SDK.
25
+ *
26
+ * @example
27
+ * // Using a built-in channel:
28
+ * bank.apply(ConditionChannels.RADIATION, 0.1);
29
+ *
30
+ * // Using a custom game-specific channel:
31
+ * bank.apply('psi_overload', 0.3);
32
+ */
33
+ export type ConditionChannel = (typeof ConditionChannels)[keyof typeof ConditionChannels] | (string & {});
34
+ /**
35
+ * Tuning parameters for a {@link ConditionBank}.
36
+ * All fields have defaults via {@link createDefaultConditionBankConfig}.
37
+ */
38
+ export interface IConditionBankConfig {
39
+ /**
40
+ * How fast all channels recover (level/second) when no per-channel rate
41
+ * is set. A value of 0.01 means a fully saturated channel recovers in ~100s.
42
+ * @default 0.01
43
+ */
44
+ readonly defaultDecayRate: number;
45
+ /**
46
+ * Per-channel decay-rate overrides.
47
+ *
48
+ * Radiation lingers longer than alcohol — set `{ radiation: 0.002 }` to
49
+ * slow its recovery to ~500s while keeping the default for other channels.
50
+ *
51
+ * @example
52
+ * { radiation: 0.002, bleeding: 0.05 }
53
+ */
54
+ readonly channelDecayRates?: Readonly<Partial<Record<string, number>>>;
55
+ /**
56
+ * Maximum intensity value for any channel.
57
+ * Intensities are clamped to `[0, maxLevel]` by {@link ConditionBank.apply}.
58
+ *
59
+ * @default 1.0
60
+ */
61
+ readonly maxLevel?: number;
62
+ }
63
+ /**
64
+ * Create an {@link IConditionBankConfig} with production defaults.
65
+ * Pass a partial override object to tune individual values.
66
+ *
67
+ * @example
68
+ * const cfg = createDefaultConditionBankConfig({ channelDecayRates: { radiation: 0.002 } });
69
+ */
70
+ export declare function createDefaultConditionBankConfig(overrides?: Partial<IConditionBankConfig>): IConditionBankConfig;
71
+ /**
72
+ * Per-NPC condition state store.
73
+ *
74
+ * Tracks HP-independent condition intensities ([0, maxLevel]) for an NPC.
75
+ * The host allocates one `ConditionBank` per NPC, calls `update(deltaSec)`
76
+ * each game frame, and exposes it to state handlers via the
77
+ * {@link IConditionAccess} seam on `INPCContext`.
78
+ *
79
+ * ### Wiring example (host layer)
80
+ * ```ts
81
+ * const bank = new ConditionBank({ channelDecayRates: { radiation: 0.002 } });
82
+ *
83
+ * const ctx: INPCContext = {
84
+ * // ...
85
+ * conditions: bank,
86
+ * };
87
+ *
88
+ * // Per-frame update (before the state machine tick):
89
+ * bank.update(deltaMs / 1000);
90
+ *
91
+ * // Game event handlers:
92
+ * onRadiationExposure(npcId) { bankFor(npcId).apply('radiation', 0.02); }
93
+ * onNPCRested(npcId) { bankFor(npcId).recover('stamina', 0.5); }
94
+ * ```
95
+ *
96
+ * ### Opt-in / opt-out
97
+ * - **Full feature**: implement `ctx.conditions` as shown above.
98
+ * - **Write only**: implement without wiring to state handlers.
99
+ * - **Fully disabled**: leave `ctx.conditions = null` — all state handler
100
+ * checks are no-ops via `ctx.conditions?.hasCondition(...)`.
101
+ */
102
+ export declare class ConditionBank {
103
+ private readonly config;
104
+ /** Inner store: channel → current intensity. Only non-zero channels are kept. */
105
+ private readonly store;
106
+ /** Scratch array for two-pass channel eviction in {@link update}. */
107
+ private readonly _toDelete;
108
+ constructor(config?: Partial<IConditionBankConfig>);
109
+ /**
110
+ * Increase the intensity of a condition channel.
111
+ *
112
+ * The new level is clamped to `[0, maxLevel]`.
113
+ * Calling `apply` multiple times accumulates — the channel does not reset.
114
+ *
115
+ * **Host use only.** State handlers must not call `apply()` — conditions
116
+ * are external inputs driven by the host layer (anomaly damage, bleeding
117
+ * events, etc.). State handlers read via `hasCondition()` / `getLevel()`.
118
+ *
119
+ * @param channel - Target condition channel.
120
+ * @param amount - Positive amount to add (e.g. 0.1 per radiation burst).
121
+ * Negative values are ignored (use {@link recover} instead).
122
+ */
123
+ apply(channel: ConditionChannel, amount: number): void;
124
+ /**
125
+ * Decrease the intensity of a condition channel.
126
+ *
127
+ * The new level is clamped to `[0, ...]`. Use this for instant recovery
128
+ * events (e.g. anti-rad item use). For time-based recovery use `update()`.
129
+ *
130
+ * @param channel - Target condition channel.
131
+ * @param amount - Positive amount to remove.
132
+ * Negative values are ignored (use {@link apply} instead).
133
+ */
134
+ recover(channel: ConditionChannel, amount: number): void;
135
+ /**
136
+ * Current intensity of the given channel in `[0, maxLevel]`.
137
+ * Returns `0` if the channel has never been applied or has fully recovered.
138
+ *
139
+ * @param channel - Condition channel to query.
140
+ */
141
+ getLevel(channel: ConditionChannel): number;
142
+ /**
143
+ * Returns `true` if the channel's intensity is **strictly greater than**
144
+ * the given threshold.
145
+ *
146
+ * @param channel - Condition channel to check.
147
+ * @param threshold - Comparison threshold (exclusive). @default 0
148
+ */
149
+ hasCondition(channel: ConditionChannel, threshold?: number): boolean;
150
+ /**
151
+ * All channels whose current intensity is greater than zero.
152
+ *
153
+ * Returns a read-only snapshot — do not hold references across frames.
154
+ */
155
+ getActiveChannels(): ReadonlyArray<{
156
+ channel: ConditionChannel;
157
+ level: number;
158
+ }>;
159
+ /**
160
+ * Apply time-based decay to all active condition channels.
161
+ *
162
+ * The host calls this each game frame with `deltaMs / 1000`.
163
+ * Each channel decays by its configured rate (level/second) until it reaches zero,
164
+ * at which point it is removed from the active set.
165
+ *
166
+ * @param deltaSec - Elapsed time since last update, in seconds.
167
+ */
168
+ update(deltaSec: number): void;
169
+ /**
170
+ * Clear one condition channel or all channels.
171
+ *
172
+ * Pass `channel` to clear a single condition (e.g. after an anti-rad cure).
173
+ * Omit `channel` to clear all conditions (e.g. on NPC reset or respawn).
174
+ *
175
+ * @param channel - Channel to clear, or undefined to clear everything.
176
+ */
177
+ clear(channel?: ConditionChannel): void;
178
+ }
179
+ //# sourceMappingURL=ConditionBank.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConditionBank.d.ts","sourceRoot":"","sources":["../../src/conditions/ConditionBank.ts"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;IAC5B,kDAAkD;;IAElD,+DAA+D;;IAE/D,iCAAiC;;IAEjC,wDAAwD;;IAExD,oCAAoC;;CAE5B,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,gBAAgB,GACxB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,GAC1D,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAMlB;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAElC;;;;;;;;OAQG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAEvE;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAC9C,SAAS,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACxC,oBAAoB,CAEtB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IAExD,iFAAiF;IACjF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IAEnD,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;gBAE9B,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAalD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAMtD;;;;;;;;;OASG;IACH,OAAO,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAgBxD;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM;IAI3C;;;;;;OAMG;IACH,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,SAAI,GAAG,OAAO;IAI/D;;;;OAIG;IACH,iBAAiB,IAAI,aAAa,CAAC;QAAE,OAAO,EAAE,gBAAgB,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAYhF;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAwB9B;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI;CAOxC"}
@@ -0,0 +1,220 @@
1
+ // conditions/ConditionBank.ts
2
+ // Per-NPC condition state — HP-independent channels (radiation, bleeding, etc.)
3
+ //
4
+ // Design principles:
5
+ // • Pure class — no INPCContext dependency, no Phaser references.
6
+ // • Multi-channel storage with per-channel decay rates (mirrors MemoryBank).
7
+ // • update(deltaSec) called by the host each frame; state handlers only read.
8
+ // • Open string channel type — SDK provides named constants, game can add its own.
9
+ // • maxLevel is configurable so games can use [0..1] or [0..100] as they prefer.
10
+ // ---------------------------------------------------------------------------
11
+ // Channel types
12
+ // ---------------------------------------------------------------------------
13
+ /**
14
+ * Named constants for the built-in condition channels.
15
+ *
16
+ * Using these avoids magic strings in your code, but they are purely
17
+ * convenience — any string is a valid {@link ConditionChannel}.
18
+ */
19
+ export const ConditionChannels = {
20
+ /** Haemorrhage — damage over time from wounds. */
21
+ BLEEDING: 'bleeding',
22
+ /** Ionising radiation from anomalies or contaminated zones. */
23
+ RADIATION: 'radiation',
24
+ /** Hunger / food deprivation. */
25
+ HUNGER: 'hunger',
26
+ /** Fatigue / physical tiredness (stamina depletion). */
27
+ STAMINA: 'stamina',
28
+ /** Alcohol or drug intoxication. */
29
+ INTOXICATION: 'intoxication',
30
+ };
31
+ /**
32
+ * Create an {@link IConditionBankConfig} with production defaults.
33
+ * Pass a partial override object to tune individual values.
34
+ *
35
+ * @example
36
+ * const cfg = createDefaultConditionBankConfig({ channelDecayRates: { radiation: 0.002 } });
37
+ */
38
+ export function createDefaultConditionBankConfig(overrides) {
39
+ return { defaultDecayRate: 0.01, ...overrides };
40
+ }
41
+ // ---------------------------------------------------------------------------
42
+ // ConditionBank
43
+ // ---------------------------------------------------------------------------
44
+ /**
45
+ * Per-NPC condition state store.
46
+ *
47
+ * Tracks HP-independent condition intensities ([0, maxLevel]) for an NPC.
48
+ * The host allocates one `ConditionBank` per NPC, calls `update(deltaSec)`
49
+ * each game frame, and exposes it to state handlers via the
50
+ * {@link IConditionAccess} seam on `INPCContext`.
51
+ *
52
+ * ### Wiring example (host layer)
53
+ * ```ts
54
+ * const bank = new ConditionBank({ channelDecayRates: { radiation: 0.002 } });
55
+ *
56
+ * const ctx: INPCContext = {
57
+ * // ...
58
+ * conditions: bank,
59
+ * };
60
+ *
61
+ * // Per-frame update (before the state machine tick):
62
+ * bank.update(deltaMs / 1000);
63
+ *
64
+ * // Game event handlers:
65
+ * onRadiationExposure(npcId) { bankFor(npcId).apply('radiation', 0.02); }
66
+ * onNPCRested(npcId) { bankFor(npcId).recover('stamina', 0.5); }
67
+ * ```
68
+ *
69
+ * ### Opt-in / opt-out
70
+ * - **Full feature**: implement `ctx.conditions` as shown above.
71
+ * - **Write only**: implement without wiring to state handlers.
72
+ * - **Fully disabled**: leave `ctx.conditions = null` — all state handler
73
+ * checks are no-ops via `ctx.conditions?.hasCondition(...)`.
74
+ */
75
+ export class ConditionBank {
76
+ constructor(config) {
77
+ /** Inner store: channel → current intensity. Only non-zero channels are kept. */
78
+ this.store = new Map();
79
+ /** Scratch array for two-pass channel eviction in {@link update}. */
80
+ this._toDelete = [];
81
+ const merged = createDefaultConditionBankConfig(config);
82
+ this.config = {
83
+ defaultDecayRate: merged.defaultDecayRate,
84
+ channelDecayRates: merged.channelDecayRates ?? {},
85
+ maxLevel: merged.maxLevel ?? 1.0,
86
+ };
87
+ }
88
+ // ---------------------------------------------------------------------------
89
+ // Write
90
+ // ---------------------------------------------------------------------------
91
+ /**
92
+ * Increase the intensity of a condition channel.
93
+ *
94
+ * The new level is clamped to `[0, maxLevel]`.
95
+ * Calling `apply` multiple times accumulates — the channel does not reset.
96
+ *
97
+ * **Host use only.** State handlers must not call `apply()` — conditions
98
+ * are external inputs driven by the host layer (anomaly damage, bleeding
99
+ * events, etc.). State handlers read via `hasCondition()` / `getLevel()`.
100
+ *
101
+ * @param channel - Target condition channel.
102
+ * @param amount - Positive amount to add (e.g. 0.1 per radiation burst).
103
+ * Negative values are ignored (use {@link recover} instead).
104
+ */
105
+ apply(channel, amount) {
106
+ if (!(amount > 0))
107
+ return; // rejects NaN and ≤ 0
108
+ const current = this.store.get(channel) ?? 0;
109
+ this.store.set(channel, Math.min(current + amount, this.config.maxLevel));
110
+ }
111
+ /**
112
+ * Decrease the intensity of a condition channel.
113
+ *
114
+ * The new level is clamped to `[0, ...]`. Use this for instant recovery
115
+ * events (e.g. anti-rad item use). For time-based recovery use `update()`.
116
+ *
117
+ * @param channel - Target condition channel.
118
+ * @param amount - Positive amount to remove.
119
+ * Negative values are ignored (use {@link apply} instead).
120
+ */
121
+ recover(channel, amount) {
122
+ if (!(amount > 0))
123
+ return; // rejects NaN and ≤ 0
124
+ const current = this.store.get(channel) ?? 0;
125
+ if (current <= 0)
126
+ return;
127
+ const next = current - amount;
128
+ if (next <= 0) {
129
+ this.store.delete(channel);
130
+ }
131
+ else {
132
+ this.store.set(channel, next);
133
+ }
134
+ }
135
+ // ---------------------------------------------------------------------------
136
+ // Read
137
+ // ---------------------------------------------------------------------------
138
+ /**
139
+ * Current intensity of the given channel in `[0, maxLevel]`.
140
+ * Returns `0` if the channel has never been applied or has fully recovered.
141
+ *
142
+ * @param channel - Condition channel to query.
143
+ */
144
+ getLevel(channel) {
145
+ return this.store.get(channel) ?? 0;
146
+ }
147
+ /**
148
+ * Returns `true` if the channel's intensity is **strictly greater than**
149
+ * the given threshold.
150
+ *
151
+ * @param channel - Condition channel to check.
152
+ * @param threshold - Comparison threshold (exclusive). @default 0
153
+ */
154
+ hasCondition(channel, threshold = 0) {
155
+ return (this.store.get(channel) ?? 0) > threshold;
156
+ }
157
+ /**
158
+ * All channels whose current intensity is greater than zero.
159
+ *
160
+ * Returns a read-only snapshot — do not hold references across frames.
161
+ */
162
+ getActiveChannels() {
163
+ const result = [];
164
+ for (const [channel, level] of this.store) {
165
+ result.push({ channel, level });
166
+ }
167
+ return result;
168
+ }
169
+ // ---------------------------------------------------------------------------
170
+ // Time-based decay
171
+ // ---------------------------------------------------------------------------
172
+ /**
173
+ * Apply time-based decay to all active condition channels.
174
+ *
175
+ * The host calls this each game frame with `deltaMs / 1000`.
176
+ * Each channel decays by its configured rate (level/second) until it reaches zero,
177
+ * at which point it is removed from the active set.
178
+ *
179
+ * @param deltaSec - Elapsed time since last update, in seconds.
180
+ */
181
+ update(deltaSec) {
182
+ if (!(deltaSec > 0))
183
+ return; // rejects NaN and negative (would increase levels)
184
+ this._toDelete.length = 0;
185
+ for (const [channel, level] of this.store) {
186
+ const rate = this.config.channelDecayRates[channel]
187
+ ?? this.config.defaultDecayRate;
188
+ const next = level - rate * deltaSec;
189
+ if (next <= 0) {
190
+ this._toDelete.push(channel);
191
+ }
192
+ else {
193
+ this.store.set(channel, next);
194
+ }
195
+ }
196
+ for (let i = 0; i < this._toDelete.length; i++) {
197
+ this.store.delete(this._toDelete[i]);
198
+ }
199
+ }
200
+ // ---------------------------------------------------------------------------
201
+ // Lifecycle
202
+ // ---------------------------------------------------------------------------
203
+ /**
204
+ * Clear one condition channel or all channels.
205
+ *
206
+ * Pass `channel` to clear a single condition (e.g. after an anti-rad cure).
207
+ * Omit `channel` to clear all conditions (e.g. on NPC reset or respawn).
208
+ *
209
+ * @param channel - Channel to clear, or undefined to clear everything.
210
+ */
211
+ clear(channel) {
212
+ if (channel === undefined) {
213
+ this.store.clear();
214
+ }
215
+ else {
216
+ this.store.delete(channel);
217
+ }
218
+ }
219
+ }
220
+ //# sourceMappingURL=ConditionBank.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConditionBank.js","sourceRoot":"","sources":["../../src/conditions/ConditionBank.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { ConditionBank, ConditionChannels, createDefaultConditionBankConfig, } from './ConditionBank';
2
+ export type { ConditionChannel, IConditionBankConfig } from './ConditionBank';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conditions/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,gCAAgC,GACjC,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ // conditions sub-path barrel
2
+ export { ConditionBank, ConditionChannels, createDefaultConditionBankConfig, } from './ConditionBank';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conditions/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,gCAAgC,GACjC,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { IOnlineAIConfig } from '../types/IOnlineAIConfig';
2
+ /**
3
+ * Create a fully populated AI config with production defaults.
4
+ *
5
+ * Each subsystem section can be partially overridden. Values not provided
6
+ * fall back to battle-tested defaults from the reference implementation.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const config = createDefaultAIConfig({
11
+ * cover: { searchRadius: 500 },
12
+ * navigation: { arrivalThreshold: 12 },
13
+ * });
14
+ * ```
15
+ */
16
+ export declare function createDefaultAIConfig(overrides?: Partial<{
17
+ cover: Partial<IOnlineAIConfig['cover']>;
18
+ navigation: Partial<IOnlineAIConfig['navigation']>;
19
+ weapon: Partial<IOnlineAIConfig['weapon']>;
20
+ squad: Partial<IOnlineAIConfig['squad']>;
21
+ monsterAbility: Partial<IOnlineAIConfig['monsterAbility']>;
22
+ perception: Partial<IOnlineAIConfig['perception']>;
23
+ goap: Partial<IOnlineAIConfig['goap']>;
24
+ }>): IOnlineAIConfig;
25
+ //# sourceMappingURL=createDefaultAIConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createDefaultAIConfig.d.ts","sourceRoot":"","sources":["../../src/config/createDefaultAIConfig.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,UAAU,EAAE,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;IACnD,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,cAAc,EAAE,OAAO,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC3D,UAAU,EAAE,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;IACnD,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;CACxC,CAAC,GACD,eAAe,CAgIjB"}
@@ -0,0 +1,147 @@
1
+ // config/createDefaultAIConfig.ts
2
+ // Factory for production-tuned AI configuration with selective overrides.
3
+ import { WeaponCategory } from '../types/IWeaponTypes';
4
+ /**
5
+ * Create a fully populated AI config with production defaults.
6
+ *
7
+ * Each subsystem section can be partially overridden. Values not provided
8
+ * fall back to battle-tested defaults from the reference implementation.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const config = createDefaultAIConfig({
13
+ * cover: { searchRadius: 500 },
14
+ * navigation: { arrivalThreshold: 12 },
15
+ * });
16
+ * ```
17
+ */
18
+ export function createDefaultAIConfig(overrides) {
19
+ return {
20
+ cover: {
21
+ searchRadius: 400,
22
+ pointRadius: 24,
23
+ occupyDistance: 30,
24
+ minScoreThreshold: 0.1,
25
+ closeMaxRange: 200,
26
+ farMaxRange: 600,
27
+ ambushMinAngle: Math.PI / 3,
28
+ ambushMaxAngle: (2 * Math.PI) / 3,
29
+ ambushMinDist: 100,
30
+ ambushMaxDist: 300,
31
+ recommendHpCritical: 0.2,
32
+ recommendHpHealthy: 0.6,
33
+ recommendMoraleDemoralized: -0.5,
34
+ recommendOutnumberedCount: 3,
35
+ loopholeFireArc: (2 * Math.PI) / 3,
36
+ loopholeMaxPerCover: 3,
37
+ loopholeOffsetDistance: 16,
38
+ ...overrides?.cover,
39
+ },
40
+ navigation: {
41
+ smoothPointsPerSegment: 8,
42
+ smoothRandomOffset: 10,
43
+ arrivalThreshold: 8,
44
+ dubinsMaxInstantTurn: Math.PI / 4,
45
+ dubinsTurningRadius: 60,
46
+ velocityCurveFast: 1.0,
47
+ velocityCurveMedium: 0.7,
48
+ velocityCurveSlow: 0.4,
49
+ velocityTransitionRate: 0.15,
50
+ restrictedZoneSafeMargin: 20,
51
+ ...overrides?.navigation,
52
+ },
53
+ weapon: {
54
+ weapons: {
55
+ [WeaponCategory.PISTOL]: {
56
+ category: WeaponCategory.PISTOL,
57
+ range: { min: 0, max: 250 },
58
+ damage: 15,
59
+ fireRate: 1.5,
60
+ defaultAmmo: 15,
61
+ },
62
+ [WeaponCategory.SHOTGUN]: {
63
+ category: WeaponCategory.SHOTGUN,
64
+ range: { min: 0, max: 150 },
65
+ damage: 40,
66
+ fireRate: 1.0,
67
+ defaultAmmo: 8,
68
+ },
69
+ [WeaponCategory.RIFLE]: {
70
+ category: WeaponCategory.RIFLE,
71
+ range: { min: 100, max: 400 },
72
+ damage: 25,
73
+ fireRate: 2.0,
74
+ defaultAmmo: 30,
75
+ },
76
+ [WeaponCategory.SNIPER]: {
77
+ category: WeaponCategory.SNIPER,
78
+ range: { min: 300, max: 800 },
79
+ damage: 60,
80
+ fireRate: 0.5,
81
+ defaultAmmo: 10,
82
+ },
83
+ [WeaponCategory.GRENADE]: {
84
+ category: WeaponCategory.GRENADE,
85
+ range: { min: 100, max: 400 },
86
+ damage: 80,
87
+ fireRate: 0.2,
88
+ defaultAmmo: 1,
89
+ },
90
+ [WeaponCategory.MEDKIT]: {
91
+ category: WeaponCategory.MEDKIT,
92
+ range: { min: 0, max: 0 },
93
+ damage: 0,
94
+ fireRate: 0,
95
+ defaultAmmo: 1,
96
+ },
97
+ },
98
+ shotgunEffectiveMax: 150,
99
+ rifleEffectiveMin: 100,
100
+ rifleEffectiveMax: 400,
101
+ sniperEffectiveMin: 300,
102
+ grenadeMinDistance: 100,
103
+ grenadeMaxDistance: 400,
104
+ grenadeMinEnemies: 2,
105
+ medkitHpThreshold: 0.5,
106
+ medkitEmergencyThreshold: 0.2,
107
+ ...overrides?.weapon,
108
+ },
109
+ squad: {
110
+ outnumberRatio: 1.5,
111
+ moralePanickedThreshold: -0.7,
112
+ nearbyRadius: 200,
113
+ ...overrides?.squad,
114
+ },
115
+ monsterAbility: {
116
+ chargeWindupMs: 600,
117
+ chargeDamageMult: 2.0,
118
+ chargeSpeedMult: 2.0,
119
+ stalkApproachDist: 80,
120
+ stalkAlphaInvisible: 0.08,
121
+ stalkUncloakDist: 50,
122
+ leapWindupMs: 400,
123
+ leapAirtimeMs: 350,
124
+ leapDamageMult: 1.5,
125
+ psiChannelMs: 2000,
126
+ psiRadius: 200,
127
+ psiDamagePerTick: 15,
128
+ ...overrides?.monsterAbility,
129
+ },
130
+ perception: {
131
+ visionRange: 300,
132
+ visionHalfAngle: Math.PI / 3,
133
+ hearingRange: 500,
134
+ weaponSoundRange: 600,
135
+ ...overrides?.perception,
136
+ },
137
+ goap: {
138
+ replanIntervalMs: 5000,
139
+ eliteRankThreshold: 5,
140
+ healHpThreshold: 0.3,
141
+ maxPlanDepth: 10,
142
+ dangerMemoryMaxAge: 5000,
143
+ ...overrides?.goap,
144
+ },
145
+ };
146
+ }
147
+ //# sourceMappingURL=createDefaultAIConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createDefaultAIConfig.js","sourceRoot":"","sources":["../../src/config/createDefaultAIConfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { createDefaultAIConfig } from './createDefaultAIConfig';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,3 @@
1
+ // config sub-path barrel
2
+ export { createDefaultAIConfig } from './createDefaultAIConfig';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}