diff --git a/core/src/com/unciv/models/ruleset/unique/Unique.kt b/core/src/com/unciv/models/ruleset/unique/Unique.kt index 7a1a7ea57c..ff61b94b87 100644 --- a/core/src/com/unciv/models/ruleset/unique/Unique.kt +++ b/core/src/com/unciv/models/ruleset/unique/Unique.kt @@ -249,7 +249,10 @@ class Unique(val text: String, val sourceObjectType: UniqueTarget? = null, val s state.ourCombatant != null && state.ourCombatant.getHealth() < condition.params[0].toInt() UniqueType.ConditionalHasNotUsedOtherActions -> state.unit != null && + // OLD format state.unit.run { limitedActionsUnitCanDo().all { abilityUsesLeft[it] == maxAbilityUses[it] } } + // NEW format + && state.unit.abilityToTimesUsed.isEmpty() UniqueType.ConditionalInTiles -> relevantTile?.matchesFilter(condition.params[0], state.civInfo) == true 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 00fbfc987c..adc9f00ebb 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 @@ -751,8 +751,7 @@ object UnitActions { val extraTimes = unit.getMatchingUniques(actionUnique.type!!) .filter { it.text.removeConditionals() == actionUnique.text.removeConditionals() } .flatMap { unique -> unique.conditionals.filter { it.type == UniqueType.UnitActionExtraLimitedTimes } } - .map { it.params[0].toInt() } - .sum() + .sumOf { it.params[0].toInt() } val times = actionUnique.conditionals .filter { it.type == UniqueType.UnitActionLimitedTimes } diff --git a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsGreatPerson.kt b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsGreatPerson.kt index 5678bd289a..76569c9fa1 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsGreatPerson.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsGreatPerson.kt @@ -15,7 +15,8 @@ object UnitActionsGreatPerson { internal fun addGreatPersonActions(unit: MapUnit, actionList: ArrayList, tile: Tile) { - if (unit.currentMovement > 0) for (unique in unit.getUniques()) when (unique.type) { + if (unit.currentMovement <= 0) return + for (unique in unit.getUniques()) when (unique.type) { UniqueType.CanHurryResearch -> { actionList += UnitAction( UnitActionType.HurryResearch,