diff --git a/Mage/src/main/java/mage/abilities/common/BecomesBlockedByCreatureTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/BecomesBlockedByCreatureTriggeredAbility.java index bc4d9626b7c..0045bb82921 100644 --- a/Mage/src/main/java/mage/abilities/common/BecomesBlockedByCreatureTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/BecomesBlockedByCreatureTriggeredAbility.java @@ -45,7 +45,9 @@ public class BecomesBlockedByCreatureTriggeredAbility extends TriggeredAbilityIm if (!filter.match(blocker, game)) { return false; } - this.getEffects().setTargetPointer(new FixedTarget(blocker, game)); + for (Effect effect : this.getEffects()) { + effect.setTargetPointer(new FixedTarget(event.getSourceId())); + } return true; } diff --git a/Mage/src/main/java/mage/abilities/effects/common/ExileTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ExileTargetEffect.java index 7978af7f734..f7dc493b356 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ExileTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ExileTargetEffect.java @@ -43,7 +43,8 @@ public class ExileTargetEffect extends OneShotEffect { } /** - * Exile cards to normal exile window (but it can exile to source's exile window after toSourceExileZone change) + * Exile cards to normal exile window (but it can exile to source's exile + * window after toSourceExileZone change) */ public ExileTargetEffect() { this(null, ""); @@ -91,21 +92,27 @@ public class ExileTargetEffect extends OneShotEffect { Set toExile = new LinkedHashSet<>(); if (multitargetHandling && targetPointer instanceof FirstTargetPointer - && (source.getTargets().size() > 1 || (source.getTargets().size() > 0 && source.getTargets().get(0).getTargets().size() > 1))) { + && (source.getTargets().size() > 1 + || (source.getTargets().size() > 0 + && source.getTargets().get(0).getTargets().size() > 1))) { for (Target target : source.getTargets()) { for (UUID targetId : target.getTargets()) { Permanent permanent = game.getPermanent(targetId); if (permanent != null && permanent.isPhasedIn()) { Zone currentZone = game.getState().getZone(permanent.getId()); - if (currentZone != Zone.EXILED && (onlyFromZone == null || onlyFromZone == Zone.BATTLEFIELD)) { + if (currentZone != Zone.EXILED + && (onlyFromZone == null + || onlyFromZone == Zone.BATTLEFIELD)) { toExile.add(permanent); } } else { Card card = game.getCard(targetId); if (card != null) { Zone currentZone = game.getState().getZone(card.getId()); - if (currentZone != Zone.EXILED && (onlyFromZone == null || onlyFromZone == currentZone)) { + if (currentZone != Zone.EXILED + && (onlyFromZone == null + || onlyFromZone == currentZone)) { toExile.add(card); } } else { @@ -123,14 +130,18 @@ public class ExileTargetEffect extends OneShotEffect { if (permanent != null && permanent.isPhasedIn()) { Zone currentZone = game.getState().getZone(permanent.getId()); - if (currentZone != Zone.EXILED && (onlyFromZone == null || onlyFromZone == Zone.BATTLEFIELD)) { + if (currentZone != Zone.EXILED + && (onlyFromZone == null + || onlyFromZone == Zone.BATTLEFIELD)) { toExile.add(permanent); } } else { Card card = game.getCard(targetId); if (card != null) { Zone currentZone = game.getState().getZone(card.getId()); - if (currentZone != Zone.EXILED && (onlyFromZone == null || onlyFromZone == currentZone)) { + if (currentZone != Zone.EXILED + && (onlyFromZone == null + || onlyFromZone == currentZone)) { toExile.add(card); } } else { diff --git a/Mage/src/main/java/mage/abilities/effects/common/ExileUntilSourceLeavesEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ExileUntilSourceLeavesEffect.java index bd541042375..433a7c97cff 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ExileUntilSourceLeavesEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ExileUntilSourceLeavesEffect.java @@ -36,7 +36,11 @@ public class ExileUntilSourceLeavesEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null) { - return new ExileTargetEffect(CardUtil.getCardExileZoneId(game, source), permanent.getIdName()).apply(game, source); + ExileTargetEffect effect = new ExileTargetEffect(CardUtil.getCardExileZoneId(game, source), permanent.getIdName()); + if (targetPointer != null) { // Grasping Giant + effect.setTargetPointer(targetPointer); + } + return effect.apply(game, source); } return false; }