diff --git a/core/src/com/unciv/logic/BackwardCompatibility.kt b/core/src/com/unciv/logic/BackwardCompatibility.kt index da01d73ea1..fc4ac55f86 100644 --- a/core/src/com/unciv/logic/BackwardCompatibility.kt +++ b/core/src/com/unciv/logic/BackwardCompatibility.kt @@ -171,8 +171,7 @@ object BackwardCompatibility { fun GameInfo.guaranteeUnitPromotions() { for (tileInfo in tileMap.values) for (unit in tileInfo.getUnits()) for (startingPromo in unit.baseUnit.promotions) - if (startingPromo !in unit.promotions.promotions) - unit.promotions.addPromotion(startingPromo, true) + unit.promotions.addPromotion(startingPromo, true) } /** Move max XP from barbarians to new home */ diff --git a/core/src/com/unciv/logic/map/mapunit/MapUnit.kt b/core/src/com/unciv/logic/map/mapunit/MapUnit.kt index 3f1cdc4fcd..8d5a099d06 100644 --- a/core/src/com/unciv/logic/map/mapunit/MapUnit.kt +++ b/core/src/com/unciv/logic/map/mapunit/MapUnit.kt @@ -875,7 +875,6 @@ class MapUnit : IsPartOfGameInfoSerialization { for (unique in promotionUniques) { if (!this.matchesFilter(unique.params[2])) continue val promotion = unique.params[0] - if (promotion in promotions.promotions) continue promotions.addPromotion(promotion, true) } diff --git a/core/src/com/unciv/logic/map/mapunit/UnitPromotions.kt b/core/src/com/unciv/logic/map/mapunit/UnitPromotions.kt index 554e25977b..6121af003b 100644 --- a/core/src/com/unciv/logic/map/mapunit/UnitPromotions.kt +++ b/core/src/com/unciv/logic/map/mapunit/UnitPromotions.kt @@ -63,6 +63,7 @@ class UnitPromotions : IsPartOfGameInfoSerialization { } fun addPromotion(promotionName: String, isFree: Boolean = false) { + if (promotions.contains(promotionName)) return val ruleset = unit.civ.gameInfo.ruleset val promotion = ruleset.unitPromotions[promotionName] ?: return diff --git a/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt b/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt index b5a972fbbb..f8f0f7ee18 100644 --- a/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt +++ b/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt @@ -246,7 +246,6 @@ class BaseUnit : RulesetObject(), INonPerpetualConstruction { else yield(RejectionReasonType.CannotBeBuilt.toInstance()) } - // Expensive, since adding and removing the fake unit causes side-effects if (city != null && isAirUnit()) { // Not actually added to civ so doesn't require destroy val fakeUnit = getMapUnit(civ, Constants.NO_ID)