diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index 4e3fbe06b5..5f43548455 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -369,11 +369,6 @@ object Battle { } city.hasJustBeenConquered = true - if (attackerCiv.isBarbarian()) { - city.destroyCity() - return - } - for (unique in attackerCiv.getMatchingUniques("Upon capturing a city, receive [] times its [] production as [] immediately")) { attackerCiv.addStat( Stat.valueOf(unique.params[2]), @@ -381,6 +376,11 @@ object Battle { ) } + if (attackerCiv.isBarbarian() || attackerCiv.isOneCityChallenger()) { + city.destroyCity(true) + return + } + if (attackerCiv.isPlayerCivilization()) { attackerCiv.popupAlerts.add(PopupAlert(AlertType.CityConquered, city.id)) UncivGame.Current.settings.addCompletedTutorialTask("Conquer a city") diff --git a/core/src/com/unciv/logic/city/CityInfo.kt b/core/src/com/unciv/logic/city/CityInfo.kt index 9130938d14..2ba4d2fbf5 100644 --- a/core/src/com/unciv/logic/city/CityInfo.kt +++ b/core/src/com/unciv/logic/city/CityInfo.kt @@ -440,9 +440,11 @@ class CityInfo { } } - fun destroyCity() { - // Original capitals can't be destroyed - if (isOriginalCapital) return + fun destroyCity(overrideSafeties: Boolean = false) { + // Original capitals can't be destroyed. + // Unless they are captured by a one-city-challenger for some reason. + // This was tested in the original. + if (isOriginalCapital && !overrideSafeties) return for (airUnit in getCenterTile().airUnits.toList()) airUnit.destroy() //Destroy planes stationed in city