From a853851cb867a14b0a0b6fddbae4675dff07810c Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sun, 11 Jun 2023 12:22:36 +0300 Subject: [PATCH] Resolved #9556 - Transform uniques accept conditionals correctly --- .../worldscreen/unit/actions/UnitActions.kt | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt index 22af5fd9ce..e1921e7ba1 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActions.kt @@ -42,7 +42,7 @@ object UnitActions { val actionList = ArrayList() // Determined by unit uniques - addTransformAction(unit, actionList) + addTransformActions(unit, actionList) addParadropAction(unit, actionList) addAirSweepAction(unit, actionList) addSetupAction(unit, actionList) @@ -309,28 +309,27 @@ object UnitActions { } } - private fun addTransformAction( + private fun addTransformActions( unit: MapUnit, actionList: ArrayList ) { - val upgradeAction = getTransformAction(unit) - if (upgradeAction != null) actionList += upgradeAction + val upgradeAction = getTransformActions(unit) + actionList += upgradeAction } /** */ - private fun getTransformAction( + private fun getTransformActions( unit: MapUnit - ): ArrayList? { - if (!unit.baseUnit().hasUnique(UniqueType.CanTransform)) return null // can't upgrade to anything + ): ArrayList { val unitTile = unit.getTile() val civInfo = unit.civ + val stateForConditionals = StateForConditionals(unit = unit, civInfo = civInfo, tile = unitTile) val transformList = ArrayList() - for (unique in unit.baseUnit().getMatchingUniques(UniqueType.CanTransform, - StateForConditionals(unit = unit, civInfo = civInfo, tile = unitTile))) { + for (unique in unit.baseUnit().getMatchingUniques(UniqueType.CanTransform, stateForConditionals)) { val unitToTransformTo = civInfo.getEquivalentUnit(unique.params[0]) - val stateForConditionals = StateForConditionals(unit.civ, unit = unit) - if (unitToTransformTo.getMatchingUniques(UniqueType.OnlyAvailableWhen).any { !it.conditionalsApply(stateForConditionals) }) + if (unitToTransformTo.getMatchingUniques(UniqueType.OnlyAvailableWhen) + .any { !it.conditionalsApply(stateForConditionals) }) continue // Check _new_ resource requirements