@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.
- package/LICENSE +21 -0
- package/README.md +385 -0
- package/dist/animation/AnimationController.d.ts +60 -0
- package/dist/animation/AnimationController.d.ts.map +1 -0
- package/dist/animation/AnimationController.js +71 -0
- package/dist/animation/AnimationController.js.map +1 -0
- package/dist/animation/AnimationSelector.d.ts +108 -0
- package/dist/animation/AnimationSelector.d.ts.map +1 -0
- package/dist/animation/AnimationSelector.js +194 -0
- package/dist/animation/AnimationSelector.js.map +1 -0
- package/dist/animation/index.d.ts +5 -0
- package/dist/animation/index.d.ts.map +1 -0
- package/dist/animation/index.js +4 -0
- package/dist/animation/index.js.map +1 -0
- package/dist/combat/CombatTransitionChain.d.ts +95 -0
- package/dist/combat/CombatTransitionChain.d.ts.map +1 -0
- package/dist/combat/CombatTransitionChain.js +117 -0
- package/dist/combat/CombatTransitionChain.js.map +1 -0
- package/dist/combat/LoadoutBuilder.d.ts +83 -0
- package/dist/combat/LoadoutBuilder.d.ts.map +1 -0
- package/dist/combat/LoadoutBuilder.js +213 -0
- package/dist/combat/LoadoutBuilder.js.map +1 -0
- package/dist/combat/MonsterAbilityData.d.ts +97 -0
- package/dist/combat/MonsterAbilityData.d.ts.map +1 -0
- package/dist/combat/MonsterAbilityData.js +94 -0
- package/dist/combat/MonsterAbilityData.js.map +1 -0
- package/dist/combat/WeaponSelector.d.ts +47 -0
- package/dist/combat/WeaponSelector.d.ts.map +1 -0
- package/dist/combat/WeaponSelector.js +180 -0
- package/dist/combat/WeaponSelector.js.map +1 -0
- package/dist/combat/index.d.ts +9 -0
- package/dist/combat/index.d.ts.map +1 -0
- package/dist/combat/index.js +6 -0
- package/dist/combat/index.js.map +1 -0
- package/dist/conditions/ConditionBank.d.ts +179 -0
- package/dist/conditions/ConditionBank.d.ts.map +1 -0
- package/dist/conditions/ConditionBank.js +220 -0
- package/dist/conditions/ConditionBank.js.map +1 -0
- package/dist/conditions/index.d.ts +3 -0
- package/dist/conditions/index.d.ts.map +1 -0
- package/dist/conditions/index.js +3 -0
- package/dist/conditions/index.js.map +1 -0
- package/dist/config/createDefaultAIConfig.d.ts +25 -0
- package/dist/config/createDefaultAIConfig.d.ts.map +1 -0
- package/dist/config/createDefaultAIConfig.js +147 -0
- package/dist/config/createDefaultAIConfig.js.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/cover/CoverAccessAdapter.d.ts +61 -0
- package/dist/cover/CoverAccessAdapter.d.ts.map +1 -0
- package/dist/cover/CoverAccessAdapter.js +74 -0
- package/dist/cover/CoverAccessAdapter.js.map +1 -0
- package/dist/cover/CoverEvaluators.d.ts +43 -0
- package/dist/cover/CoverEvaluators.d.ts.map +1 -0
- package/dist/cover/CoverEvaluators.js +193 -0
- package/dist/cover/CoverEvaluators.js.map +1 -0
- package/dist/cover/CoverLockRegistry.d.ts +50 -0
- package/dist/cover/CoverLockRegistry.d.ts.map +1 -0
- package/dist/cover/CoverLockRegistry.js +164 -0
- package/dist/cover/CoverLockRegistry.js.map +1 -0
- package/dist/cover/CoverRecommender.d.ts +32 -0
- package/dist/cover/CoverRecommender.d.ts.map +1 -0
- package/dist/cover/CoverRecommender.js +45 -0
- package/dist/cover/CoverRecommender.js.map +1 -0
- package/dist/cover/CoverRegistry.d.ts +97 -0
- package/dist/cover/CoverRegistry.d.ts.map +1 -0
- package/dist/cover/CoverRegistry.js +223 -0
- package/dist/cover/CoverRegistry.js.map +1 -0
- package/dist/cover/ICoverEvaluator.d.ts +15 -0
- package/dist/cover/ICoverEvaluator.d.ts.map +1 -0
- package/dist/cover/ICoverEvaluator.js +4 -0
- package/dist/cover/ICoverEvaluator.js.map +1 -0
- package/dist/cover/ICoverLockConfig.d.ts +83 -0
- package/dist/cover/ICoverLockConfig.d.ts.map +1 -0
- package/dist/cover/ICoverLockConfig.js +21 -0
- package/dist/cover/ICoverLockConfig.js.map +1 -0
- package/dist/cover/LoopholeGenerator.d.ts +44 -0
- package/dist/cover/LoopholeGenerator.d.ts.map +1 -0
- package/dist/cover/LoopholeGenerator.js +96 -0
- package/dist/cover/LoopholeGenerator.js.map +1 -0
- package/dist/cover/index.d.ts +11 -0
- package/dist/cover/index.d.ts.map +1 -0
- package/dist/cover/index.js +8 -0
- package/dist/cover/index.js.map +1 -0
- package/dist/goap/EvadeHazardAction.d.ts +34 -0
- package/dist/goap/EvadeHazardAction.d.ts.map +1 -0
- package/dist/goap/EvadeHazardAction.js +48 -0
- package/dist/goap/EvadeHazardAction.js.map +1 -0
- package/dist/goap/GOAPController.d.ts +114 -0
- package/dist/goap/GOAPController.d.ts.map +1 -0
- package/dist/goap/GOAPController.js +191 -0
- package/dist/goap/GOAPController.js.map +1 -0
- package/dist/goap/GoalSelector.d.ts +40 -0
- package/dist/goap/GoalSelector.d.ts.map +1 -0
- package/dist/goap/GoalSelector.js +115 -0
- package/dist/goap/GoalSelector.js.map +1 -0
- package/dist/goap/IHazardZoneAccess.d.ts +16 -0
- package/dist/goap/IHazardZoneAccess.d.ts.map +1 -0
- package/dist/goap/IHazardZoneAccess.js +2 -0
- package/dist/goap/IHazardZoneAccess.js.map +1 -0
- package/dist/goap/WorldStateBuilder.d.ts +27 -0
- package/dist/goap/WorldStateBuilder.d.ts.map +1 -0
- package/dist/goap/WorldStateBuilder.js +51 -0
- package/dist/goap/WorldStateBuilder.js.map +1 -0
- package/dist/goap/index.d.ts +9 -0
- package/dist/goap/index.d.ts.map +1 -0
- package/dist/goap/index.js +6 -0
- package/dist/goap/index.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/navigation/PathSmoother.d.ts +29 -0
- package/dist/navigation/PathSmoother.d.ts.map +1 -0
- package/dist/navigation/PathSmoother.js +172 -0
- package/dist/navigation/PathSmoother.js.map +1 -0
- package/dist/navigation/RestrictedZoneManager.d.ts +83 -0
- package/dist/navigation/RestrictedZoneManager.d.ts.map +1 -0
- package/dist/navigation/RestrictedZoneManager.js +179 -0
- package/dist/navigation/RestrictedZoneManager.js.map +1 -0
- package/dist/navigation/SmoothPathFollower.d.ts +55 -0
- package/dist/navigation/SmoothPathFollower.d.ts.map +1 -0
- package/dist/navigation/SmoothPathFollower.js +132 -0
- package/dist/navigation/SmoothPathFollower.js.map +1 -0
- package/dist/navigation/SteeringBehaviors.d.ts +123 -0
- package/dist/navigation/SteeringBehaviors.d.ts.map +1 -0
- package/dist/navigation/SteeringBehaviors.js +211 -0
- package/dist/navigation/SteeringBehaviors.js.map +1 -0
- package/dist/navigation/index.d.ts +7 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/index.js +6 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/perception/NPCSensors.d.ts +129 -0
- package/dist/perception/NPCSensors.d.ts.map +1 -0
- package/dist/perception/NPCSensors.js +147 -0
- package/dist/perception/NPCSensors.js.map +1 -0
- package/dist/perception/PerceptionQuery.d.ts +65 -0
- package/dist/perception/PerceptionQuery.d.ts.map +1 -0
- package/dist/perception/PerceptionQuery.js +199 -0
- package/dist/perception/PerceptionQuery.js.map +1 -0
- package/dist/perception/index.d.ts +4 -0
- package/dist/perception/index.d.ts.map +1 -0
- package/dist/perception/index.js +4 -0
- package/dist/perception/index.js.map +1 -0
- package/dist/plugin/AIPlugin.d.ts +71 -0
- package/dist/plugin/AIPlugin.d.ts.map +1 -0
- package/dist/plugin/AIPlugin.js +134 -0
- package/dist/plugin/AIPlugin.js.map +1 -0
- package/dist/plugin/index.d.ts +3 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +3 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/ports/AIPorts.d.ts +13 -0
- package/dist/ports/AIPorts.d.ts.map +1 -0
- package/dist/ports/AIPorts.js +14 -0
- package/dist/ports/AIPorts.js.map +1 -0
- package/dist/ports/ICoverPointSource.d.ts +27 -0
- package/dist/ports/ICoverPointSource.d.ts.map +1 -0
- package/dist/ports/ICoverPointSource.js +4 -0
- package/dist/ports/ICoverPointSource.js.map +1 -0
- package/dist/ports/IPerceptionProvider.d.ts +42 -0
- package/dist/ports/IPerceptionProvider.d.ts.map +1 -0
- package/dist/ports/IPerceptionProvider.js +4 -0
- package/dist/ports/IPerceptionProvider.js.map +1 -0
- package/dist/ports/index.d.ts +4 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +3 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/sound/VocalizationTypes.d.ts +57 -0
- package/dist/sound/VocalizationTypes.d.ts.map +1 -0
- package/dist/sound/VocalizationTypes.js +87 -0
- package/dist/sound/VocalizationTypes.js.map +1 -0
- package/dist/sound/index.d.ts +3 -0
- package/dist/sound/index.d.ts.map +1 -0
- package/dist/sound/index.js +3 -0
- package/dist/sound/index.js.map +1 -0
- package/dist/squad/SquadSharedTarget.d.ts +137 -0
- package/dist/squad/SquadSharedTarget.d.ts.map +1 -0
- package/dist/squad/SquadSharedTarget.js +145 -0
- package/dist/squad/SquadSharedTarget.js.map +1 -0
- package/dist/squad/SquadTactics.d.ts +63 -0
- package/dist/squad/SquadTactics.d.ts.map +1 -0
- package/dist/squad/SquadTactics.js +76 -0
- package/dist/squad/SquadTactics.js.map +1 -0
- package/dist/squad/index.d.ts +5 -0
- package/dist/squad/index.d.ts.map +1 -0
- package/dist/squad/index.js +4 -0
- package/dist/squad/index.js.map +1 -0
- package/dist/states/INPCContext.d.ts +550 -0
- package/dist/states/INPCContext.d.ts.map +1 -0
- package/dist/states/INPCContext.js +17 -0
- package/dist/states/INPCContext.js.map +1 -0
- package/dist/states/INPCOnlineState.d.ts +202 -0
- package/dist/states/INPCOnlineState.d.ts.map +1 -0
- package/dist/states/INPCOnlineState.js +9 -0
- package/dist/states/INPCOnlineState.js.map +1 -0
- package/dist/states/IOnlineStateHandler.d.ts +58 -0
- package/dist/states/IOnlineStateHandler.d.ts.map +1 -0
- package/dist/states/IOnlineStateHandler.js +13 -0
- package/dist/states/IOnlineStateHandler.js.map +1 -0
- package/dist/states/IStateConfig.d.ts +272 -0
- package/dist/states/IStateConfig.d.ts.map +1 -0
- package/dist/states/IStateConfig.js +100 -0
- package/dist/states/IStateConfig.js.map +1 -0
- package/dist/states/IStateTransitionMap.d.ts +89 -0
- package/dist/states/IStateTransitionMap.d.ts.map +1 -0
- package/dist/states/IStateTransitionMap.js +75 -0
- package/dist/states/IStateTransitionMap.js.map +1 -0
- package/dist/states/NPCOnlineState.d.ts +19 -0
- package/dist/states/NPCOnlineState.d.ts.map +1 -0
- package/dist/states/NPCOnlineState.js +75 -0
- package/dist/states/NPCOnlineState.js.map +1 -0
- package/dist/states/NPCPerception.d.ts +108 -0
- package/dist/states/NPCPerception.d.ts.map +1 -0
- package/dist/states/NPCPerception.js +122 -0
- package/dist/states/NPCPerception.js.map +1 -0
- package/dist/states/OnlineAIDriver.d.ts +64 -0
- package/dist/states/OnlineAIDriver.d.ts.map +1 -0
- package/dist/states/OnlineAIDriver.js +171 -0
- package/dist/states/OnlineAIDriver.js.map +1 -0
- package/dist/states/OnlineStateRegistryBuilder.d.ts +115 -0
- package/dist/states/OnlineStateRegistryBuilder.d.ts.map +1 -0
- package/dist/states/OnlineStateRegistryBuilder.js +184 -0
- package/dist/states/OnlineStateRegistryBuilder.js.map +1 -0
- package/dist/states/StateHandlerMap.d.ts +52 -0
- package/dist/states/StateHandlerMap.d.ts.map +1 -0
- package/dist/states/StateHandlerMap.js +88 -0
- package/dist/states/StateHandlerMap.js.map +1 -0
- package/dist/states/eat-corpse/EatCorpseState.d.ts +32 -0
- package/dist/states/eat-corpse/EatCorpseState.d.ts.map +1 -0
- package/dist/states/eat-corpse/EatCorpseState.js +126 -0
- package/dist/states/eat-corpse/EatCorpseState.js.map +1 -0
- package/dist/states/eat-corpse/EatCorpseTransitionGuard.d.ts +34 -0
- package/dist/states/eat-corpse/EatCorpseTransitionGuard.d.ts.map +1 -0
- package/dist/states/eat-corpse/EatCorpseTransitionGuard.js +82 -0
- package/dist/states/eat-corpse/EatCorpseTransitionGuard.js.map +1 -0
- package/dist/states/eat-corpse/ICorpseSource.d.ts +87 -0
- package/dist/states/eat-corpse/ICorpseSource.d.ts.map +1 -0
- package/dist/states/eat-corpse/ICorpseSource.js +5 -0
- package/dist/states/eat-corpse/ICorpseSource.js.map +1 -0
- package/dist/states/eat-corpse/IEatCorpseConfig.d.ts +75 -0
- package/dist/states/eat-corpse/IEatCorpseConfig.d.ts.map +1 -0
- package/dist/states/eat-corpse/IEatCorpseConfig.js +23 -0
- package/dist/states/eat-corpse/IEatCorpseConfig.js.map +1 -0
- package/dist/states/eat-corpse/IEatCorpsePhase.d.ts +23 -0
- package/dist/states/eat-corpse/IEatCorpsePhase.d.ts.map +1 -0
- package/dist/states/eat-corpse/IEatCorpsePhase.js +5 -0
- package/dist/states/eat-corpse/IEatCorpsePhase.js.map +1 -0
- package/dist/states/eat-corpse/index.d.ts +7 -0
- package/dist/states/eat-corpse/index.d.ts.map +1 -0
- package/dist/states/eat-corpse/index.js +11 -0
- package/dist/states/eat-corpse/index.js.map +1 -0
- package/dist/states/handlers/AlertState.d.ts +18 -0
- package/dist/states/handlers/AlertState.d.ts.map +1 -0
- package/dist/states/handlers/AlertState.js +104 -0
- package/dist/states/handlers/AlertState.js.map +1 -0
- package/dist/states/handlers/CampState.d.ts +18 -0
- package/dist/states/handlers/CampState.d.ts.map +1 -0
- package/dist/states/handlers/CampState.js +94 -0
- package/dist/states/handlers/CampState.js.map +1 -0
- package/dist/states/handlers/ChargeState.d.ts +18 -0
- package/dist/states/handlers/ChargeState.d.ts.map +1 -0
- package/dist/states/handlers/ChargeState.js +103 -0
- package/dist/states/handlers/ChargeState.js.map +1 -0
- package/dist/states/handlers/CombatState.d.ts +19 -0
- package/dist/states/handlers/CombatState.d.ts.map +1 -0
- package/dist/states/handlers/CombatState.js +137 -0
- package/dist/states/handlers/CombatState.js.map +1 -0
- package/dist/states/handlers/CombatTransitionHandler.d.ts +34 -0
- package/dist/states/handlers/CombatTransitionHandler.d.ts.map +1 -0
- package/dist/states/handlers/CombatTransitionHandler.js +137 -0
- package/dist/states/handlers/CombatTransitionHandler.js.map +1 -0
- package/dist/states/handlers/DeadState.d.ts +16 -0
- package/dist/states/handlers/DeadState.d.ts.map +1 -0
- package/dist/states/handlers/DeadState.js +35 -0
- package/dist/states/handlers/DeadState.js.map +1 -0
- package/dist/states/handlers/EvadeGrenadeState.d.ts +23 -0
- package/dist/states/handlers/EvadeGrenadeState.d.ts.map +1 -0
- package/dist/states/handlers/EvadeGrenadeState.js +93 -0
- package/dist/states/handlers/EvadeGrenadeState.js.map +1 -0
- package/dist/states/handlers/FleeState.d.ts +18 -0
- package/dist/states/handlers/FleeState.d.ts.map +1 -0
- package/dist/states/handlers/FleeState.js +61 -0
- package/dist/states/handlers/FleeState.js.map +1 -0
- package/dist/states/handlers/GrenadeState.d.ts +18 -0
- package/dist/states/handlers/GrenadeState.d.ts.map +1 -0
- package/dist/states/handlers/GrenadeState.js +61 -0
- package/dist/states/handlers/GrenadeState.js.map +1 -0
- package/dist/states/handlers/HelpWoundedState.d.ts +27 -0
- package/dist/states/handlers/HelpWoundedState.d.ts.map +1 -0
- package/dist/states/handlers/HelpWoundedState.js +131 -0
- package/dist/states/handlers/HelpWoundedState.js.map +1 -0
- package/dist/states/handlers/IdleState.d.ts +18 -0
- package/dist/states/handlers/IdleState.d.ts.map +1 -0
- package/dist/states/handlers/IdleState.js +127 -0
- package/dist/states/handlers/IdleState.js.map +1 -0
- package/dist/states/handlers/InvestigateState.d.ts +27 -0
- package/dist/states/handlers/InvestigateState.d.ts.map +1 -0
- package/dist/states/handlers/InvestigateState.js +145 -0
- package/dist/states/handlers/InvestigateState.js.map +1 -0
- package/dist/states/handlers/KillWoundedState.d.ts +27 -0
- package/dist/states/handlers/KillWoundedState.d.ts.map +1 -0
- package/dist/states/handlers/KillWoundedState.js +147 -0
- package/dist/states/handlers/KillWoundedState.js.map +1 -0
- package/dist/states/handlers/LeapState.d.ts +18 -0
- package/dist/states/handlers/LeapState.d.ts.map +1 -0
- package/dist/states/handlers/LeapState.js +115 -0
- package/dist/states/handlers/LeapState.js.map +1 -0
- package/dist/states/handlers/MonsterCombatController.d.ts +55 -0
- package/dist/states/handlers/MonsterCombatController.d.ts.map +1 -0
- package/dist/states/handlers/MonsterCombatController.js +152 -0
- package/dist/states/handlers/MonsterCombatController.js.map +1 -0
- package/dist/states/handlers/PatrolState.d.ts +18 -0
- package/dist/states/handlers/PatrolState.d.ts.map +1 -0
- package/dist/states/handlers/PatrolState.js +137 -0
- package/dist/states/handlers/PatrolState.js.map +1 -0
- package/dist/states/handlers/PsiAttackState.d.ts +18 -0
- package/dist/states/handlers/PsiAttackState.d.ts.map +1 -0
- package/dist/states/handlers/PsiAttackState.js +101 -0
- package/dist/states/handlers/PsiAttackState.js.map +1 -0
- package/dist/states/handlers/RetreatState.d.ts +18 -0
- package/dist/states/handlers/RetreatState.d.ts.map +1 -0
- package/dist/states/handlers/RetreatState.js +131 -0
- package/dist/states/handlers/RetreatState.js.map +1 -0
- package/dist/states/handlers/SearchState.d.ts +18 -0
- package/dist/states/handlers/SearchState.d.ts.map +1 -0
- package/dist/states/handlers/SearchState.js +64 -0
- package/dist/states/handlers/SearchState.js.map +1 -0
- package/dist/states/handlers/SleepState.d.ts +18 -0
- package/dist/states/handlers/SleepState.d.ts.map +1 -0
- package/dist/states/handlers/SleepState.js +94 -0
- package/dist/states/handlers/SleepState.js.map +1 -0
- package/dist/states/handlers/StalkState.d.ts +18 -0
- package/dist/states/handlers/StalkState.d.ts.map +1 -0
- package/dist/states/handlers/StalkState.js +82 -0
- package/dist/states/handlers/StalkState.js.map +1 -0
- package/dist/states/handlers/TakeCoverState.d.ts +18 -0
- package/dist/states/handlers/TakeCoverState.d.ts.map +1 -0
- package/dist/states/handlers/TakeCoverState.js +208 -0
- package/dist/states/handlers/TakeCoverState.js.map +1 -0
- package/dist/states/handlers/WoundedState.d.ts +18 -0
- package/dist/states/handlers/WoundedState.d.ts.map +1 -0
- package/dist/states/handlers/WoundedState.js +71 -0
- package/dist/states/handlers/WoundedState.js.map +1 -0
- package/dist/states/handlers/_utils.d.ts +55 -0
- package/dist/states/handlers/_utils.d.ts.map +1 -0
- package/dist/states/handlers/_utils.js +88 -0
- package/dist/states/handlers/_utils.js.map +1 -0
- package/dist/states/handlers/index.d.ts +25 -0
- package/dist/states/handlers/index.d.ts.map +1 -0
- package/dist/states/handlers/index.js +28 -0
- package/dist/states/handlers/index.js.map +1 -0
- package/dist/states/index.d.ts +17 -0
- package/dist/states/index.d.ts.map +1 -0
- package/dist/states/index.js +12 -0
- package/dist/states/index.js.map +1 -0
- package/dist/states/pack/IPackAccess.d.ts +46 -0
- package/dist/states/pack/IPackAccess.d.ts.map +1 -0
- package/dist/states/pack/IPackAccess.js +8 -0
- package/dist/states/pack/IPackAccess.js.map +1 -0
- package/dist/suspicion/SuspicionAccumulator.d.ts +166 -0
- package/dist/suspicion/SuspicionAccumulator.d.ts.map +1 -0
- package/dist/suspicion/SuspicionAccumulator.js +191 -0
- package/dist/suspicion/SuspicionAccumulator.js.map +1 -0
- package/dist/suspicion/index.d.ts +3 -0
- package/dist/suspicion/index.d.ts.map +1 -0
- package/dist/suspicion/index.js +2 -0
- package/dist/suspicion/index.js.map +1 -0
- package/dist/types/IAnimationTypes.d.ts +28 -0
- package/dist/types/IAnimationTypes.d.ts.map +1 -0
- package/dist/types/IAnimationTypes.js +17 -0
- package/dist/types/IAnimationTypes.js.map +1 -0
- package/dist/types/ICoverPoint.d.ts +76 -0
- package/dist/types/ICoverPoint.d.ts.map +1 -0
- package/dist/types/ICoverPoint.js +21 -0
- package/dist/types/ICoverPoint.js.map +1 -0
- package/dist/types/IOnlineAIConfig.d.ts +150 -0
- package/dist/types/IOnlineAIConfig.d.ts.map +1 -0
- package/dist/types/IOnlineAIConfig.js +5 -0
- package/dist/types/IOnlineAIConfig.js.map +1 -0
- package/dist/types/IPerceptionTypes.d.ts +94 -0
- package/dist/types/IPerceptionTypes.d.ts.map +1 -0
- package/dist/types/IPerceptionTypes.js +37 -0
- package/dist/types/IPerceptionTypes.js.map +1 -0
- package/dist/types/IWeaponTypes.d.ts +56 -0
- package/dist/types/IWeaponTypes.d.ts.map +1 -0
- package/dist/types/IWeaponTypes.js +15 -0
- package/dist/types/IWeaponTypes.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +123 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import type { IEatCorpsePhase } from './eat-corpse/IEatCorpsePhase';
|
|
2
|
+
/**
|
|
3
|
+
* TakeCoverState loophole peek-fire-return-wait cycle phase data.
|
|
4
|
+
* Mirrors the game-layer LoopholeData class as a plain data interface.
|
|
5
|
+
*/
|
|
6
|
+
export interface ILoopholeState {
|
|
7
|
+
/** Current phase within the peek-fire cycle. */
|
|
8
|
+
phase: 'WAIT' | 'PEEK' | 'FIRE' | 'RETURN';
|
|
9
|
+
/** scene.time.now (or equivalent) at the start of the current phase (ms). */
|
|
10
|
+
phaseStartMs: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Boar charge attack phase data.
|
|
14
|
+
* Mirrors ChargeData from the game layer.
|
|
15
|
+
*/
|
|
16
|
+
export interface IChargePhase {
|
|
17
|
+
/** Whether the charge sequence has been activated this combat cycle. */
|
|
18
|
+
active: boolean;
|
|
19
|
+
/** scene.time.now at the start of the charge wind-up (ms). */
|
|
20
|
+
windupStartMs: number;
|
|
21
|
+
/** Whether the NPC is currently in the full-speed charge phase. */
|
|
22
|
+
charging: boolean;
|
|
23
|
+
/** World X of the charge target when the charge was initiated. */
|
|
24
|
+
targetX: number;
|
|
25
|
+
/** World Y of the charge target when the charge was initiated. */
|
|
26
|
+
targetY: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Bloodsucker stalk approach phase data.
|
|
30
|
+
* Mirrors StalkData from the game layer.
|
|
31
|
+
*/
|
|
32
|
+
export interface IStalkPhase {
|
|
33
|
+
/** Whether the stalk sequence has been activated this combat cycle. */
|
|
34
|
+
active: boolean;
|
|
35
|
+
/** Whether the bloodsucker is currently closing distance for the melee strike. */
|
|
36
|
+
approaching: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Snork leap attack phase data.
|
|
40
|
+
* Mirrors LeapData from the game layer.
|
|
41
|
+
*/
|
|
42
|
+
export interface ILeapPhase {
|
|
43
|
+
/** Whether the leap sequence has been activated this combat cycle. */
|
|
44
|
+
active: boolean;
|
|
45
|
+
/** scene.time.now at the start of the leap wind-up (ms). */
|
|
46
|
+
windupStartMs: number;
|
|
47
|
+
/** Whether the snork is currently in the airborne phase. */
|
|
48
|
+
airborne: boolean;
|
|
49
|
+
/** World X when the leap was initiated (interpolation start). */
|
|
50
|
+
startX: number;
|
|
51
|
+
/** World Y when the leap was initiated (interpolation start). */
|
|
52
|
+
startY: number;
|
|
53
|
+
/** World X of the leap landing target. */
|
|
54
|
+
targetX: number;
|
|
55
|
+
/** World Y of the leap landing target. */
|
|
56
|
+
targetY: number;
|
|
57
|
+
/** scene.time.now when the airborne phase began (ms). */
|
|
58
|
+
airStartMs: number;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Controller PSI attack phase data.
|
|
62
|
+
* Mirrors PsiData from the game layer.
|
|
63
|
+
*/
|
|
64
|
+
export interface IPsiPhase {
|
|
65
|
+
/** Whether the PSI channel is active. */
|
|
66
|
+
active: boolean;
|
|
67
|
+
/** scene.time.now when channelling began (ms). */
|
|
68
|
+
channelStartMs: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Mutable per-NPC AI data bag.
|
|
72
|
+
*
|
|
73
|
+
* Stored on each NPC instance (e.g. inside PhaserNPCContext or a plain object
|
|
74
|
+
* in tests). All online state handlers are stateless — they read and write
|
|
75
|
+
* this bag each frame via {@link INPCContext.state}.
|
|
76
|
+
*
|
|
77
|
+
* Fields match those in the game-layer AIComponent but use ms-based timers
|
|
78
|
+
* (not scene.time.now subtraction) where possible for portability.
|
|
79
|
+
*/
|
|
80
|
+
export interface INPCOnlineState {
|
|
81
|
+
/** Stable entity ID of the current combat target, or null when no target. */
|
|
82
|
+
targetId: string | null;
|
|
83
|
+
/** World X of the last confirmed enemy position (px). */
|
|
84
|
+
lastKnownEnemyX: number;
|
|
85
|
+
/** World Y of the last confirmed enemy position (px). */
|
|
86
|
+
lastKnownEnemyY: number;
|
|
87
|
+
/**
|
|
88
|
+
* Timestamp (ms) until which the target lock is held.
|
|
89
|
+
* Prevents rapid target switching — compare with ctx.now().
|
|
90
|
+
*/
|
|
91
|
+
targetLockUntilMs: number;
|
|
92
|
+
/** ctx.now() when ALERT state was entered. */
|
|
93
|
+
alertStartMs: number;
|
|
94
|
+
/** ctx.now() when SEARCH state was entered. */
|
|
95
|
+
searchStartMs: number;
|
|
96
|
+
/** ctx.now() of the last idle animation change (for random anim cycling). */
|
|
97
|
+
lastIdleAnimChangeMs: number;
|
|
98
|
+
/** ctx.now() of the last melee attack performed. */
|
|
99
|
+
lastMeleeMs: number;
|
|
100
|
+
/** ctx.now() of the last ranged shot fired. */
|
|
101
|
+
lastShootMs: number;
|
|
102
|
+
/** ctx.now() of the last vocalization emitted. */
|
|
103
|
+
lastVocalizationMs: number;
|
|
104
|
+
/** ctx.now() of the last grenade throw. */
|
|
105
|
+
lastGrenadeMs: number;
|
|
106
|
+
/** ctx.now() of the last suppressive fire shot during RETREAT. */
|
|
107
|
+
lastSupressiveFireMs: number;
|
|
108
|
+
/** ctx.now() when the current grenade throw wind-up began. */
|
|
109
|
+
grenadeThrowStartMs: number;
|
|
110
|
+
/** ctx.now() when EVADE_GRENADE state was entered. */
|
|
111
|
+
evadeStartMs: number;
|
|
112
|
+
/** ctx.now() when WOUNDED state was entered. */
|
|
113
|
+
woundedStartMs: number;
|
|
114
|
+
/** ctx.now() when the current PSI channel began (legacy — use psiPhase). */
|
|
115
|
+
psiPhaseStartMs: number;
|
|
116
|
+
/** ctx.now() when INVESTIGATE state was entered. */
|
|
117
|
+
investigateStartMs: number;
|
|
118
|
+
/** ctx.now() when the NPC arrived at the investigate target and began looking around. -1 = not yet arrived. */
|
|
119
|
+
investigateLookAroundStartMs: number;
|
|
120
|
+
/** ID of the wounded ally being helped. Null when not in HELP_WOUNDED. */
|
|
121
|
+
helpWoundedTargetId: string | null;
|
|
122
|
+
/** ctx.now() when HELP_WOUNDED state was entered (overall approach timeout). */
|
|
123
|
+
helpWoundedStartMs: number;
|
|
124
|
+
/** ctx.now() when the NPC arrived next to the wounded ally and began assisting. -1 = not yet arrived. */
|
|
125
|
+
helpWoundedAssistStartMs: number;
|
|
126
|
+
/** World X of the wounded ally target (populated by calling state before enter()). */
|
|
127
|
+
helpWoundedX: number;
|
|
128
|
+
/** World Y of the wounded ally target (populated by calling state before enter()). */
|
|
129
|
+
helpWoundedY: number;
|
|
130
|
+
/** ID of the wounded enemy being hunted. Null when not in KILL_WOUNDED. */
|
|
131
|
+
killWoundedTargetId: string | null;
|
|
132
|
+
/** ctx.now() when KILL_WOUNDED state was entered (overall approach timeout). */
|
|
133
|
+
killWoundedStartMs: number;
|
|
134
|
+
/** ctx.now() when the AIM phase began. -1 = not yet in aim phase. */
|
|
135
|
+
killWoundedAimStartMs: number;
|
|
136
|
+
/** ctx.now() when the TAUNT phase began. -1 = not yet in taunt phase. */
|
|
137
|
+
killWoundedTauntStartMs: number;
|
|
138
|
+
/** ctx.now() when the EXECUTE phase began (first shot in burst). -1 = not yet. */
|
|
139
|
+
killWoundedExecuteStartMs: number;
|
|
140
|
+
/** Number of shots fired so far in the current EXECUTE burst. */
|
|
141
|
+
killWoundedShotsFired: number;
|
|
142
|
+
/** ctx.now() when the PAUSE phase began (post-kill stand). -1 = not yet. */
|
|
143
|
+
killWoundedPauseStartMs: number;
|
|
144
|
+
/** World X of the wounded enemy target (updated each frame from perception). */
|
|
145
|
+
killWoundedTargetX: number;
|
|
146
|
+
/** World Y of the wounded enemy target (updated each frame from perception). */
|
|
147
|
+
killWoundedTargetY: number;
|
|
148
|
+
/** Timestamp of last outgoing pack broadcast (ms). Used to throttle MonsterCombatController broadcasts. */
|
|
149
|
+
packLastBroadcastMs: number;
|
|
150
|
+
/** Current patrol waypoint index (wraps by handler). */
|
|
151
|
+
patrolWaypointIndex: number;
|
|
152
|
+
/** Current search waypoint index. */
|
|
153
|
+
searchWaypointIndex: number;
|
|
154
|
+
/** ID of the primary weapon (e.g. 'rifle'), or null if unarmed. */
|
|
155
|
+
primaryWeapon: string | null;
|
|
156
|
+
/** ID of the secondary weapon (e.g. 'pistol'), or null if not carrying one. */
|
|
157
|
+
secondaryWeapon: string | null;
|
|
158
|
+
/** Remaining grenade count. */
|
|
159
|
+
grenadeCount: number;
|
|
160
|
+
/** Remaining medkit count. */
|
|
161
|
+
medkitCount: number;
|
|
162
|
+
/** True while the NPC is in ALERT (aware of potential threat). */
|
|
163
|
+
isAlert: boolean;
|
|
164
|
+
/** True while the NPC is occupying a cover position. */
|
|
165
|
+
hasTakenCover: boolean;
|
|
166
|
+
/** World X of the current cover point (valid when hasTakenCover is true). */
|
|
167
|
+
coverPointX: number;
|
|
168
|
+
/** World Y of the current cover point (valid when hasTakenCover is true). */
|
|
169
|
+
coverPointY: number;
|
|
170
|
+
/**
|
|
171
|
+
* TakeCoverState loophole peek-fire-return-wait cycle data.
|
|
172
|
+
* Null when not in TAKE_COVER state.
|
|
173
|
+
*/
|
|
174
|
+
loophole: ILoopholeState | null;
|
|
175
|
+
/** Boar charge attack data. */
|
|
176
|
+
chargePhase?: IChargePhase;
|
|
177
|
+
/** Bloodsucker stalk approach data. */
|
|
178
|
+
stalkPhase?: IStalkPhase;
|
|
179
|
+
/** Snork leap attack data. */
|
|
180
|
+
leapPhase?: ILeapPhase;
|
|
181
|
+
/** Controller PSI attack data. */
|
|
182
|
+
psiPhase?: IPsiPhase;
|
|
183
|
+
/**
|
|
184
|
+
* EAT_CORPSE state phase data.
|
|
185
|
+
* Opt-in — only populated by the `eat-corpse` module.
|
|
186
|
+
* Undefined for NPCs that never enter EAT_CORPSE.
|
|
187
|
+
*/
|
|
188
|
+
eatCorpsePhase?: IEatCorpsePhase;
|
|
189
|
+
/**
|
|
190
|
+
* Morale value in the range [-1, 1].
|
|
191
|
+
* 0 = neutral, +1 = fully confident, -1 = fully panicked.
|
|
192
|
+
*/
|
|
193
|
+
morale: number;
|
|
194
|
+
/**
|
|
195
|
+
* Discrete morale state derived from `morale`.
|
|
196
|
+
* - STABLE : morale > retreatMoraleThreshold
|
|
197
|
+
* - SHAKEN : retreatMoraleThreshold >= morale > panicMoraleThreshold
|
|
198
|
+
* - PANICKED : morale <= panicMoraleThreshold
|
|
199
|
+
*/
|
|
200
|
+
moraleState: 'STABLE' | 'SHAKEN' | 'PANICKED';
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=INPCOnlineState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"INPCOnlineState.d.ts","sourceRoot":"","sources":["../../src/states/INPCOnlineState.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// states/INPCOnlineState.ts
|
|
2
|
+
// Mutable per-NPC AI data bag.
|
|
3
|
+
//
|
|
4
|
+
// All online state handlers are stateless singletons — per-NPC runtime state
|
|
5
|
+
// lives here rather than in the handlers themselves. This mirrors the
|
|
6
|
+
// AIComponent design in the game layer but strips all Phaser references,
|
|
7
|
+
// making it usable in framework-agnostic environments (tests, server-side, etc.)
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=INPCOnlineState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"INPCOnlineState.js","sourceRoot":"","sources":["../../src/states/INPCOnlineState.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,+BAA+B;AAC/B,EAAE;AACF,6EAA6E;AAC7E,sEAAsE;AACtE,yEAAyE;AACzE,iFAAiF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { INPCContext } from './INPCContext';
|
|
2
|
+
/**
|
|
3
|
+
* Contract for all online NPC AI state handlers.
|
|
4
|
+
*
|
|
5
|
+
* Handlers are stateless — all mutable per-NPC data must be read from and
|
|
6
|
+
* written to {@link INPCContext.state}. This ensures a single handler
|
|
7
|
+
* instance can safely drive any number of simultaneous NPC entities.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* export class IdleStateHandler implements IOnlineStateHandler {
|
|
12
|
+
* enter(ctx: INPCContext): void {
|
|
13
|
+
* ctx.halt();
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* update(ctx: INPCContext, deltaMs: number): void {
|
|
17
|
+
* if (ctx.perception?.hasVisibleEnemy()) {
|
|
18
|
+
* ctx.transition('COMBAT');
|
|
19
|
+
* }
|
|
20
|
+
* }
|
|
21
|
+
*
|
|
22
|
+
* exit(_ctx: INPCContext): void {
|
|
23
|
+
* // nothing
|
|
24
|
+
* }
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export interface IOnlineStateHandler {
|
|
29
|
+
/**
|
|
30
|
+
* Called once when the FSM transitions into this state.
|
|
31
|
+
*
|
|
32
|
+
* Use to reset per-NPC timers, set initial velocities, emit entry
|
|
33
|
+
* vocalizations, etc.
|
|
34
|
+
*
|
|
35
|
+
* @param ctx - The NPC context for the entering entity.
|
|
36
|
+
*/
|
|
37
|
+
enter(ctx: INPCContext): void;
|
|
38
|
+
/**
|
|
39
|
+
* Called every frame while this state is active.
|
|
40
|
+
*
|
|
41
|
+
* Contains the main per-frame logic: perception checks, movement commands,
|
|
42
|
+
* combat calculations, and transition triggers.
|
|
43
|
+
*
|
|
44
|
+
* @param ctx - The NPC context for the updating entity.
|
|
45
|
+
* @param deltaMs - Elapsed time since the last frame (milliseconds).
|
|
46
|
+
*/
|
|
47
|
+
update(ctx: INPCContext, deltaMs: number): void;
|
|
48
|
+
/**
|
|
49
|
+
* Called once when the FSM transitions out of this state.
|
|
50
|
+
*
|
|
51
|
+
* Use to clean up any per-NPC flags or release resources (e.g. halt movement,
|
|
52
|
+
* clear loophole state, reset animation overrides).
|
|
53
|
+
*
|
|
54
|
+
* @param ctx - The NPC context for the exiting entity.
|
|
55
|
+
*/
|
|
56
|
+
exit(ctx: INPCContext): void;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=IOnlineStateHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IOnlineStateHandler.d.ts","sourceRoot":"","sources":["../../src/states/IOnlineStateHandler.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;;OAOG;IACH,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC;IAE9B;;;;;;;;OAQG;IACH,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhD;;;;;;;OAOG;IACH,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC;CAC9B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// states/IOnlineStateHandler.ts
|
|
2
|
+
// Contract for all online NPC state handlers.
|
|
3
|
+
//
|
|
4
|
+
// All state handlers must be stateless singletons — per-NPC runtime state
|
|
5
|
+
// lives in INPCContext.state (INPCOnlineState), NOT in the handler itself.
|
|
6
|
+
// This allows a single handler instance to be shared across all NPC instances.
|
|
7
|
+
//
|
|
8
|
+
// Lifecycle per active state:
|
|
9
|
+
// 1. enter(ctx) — called once when the FSM transitions into this state.
|
|
10
|
+
// 2. update(ctx, deltaMs) — called every frame while this state is active.
|
|
11
|
+
// 3. exit(ctx) — called once when the FSM transitions out of this state.
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=IOnlineStateHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IOnlineStateHandler.js","sourceRoot":"","sources":["../../src/states/IOnlineStateHandler.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,8CAA8C;AAC9C,EAAE;AACF,0EAA0E;AAC1E,2EAA2E;AAC3E,+EAA+E;AAC/E,EAAE;AACF,8BAA8B;AAC9B,mFAAmF;AACnF,6EAA6E;AAC7E,qFAAqF"}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import type { ISteeringConfig } from '../navigation/SteeringBehaviors';
|
|
2
|
+
import type { ConditionChannel } from '../conditions/ConditionBank';
|
|
3
|
+
/**
|
|
4
|
+
* Movement speeds and distance thresholds used by locomotion logic.
|
|
5
|
+
*
|
|
6
|
+
* Any game that runs only melee/monster AI can satisfy this sub-interface
|
|
7
|
+
* without needing the full {@link IStateConfig}.
|
|
8
|
+
*/
|
|
9
|
+
export interface IMovementConfig {
|
|
10
|
+
/** Base approach speed when closing distance to an enemy. */
|
|
11
|
+
approachSpeed: number;
|
|
12
|
+
/** Speed multiplier applied when fleeing (FLEE state). */
|
|
13
|
+
fleeSpeedMultiplier: number;
|
|
14
|
+
/** Additional speed multiplier applied when morale is PANICKED. */
|
|
15
|
+
panicFleeMultiplier: number;
|
|
16
|
+
/** Speed multiplier for a wounded NPC crawling away. */
|
|
17
|
+
woundedCrawlMultiplier: number;
|
|
18
|
+
/** Speed multiplier for grenade evasion sprint. */
|
|
19
|
+
evadeSpeedMultiplier: number;
|
|
20
|
+
/** Speed multiplier for a boar charge attack. */
|
|
21
|
+
chargeSpeedMultiplier: number;
|
|
22
|
+
/** Speed multiplier for bloodsucker stalk approach. */
|
|
23
|
+
stalkSpeedMultiplier: number;
|
|
24
|
+
/** Arrival threshold for generic waypoint navigation (px). */
|
|
25
|
+
arriveThreshold: number;
|
|
26
|
+
/** Arrival threshold for patrol waypoint advance (px). */
|
|
27
|
+
waypointArriveThreshold: number;
|
|
28
|
+
/** Maximum distance to engage an enemy before stopping and firing (px). */
|
|
29
|
+
combatRange: number;
|
|
30
|
+
/** Distance an NPC tries to put between itself and a threat when fleeing (px). */
|
|
31
|
+
fleeDistance: number;
|
|
32
|
+
/** Safe distance after grenade evasion sprint before resuming previous state (px). */
|
|
33
|
+
evadeSafeDistance: number;
|
|
34
|
+
/** Range at which a wounded NPC may try a last-stand shot (px). */
|
|
35
|
+
woundedLastStandRange: number;
|
|
36
|
+
/** Melee attack range (px) for monster close-combat states. */
|
|
37
|
+
meleeRange: number;
|
|
38
|
+
/** Distance at which a bloodsucker uncloaks for the melee strike (px). */
|
|
39
|
+
stalkUnclockDistance: number;
|
|
40
|
+
/** Interval (ms) between restricted-zone position checks. */
|
|
41
|
+
restrictedZoneCheckIntervalMs: number;
|
|
42
|
+
/**
|
|
43
|
+
* Optional flocking / pack-movement configuration.
|
|
44
|
+
* State handlers that support group steering call
|
|
45
|
+
* `createDefaultSteeringConfig(cfg.steering)` once in their constructor.
|
|
46
|
+
* Omit to use the built-in defaults.
|
|
47
|
+
*/
|
|
48
|
+
readonly steering?: Partial<ISteeringConfig>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Weapons, firing rates, damage, and morale thresholds for human combat.
|
|
52
|
+
*
|
|
53
|
+
* Fields that control how ranged combat, grenades, covers, and HP/morale
|
|
54
|
+
* transitions work for human NPCs.
|
|
55
|
+
*/
|
|
56
|
+
export interface ICombatConfig {
|
|
57
|
+
/** HP ratio below which the NPC enters the WOUNDED state. */
|
|
58
|
+
woundedHpThreshold: number;
|
|
59
|
+
/** Morale value at which the NPC transitions from COMBAT to RETREAT. */
|
|
60
|
+
retreatMoraleThreshold: number;
|
|
61
|
+
/** Morale value at which the NPC transitions to FLEE (panic flight). */
|
|
62
|
+
panicMoraleThreshold: number;
|
|
63
|
+
/** Minimum interval (ms) between successive NPC gunshots. */
|
|
64
|
+
fireRateMs: number;
|
|
65
|
+
/** Wind-up duration (ms) before a grenade is thrown. */
|
|
66
|
+
grenadeWindupMs: number;
|
|
67
|
+
/** Base bullet damage when no weapon loadout is assigned. */
|
|
68
|
+
bulletDamage: number;
|
|
69
|
+
/** Fraction of max HP restored by a single medkit use. */
|
|
70
|
+
medkitHealRatio: number;
|
|
71
|
+
/** Duration (ms) of the medkit use animation before the heal is applied. */
|
|
72
|
+
medkitUseDurationMs: number;
|
|
73
|
+
/**
|
|
74
|
+
* HP ratio below which a visible enemy is considered "wounded" and may trigger
|
|
75
|
+
* the KILL_WOUNDED behavior in CombatState / AlertState.
|
|
76
|
+
* Opt-in — only used when `getWoundedEnemies()` is implemented by the host.
|
|
77
|
+
* @default 0.25
|
|
78
|
+
*/
|
|
79
|
+
killWoundedEnemyHpThreshold: number;
|
|
80
|
+
/**
|
|
81
|
+
* Approach range (px) at which KillWoundedState stops moving and enters the
|
|
82
|
+
* AIM phase. Shorter than combatRange — execution happens at close quarters.
|
|
83
|
+
* @default 80
|
|
84
|
+
*/
|
|
85
|
+
killWoundedExecuteRange: number;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Monster-specific melee, ability, and lair parameters.
|
|
89
|
+
*
|
|
90
|
+
* A zombie or creature game only needs this sub-interface — no ranged-weapon
|
|
91
|
+
* fields or grenade logic required.
|
|
92
|
+
*/
|
|
93
|
+
export interface IMonsterConfig {
|
|
94
|
+
/** Base melee damage for monster close-combat strikes. */
|
|
95
|
+
meleeDamage: number;
|
|
96
|
+
/** Damage multiplier for a boar charge impact hit. */
|
|
97
|
+
chargeDamageMultiplier: number;
|
|
98
|
+
/** Cooldown (ms) between successive melee strikes. */
|
|
99
|
+
meleeCooldownMs: number;
|
|
100
|
+
/** Wind-up phase duration (ms) before boar starts charging. */
|
|
101
|
+
chargeWindupMs: number;
|
|
102
|
+
/** Wind-up phase duration (ms) before a snork leaps. */
|
|
103
|
+
leapWindupMs: number;
|
|
104
|
+
/** Airborne phase duration (ms) for the snork leap. */
|
|
105
|
+
leapAirtimeMs: number;
|
|
106
|
+
/** Channel phase duration (ms) for the controller PSI attack. */
|
|
107
|
+
psiChannelMs: number;
|
|
108
|
+
/** Inner lair radius — monster will not leave without a target (px). */
|
|
109
|
+
innerLairRadius: number;
|
|
110
|
+
/** Patrol radius — normal movement band around the anchor (px). */
|
|
111
|
+
patrolRadius: number;
|
|
112
|
+
/** Outer lair radius — hard chase break distance (px). */
|
|
113
|
+
outerRadius: number;
|
|
114
|
+
/** Alpha while fully invisible during stalk approach. */
|
|
115
|
+
stalkAlphaInvisible: number;
|
|
116
|
+
/** Alpha shimmer while moving during stalk approach. */
|
|
117
|
+
stalkAlphaShimmer: number;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Timeouts, durations, and periodic intervals that drive state timing.
|
|
121
|
+
*
|
|
122
|
+
* Centralises all "how long does this state last?" constants so SDK users
|
|
123
|
+
* can tune AI responsiveness without touching individual state handlers.
|
|
124
|
+
*/
|
|
125
|
+
export interface ITimingConfig {
|
|
126
|
+
/** How long (ms) the NPC stays in ALERT before reverting to PATROL/IDLE. */
|
|
127
|
+
alertDuration: number;
|
|
128
|
+
/** How long (ms) the NPC searches before giving up and returning to IDLE. */
|
|
129
|
+
searchDuration: number;
|
|
130
|
+
/** Maximum time (ms) spent in WOUNDED state before transitioning to FLEE. */
|
|
131
|
+
woundedMaxDurationMs: number;
|
|
132
|
+
/** Maximum time (ms) spent in RETREAT state before transitioning to FLEE. */
|
|
133
|
+
retreatMaxDurationMs: number;
|
|
134
|
+
/** Interval (ms) between suppressive shots fired during RETREAT. */
|
|
135
|
+
retreatFireIntervalMs: number;
|
|
136
|
+
/** Duration (ms) of the target-inertia lock (prevents rapid target switching). */
|
|
137
|
+
inertiaLockMs: number;
|
|
138
|
+
/** Delay (ms) before a camp/sleep NPC reacts to a detected threat. */
|
|
139
|
+
schemeReactionDelayMs: number;
|
|
140
|
+
/** Delay (ms) before a sleeping NPC reacts (longer than normal camp delay). */
|
|
141
|
+
campSleepReactionDelayMs: number;
|
|
142
|
+
/**
|
|
143
|
+
* Condition channel monitored in IdleState for fatigue/sickness transitions.
|
|
144
|
+
* Opt-in — only checked when `ctx.conditions` is non-null.
|
|
145
|
+
* @default 'stamina'
|
|
146
|
+
*/
|
|
147
|
+
idleConditionChannel: ConditionChannel;
|
|
148
|
+
/**
|
|
149
|
+
* Condition intensity above which IdleState transitions to rest/camp.
|
|
150
|
+
* Uses strict `>` comparison against the channel level.
|
|
151
|
+
* @default 0.8
|
|
152
|
+
*/
|
|
153
|
+
idleConditionThreshold: number;
|
|
154
|
+
/**
|
|
155
|
+
* Suspicion level above which IDLE/PATROL transitions to the alert state.
|
|
156
|
+
* Opt-in — only checked when `ctx.suspicion` is non-null.
|
|
157
|
+
* Uses strict `>` comparison via {@link ISuspicionAccess.hasReachedAlert}.
|
|
158
|
+
* @default 0.7
|
|
159
|
+
*/
|
|
160
|
+
suspicionAlertThreshold: number;
|
|
161
|
+
/**
|
|
162
|
+
* Maximum time (ms) spent in the APPROACH phase before giving up and
|
|
163
|
+
* transitioning via `investigateOnTimeout`. Prevents NPCs from getting
|
|
164
|
+
* stuck indefinitely when the investigation point is unreachable.
|
|
165
|
+
* @default 10000
|
|
166
|
+
*/
|
|
167
|
+
investigateMaxDurationMs: number;
|
|
168
|
+
/**
|
|
169
|
+
* How long (ms) the NPC spends "looking around" at the investigate location
|
|
170
|
+
* before concluding no threat is present and returning to PATROL/IDLE.
|
|
171
|
+
* @default 3000
|
|
172
|
+
*/
|
|
173
|
+
investigateLookAroundMs: number;
|
|
174
|
+
/**
|
|
175
|
+
* How long (ms) the NPC stands next to the wounded ally providing assistance.
|
|
176
|
+
* @default 5000
|
|
177
|
+
*/
|
|
178
|
+
helpWoundedAssistMs: number;
|
|
179
|
+
/**
|
|
180
|
+
* Maximum time (ms) for the APPROACH phase of HelpWoundedState before giving up.
|
|
181
|
+
* @default 10000
|
|
182
|
+
*/
|
|
183
|
+
helpWoundedMaxDurationMs: number;
|
|
184
|
+
/**
|
|
185
|
+
* Suspicion amount added to the accumulator when the NPC spots a friendly corpse.
|
|
186
|
+
* Only active when `ctx.suspicion` is non-null and `getVisibleCorpses()` is implemented.
|
|
187
|
+
* @default 0.6
|
|
188
|
+
*/
|
|
189
|
+
corpseFoundSuspicion: number;
|
|
190
|
+
/**
|
|
191
|
+
* Maximum time (ms) allowed for the APPROACH phase of KillWoundedState before
|
|
192
|
+
* aborting and transitioning via `killWoundedOnTimeout`.
|
|
193
|
+
* @default 8000
|
|
194
|
+
*/
|
|
195
|
+
killWoundedMaxApproachMs: number;
|
|
196
|
+
/**
|
|
197
|
+
* Duration (ms) of the AIM phase (weapon-raise pause) before taunting.
|
|
198
|
+
* @default 800
|
|
199
|
+
*/
|
|
200
|
+
killWoundedAimMs: number;
|
|
201
|
+
/**
|
|
202
|
+
* Duration (ms) of the TAUNT phase (bark plays out) before firing.
|
|
203
|
+
* @default 1200
|
|
204
|
+
*/
|
|
205
|
+
killWoundedTauntMs: number;
|
|
206
|
+
/**
|
|
207
|
+
* Number of shots to fire in the EXECUTE burst.
|
|
208
|
+
* @default 3
|
|
209
|
+
*/
|
|
210
|
+
killWoundedBurstCount: number;
|
|
211
|
+
/**
|
|
212
|
+
* Duration (ms) to stand still after all burst shots fired (PAUSE phase).
|
|
213
|
+
* Equivalent to X-Ray's PauseAfterKill 1000ms inertia.
|
|
214
|
+
* @default 1000
|
|
215
|
+
*/
|
|
216
|
+
killWoundedPauseMs: number;
|
|
217
|
+
/**
|
|
218
|
+
* Minimum interval (ms) between outgoing pack broadcasts from MonsterCombatController.
|
|
219
|
+
* Prevents saturating the host's pack record with per-frame writes.
|
|
220
|
+
* @default 500
|
|
221
|
+
*/
|
|
222
|
+
packAlertIntervalMs: number;
|
|
223
|
+
/**
|
|
224
|
+
* Time-to-live (ms) for a pack alert level without a refresh broadcast.
|
|
225
|
+
* Host implementations should reset the level to 'NONE' after this duration
|
|
226
|
+
* to prevent PATROL↔ALERT livelock when contacts fade.
|
|
227
|
+
* @default 5000
|
|
228
|
+
*/
|
|
229
|
+
packAlertTtlMs: number;
|
|
230
|
+
/** Minimum random wait duration (ms) while hiding behind cover. */
|
|
231
|
+
loopholeWaitMinMs: number;
|
|
232
|
+
/** Maximum random wait duration (ms) while hiding behind cover. */
|
|
233
|
+
loopholeWaitMaxMs: number;
|
|
234
|
+
/** Duration (ms) of the peek-out phase before firing. */
|
|
235
|
+
loopholePeekDurationMs: number;
|
|
236
|
+
/** Duration (ms) of the fire phase while peeked out. */
|
|
237
|
+
loopholeFireDurationMs: number;
|
|
238
|
+
/** Duration (ms) of the return-to-cover phase after firing. */
|
|
239
|
+
loopholeReturnDurationMs: number;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Complete set of tuning constants for all online AI state handlers.
|
|
243
|
+
*
|
|
244
|
+
* Composes all four sub-interfaces via intersection so existing code using
|
|
245
|
+
* `IStateConfig` compiles unchanged. For minimal usage (e.g. a monster-only
|
|
246
|
+
* game that needs no ranged combat), you can satisfy individual sub-interfaces
|
|
247
|
+
* instead of the full `IStateConfig`.
|
|
248
|
+
*
|
|
249
|
+
* Create with {@link createDefaultStateConfig} and override individual fields
|
|
250
|
+
* to customise the AI behaviour without modifying any handler code.
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* ```ts
|
|
254
|
+
* // Full config for a human NPC
|
|
255
|
+
* const cfg = createDefaultStateConfig({ combatRange: 250 });
|
|
256
|
+
*
|
|
257
|
+
* // Partial config — just movement for a simple platformer enemy
|
|
258
|
+
* const move: IMovementConfig = createDefaultStateConfig({ approachSpeed: 80 });
|
|
259
|
+
* ```
|
|
260
|
+
*/
|
|
261
|
+
export type IStateConfig = IMovementConfig & ICombatConfig & IMonsterConfig & ITimingConfig;
|
|
262
|
+
/**
|
|
263
|
+
* Create a {@link IStateConfig} pre-populated with the production defaults
|
|
264
|
+
* extracted from the game-layer constants.
|
|
265
|
+
*
|
|
266
|
+
* Call with a partial override object to customise individual values:
|
|
267
|
+
* ```ts
|
|
268
|
+
* const cfg = createDefaultStateConfig({ combatRange: 250 });
|
|
269
|
+
* ```
|
|
270
|
+
*/
|
|
271
|
+
export declare function createDefaultStateConfig(overrides?: Partial<IStateConfig>): IStateConfig;
|
|
272
|
+
//# sourceMappingURL=IStateConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IStateConfig.d.ts","sourceRoot":"","sources":["../../src/states/IStateConfig.ts"],"names":[],"mappings":"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"}
|