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 d056b3758df..5a09232a5d4 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 @@ -973,8 +973,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { final GameEntity oldEnchanted = c.getEnchanting(); c.removeEnchanting(oldEnchanted); } - if (!c.canBeEnchantedBy(attachedTo)) - { + if (!checkCanAttachTo(c, attachedTo)) { // if an aura can't enchant the source, it shouldn't move (303.4i, 303.4j) continue; } @@ -1193,4 +1192,19 @@ public class ChangeZoneEffect extends SpellAbilityEffect { } } } + + private static boolean checkCanAttachTo(final Card source, final Card target) { + final SpellAbility attachEff = source.getFirstAttachSpell(); + + if (attachEff == null) { + return false; + } + + final Game game = source.getGame(); + final TargetRestrictions tgt = attachEff.getTargetRestrictions(); + + CardCollectionView list = game.getCardsIn(tgt.getZone()); + list = CardLists.getValidCards(list, tgt.getValidTgts(), attachEff.getActivatingPlayer(), source, attachEff); + return list.contains(target); + } }