mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-24 03:53:12 -04:00
New unit triggers to gain/lose movement points
This commit is contained in:
parent
7f6eaacf3f
commit
5e10698abc
@ -55,6 +55,7 @@ class MapUnit : IsPartOfGameInfoSerialization {
|
|||||||
*/
|
*/
|
||||||
var instanceName: String? = null
|
var instanceName: String? = null
|
||||||
|
|
||||||
|
/** Should not be changed directly - instead use [useMovementPoints] */
|
||||||
var currentMovement: Float = 0f
|
var currentMovement: Float = 0f
|
||||||
var health: Int = 100
|
var health: Int = 100
|
||||||
var id: Int = Constants.NO_ID
|
var id: Int = Constants.NO_ID
|
||||||
@ -701,10 +702,15 @@ class MapUnit : IsPartOfGameInfoSerialization {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Can accept a negative number to gain movement points */
|
||||||
fun useMovementPoints(amount: Float) {
|
fun useMovementPoints(amount: Float) {
|
||||||
turnsFortified = 0
|
turnsFortified = 0
|
||||||
currentMovement -= amount
|
currentMovement -= amount
|
||||||
if (currentMovement < 0) currentMovement = 0f
|
if (currentMovement < 0) currentMovement = 0f
|
||||||
|
if (amount < 0) {
|
||||||
|
val maxMovement = getMaxMovement().toFloat()
|
||||||
|
if (currentMovement > maxMovement) currentMovement = maxMovement
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun fortify() {
|
fun fortify() {
|
||||||
|
@ -971,7 +971,6 @@ object UniqueTriggerActivation {
|
|||||||
}
|
}
|
||||||
UniqueType.OneTimeUnitGainXP -> {
|
UniqueType.OneTimeUnitGainXP -> {
|
||||||
if (unit == null) return null
|
if (unit == null) return null
|
||||||
if (!unit.baseUnit.isMilitary) return null
|
|
||||||
return {
|
return {
|
||||||
unit.promotions.XP += unique.params[0].toInt()
|
unit.promotions.XP += unique.params[0].toInt()
|
||||||
if (notification != null)
|
if (notification != null)
|
||||||
@ -979,20 +978,21 @@ object UniqueTriggerActivation {
|
|||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UniqueType.OneTimeUnitUpgrade -> {
|
UniqueType.OneTimeUnitGainMovement, UniqueType.OneTimeUnitLoseMovement -> {
|
||||||
if (unit == null) return null
|
if (unit == null) return null
|
||||||
val upgradeAction = UnitActionsUpgrade.getFreeUpgradeAction(unit)
|
|
||||||
if (upgradeAction.none()) return null
|
|
||||||
return {
|
return {
|
||||||
(upgradeAction.minBy { (it as UpgradeUnitAction).unitToUpgradeTo.cost }).action!!()
|
val movementToUse =
|
||||||
if (notification != null)
|
if (unique.type == UniqueType.OneTimeUnitLoseMovement) unique.params[0].toFloat()
|
||||||
unit.civ.addNotification(notification, MapUnitAction(unit), NotificationCategory.Units)
|
else -unique.params[0].toFloat()
|
||||||
|
unit.useMovementPoints(movementToUse)
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UniqueType.OneTimeUnitSpecialUpgrade -> {
|
UniqueType.OneTimeUnitUpgrade, UniqueType.OneTimeUnitSpecialUpgrade -> {
|
||||||
if (unit == null) return null
|
if (unit == null) return null
|
||||||
val upgradeAction = UnitActionsUpgrade.getAncientRuinsUpgradeAction(unit)
|
val upgradeAction =
|
||||||
|
if (unique.type == UniqueType.OneTimeUnitSpecialUpgrade) UnitActionsUpgrade.getAncientRuinsUpgradeAction(unit)
|
||||||
|
else UnitActionsUpgrade.getFreeUpgradeAction(unit)
|
||||||
if (upgradeAction.none()) return null
|
if (upgradeAction.none()) return null
|
||||||
return {
|
return {
|
||||||
(upgradeAction.minBy { (it as UpgradeUnitAction).unitToUpgradeTo.cost }).action!!()
|
(upgradeAction.minBy { (it as UpgradeUnitAction).unitToUpgradeTo.cost }).action!!()
|
||||||
|
@ -836,6 +836,8 @@ enum class UniqueType(
|
|||||||
OneTimeUnitSpecialUpgrade("This Unit upgrades for free including special upgrades", UniqueTarget.UnitTriggerable),
|
OneTimeUnitSpecialUpgrade("This Unit upgrades for free including special upgrades", UniqueTarget.UnitTriggerable),
|
||||||
OneTimeUnitGainPromotion("This Unit gains the [promotion] promotion", UniqueTarget.UnitTriggerable), // Not used in Vanilla
|
OneTimeUnitGainPromotion("This Unit gains the [promotion] promotion", UniqueTarget.UnitTriggerable), // Not used in Vanilla
|
||||||
OneTimeUnitRemovePromotion("This Unit loses the [promotion] promotion", UniqueTarget.UnitTriggerable),
|
OneTimeUnitRemovePromotion("This Unit loses the [promotion] promotion", UniqueTarget.UnitTriggerable),
|
||||||
|
OneTimeUnitGainMovement("This Unit gains [amount] movement", UniqueTarget.UnitTriggerable),
|
||||||
|
OneTimeUnitLoseMovement("This Unit loses [amount] movement", UniqueTarget.UnitTriggerable),
|
||||||
SkipPromotion("Doing so will consume this opportunity to choose a Promotion", UniqueTarget.Promotion),
|
SkipPromotion("Doing so will consume this opportunity to choose a Promotion", UniqueTarget.Promotion),
|
||||||
FreePromotion("This Promotion is free", UniqueTarget.Promotion),
|
FreePromotion("This Promotion is free", UniqueTarget.Promotion),
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user