"if it hasn't used other actions yet" conditional works with new limited unit actions ("<[amount] times>") - paves the way for real deprecation of religion action shenanigans

This commit is contained in:
Yair Morgenstern 2023-09-28 09:25:35 +03:00
parent 2363269814
commit 6ffe13e780
3 changed files with 6 additions and 3 deletions

View File

@ -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

View File

@ -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 }

View File

@ -15,7 +15,8 @@ object UnitActionsGreatPerson {
internal fun addGreatPersonActions(unit: MapUnit, actionList: ArrayList<UnitAction>, 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,