From a653085e60fd5fba8123fc56ee7d46ed216dbe3e Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Thu, 4 Mar 2021 15:23:05 +0100 Subject: [PATCH] ChangeZoneEffect: add Meld and Mutate for TriggerChangesZoneAll --- .../ability/effects/ChangeZoneAllEffect.java | 13 +++++++++++ .../ability/effects/ChangeZoneEffect.java | 22 ++++++++++++++----- 2 files changed, 30 insertions(+), 5 deletions(-) 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 253031c67b5..8af4a42eb58 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 @@ -223,6 +223,19 @@ public class ChangeZoneAllEffect extends SpellAbilityEffect { if (!movedCard.getZone().equals(originZone)) { 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 cm : c.getMergedCards()) { + if (cm == c) continue; + triggerList.put(originZone.getZoneType(), movedCard.getZone().getZoneType(), cm); + } + } } } 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 c98c1b5772a..4c776434d9e 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 @@ -728,16 +728,28 @@ public class ChangeZoneEffect extends SpellAbilityEffect { } } if (!movedCard.getZone().equals(originZone)) { + Card meld = null; triggerList.put(originZone.getZoneType(), movedCard.getZone().getZoneType(), movedCard); + if (gameCard.getMeldedWith() != null) { + meld = game.getCardState(gameCard.getMeldedWith(), null); + if (meld != null) { + triggerList.put(originZone.getZoneType(), movedCard.getZone().getZoneType(), meld); + } + } + if (gameCard.hasMergedCard()) { + for (final Card c : gameCard.getMergedCards()) { + if (c == gameCard) continue; + triggerList.put(originZone.getZoneType(), movedCard.getZone().getZoneType(), c); + } + } + + if (remember != null) { hostCard.addRemembered(movedCard); // addRememberedFromCardState ? - if (gameCard.getMeldedWith() != null) { - Card meld = game.getCardState(gameCard.getMeldedWith(), null); - if (meld != null) { - hostCard.addRemembered(meld); - } + if (meld != null) { + hostCard.addRemembered(meld); } if (gameCard.hasMergedCard()) { for (final Card c : gameCard.getMergedCards()) {