From 146ad7481e3d5d657fa058d4edbc1434b66f63f9 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sun, 5 Mar 2023 08:53:27 +0200 Subject: [PATCH] Fixed flanking bonus calculation when attacking unit is not adjacent to enemy --- core/src/com/unciv/logic/battle/BattleDamage.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/src/com/unciv/logic/battle/BattleDamage.kt b/core/src/com/unciv/logic/battle/BattleDamage.kt index 3333da0ac4..4028d05909 100644 --- a/core/src/com/unciv/logic/battle/BattleDamage.kt +++ b/core/src/com/unciv/logic/battle/BattleDamage.kt @@ -111,7 +111,7 @@ object BattleDamage { if (attacker is MapUnitCombatant) { if (attacker.unit.isEmbarked() - && !(attacker.unit.hasUnique(UniqueType.AttackAcrossCoast))) + && !attacker.unit.hasUnique(UniqueType.AttackAcrossCoast)) modifiers["Landing"] = -50 // Land Melee Unit attacking to Water @@ -127,17 +127,17 @@ object BattleDamage { modifiers.add(getAirSweepAttackModifiers(attacker)) if (attacker.isMelee()) { - val numberOfAttackersSurroundingDefender = defender.getTile().neighbors.count { - it.militaryUnit != null + val numberOfOtherAttackersSurroundingDefender = defender.getTile().neighbors.count { + it.militaryUnit != null && it.militaryUnit != attacker.unit && it.militaryUnit!!.owner == attacker.getCivInfo().civName && MapUnitCombatant(it.militaryUnit!!).isMelee() } - if (numberOfAttackersSurroundingDefender > 1) { + if (numberOfOtherAttackersSurroundingDefender > 0) { var flankingBonus = 10f //https://www.carlsguides.com/strategy/civilization5/war/combatbonuses.php for (unique in attacker.unit.getMatchingUniques(UniqueType.FlankAttackBonus, checkCivInfoUniques = true)) flankingBonus *= unique.params[0].toPercent() modifiers["Flanking"] = - (flankingBonus * (numberOfAttackersSurroundingDefender - 1)).toInt() + (flankingBonus * numberOfOtherAttackersSurroundingDefender).toInt() } if (attacker.getTile().aerialDistanceTo(defender.getTile()) == 1 && attacker.getTile().isConnectedByRiver(defender.getTile()) &&