Raze Special Cities (#8115)

* Support new ModOptions uniques: Allow raze capital, Allow raze holy city.

* Break up long set of boolean checks into if statements.
This commit is contained in:
Philip Keiter
2022-12-21 03:49:44 -06:00
committed by GitHub
parent 2bc91f1216
commit 827cb28d05
2 changed files with 11 additions and 1 deletions

View File

@ -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 {

View File

@ -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 {