From 3a477ae24b31df1f9a49e475a8ac7b942d7d9113 Mon Sep 17 00:00:00 2001 From: Agetian Date: Mon, 10 Jul 2017 18:04:31 +0000 Subject: [PATCH] - FightEffect: damage should be dealt simultaneously (e.g. Hero of Iroas vs. Cystbearer fighting via Dromoka's Command giving a +1/+1 counter to Iroas should still make Hero of Iroas deal 4 damage). --- .../forge/game/ability/effects/FightEffect.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java b/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java index 2f0dcb53109..b722bea9eea 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java @@ -59,8 +59,12 @@ public class FightEffect extends DamageBaseEffect { CardDamageMap damageMap = new CardDamageMap(); CardDamageMap preventMap = new CardDamageMap(); - dealDamage(fighters.get(0), fighters.get(1), fightToughness, damageMap, preventMap); - dealDamage(fighters.get(1), fighters.get(0), fightToughness, damageMap, preventMap); + // Damage is dealt simultaneously, so we calculate the damage from source to target before it is applied + final int dmg1 = fightToughness ? fighters.get(0).getNetToughness() : fighters.get(0).getNetPower(); + final int dmg2 = fightToughness ? fighters.get(1).getNetToughness() : fighters.get(1).getNetPower(); + + dealDamage(fighters.get(0), fighters.get(1), dmg1, damageMap, preventMap); + dealDamage(fighters.get(1), fighters.get(0), dmg2, damageMap, preventMap); preventMap.triggerPreventDamage(false); damageMap.dealLifelinkDamage(); @@ -117,11 +121,8 @@ public class FightEffect extends DamageBaseEffect { return fighterList; } - private void dealDamage(Card source, Card target, boolean fightToughness, CardDamageMap damageMap, - CardDamageMap preventMap) { - final int dmg = fightToughness ? source.getNetToughness() : source.getNetPower(); - - target.addDamage(dmg, source, damageMap, preventMap); + private void dealDamage(Card source, Card target, int damage, CardDamageMap damageMap, CardDamageMap preventMap) { + target.addDamage(damage, source, damageMap, preventMap); } }