mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-27 13:55:54 -04:00
modding: Negative tile damage cannot heal more than max health
This commit is contained in:
parent
c9212e19c2
commit
75c4be39a2
@ -25,6 +25,7 @@ class MapUnitCombatant(val unit: MapUnit) : ICombatant {
|
|||||||
|
|
||||||
override fun takeDamage(damage: Int) {
|
override fun takeDamage(damage: Int) {
|
||||||
unit.health -= damage
|
unit.health -= damage
|
||||||
|
if (unit.health > 100) unit.health = 100 // For cheating modders, e.g. negative tile damage
|
||||||
if (unit.health < 0) unit.health = 0
|
if (unit.health < 0) unit.health = 0
|
||||||
if (isDefeated()) unit.destroy()
|
if (isDefeated()) unit.destroy()
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.unciv.logic.map.mapunit
|
package com.unciv.logic.map.mapunit
|
||||||
|
|
||||||
import com.unciv.UncivGame
|
import com.unciv.UncivGame
|
||||||
|
import com.unciv.logic.battle.MapUnitCombatant
|
||||||
import com.unciv.logic.civilization.LocationAction
|
import com.unciv.logic.civilization.LocationAction
|
||||||
import com.unciv.logic.civilization.NotificationCategory
|
import com.unciv.logic.civilization.NotificationCategory
|
||||||
import com.unciv.logic.civilization.NotificationIcon
|
import com.unciv.logic.civilization.NotificationIcon
|
||||||
@ -83,7 +84,7 @@ class UnitTurnManager(val unit: MapUnit) {
|
|||||||
}.maxByOrNull { it.second }
|
}.maxByOrNull { it.second }
|
||||||
?: return
|
?: return
|
||||||
if (damage == 0) return
|
if (damage == 0) return
|
||||||
unit.health -= damage
|
MapUnitCombatant(unit).takeDamage(damage)
|
||||||
val improvementName = citadelTile.improvement!! // guarded by `getUnpillagedImprovement() != null` above
|
val improvementName = citadelTile.improvement!! // guarded by `getUnpillagedImprovement() != null` above
|
||||||
val improvementIcon = "ImprovementIcons/$improvementName"
|
val improvementIcon = "ImprovementIcons/$improvementName"
|
||||||
val locations = LocationAction(citadelTile.position, unit.currentTile.position)
|
val locations = LocationAction(citadelTile.position, unit.currentTile.position)
|
||||||
@ -112,9 +113,11 @@ class UnitTurnManager(val unit: MapUnit) {
|
|||||||
|
|
||||||
private fun doTerrainDamage() {
|
private fun doTerrainDamage() {
|
||||||
val tileDamage = unit.getDamageFromTerrain()
|
val tileDamage = unit.getDamageFromTerrain()
|
||||||
unit.health -= tileDamage
|
if (tileDamage == 0) return
|
||||||
|
|
||||||
if (unit.health <= 0) {
|
MapUnitCombatant(unit).takeDamage(tileDamage)
|
||||||
|
|
||||||
|
if (unit.isDestroyed) {
|
||||||
unit.civ.addNotification(
|
unit.civ.addNotification(
|
||||||
"Our [${unit.name}] took [$tileDamage] tile damage and was destroyed",
|
"Our [${unit.name}] took [$tileDamage] tile damage and was destroyed",
|
||||||
unit.currentTile.position,
|
unit.currentTile.position,
|
||||||
@ -122,8 +125,7 @@ class UnitTurnManager(val unit: MapUnit) {
|
|||||||
unit.name,
|
unit.name,
|
||||||
NotificationIcon.Death
|
NotificationIcon.Death
|
||||||
)
|
)
|
||||||
unit.destroy()
|
} else unit.civ.addNotification(
|
||||||
} else if (tileDamage > 0) unit.civ.addNotification(
|
|
||||||
"Our [${unit.name}] took [$tileDamage] tile damage",
|
"Our [${unit.name}] took [$tileDamage] tile damage",
|
||||||
unit.currentTile.position,
|
unit.currentTile.position,
|
||||||
NotificationCategory.Units,
|
NotificationCategory.Units,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user