diff --git a/core/src/com/unciv/models/ruleset/unique/Unique.kt b/core/src/com/unciv/models/ruleset/unique/Unique.kt index c037b06d99..8d4f4ba22c 100644 --- a/core/src/com/unciv/models/ruleset/unique/Unique.kt +++ b/core/src/com/unciv/models/ruleset/unique/Unique.kt @@ -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 -> diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index 29e146e4f3..351ba6587e 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -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),