def ask_upgrade(self, player: Player): available_colors = self.available_color_to_upgrade(player.owned_fields, player.mortgage_fields) if len(player.owned_fields) == 0 or len(available_colors) == 0: return else: available_fields = [] for fields in player.owned_fields.values(): for field in fields: if not isinstance(field, Utility) and not isinstance(field, Railway): if field.color in available_colors and field.can_upgrade: available_fields.append(field) if len(available_fields) > 0: for field in available_fields: if player.in_game: while field.num_of_house < 4: if not player.in_game: return if player.balance > field.cost_of_upgrade: answer = player.build_house(self, field) if answer: self.upgrade_property(player, field) else: break else: break