From ba085ca5858bd92841c193f59e2b902836ae587e Mon Sep 17 00:00:00 2001 From: yairm210 Date: Fri, 1 Nov 2024 13:21:58 +0200 Subject: [PATCH] modding: Resolved #12380 - "upon gaining/losing the [promotion] status" triggers correctly --- core/src/com/unciv/logic/map/mapunit/MapUnit.kt | 6 ++++-- core/src/com/unciv/logic/map/mapunit/UnitPromotions.kt | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/core/src/com/unciv/logic/map/mapunit/MapUnit.kt b/core/src/com/unciv/logic/map/mapunit/MapUnit.kt index cb99d6c821..10f81c7b64 100644 --- a/core/src/com/unciv/logic/map/mapunit/MapUnit.kt +++ b/core/src/com/unciv/logic/map/mapunit/MapUnit.kt @@ -1043,7 +1043,8 @@ class MapUnit : IsPartOfGameInfoSerialization { updateUniques() for (unique in getTriggeredUniques(UniqueType.TriggerUponStatusGain)) - if (unique.params[0] == name) + if (unique.getModifiers(UniqueType.TriggerUponStatusGain) + .any { it.params[0] == name }) UniqueTriggerActivation.triggerUnique(unique, this) } @@ -1054,7 +1055,8 @@ class MapUnit : IsPartOfGameInfoSerialization { updateUniques() for (unique in getTriggeredUniques(UniqueType.TriggerUponStatusLoss)) - if (unique.params[0] == name) + if (unique.getModifiers(UniqueType.TriggerUponStatusLoss) + .any { it.params[0] == name }) UniqueTriggerActivation.triggerUnique(unique, this) } diff --git a/core/src/com/unciv/logic/map/mapunit/UnitPromotions.kt b/core/src/com/unciv/logic/map/mapunit/UnitPromotions.kt index 73545a9f02..0d8d850639 100644 --- a/core/src/com/unciv/logic/map/mapunit/UnitPromotions.kt +++ b/core/src/com/unciv/logic/map/mapunit/UnitPromotions.kt @@ -77,7 +77,8 @@ class UnitPromotions : IsPartOfGameInfoSerialization { UniqueTriggerActivation.triggerUnique(unique, unit) for (unique in unit.getTriggeredUniques(UniqueType.TriggerUponPromotionGain)) - if (unique.params[0] == promotionName) + if (unique.getModifiers(UniqueType.TriggerUponPromotionGain) + .any { it.params[0] == promotionName }) UniqueTriggerActivation.triggerUnique(unique, unit) } @@ -106,7 +107,8 @@ class UnitPromotions : IsPartOfGameInfoSerialization { unit.updateVisibleTiles() for (unique in unit.getTriggeredUniques(UniqueType.TriggerUponPromotionLoss)) - if (unique.params[0] == promotionName) + if (unique.getModifiers(UniqueType.TriggerUponPromotionLoss) + .any { it.params[0] == promotionName }) UniqueTriggerActivation.triggerUnique(unique, unit) } }