From cf609ad591a70b6b9bf7699123f0f6832facfadf Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Thu, 28 Jan 2021 22:21:16 +0100 Subject: [PATCH 1/2] Fix Planeswalkers taking damage when phasing out during combat --- .../src/main/java/forge/game/combat/Combat.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/combat/Combat.java b/forge-game/src/main/java/forge/game/combat/Combat.java index 168aed42db8..210b9eaa919 100644 --- a/forge-game/src/main/java/forge/game/combat/Combat.java +++ b/forge-game/src/main/java/forge/game/combat/Combat.java @@ -594,7 +594,19 @@ public class Combat { unregisterDefender(c, be.getKey()); } } - + + for (Card pw : getDefendingPlaneswalkers()) { + if (pw.equals(c)) { + Collection bands = attackedByBands.get(pw); + for (AttackingBand abPW : bands) { + unregisterDefender(c, abPW); + // Rule 506.4c keep creature in combat + attackedByBands.put(c.getController(), abPW); + } + bands.clear(); + } + } + // remove card from map while (blockedBands.values().remove(c)); c.updateBlockingForView(); From 200849920a013c5d846d0e5692a320e0188087c5 Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Fri, 29 Jan 2021 19:51:30 +0100 Subject: [PATCH 2/2] Improve display --- forge-game/src/main/java/forge/game/combat/Combat.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/forge-game/src/main/java/forge/game/combat/Combat.java b/forge-game/src/main/java/forge/game/combat/Combat.java index 210b9eaa919..6c4265507f9 100644 --- a/forge-game/src/main/java/forge/game/combat/Combat.java +++ b/forge-game/src/main/java/forge/game/combat/Combat.java @@ -597,13 +597,18 @@ public class Combat { for (Card pw : getDefendingPlaneswalkers()) { if (pw.equals(c)) { + Multimap attackerBuffer = ArrayListMultimap.create(); Collection bands = attackedByBands.get(pw); for (AttackingBand abPW : bands) { unregisterDefender(c, abPW); - // Rule 506.4c keep creature in combat - attackedByBands.put(c.getController(), abPW); + // Rule 506.4c workaround to keep creatures in combat + Card fake = new Card(-1, c.getGame()); + fake.setName(""); + fake.setController(c.getController(), 0); + attackerBuffer.put(fake, abPW); } bands.clear(); + attackedByBands.putAll(attackerBuffer); } }