From 16ed4fa97a5303ac1ef07009aa20561aadc4d1c5 Mon Sep 17 00:00:00 2001 From: Lyu Zong-Hong Date: Sat, 6 Mar 2021 10:15:04 +0900 Subject: [PATCH] Remember meld and merged cards for ChangeZoneAll effect --- .../ability/effects/ChangeZoneAllEffect.java | 21 ++++++++++++++++++- .../ability/effects/ChangeZoneEffect.java | 13 ++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneAllEffect.java index 8af4a42eb58..200fc15c6b4 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneAllEffect.java @@ -199,10 +199,29 @@ public class ChangeZoneAllEffect extends SpellAbilityEffect { } if (remember != null) { - game.getCardState(source).addRemembered(movedCard); + final Card newSource = game.getCardState(source); + newSource.addRemembered(movedCard); if (!source.isRemembered(movedCard)) { source.addRemembered(movedCard); } + if (c.getMeldedWith() != null) { + Card meld = game.getCardState(c.getMeldedWith(), null); + if (meld != null) { + newSource.addRemembered(meld); + if (!source.isRemembered(meld)) { + source.addRemembered(meld); + } + } + } + if (c.hasMergedCard()) { + for (final Card card : c.getMergedCards()) { + if (card == c) continue; + newSource.addRemembered(card); + if (!source.isRemembered(card)) { + source.addRemembered(card); + } + } + } } if (remLKI && movedCard != null) { final Card lki = CardUtil.getLKICopy(c); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java index 4c776434d9e..eaf6c980f49 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java @@ -1312,6 +1312,19 @@ public class ChangeZoneEffect extends SpellAbilityEffect { if (originZone != null) { triggerList.put(originZone.getZoneType(), movedCard.getZone().getZoneType(), movedCard); + + if (c.getMeldedWith() != null) { + Card meld = game.getCardState(c.getMeldedWith(), null); + if (meld != null) { + triggerList.put(originZone.getZoneType(), movedCard.getZone().getZoneType(), meld); + } + } + if (c.hasMergedCard()) { + for (final Card card : c.getMergedCards()) { + if (card == c) continue; + triggerList.put(originZone.getZoneType(), movedCard.getZone().getZoneType(), card); + } + } } if (champion) {