def berserker_initiate_battle(self, clearing: Clearing) -> None: potential_targets = clearing.get_all_other_players_in_location(self) # Sort in reverse order from our tie-breaking priority: Setup order -> most pieces potential_targets = sort_players_by_setup_order(potential_targets) potential_targets = sort_players_by_pieces_in_clearing(potential_targets, clearing) if potential_targets: self.battle(clearing, potential_targets[0])
def get_max_enemy_rule_value_in_clearing(self, clearing: Clearing) -> int: max_enemy_rule_value = 0 for other_player in clearing.get_all_other_players_in_location(self): rule_value = other_player.get_rule_value(clearing) if rule_value > max_enemy_rule_value: max_enemy_rule_value = rule_value return max_enemy_rule_value
def get_defenseless_enemy_buildings_in_clearing(clearing: Clearing, acting_player: Player) -> int: defenseless_buildings = 0 for player in clearing.get_all_other_players_in_location(acting_player): if player.is_defenseless(clearing): defenseless_buildings += clearing.get_building_count_for_player( player) return defenseless_buildings
def does_rule_clearing(self, clearing: Clearing) -> bool: all_players_in_clearing = clearing.get_all_other_players_in_location( self) own_rule_value_in_clearing = self.get_rule_value(clearing) if own_rule_value_in_clearing == 0: return False for player in all_players_in_clearing: # LORDS OF THE FOREST: Eyrie Dynasties rule tied clearings if player.get_rule_value(clearing) > own_rule_value_in_clearing: return False return True