mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-06 00:09:23 +07:00
Fix: Damage average was raw before clamping to health range (#11041)
This commit is contained in:
@ -200,14 +200,6 @@ class BattleTable(val worldScreen: WorldScreen) : Table() {
|
|||||||
row()
|
row()
|
||||||
}
|
}
|
||||||
|
|
||||||
val maxDamageToDefender = BattleDamage.calculateDamageToDefender(attacker, defender, tileToAttackFrom, 1f)
|
|
||||||
val minDamageToDefender = BattleDamage.calculateDamageToDefender(attacker, defender, tileToAttackFrom, 0f)
|
|
||||||
val avgDamageToDefender = arrayOf(maxDamageToDefender, minDamageToDefender).average().roundToInt()
|
|
||||||
|
|
||||||
val maxDamageToAttacker = BattleDamage.calculateDamageToAttacker(attacker, defender, tileToAttackFrom, 1f)
|
|
||||||
val minDamageToAttacker = BattleDamage.calculateDamageToAttacker(attacker, defender, tileToAttackFrom, 0f)
|
|
||||||
val avgDamageToAttacker = arrayOf(maxDamageToAttacker, minDamageToAttacker).average().roundToInt()
|
|
||||||
|
|
||||||
if (attacker.isMelee() &&
|
if (attacker.isMelee() &&
|
||||||
(defender.isCivilian() || defender is CityCombatant && defender.isDefeated())) {
|
(defender.isCivilian() || defender is CityCombatant && defender.isDefeated())) {
|
||||||
add()
|
add()
|
||||||
@ -218,6 +210,12 @@ class BattleTable(val worldScreen: WorldScreen) : Table() {
|
|||||||
}
|
}
|
||||||
add(defeatedText.toLabel())
|
add(defeatedText.toLabel())
|
||||||
} else {
|
} else {
|
||||||
|
val maxDamageToDefender = BattleDamage.calculateDamageToDefender(attacker, defender, tileToAttackFrom, 1f)
|
||||||
|
val minDamageToDefender = BattleDamage.calculateDamageToDefender(attacker, defender, tileToAttackFrom, 0f)
|
||||||
|
|
||||||
|
val maxDamageToAttacker = BattleDamage.calculateDamageToAttacker(attacker, defender, tileToAttackFrom, 1f)
|
||||||
|
val minDamageToAttacker = BattleDamage.calculateDamageToAttacker(attacker, defender, tileToAttackFrom, 0f)
|
||||||
|
|
||||||
val attackerHealth = attacker.getHealth()
|
val attackerHealth = attacker.getHealth()
|
||||||
val minRemainingLifeAttacker = max(attackerHealth-maxDamageToAttacker, 0)
|
val minRemainingLifeAttacker = max(attackerHealth-maxDamageToAttacker, 0)
|
||||||
val maxRemainingLifeAttacker = max(attackerHealth-minDamageToAttacker, 0)
|
val maxRemainingLifeAttacker = max(attackerHealth-minDamageToAttacker, 0)
|
||||||
@ -229,6 +227,11 @@ class BattleTable(val worldScreen: WorldScreen) : Table() {
|
|||||||
add(getHealthBar(attacker.getMaxHealth(), attacker.getHealth(), maxRemainingLifeAttacker, minRemainingLifeAttacker))
|
add(getHealthBar(attacker.getMaxHealth(), attacker.getHealth(), maxRemainingLifeAttacker, minRemainingLifeAttacker))
|
||||||
add(getHealthBar(defender.getMaxHealth(), defender.getHealth(), maxRemainingLifeDefender, minRemainingLifeDefender)).row()
|
add(getHealthBar(defender.getMaxHealth(), defender.getHealth(), maxRemainingLifeDefender, minRemainingLifeDefender)).row()
|
||||||
|
|
||||||
|
fun avg(vararg values: Int) = values.average().roundToInt()
|
||||||
|
// Don't use original damage estimates - they're raw, before clamping to 0..max
|
||||||
|
val avgDamageToDefender = avg(defenderHealth - minRemainingLifeDefender, defenderHealth - maxRemainingLifeDefender)
|
||||||
|
val avgDamageToAttacker = avg(attackerHealth - minRemainingLifeAttacker, attackerHealth - maxRemainingLifeAttacker)
|
||||||
|
|
||||||
if (minRemainingLifeAttacker == attackerHealth) add(attackerHealth.toLabel())
|
if (minRemainingLifeAttacker == attackerHealth) add(attackerHealth.toLabel())
|
||||||
else if (maxRemainingLifeAttacker == minRemainingLifeAttacker) add("$attackerHealth → $maxRemainingLifeAttacker ($avgDamageToAttacker)".toLabel())
|
else if (maxRemainingLifeAttacker == minRemainingLifeAttacker) add("$attackerHealth → $maxRemainingLifeAttacker ($avgDamageToAttacker)".toLabel())
|
||||||
else add("$attackerHealth → $minRemainingLifeAttacker-$maxRemainingLifeAttacker (~$avgDamageToAttacker)".toLabel())
|
else add("$attackerHealth → $minRemainingLifeAttacker-$maxRemainingLifeAttacker (~$avgDamageToAttacker)".toLabel())
|
||||||
|
Reference in New Issue
Block a user