mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-28 06:16:37 -04:00
Resolved #9556 - Transform uniques accept conditionals correctly
This commit is contained in:
parent
4dad953db9
commit
a853851cb8
@ -42,7 +42,7 @@ object UnitActions {
|
|||||||
val actionList = ArrayList<UnitAction>()
|
val actionList = ArrayList<UnitAction>()
|
||||||
|
|
||||||
// Determined by unit uniques
|
// Determined by unit uniques
|
||||||
addTransformAction(unit, actionList)
|
addTransformActions(unit, actionList)
|
||||||
addParadropAction(unit, actionList)
|
addParadropAction(unit, actionList)
|
||||||
addAirSweepAction(unit, actionList)
|
addAirSweepAction(unit, actionList)
|
||||||
addSetupAction(unit, actionList)
|
addSetupAction(unit, actionList)
|
||||||
@ -309,28 +309,27 @@ object UnitActions {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addTransformAction(
|
private fun addTransformActions(
|
||||||
unit: MapUnit,
|
unit: MapUnit,
|
||||||
actionList: ArrayList<UnitAction>
|
actionList: ArrayList<UnitAction>
|
||||||
) {
|
) {
|
||||||
val upgradeAction = getTransformAction(unit)
|
val upgradeAction = getTransformActions(unit)
|
||||||
if (upgradeAction != null) actionList += upgradeAction
|
actionList += upgradeAction
|
||||||
}
|
}
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
private fun getTransformAction(
|
private fun getTransformActions(
|
||||||
unit: MapUnit
|
unit: MapUnit
|
||||||
): ArrayList<UnitAction>? {
|
): ArrayList<UnitAction> {
|
||||||
if (!unit.baseUnit().hasUnique(UniqueType.CanTransform)) return null // can't upgrade to anything
|
|
||||||
val unitTile = unit.getTile()
|
val unitTile = unit.getTile()
|
||||||
val civInfo = unit.civ
|
val civInfo = unit.civ
|
||||||
|
val stateForConditionals = StateForConditionals(unit = unit, civInfo = civInfo, tile = unitTile)
|
||||||
val transformList = ArrayList<UnitAction>()
|
val transformList = ArrayList<UnitAction>()
|
||||||
for (unique in unit.baseUnit().getMatchingUniques(UniqueType.CanTransform,
|
for (unique in unit.baseUnit().getMatchingUniques(UniqueType.CanTransform, stateForConditionals)) {
|
||||||
StateForConditionals(unit = unit, civInfo = civInfo, tile = unitTile))) {
|
|
||||||
val unitToTransformTo = civInfo.getEquivalentUnit(unique.params[0])
|
val unitToTransformTo = civInfo.getEquivalentUnit(unique.params[0])
|
||||||
|
|
||||||
val stateForConditionals = StateForConditionals(unit.civ, unit = unit)
|
if (unitToTransformTo.getMatchingUniques(UniqueType.OnlyAvailableWhen)
|
||||||
if (unitToTransformTo.getMatchingUniques(UniqueType.OnlyAvailableWhen).any { !it.conditionalsApply(stateForConditionals) })
|
.any { !it.conditionalsApply(stateForConditionals) })
|
||||||
continue
|
continue
|
||||||
|
|
||||||
// Check _new_ resource requirements
|
// Check _new_ resource requirements
|
||||||
|
Loading…
x
Reference in New Issue
Block a user