def sort_players_by_buildings_in_clearing( players: list[Player], clearing: Clearing, descending: bool = True) -> list[Player]: return sorted(players, key=lambda p: clearing.get_building_count_for_player(p), reverse=descending)
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 halves_damage(self, battle_clearing: Clearing) -> bool: return (self.has_trait(TRAIT_FORTIFIED) and battle_clearing.get_building_count_for_player(self) == battle_clearing.get_piece_count_for_player(self))