chore: Added unit.removeStatus helper function

This commit is contained in:
yairm210 2024-09-28 21:24:42 +03:00
parent ef53f35e0f
commit 7f45ccd7b7
4 changed files with 13 additions and 6 deletions

View File

@ -1041,6 +1041,13 @@ class MapUnit : IsPartOfGameInfoSerialization {
statuses.add(status)
updateUniques()
}
fun removeStatus(name:String){
val wereRemoved = statuses.removeAll { it.name == name }
if (wereRemoved){
updateUniques()
}
}
fun isNuclearWeapon() = hasUnique(UniqueType.NuclearWeapon)

View File

@ -169,7 +169,7 @@ class UnitTurnManager(val unit: MapUnit) {
for (status in unit.statuses.toList()){
status.turnsLeft--
if (status.turnsLeft <= 0) unit.statuses.remove(status)
if (status.turnsLeft <= 0) unit.removeStatus(status.name)
}
unit.updateUniques()
}

View File

@ -985,9 +985,9 @@ object UniqueTriggerActivation {
}
UniqueType.OneTimeUnitLoseStatus -> {
if (unit == null) return null
val unitStatus = unit.statuses.firstOrNull { it.name == unique.params[1] } ?: return null
if (unit.statuses.none { it.name == unique.params[1] }) return null
return {
unit.statuses.remove(unitStatus)
unit.removeStatus(unique.params[1])
true
}
}

View File

@ -120,9 +120,9 @@ object UnitActionModifiers {
UniqueType.UnitActionRemovingPromotion -> {
val promotionName = conditional.params[0]
// if has a status, remove that instead - the promotion is 'safe'
val unitStatus = unit.statuses.firstOrNull { it.name == promotionName }
if (unitStatus != null) {
unit.statuses.remove(unitStatus)
val unitStatus =
if (unit.statuses.any { it.name == promotionName }) {
unit.removeStatus(promotionName)
} else { // check for real promotion
unit.promotions.removePromotion(promotionName)
}