mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-11 00:08:58 +07:00
Fixed flanking bonus calculation when attacking unit is not adjacent to enemy
This commit is contained in:
@ -111,7 +111,7 @@ object BattleDamage {
|
|||||||
|
|
||||||
if (attacker is MapUnitCombatant) {
|
if (attacker is MapUnitCombatant) {
|
||||||
if (attacker.unit.isEmbarked()
|
if (attacker.unit.isEmbarked()
|
||||||
&& !(attacker.unit.hasUnique(UniqueType.AttackAcrossCoast)))
|
&& !attacker.unit.hasUnique(UniqueType.AttackAcrossCoast))
|
||||||
modifiers["Landing"] = -50
|
modifiers["Landing"] = -50
|
||||||
|
|
||||||
// Land Melee Unit attacking to Water
|
// Land Melee Unit attacking to Water
|
||||||
@ -127,17 +127,17 @@ object BattleDamage {
|
|||||||
modifiers.add(getAirSweepAttackModifiers(attacker))
|
modifiers.add(getAirSweepAttackModifiers(attacker))
|
||||||
|
|
||||||
if (attacker.isMelee()) {
|
if (attacker.isMelee()) {
|
||||||
val numberOfAttackersSurroundingDefender = defender.getTile().neighbors.count {
|
val numberOfOtherAttackersSurroundingDefender = defender.getTile().neighbors.count {
|
||||||
it.militaryUnit != null
|
it.militaryUnit != null && it.militaryUnit != attacker.unit
|
||||||
&& it.militaryUnit!!.owner == attacker.getCivInfo().civName
|
&& it.militaryUnit!!.owner == attacker.getCivInfo().civName
|
||||||
&& MapUnitCombatant(it.militaryUnit!!).isMelee()
|
&& MapUnitCombatant(it.militaryUnit!!).isMelee()
|
||||||
}
|
}
|
||||||
if (numberOfAttackersSurroundingDefender > 1) {
|
if (numberOfOtherAttackersSurroundingDefender > 0) {
|
||||||
var flankingBonus = 10f //https://www.carlsguides.com/strategy/civilization5/war/combatbonuses.php
|
var flankingBonus = 10f //https://www.carlsguides.com/strategy/civilization5/war/combatbonuses.php
|
||||||
for (unique in attacker.unit.getMatchingUniques(UniqueType.FlankAttackBonus, checkCivInfoUniques = true))
|
for (unique in attacker.unit.getMatchingUniques(UniqueType.FlankAttackBonus, checkCivInfoUniques = true))
|
||||||
flankingBonus *= unique.params[0].toPercent()
|
flankingBonus *= unique.params[0].toPercent()
|
||||||
modifiers["Flanking"] =
|
modifiers["Flanking"] =
|
||||||
(flankingBonus * (numberOfAttackersSurroundingDefender - 1)).toInt()
|
(flankingBonus * numberOfOtherAttackersSurroundingDefender).toInt()
|
||||||
}
|
}
|
||||||
if (attacker.getTile().aerialDistanceTo(defender.getTile()) == 1 &&
|
if (attacker.getTile().aerialDistanceTo(defender.getTile()) == 1 &&
|
||||||
attacker.getTile().isConnectedByRiver(defender.getTile()) &&
|
attacker.getTile().isConnectedByRiver(defender.getTile()) &&
|
||||||
|
Reference in New Issue
Block a user