From d07c77fa2b43a29f5dd61d04f2b5ab755f01cb1b Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Mon, 16 Jan 2023 23:02:48 +0200 Subject: [PATCH] Added building trigger with city filter --- core/src/com/unciv/logic/city/CityConstructions.kt | 9 ++++++++- core/src/com/unciv/models/ruleset/unique/UniqueType.kt | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/core/src/com/unciv/logic/city/CityConstructions.kt b/core/src/com/unciv/logic/city/CityConstructions.kt index 844d48c37e..7d0091a295 100644 --- a/core/src/com/unciv/logic/city/CityConstructions.kt +++ b/core/src/com/unciv/logic/city/CityConstructions.kt @@ -442,10 +442,17 @@ class CityConstructions : IsPartOfGameInfoSerialization { } } - if (construction is Building) + if (construction is Building){ for (unique in cityInfo.civInfo.getTriggeredUniques(UniqueType.TriggerUponConstructingBuilding, StateForConditionals(cityInfo.civInfo, cityInfo))) if (unique.conditionals.any {it.type == UniqueType.TriggerUponConstructingBuilding && construction.matchesFilter(it.params[0])}) UniqueTriggerActivation.triggerCivwideUnique(unique, cityInfo.civInfo, cityInfo) + + for (unique in cityInfo.civInfo.getTriggeredUniques(UniqueType.TriggerUponConstructingBuildingCityFilter, StateForConditionals(cityInfo.civInfo, cityInfo))) + if (unique.conditionals.any {it.type == UniqueType.TriggerUponConstructingBuildingCityFilter + && construction.matchesFilter(it.params[0]) + && cityInfo.matchesFilter(it.params[1])}) + UniqueTriggerActivation.triggerCivwideUnique(unique, cityInfo.civInfo, cityInfo) + } } fun addBuilding(buildingName: String) { diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index af43dc4ae0..aca32a2028 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -706,10 +706,12 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags: TriggerUponEnteringGoldenAge("upon entering a Golden Age", UniqueTarget.TriggerCondition), TriggerUponConqueringCity("upon conquering a city", UniqueTarget.TriggerCondition), TriggerUponConstructingBuilding("upon constructing [buildingFilter]", UniqueTarget.TriggerCondition), + // Not auto cityfiltered, since 'in all cities' can be read 'only if it's in all cities' + TriggerUponConstructingBuildingCityFilter("upon constructing [buildingFilter] [cityFilter]", UniqueTarget.TriggerCondition), TriggerUponFoundingPantheon("upon founding a Pantheon", UniqueTarget.TriggerCondition), TriggerUponFoundingReligion("upon founding a Religion", UniqueTarget.TriggerCondition), - TriggerUponEnhancingReligion("upon enahncing a Religion", UniqueTarget.TriggerCondition), + TriggerUponEnhancingReligion("upon enhancing a Religion", UniqueTarget.TriggerCondition), //endregion