Added "in this city", "in other cities" conditionals for city-based uniques

This commit is contained in:
Yair Morgenstern 2023-04-16 14:42:48 +03:00
parent dea3256c93
commit a81dd03fcf
2 changed files with 6 additions and 2 deletions

View File

@ -37,8 +37,8 @@ class Unique(val text: String, val sourceObjectType: UniqueTarget? = null, val s
val allParams = params + conditionals.flatMap { it.params }
val isLocalEffect = params.contains("in this city")
val isAntiLocalEffect = params.contains("in other cities")
val isLocalEffect = params.contains("in this city") || conditionals.any { it.type == UniqueType.ConditionalInThisCity }
val isAntiLocalEffect = params.contains("in other cities") || conditionals.any { it.type == UniqueType.ConditionalInOtherCities }
fun hasFlag(flag: UniqueFlag) = type != null && type.flags.contains(flag)
@ -204,6 +204,8 @@ class Unique(val text: String, val sourceObjectType: UniqueTarget? = null, val s
UniqueType.ConditionalBuildingBuilt ->
state.civInfo != null && state.civInfo.cities.any { it.cityConstructions.containsBuildingOrEquivalent(condition.params[0]) }
// Filtered via city.getMatchingUniques
UniqueType.ConditionalInThisCity -> true
UniqueType.ConditionalCityWithBuilding ->
state.city != null && state.city.cityConstructions.containsBuildingOrEquivalent(condition.params[0])
UniqueType.ConditionalCityWithoutBuilding ->

View File

@ -671,6 +671,8 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags:
ConditionalWhenBelowAmountResource("when below [amount] [resource]", UniqueTarget.Conditional),
/////// city conditionals
ConditionalInThisCity("in this city", UniqueTarget.Conditional),
ConditionalInOtherCities("in other cities", UniqueTarget.Conditional),
ConditionalCityWithBuilding("in cities with a [buildingFilter]", UniqueTarget.Conditional),
ConditionalCityWithoutBuilding("in cities without a [buildingFilter]", UniqueTarget.Conditional),
ConditionalPopulationFilter("in cities with at least [amount] [populationFilter]", UniqueTarget.Conditional),