Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [XComGame.X2AIBTBehaviorTree]
- ; -------------------- Replace Generic Combat functions --------------------------------------------------
- -Behaviors=(BehaviorName=DoIfFlankedMove, NodeType=Sequence, Child[0]=CheckIfNeedToMove, Child[1]=FlankedMoveSelector)
- +Behaviors=(BehaviorName=DoIfFlankedMove, NodeType=Selector, Child[0]=TryMoveForAdventMedikit, Child[1]=DoIfFlankedMoveCheck, Child[2]=TryAdventMedikitOnAnyTarget)
- +Behaviors=(BehaviorName=DoIfFlankedMoveCheck, NodeType=Sequence, Child[0]=CheckIfNeedToMove, Child[1]=FlankedMoveSelector)
- -Behaviors=(BehaviorName=TryShootOrReload, NodeType=Selector, Child[0]=ShootIfAvailable, Child[1]=NeedsReload)
- +Behaviors=(BehaviorName=TryShootOrReload, NodeType=Selector, Child[0]=TryAdventMedikitOnAnyTarget, Child[1]=NeedsReload, Child[2]=ShootIfAvailable)
- -Behaviors=(BehaviorName=TryShootOrReloadOrOverwatch, NodeType=Selector, Child[0]=ConsiderTakingOverwatch, Child[1]=ShootIfAvailable, Child[2]=NeedsReload)
- +Behaviors=(BehaviorName=TryShootOrReloadOrOverwatch, NodeType=Selector, Child[0]=TryAdventMedikitOnAnyTarget, Child[1]=NeedsReload, Child[2]=ConsiderSuppression, Child[3]=ConsiderTakingOverwatch, Child[4]=ShootIfAvailable)
- ; ---------------- NeedToHeal -- use both medkit abilities --------------------------------------------
- +EquivalentAbilities=( KeyName=AdventMedikit, EquivalentAbilityName[0]=MedikitHeal, EquivalentAbilityName[1]=NanoMedikitHeal)
- ; ---------------- AdventMedikit behaviours --------------------------------------------
- +Behaviors=(BehaviorName=IsAbilityAvailable-AdventMedikit, NodeType=Condition)
- +Behaviors=(BehaviorName=IsAbilityReady-AdventMedikit, NodeType=Condition)
- +Behaviors=(BehaviorName=SelectAbility-AdventMedikit, NodeType=Action)
- +Behaviors=(BehaviorName=HasValidTarget-AdventMedikit, NodeType=Condition)
- +Behaviors=(BehaviorName=SetTargetStack-AdventMedikit, NodeType=Action)
- +Behaviors=(BehaviorName=TryMoveForAdventMedikit, NodeType=Sequence, Child[0]=SafeToMove, Child[1]=IsAbilityReady-AdventMedikit, Child[2]=NotLastActionPoint, Child[3]=MoveStandardIfFirstAbility-AdventMedikit)
- +Behaviors=(BehaviorName=FindAdventMedikitDestinationDefensive, NodeType=Selector, Child[0]=FindAdventMedikitDestinationDefensive_BestUnit)
- +Behaviors=(BehaviorName=FindAdventMedikitDestinationDefensive_BestUnit, NodeType=Sequence, Child[0]=SelectPotentialTargetForAdventMedikit, Child[1]=ResetDestinationSearch, Child[2]=RestrictToPotentialTargetRange-AdventMedikit, Child[3]=FindRestrictedDestination-MWP_Defensive)
- +Behaviors=(BehaviorName=RestrictToPotentialTargetRange-AdventMedikit, NodeType=Action); Requires a potential target. Used for finding a destination to heal our 'best' unit.
- +Behaviors=(BehaviorName=RestrictToAlliedAbilityRange-AdventMedikit, NodeType=Action, Param[0]=2) ;Param[0] is the minimum number of Allied Targets in range for each tile to be considered.
- +Behaviors=(BehaviorName=AddAbilityRangeWeight-AdventMedikit, NodeType=Action, Param[0]="5.5")
- +Behaviors=(BehaviorName=IsTargetInMovementRange-AdventMedikit, NodeType=Condition)
- +Behaviors=(BehaviorName=MoveStandardIfFirstAbility-AdventMedikit, NodeType=Sequence, Child[0]=IsAbilityAvailable-StandardMove, Child[1]=NotLastActionPoint, Child[2]=FindAdventMedikitDestinationDefensive, Child[3]=SelectAbility-StandardMove)
- +Behaviors=(BehaviorName=SelectPotentialTargetForAdventMedikit, NodeType=Sequence, Child[0]=SetPotentialAllyTargetStack, Child[1]=SelectBestAllyTargetForAdventMedikit, Child[2]=HasValidTarget-Potential)
- +Behaviors=(BehaviorName=SelectBestAllyTargetForAdventMedikit, NodeType=RepeatUntilFail, Child[0]=EvaluatePotentialAdventMedikitTarget)
- +Behaviors=(BehaviorName=EvaluatePotentialAdventMedikitTarget, NodeType=Sequence, Child[0]=SetNextTarget, Child[1]=ScoreBestTargetForAdventMedikit, Child[2]=UpdateBestTarget)
- +Behaviors=(BehaviorName=ScoreBestTargetForAdventMedikit, NodeType=Successor, Child[0]=TargetScoreReachableForAdventMedikit)
- +Behaviors=(BehaviorName=TargetScoreReachableForAdventMedikit, NodeType=Sequence, Child[0]=TargetIsAdvent, Child[1]=TargetIsNotRobotic, Child[2]=TargetWounded, Child[3]=IsTargetInMovementRange-AdventMedikit, Child[4]=ScoreByHP)
- +Behaviors=(BehaviorName=TargetIsNotRobotic, NodeType=Inverter, Child[0]=TargetIsRobotic)
- +Behaviors=(BehaviorName=TryAdventMedikitOnAnyTarget, NodeType=Sequence, Child[0]=IsAbilityAvailable-AdventMedikit, Child[1]=SelectTargetForAdventMedikit, Child[2]=SelectAbility-AdventMedikit)
- +Behaviors=(BehaviorName=SelectTargetForAdventMedikit, NodeType=Sequence, Child[0]=SetTargetStack-AdventMedikit, Child[1]=SelectBestTargetForAdventMedikit, Child[2]=HasValidTarget-AdventMedikit)
- +Behaviors=(BehaviorName=SelectBestTargetForAdventMedikit, NodeType=RepeatUntilFail, Child[0]=EvaluateTargetsAdventMedikit)
- +Behaviors=(BehaviorName=EvaluateTargetsAdventMedikit, NodeType=Sequence, Child[0]=SetNextTarget, Child[1]=TargetScoreAdventMedikit, Child[2]=UpdateBestTarget)
- +Behaviors=(BehaviorName=TargetScoreAdventMedikit, NodeType=Selector, Child[0]=ScoreIfDying, Child[1]=ScoreIfWounded, Child[2]=AddToTargetScore_0)
- +Behaviors=(BehaviorName=ScoreIfDying, NodeType=Sequence, Child[0]=TargetHasLowHP, Child[1]=AddToTargetScore_30)
- +Behaviors=(BehaviorName=ScoreIfWounded, NodeType=Sequence, Child[0]=TargetWounded, Child[1]=AddToTargetScore_10)
Advertisement
Add Comment
Please, Sign In to add comment