private void SetupChooseTargetSequence(Script_Sequence p_chooseTargetSequence) { Script_Action_SetFlag setEnemies = new Script_Action_SetFlag(_behaviourTree, _manager.GetEnemies(), _entityListFlag); Script_Action_SetEntitiesWithinRange setEnemiesWithinRange = new Script_Action_SetEntitiesWithinRange(_behaviourTree, _grid, _entityListFlag, _entityListFlag, this as Script_IEntity, _engageTargetRange); Script_Action_SetNearestEntityFromEntityWithinRange setNearestEnemy = new Script_Action_SetNearestEntityFromEntityWithinRange(_behaviourTree, _grid, _entityListFlag, _engageTargetRange, this as Script_IEntity, _targetEntityFlag); Script_Action_SetEnemyAttackingTarget setEnemyAttackingDps = new Script_Action_SetEnemyAttackingTarget(_behaviourTree, _entityListFlag, _manager.GetDps() as Script_IEntity, _targetEntityFlag); Script_Action_SetEnemyAttackingTarget setEnemyAttackingHealer = new Script_Action_SetEnemyAttackingTarget(_behaviourTree, _entityListFlag, _manager.GetHealer() as Script_IEntity, _targetEntityFlag); Script_Selector chooseTargetToAidSelector = new Script_Selector(_behaviourTree); Script_LeafTask setEnemiesLeaf = new Script_LeafTask(_behaviourTree, setEnemies); Script_LeafTask setEnemiesWithinRangeLeaf = new Script_LeafTask(_behaviourTree, setEnemiesWithinRange); Script_LeafTask setNearestEnemyLeaf = new Script_LeafTask(_behaviourTree, setNearestEnemy); Script_LeafTask setEnemyAttackingHealerLeaf = new Script_LeafTask(_behaviourTree, setEnemyAttackingHealer); Script_LeafTask setEnemyAttackingDpsLeaf = new Script_LeafTask(_behaviourTree, setEnemyAttackingDps); chooseTargetToAidSelector.AddTask(setEnemyAttackingHealerLeaf); chooseTargetToAidSelector.AddTask(setEnemyAttackingDpsLeaf); p_chooseTargetSequence.AddTask(setEnemiesLeaf); p_chooseTargetSequence.AddTask(setEnemiesWithinRangeLeaf); p_chooseTargetSequence.AddTask(setNearestEnemyLeaf); p_chooseTargetSequence.AddTask(chooseTargetToAidSelector); }
private void InitializeBehaviourTree() { _behaviourTree = new Script_BehaviourTree(); SetupTreeFlags(); Script_Selector startSelector = new Script_Selector(_behaviourTree); Script_Sequence walkingSequence = new Script_Sequence(_behaviourTree); SetupWalkingSequence(walkingSequence); Script_Sequence pursuitSequence = new Script_Sequence(_behaviourTree); SetupPursuitSequence(pursuitSequence); Script_Sequence attackSequence = new Script_Sequence(_behaviourTree); SetupAttackSequence(attackSequence); Script_Sequence GetHighestThreatOrNearestSequence = new Script_Sequence(_behaviourTree); SetupGetHighestThreatOrNearestFriendlySequence(GetHighestThreatOrNearestSequence); Script_Sequence GetFreeSpaceSequence = new Script_Sequence(_behaviourTree); SetupGetFreeSpaceSequence(GetFreeSpaceSequence); startSelector.AddTask(GetFreeSpaceSequence); startSelector.AddTask(GetHighestThreatOrNearestSequence); startSelector.AddTask(pursuitSequence); startSelector.AddTask(attackSequence); startSelector.AddTask(walkingSequence); _behaviourTree.AddChild(startSelector); }
public void InitializeBehaviourTree() { _behaviourTree = new Script_BehaviourTree(); SetupTreeFlags(); Script_Selector startSelector = new Script_Selector(_behaviourTree); Script_Sequence walkingSequence = new Script_Sequence(_behaviourTree); SetupWalkingSequence(walkingSequence); Script_Sequence moveNearDpsSequence = new Script_Sequence(_behaviourTree); SetupFollowingSequence(moveNearDpsSequence, GetDps() as Script_IEntity); Script_Sequence moveNearTankSequence = new Script_Sequence(_behaviourTree); SetupFollowingSequence(moveNearTankSequence, GetTank() as Script_IEntity); Script_Sequence healSequence = new Script_Sequence(_behaviourTree); SetupHealSequence(healSequence); Script_Sequence ChooseAttackingTargetSequence = new Script_Sequence(_behaviourTree); SetupChooseTargetToAttack(ChooseAttackingTargetSequence); Script_Sequence attackSequence = new Script_Sequence(_behaviourTree); SetupAttackSequence(attackSequence); Script_Sequence ChooseHealingTargetSequence = new Script_Sequence(_behaviourTree); SetupChooseTargetToHeal(ChooseHealingTargetSequence); Script_Sequence GetFreeSpaceSequence = new Script_Sequence(_behaviourTree); SetupGetFreeSpaceSequence(GetFreeSpaceSequence); startSelector.AddTask(GetFreeSpaceSequence); startSelector.AddTask(ChooseHealingTargetSequence); startSelector.AddTask(healSequence); startSelector.AddTask(ChooseAttackingTargetSequence); startSelector.AddTask(attackSequence); startSelector.AddTask(moveNearTankSequence); startSelector.AddTask(moveNearDpsSequence); startSelector.AddTask(walkingSequence); _behaviourTree.AddChild(startSelector); }
public void InitializeBehaviourTree() { _behaviourTree = new Script_BehaviourTree(); SetupTreeFlags(); Script_Selector startSelector = new Script_Selector(_behaviourTree); Script_Sequence walkingSequence = new Script_Sequence(_behaviourTree); SetupWalkingSequence(walkingSequence); Script_Sequence pursuitSequence = new Script_Sequence(_behaviourTree); SetupPursuitSequence(pursuitSequence); Script_Sequence attackSequence = new Script_Sequence(_behaviourTree); SetupAttackSequence(attackSequence); Script_Sequence ChooseTargetSequence = new Script_Sequence(_behaviourTree); SetupChooseTargetSequence(ChooseTargetSequence); Script_Decorator_AlwaysFail alwaysFailWhileChoosingTarget = new Script_Decorator_AlwaysFail(_behaviourTree, ChooseTargetSequence); Script_Sequence GetFreeSpaceSequence = new Script_Sequence(_behaviourTree); SetupGetFreeSpaceSequence(GetFreeSpaceSequence); startSelector.AddTask(GetFreeSpaceSequence); startSelector.AddTask(alwaysFailWhileChoosingTarget); startSelector.AddTask(pursuitSequence); startSelector.AddTask(attackSequence); startSelector.AddTask(walkingSequence); _behaviourTree.AddChild(startSelector); }
public void InitializeBehaviourTree() { _behaviourTree = new Script_BehaviourTree(); SetupTreeFlags(); Script_Selector startSelector = new Script_Selector(_behaviourTree); Script_Sequence walkingSequence = new Script_Sequence(_behaviourTree); SetupWalkingSequence(walkingSequence); Script_Sequence moveNearTankSequence = new Script_Sequence(_behaviourTree); SetupMoveToTankSequence(moveNearTankSequence); Script_Sequence attackSequence = new Script_Sequence(_behaviourTree); SetupAttackSequence(attackSequence); Script_Sequence ChooseTargetSequence = new Script_Sequence(_behaviourTree); SetupChooseTargetToAttackSequence(ChooseTargetSequence); Script_Sequence GetFreeSpaceSequence = new Script_Sequence(_behaviourTree); SetupGetFreeSpaceSequence(GetFreeSpaceSequence); startSelector.AddTask(GetFreeSpaceSequence); startSelector.AddTask(ChooseTargetSequence); startSelector.AddTask(attackSequence); startSelector.AddTask(moveNearTankSequence); startSelector.AddTask(walkingSequence); _behaviourTree.AddChild(startSelector); }