def generate_tree(self): """Generates the tree for the tree.""" tree = bt.Sequence() tree.add_child(self.Grow(self)) tree.add_child(self.DecreasePollenTimer(self)) logic_fallback = bt.FallBack() tree.add_child(logic_fallback) # Check if dead dead_or_alive_sequence = bt.Sequence() logic_fallback.add_child(dead_or_alive_sequence) dead_or_alive_sequence.add_child(self.IsDead(self)) dead_or_alive_sequence.add_child(self.Die(self)) production_sequence = bt.Sequence() logic_fallback.add_child(production_sequence) # Produce nectar nectar_production = bt.FallBack() production_sequence.add_child(nectar_production) nectar_production.add_child(self.CantProduceNectar(self)) nectar_production.add_child(self.ProduceNectar(self)) # Produce pollen pollen_production = bt.FallBack() production_sequence.add_child(pollen_production) pollen_production.add_child(self.CantProducePollen(self)) pollen_production.add_child(self.ProducePollen(self)) return tree
def generate_tree(self): """Generates the tree for the knight.""" tree = bt.FallBack() exist_injured_friend_sequence = bt.Sequence() friend_fallback = bt.FallBack() exist_injured_friend_sequence.add_child(self.ExistsInjuredFriend(self)) injured_friend_in_range_sequence = bt.Sequence() friend_fallback.add_child(injured_friend_in_range_sequence) exist_injured_friend_sequence.add_child(friend_fallback) injured_friend_in_range_sequence.add_child( self.InjuredFriendInRange(self)) injured_friend_in_range_sequence.add_child( self.FindHighestPriorityFriend(self)) injured_friend_in_range_sequence.add_child(self.Heal(self)) find_injured_friend_sequence = bt.Sequence() find_injured_friend_sequence.add_child( self.FindClosestInjuredFriend(self)) find_injured_friend_sequence.add_child(self.CreatePath(self)) find_injured_friend_sequence.add_child(self.MoveOnPath(self)) find_injured_friend_sequence.add_child( injured_friend_in_range_sequence) friend_fallback.add_child(find_injured_friend_sequence) # Random movement move_randomly = self.MoveRandomly(self) tree.add_child(exist_injured_friend_sequence) tree.add_child(move_randomly) return tree
def generate_tree(self): """Generates the tree for the knight.""" tree = bt.FallBack() # Attack or chase enemies enemy_handling = bt.Sequence() enemy_visible = self.EnemyVisible(self) enemy_fallback = bt.FallBack() enemy_attack = bt.Sequence() enemy_adjacent = self.EnemyAdjacent(self) attack = self.Attack(self) enemy_attack.add_child(enemy_adjacent) enemy_attack.add_child(attack) enemy_javelin = bt.Sequence() can_javelin = self.CanJavelin(self) javelin = self.Javelin(self) move_towards_enemy = self.MoveTowardsEnemy(self) enemy_javelin.add_child(can_javelin) enemy_javelin.add_child(javelin) enemy_javelin.add_child(move_towards_enemy) enemy_chase = bt.Sequence() enemy_chase.add_child(move_towards_enemy) enemy_chase.add_child(enemy_attack) enemy_fallback.add_child(enemy_attack) enemy_fallback.add_child(enemy_javelin) enemy_fallback.add_child(enemy_chase) enemy_handling.add_child(enemy_visible) enemy_handling.add_child(enemy_fallback) tree.add_child(enemy_handling) # Random movement move_randomly = self.MoveRandomly(self) tree.add_child(move_randomly) return tree
def generate_tree(self): """Generates the tree for the mage.""" tree = bt.FallBack() enemy_visible_sequence = bt.Sequence() enemy_visible_sequence.add_child(self.EnemyVisible(self)) attack_sequence = bt.Sequence() attack_sequence.add_child(self.FindBestTarget(self)) attack_sequence.add_child(self.Attack(self)) enemy_visible_sequence.add_child(attack_sequence) enemies_not_visible_sequence = bt.Sequence() move_fallback = bt.FallBack() move_sequence = bt.Sequence() move_sequence.add_child(self.FindClosestEnemy(self)) move_sequence.add_child(self.CreatePath(self)) move_sequence.add_child(self.MoveOnPath(self)) move_fallback.add_child(move_sequence) move_fallback.add_child(self.MoveRandomly(self)) enemies_not_visible_sequence.add_child(move_fallback) enemies_not_visible_sequence.add_child(enemy_visible_sequence) tree.add_child(enemy_visible_sequence) tree.add_child(enemies_not_visible_sequence) return tree
def generate_tree(self): """Generates the tree for the worker.""" tree = bt.FallBack() # Build on adjacent blueprints build = bt.Sequence() build.add_child(self.BlueprintAdjacent(self)) build.add_child(self.BuildBlueprint(self)) tree.add_child(build) # Avoid enemies enemies = bt.Sequence() enemies.add_child(self.EnemyVisible(self)) enemies.add_child(self.MoveAwayFromEnemy(self)) tree.add_child(enemies) # Move towards blueprints with no workers #find_blueprint = bt.Sequence() #tree.add_child(find_blueprint) # Add blueprints add_blueprint = bt.Sequence() add_blueprint.add_child(self.NeedAnotherFactory(self)) add_blueprint.add_child(self.EnoughKarboniteToBuild(self)) add_blueprint.add_child(self.AddBlueprint(self)) tree.add_child(add_blueprint) # Mine karbonite karbonite = bt.FallBack() adjacent_karbonite_sequence = bt.Sequence() adjacent_karbonite_sequence.add_child( self.KarboniteInAdjacentCell(self)) adjacent_karbonite_sequence.add_child(self.HarvestKarbonite(self)) no_adj_karbonite_sequence = bt.Sequence() no_adj_karbonite_sequence.add_child(self.KarboniteExists(self)) path_fallback = bt.FallBack() path_following_sequence = bt.Sequence() path_following_sequence.add_child(self.ExistsPath(self)) path_following_sequence.add_child(self.MoveOnPath(self)) create_path_fallback = bt.FallBack() create_path_sequence = bt.Sequence() create_path_sequence.add_child(self.NearbyKarboniteCells(self)) create_path_sequence.add_child(self.CreatePath(self)) create_path_fallback.add_child(create_path_sequence) create_path_fallback.add_child(self.FindNearbyKarboniteCells(self)) path_fallback.add_child(path_following_sequence) path_fallback.add_child(create_path_fallback) no_adj_karbonite_sequence.add_child(path_fallback) karbonite.add_child(adjacent_karbonite_sequence) karbonite.add_child(self.CloseCombat(self)) karbonite.add_child(no_adj_karbonite_sequence) karbonite.add_child(self.MoveRandomly(self)) tree.add_child(karbonite) return tree
def generate_tree(self): tree = bt.FallBack() SEKMatchBefore = bt.Sequence() SEKcheckBefore = self.CheckForSEKBefore(self) SEKBeforeTake = self.SEKBeforeTake(self) SEKMatchBefore.add_child(SEKcheckBefore) SEKMatchBefore.add_child(SEKBeforeTake) keywordMatch = bt.Sequence() checkKeywordRow = self.CheckKeywordRow(self) takeByKeywordRow = self.KeywordTakeRow(self) keywordMatch.add_child(checkKeywordRow) keywordMatch.add_child(takeByKeywordRow) SEKMatchAfter = bt.Sequence() SEKcheckAfter = self.CheckForSEKAfter(self) SEKAfterTake = self.SEKAfterTake(self) SEKMatchAfter.add_child(SEKcheckAfter) SEKMatchAfter.add_child(SEKAfterTake) naiveTake = self.NaiveTake(self) tree.add_child(SEKMatchBefore) tree.add_child(keywordMatch) tree.add_child(SEKMatchAfter) tree.add_child(naiveTake) return tree
def generate_tree(self): """Generates the tree for the ranger.""" tree = bt.FallBack() # Attack or chase/run from enemies enemy_handling = bt.Sequence() enemy_visible = self.EnemyVisible(self) enemy_handling.add_child(enemy_visible) enemy_fallback = bt.FallBack() enemy_in_range = bt.Sequence() enemy_in_attack_range = self.EnemyInAttackRange(self) enemy_in_range.add_child(enemy_in_attack_range) attack = self.Attack(self) enemy_in_range.add_child(attack) enemy_close = bt.Sequence() enemy_too_close = self.EnemyTooClose(self) enemy_close.add_child(enemy_too_close) move_away = self.MoveAway(self) enemy_close.add_child(move_away) enemy_close.add_child(enemy_in_range) enemy_fallback.add_child(enemy_close) enemy_far = bt.Sequence() enemy_too_far = self.EnemyTooFar(self) enemy_far.add_child(enemy_too_far) move_towards = self.MoveTowards(self) enemy_far.add_child(move_towards) enemy_far.add_child(enemy_in_range) enemy_fallback.add_child(enemy_far) enemy_fallback.add_child(enemy_in_range) enemy_handling.add_child(enemy_fallback) tree.add_child(enemy_handling) move_fallback = bt.FallBack() move_sequence = bt.Sequence() move_sequence.add_child(self.OffensiveStrategy(self)) move_sequence.add_child(self.FindClosestEnemy(self)) move_sequence.add_child(self.CreatePath(self)) move_sequence.add_child(self.MoveOnPath(self)) move_fallback.add_child(move_sequence) move_fallback.add_child(self.MoveRandomly(self)) tree.add_child(move_fallback) return tree
def generate_tree(self): """Generates the tree for the water.""" tree = bt.FallBack() dry_sequence = bt.Sequence() dry_sequence.add_child(self.IsDry(self)) dry_sequence.add_child(self.DryOut(self)) tree.add_child(dry_sequence) tree.add_child(self.MoveWater(self)) return tree
def generate_tree(self): """Generates the tree for the tree.""" tree = bt.Sequence() flood_fallback = bt.FallBack() flood_fallback.add_child(self.IsNotFlooded(self)) flood_fallback.add_child(self.Flood(self)) tree.add_child(flood_fallback) tree.add_child(self.MoveWater(self)) return tree
def generate_tree(self): """Generates the tree for the knight.""" tree = bt.FallBack() # Attack or chase enemies enemy_handling = bt.Sequence() enemy_visible = self.EnemyVisible(self) enemy_fallback = bt.FallBack() enemy_attack = bt.Sequence() enemy_adjacent = self.EnemyAdjacent(self) attack = self.Attack(self) enemy_attack.add_child(enemy_adjacent) enemy_attack.add_child(attack) enemy_javelin = bt.Sequence() can_javelin = self.CanJavelin(self) javelin = self.Javelin(self) move_towards_enemy = self.MoveTowardsEnemy(self) enemy_javelin.add_child(can_javelin) enemy_javelin.add_child(javelin) enemy_javelin.add_child(move_towards_enemy) enemy_chase = bt.Sequence() enemy_chase.add_child(move_towards_enemy) enemy_chase.add_child(enemy_attack) enemy_fallback.add_child(enemy_attack) enemy_fallback.add_child(enemy_javelin) enemy_fallback.add_child(enemy_chase) enemy_handling.add_child(enemy_visible) enemy_handling.add_child(enemy_fallback) tree.add_child(enemy_handling) move_fallback = bt.FallBack() move_sequence = bt.Sequence() move_sequence.add_child(self.OffensiveStrategy(self)) move_sequence.add_child(self.FindClosestEnemy(self)) move_sequence.add_child(self.CreatePath(self)) move_sequence.add_child(self.MoveOnPath(self)) move_fallback.add_child(move_sequence) move_fallback.add_child(self.MoveRandomly(self)) tree.add_child(move_fallback) return tree
def generate_tree(self): tree = bt.Sequence() unload = self.Unload(self) tree.add_child(unload) build_fallback = bt.FallBack() workers = bt.Sequence() need_more_workers = self.NeedMoreWorkers(self) workers.add_child(need_more_workers) can_build_worker = self.CanBuildWorker(self) workers.add_child(can_build_worker) build_worker = self.BuildWorker(self) workers.add_child(build_worker) build_fallback.add_child(workers) non_workers = bt.Sequence() can_build = self.CanBuild(self) non_workers.add_child(can_build) non_workers_fallback = bt.FallBack() local_damage = bt.Sequence() damaged_units = self.DamagedUnits(self) local_damage.add_child(damaged_units) no_healer_nearby = self.NoHealerNearby(self) local_damage.add_child(no_healer_nearby) build_healer = self.BuildHealer(self) local_damage.add_child(build_healer) non_workers_fallback.add_child(local_damage) local_enemies = bt.Sequence() enemies_nearby = self.EnemiesNearby(self) local_enemies.add_child(enemies_nearby) build_knight = self.BuildKnight(self) local_enemies.add_child(build_knight) non_workers_fallback.add_child(local_enemies) build_global = self.BuildGlobal(self) non_workers_fallback.add_child(build_global) non_workers.add_child(non_workers_fallback) build_fallback.add_child(non_workers) tree.add_child(build_fallback) return tree
def generate_tree(self): """Generates the tree for the tree.""" tree = bt.Sequence() dead_or_alive_fallback = bt.FallBack() dead_or_alive_fallback.add_child(self.IsAlive(self)) dead_or_alive_fallback.add_child(self.Die(self)) flood_fallback = bt.FallBack() flood_fallback.add_child(self.IsNotFlooded(self)) flood_fallback.add_child(self.Flood(self)) reproduce_sequence = bt.Sequence() reproduce_sequence.add_child(self.CanReproduce(self)) reproduce_sequence.add_child(self.Reproduce(self)) tree.add_child(dead_or_alive_fallback) tree.add_child(flood_fallback) tree.add_child(self.Grow(self)) tree.add_child(reproduce_sequence) tree.add_child(self.MoveWater(self)) return tree
def generate_tree(self): """Generates the tree for the hive.""" tree = bt.FallBack() sequence = bt.Sequence() create_bee_sequence = bt.Sequence() create_bee_sequence.add_child(self.ShouldCreateBee(self)) create_bee_sequence.add_child(self.HaveEnoughtRoom(self)) create_bee_sequence.add_child(self.CreateBee(self)) sequence.add_child(create_bee_sequence) tree.add_child(sequence) return tree
def generate_tree(self): tree = bt.Sequence() checkTopWordFallback = bt.FallBack() checkFirstWord = self.CheckFirstWord(self) removeTopWord = self.RemoveTopWord(self) checkTopWordFallback.add_child(checkFirstWord) checkTopWordFallback.add_child(removeTopWord) takeTopWord = self.TakeTopWord(self) tree.add_child(checkTopWordFallback) tree.add_child(takeTopWord) return tree
def generate_tree(self): """Generates the tree for the mage.""" tree = bt.FallBack() enemy_visible_sequence = bt.Sequence() enemy_visible_sequence.add_child(self.EnemyVisible(self)) attack_sequence = bt.Sequence() attack_sequence.add_child(self.FindBestTarget(self)) attack_sequence.add_child(self.Attack(self)) enemy_visible_sequence.add_child(attack_sequence) move_randomly_sequence = bt.Sequence() move_randomly_sequence.add_child(self.MoveRandomly(self)) move_randomly_sequence.add_child(enemy_visible_sequence) tree.add_child(enemy_visible_sequence) tree.add_child(move_randomly_sequence) return tree
def generate_tree(self): tree = bt.FallBack() specialCase = bt.Sequence() specalCaseCheck = self.SpecialCaseCheck(self) specalCaseTake = self.SpecialCaseTake(self) specialCase.add_child(specalCaseCheck) specialCase.add_child(specalCaseTake) formatCase = bt.Sequence() formatCheck = self.FormatsCheck(self) formatTake = self.FormatsTake(self) formatCase.add_child(formatCheck) formatCase.add_child(formatTake) tree.add_child(specialCase) tree.add_child(formatCase) return tree
def generate_tree(self): tree = bt.FallBack() first_sequence = bt.Sequence() regular_format_match = self.RegularFormat(self) find_keyword = self.FindKeywordFirst(self) first_sequence.add_child(regular_format_match) first_sequence.add_child(find_keyword) tree.add_child(first_sequence) second_sequence = bt.Sequence() regular_format_match = self.NoPercentage(self) find_keyword = self.FindKeywordSecond(self) second_sequence.add_child(regular_format_match) second_sequence.add_child(find_keyword) tree.add_child(second_sequence) return tree
def generate_tree(self): tree = bt.FallBack() firstMatch = bt.Sequence() checkFirstMatch = self.FirstMatch(self) takeFirstMatch = self.TakeFirstMatch(self) firstMatch.add_child(checkFirstMatch) firstMatch.add_child(takeFirstMatch) secondMatch = bt.Sequence() checkSecondMatch = self.SecondMatch(self) takeSecondMatch = self.TakeSecondMatch(self) secondMatch.add_child(checkSecondMatch) secondMatch.add_child(takeSecondMatch) naiveTake = self.NaiveTake(self) tree.add_child(firstMatch) tree.add_child(secondMatch) tree.add_child(naiveTake) return tree
def generate_tree(self): """Generates the tree for the tree.""" tree = bt.FallBack() return tree
def generate_tree(self): """Generates the tree for the bee.""" tree = bt.FallBack() is_dead_sequence = bt.Sequence() is_dead_sequence.add_child(self.Dying(self)) is_dead_sequence.add_child(self.Die(self)) sequence = bt.Sequence() logic_fallback = bt.FallBack() eat_sequence = bt.Sequence() eat_sequence.add_child(self.NeedsToEat(self)) eat_fallback = bt.FallBack() eat_sequence.add_child(eat_fallback) eat_in_hive_sequence = bt.Sequence() eat_own_food_sequence = bt.Sequence() eat_fallback.add_child(eat_in_hive_sequence) eat_fallback.add_child(eat_own_food_sequence) eat_in_hive_sequence.add_child(self.InHive(self)) eat_in_hive_sequence.add_child(self.HiveHasFood(self)) eat_in_hive_sequence.add_child(self.EatInHive(self)) eat_own_food_sequence.add_child(self.HaveFood(self)) eat_own_food_sequence.add_child(self.EatOwnFood(self)) logic_fallback.add_child(eat_sequence) scout_sequence = bt.Sequence() recruit_sequence = bt.Sequence() logic_fallback.add_child(scout_sequence) logic_fallback.add_child(recruit_sequence) # Scout scout_sequence.add_child(self.IsScout(self)) scout_fallback = bt.FallBack() scout_sequence.add_child(scout_fallback) should_rest_fallback = bt.FallBack() should_rest_in_hive_sequence = bt.Sequence() should_rest_in_hive_sequence.add_child(self.InHive(self)) should_rest_in_hive_sequence.add_child(self.ShouldRestInHive(self)) should_return_to_hive_sequence = bt.Sequence() should_return_to_hive_sequence.add_child(self.ShouldReturnToHive(self)) should_return_to_hive_sequence.add_child( self.SetHiveTargetLocation(self)) should_return_to_hive_sequence.add_child(self.CanMove(self)) should_return_to_hive_sequence.add_child( self.FlyToTargetLocation(self)) should_rest_fallback.add_child(should_rest_in_hive_sequence) should_rest_fallback.add_child(should_return_to_hive_sequence) scout_fallback.add_child(should_rest_fallback) food_known_sequence = bt.Sequence() scout_fallback.add_child(food_known_sequence) food_known_fallback = bt.FallBack() food_known_sequence.add_child(self.KnowWhereFoodIs(self)) food_known_sequence.add_child(food_known_fallback) in_hive_sequence = bt.Sequence() in_hive_sequence.add_child(self.InHive(self)) in_hive_sequence.add_child(self.AvailableRecruits(self)) in_hive_sequence.add_child(self.SendRecruits(self)) food_known_fallback.add_child(in_hive_sequence) fly_to_hive_sequence = bt.Sequence() fly_to_hive_sequence.add_child(self.NotInHive(self)) fly_to_hive_sequence.add_child(self.SetHiveTargetLocation(self)) fly_to_hive_sequence.add_child(self.CanMove(self)) fly_to_hive_sequence.add_child(self.FlyToTargetLocation(self)) food_known_fallback.add_child(fly_to_hive_sequence) search_food_sequence = bt.Sequence() scout_fallback.add_child(search_food_sequence) search_food_sequence.add_child(self.DontKnowAboutFood(self)) search_food_sequence.add_child(self.ShouldScoutForFood(self)) scout_food_fallback = bt.FallBack() search_food_sequence.add_child(scout_food_fallback) can_see_food_sequence = bt.Sequence() can_see_food_sequence.add_child(self.CanSeeFood(self)) smell_food_sequence = bt.Sequence() smell_food_sequence.add_child(self.FindBestSmell(self)) smell_food_sequence.add_child(self.CanMove(self)) smell_food_sequence.add_child(self.FlyToTargetLocation(self)) random_movement_sequence = bt.Sequence() random_movement_sequence.add_child(self.CanMove(self)) random_movement_sequence.add_child(self.Explore(self)) scout_food_fallback.add_child(smell_food_sequence) scout_food_fallback.add_child(random_movement_sequence) scout_food_fallback.add_child(can_see_food_sequence) # Recruit recruit_sequence.add_child(self.IsRecruit(self)) recruit_fallback = bt.FallBack() recruit_sequence.add_child(recruit_fallback) ## Collect nectar on_food_target_sequence = bt.Sequence() on_food_target_sequence.add_child(self.IsOnFoodTargetLocation(self)) on_food_target_fallback = bt.FallBack() on_food_target_sequence.add_child(on_food_target_fallback) location_have_nectar_sequence = bt.Sequence() on_food_target_fallback.add_child(location_have_nectar_sequence) location_have_nectar_sequence.add_child( self.HaveTargetLocationNectar(self)) location_have_nectar_sequence.add_child(self.TakeNectar(self)) on_food_target_fallback.add_child(self.RemoveFoodTargetLocation(self)) recruit_fallback.add_child(on_food_target_sequence) ## Have nectar have_nectar_sequence = bt.Sequence() have_nectar_sequence.add_child(self.HaveFood(self)) have_nectar_fallback = bt.FallBack() have_nectar_sequence.add_child(have_nectar_fallback) recruit_in_hive_sequence = bt.Sequence() have_nectar_fallback.add_child(recruit_in_hive_sequence) recruit_in_hive_sequence.add_child(self.InHive(self)) recruit_in_hive_sequence.add_child(self.LeaveFoodInHive(self)) move_to_hive_sequence = bt.Sequence() move_to_hive_sequence.add_child(self.SetHiveTargetLocation(self)) move_to_hive_sequence.add_child(self.CanMove(self)) move_to_hive_sequence.add_child(self.FlyToTargetLocation(self)) have_nectar_fallback.add_child(move_to_hive_sequence) recruit_no_food_fallback = bt.FallBack() recruit_know_food_sequence = bt.Sequence() recruit_no_food_fallback.add_child(recruit_know_food_sequence) recruit_know_food_sequence.add_child(self.KnowWhereFoodIs(self)) recruit_know_food_sequence.add_child(self.SetFoodAsTarget(self)) recruit_know_food_sequence.add_child(self.CanMove(self)) recruit_know_food_sequence.add_child(self.FlyToTargetLocation(self)) recruit_dont_know_food_sequence = bt.Sequence() recruit_dont_know_food_sequence.add_child(self.NotInHive(self)) recruit_dont_know_food_sequence.add_child(self.DontKnowAboutFood(self)) recruit_dont_know_food_sequence.add_child( self.SetHiveTargetLocation(self)) recruit_dont_know_food_sequence.add_child(self.CanMove(self)) recruit_dont_know_food_sequence.add_child( self.FlyToTargetLocation(self)) recruit_fallback.add_child(have_nectar_sequence) recruit_fallback.add_child(recruit_no_food_fallback) recruit_fallback.add_child(recruit_dont_know_food_sequence) sequence.add_child(self.MakeScoutIfNeeded(self)) sequence.add_child(self.ReduceMovementTimer(self)) sequence.add_child(self.IncreaseAge(self)) sequence.add_child(self.IncreaseHunger(self)) sequence.add_child(self.TakeDamage(self)) sequence.add_child(self.ReplenishHealth(self)) sequence.add_child(self.UpdateOrientationMap(self)) sequence.add_child(logic_fallback) tree.add_child(is_dead_sequence) tree.add_child(sequence) return tree