mirror of
https://github.com/yairm210/Unciv.git
synced 2025-03-10 12:51:16 +07:00
Bonus damage additive
Fixed 'melee attack from 2 tiles away'
This commit is contained in:
parent
280d3da933
commit
6df871a8bc
@ -202,18 +202,16 @@ object BattleDamage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun modifiersToMultiplicationBonus(modifiers: Counter<String>): Float {
|
private fun modifiersToFinalBonus(modifiers: Counter<String>): Float {
|
||||||
var finalModifier = 1f
|
var finalModifier = 1f
|
||||||
for (modifierValue in modifiers.values) finalModifier *= modifierValue.toPercent()
|
for (modifierValue in modifiers.values) finalModifier += modifierValue / 100f
|
||||||
return finalModifier
|
return finalModifier
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getHealthDependantDamageRatio(combatant: ICombatant): Float {
|
private fun getHealthDependantDamageRatio(combatant: ICombatant): Float {
|
||||||
return if (combatant !is MapUnitCombatant
|
return if (combatant !is MapUnitCombatant
|
||||||
|| combatant.unit.hasUnique(UniqueType.NoDamagePenalty, checkCivInfoUniques = true)
|
|| combatant.unit.hasUnique(UniqueType.NoDamagePenalty, checkCivInfoUniques = true)
|
||||||
) {
|
) 1f
|
||||||
1f
|
|
||||||
}
|
|
||||||
// Each 3 points of health reduces damage dealt by 1%
|
// Each 3 points of health reduces damage dealt by 1%
|
||||||
else 1 - (100 - combatant.getHealth()) / 300f
|
else 1 - (100 - combatant.getHealth()) / 300f
|
||||||
}
|
}
|
||||||
@ -226,7 +224,7 @@ object BattleDamage {
|
|||||||
attacker: ICombatant,
|
attacker: ICombatant,
|
||||||
defender: ICombatant
|
defender: ICombatant
|
||||||
): Float {
|
): Float {
|
||||||
val attackModifier = modifiersToMultiplicationBonus(getAttackModifiers(attacker, defender))
|
val attackModifier = modifiersToFinalBonus(getAttackModifiers(attacker, defender))
|
||||||
return max(1f, attacker.getAttackingStrength() * attackModifier)
|
return max(1f, attacker.getAttackingStrength() * attackModifier)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -235,7 +233,7 @@ object BattleDamage {
|
|||||||
* Includes defence modifiers
|
* Includes defence modifiers
|
||||||
*/
|
*/
|
||||||
fun getDefendingStrength(attacker: ICombatant, defender: ICombatant): Float {
|
fun getDefendingStrength(attacker: ICombatant, defender: ICombatant): Float {
|
||||||
val defenceModifier = modifiersToMultiplicationBonus(getDefenceModifiers(attacker, defender))
|
val defenceModifier = modifiersToFinalBonus(getDefenceModifiers(attacker, defender))
|
||||||
return max(1f, defender.getDefendingStrength(attacker.isRanged()) * defenceModifier)
|
return max(1f, defender.getDefendingStrength(attacker.isRanged()) * defenceModifier)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -347,7 +347,7 @@ class TileMap : IsPartOfGameInfoSerialization {
|
|||||||
val cTileHeight = cTile.tileHeight
|
val cTileHeight = cTile.tileHeight
|
||||||
|
|
||||||
// For the sightdistance+1 layer - that's "one out of sight" - it's only visible if it's higher than the current tile
|
// For the sightdistance+1 layer - that's "one out of sight" - it's only visible if it's higher than the current tile
|
||||||
if (i == sightDistance+1 && cTileHeight <= aUnitHeight)
|
if (i == sightDistance+1 && (cTileHeight <= aUnitHeight || forAttack))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user