From a81dd03fcf613403deb59bf11d4d5320b57637b0 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sun, 16 Apr 2023 14:42:48 +0300 Subject: [PATCH] Added "in this city", "in other cities" conditionals for city-based uniques --- core/src/com/unciv/models/ruleset/unique/Unique.kt | 6 ++++-- core/src/com/unciv/models/ruleset/unique/UniqueType.kt | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) 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),