diff --git a/core/src/com/unciv/logic/city/CityInfo.kt b/core/src/com/unciv/logic/city/CityInfo.kt index 2dca535863..ffdfa5bccc 100644 --- a/core/src/com/unciv/logic/city/CityInfo.kt +++ b/core/src/com/unciv/logic/city/CityInfo.kt @@ -12,6 +12,7 @@ import com.unciv.logic.map.RoadStatus import com.unciv.logic.map.TileInfo import com.unciv.logic.map.TileMap import com.unciv.models.Counter +import com.unciv.models.ruleset.ModOptionsConstants import com.unciv.models.ruleset.Nation import com.unciv.models.ruleset.tile.ResourceSupplyList import com.unciv.models.ruleset.tile.ResourceType @@ -590,7 +591,14 @@ class CityInfo : IsPartOfGameInfoSerialization { fun isHolyCityOf(religionName: String?) = isHolyCity() && religion.religionThisIsTheHolyCityOf == religionName fun canBeDestroyed(justCaptured: Boolean = false): Boolean { - return !isOriginalCapital && !isHolyCity() && (!isCapital() || justCaptured) + val allowRazeCapital = civInfo.gameInfo.ruleSet.modOptions.uniques.contains(ModOptionsConstants.allowRazeCapital) + val allowRazeHolyCity = civInfo.gameInfo.ruleSet.modOptions.uniques.contains(ModOptionsConstants.allowRazeHolyCity) + + if (isOriginalCapital && !allowRazeCapital) return false; + if (isHolyCity() && !allowRazeHolyCity) return false; + if (isCapital() && !justCaptured && !allowRazeCapital) return false; + + return true; } fun getForceEvaluation(): Int { diff --git a/core/src/com/unciv/models/ruleset/Ruleset.kt b/core/src/com/unciv/models/ruleset/Ruleset.kt index 451a4296c9..3081639d11 100644 --- a/core/src/com/unciv/models/ruleset/Ruleset.kt +++ b/core/src/com/unciv/models/ruleset/Ruleset.kt @@ -38,6 +38,8 @@ object ModOptionsConstants { const val allowCityStatesSpawnUnits = "Allow City States to spawn with additional units" const val tradeCivIntroductions = "Can trade civilization introductions for [] Gold" const val disableReligion = "Disable religion" + const val allowRazeCapital = "Allow raze capital" + const val allowRazeHolyCity = "Allow raze holy city" } class ModOptions : IHasUniques {