mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-22 02:42:16 -04:00
Added 'after which this unit is consumed' for units whose only purpose is limited actions
This commit is contained in:
parent
29982eba9e
commit
253c669ba9
@ -1610,7 +1610,7 @@
|
||||
"unitType": "Civilian",
|
||||
"uniques": [
|
||||
"Can hurry technology research",
|
||||
"Can instantly construct a [Academy] improvement <[2] times>",
|
||||
"Can instantly construct a [Academy] improvement <by consuming this unit>",
|
||||
"Great Person - [Science]", "Unbuildable", "Uncapturable"],
|
||||
"movement": 2
|
||||
},
|
||||
|
@ -511,6 +511,7 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags:
|
||||
UnitActionMovementCost("for [amount] movement", UniqueTarget.UnitActionModifier),
|
||||
UnitActionOnce("once", UniqueTarget.UnitActionModifier),
|
||||
UnitActionLimitedTimes("[amount] times", UniqueTarget.UnitActionModifier),
|
||||
UnitActionAfterWhichConsumed("after which this unit is consumed", UniqueTarget.UnitActionModifier),
|
||||
|
||||
// endregion
|
||||
|
||||
|
@ -704,6 +704,11 @@ object UnitActions {
|
||||
when (conditional.type){
|
||||
UniqueType.UnitActionConsumeUnit -> unit.consume()
|
||||
UniqueType.UnitActionLimitedTimes -> {
|
||||
if (usagesLeft(unit, actionUnique) == 1
|
||||
&& actionUnique.conditionals.any { it.type==UniqueType.UnitActionAfterWhichConsumed }) {
|
||||
unit.consume()
|
||||
continue
|
||||
}
|
||||
val usagesSoFar = unit.abilityToTimesUsed[actionUnique.placeholderText] ?: 0
|
||||
unit.abilityToTimesUsed[actionUnique.placeholderText] = usagesSoFar + 1
|
||||
}
|
||||
@ -736,12 +741,16 @@ object UnitActions {
|
||||
|
||||
fun getSideEffectString(unit:MapUnit, actionUnique: Unique): String {
|
||||
val effects = ArrayList<String>()
|
||||
if (actionUnique.conditionals.any { it.type == UniqueType.UnitActionConsumeUnit }) effects += Fonts.death.toString()
|
||||
else effects += getMovementPointsToUse(actionUnique).toString() + Fonts.movement
|
||||
|
||||
val maxUsages = getMaxUsages(actionUnique)
|
||||
if (maxUsages!=null) effects += "${usagesLeft(unit, actionUnique)}/$maxUsages"
|
||||
|
||||
if (actionUnique.conditionals.any { it.type == UniqueType.UnitActionConsumeUnit }
|
||||
|| actionUnique.conditionals.any { it.type == UniqueType.UnitActionAfterWhichConsumed } && usagesLeft(unit, actionUnique) == 1
|
||||
) effects += Fonts.death.toString()
|
||||
else effects += getMovementPointsToUse(actionUnique).toString() + Fonts.movement
|
||||
|
||||
|
||||
return if (effects.isEmpty()) ""
|
||||
else "(${effects.joinToString { it.tr() }})"
|
||||
}
|
||||
|
@ -1983,11 +1983,17 @@ Simple unique parameters are explained by mouseover. Complex parameters are expl
|
||||
|
||||
Applicable to: UnitActionModifier
|
||||
|
||||
??? example "<once>"
|
||||
Applicable to: UnitActionModifier
|
||||
|
||||
??? example "<[amount] times>"
|
||||
Example: "<[3] times>"
|
||||
|
||||
Applicable to: UnitActionModifier
|
||||
|
||||
??? example "<after which this unit is consumed>"
|
||||
Applicable to: UnitActionModifier
|
||||
|
||||
|
||||
*[action]: An action that a unit can perform. Currently, there are only two actions part of this: 'Spread Religion' and 'Remove Foreign religions from your own cities'
|
||||
*[amount]: This indicates a whole number, possibly with a + or - sign, such as `2`, `+13`, or `-3`.
|
||||
|
Loading…
x
Reference in New Issue
Block a user