From 17c59c02edf75d578263abea31dda229622f5e42 Mon Sep 17 00:00:00 2001 From: PhiRite Date: Mon, 15 Sep 2025 15:01:58 +0800 Subject: [PATCH] Added city destroy to Battle.kt --- core/src/com/unciv/logic/battle/Battle.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index 45eedf06bf..04f1ce8655 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -212,6 +212,18 @@ object Battle { if (!defender.isDefeated() || defender !is CityCombatant || attacker !is MapUnitCombatant || !attacker.isMelee() || attacker.unit.hasUnique(UniqueType.CannotCaptureCities, checkCivInfoUniques = true) ) return + + // Must come before normal conquest logic so units that cannot capture cities can still destroy them + // Melee units can capture capitals; any unit with CanDestroyCities can destroy non-capital cities + if (defender.isDefeated() && defender is CityCombatant && attacker is MapUnitCombatant) { + if (!defender.city.isCapital()) { + val destroyFilters = attacker.unit.getMatchingUniques(UniqueType.CanDestroyCities).map { it.params[0] } + if (destroyFilters.any { filter: String -> defender.city.matchesFilter(filter.trim(), attacker.getCivInfo()) }) { + defender.city.destroyCity() + return // crashes due to continueing to conquer after this so its required + } + } + } // Barbarians can't capture cities, instead raiding them for gold if (attacker.unit.civ.isBarbarian) {