diff --git a/Mage.Sets/src/mage/sets/darkascension/SuddenDisappearance.java b/Mage.Sets/src/mage/sets/darkascension/SuddenDisappearance.java index 24dd840a691..b964bb2b050 100644 --- a/Mage.Sets/src/mage/sets/darkascension/SuddenDisappearance.java +++ b/Mage.Sets/src/mage/sets/darkascension/SuddenDisappearance.java @@ -27,23 +27,23 @@ */ package mage.sets.darkascension; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Rarity; +import java.util.List; +import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.delayed.AtEndOfTurnDelayedTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.ReturnFromExileEffect; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; import mage.constants.Zone; import mage.filter.common.FilterNonlandPermanent; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.players.Player; import mage.target.TargetPlayer; -import java.util.List; -import java.util.UUID; - /** * * @author BetaSteward @@ -58,7 +58,7 @@ public class SuddenDisappearance extends CardImpl { // Exile all nonland permanents target player controls. Return the exiled cards to the battlefield under their owner's control at the beginning of the next end step. this.getSpellAbility().addEffect(new SuddenDisappearanceEffect()); - this.getSpellAbility().addTarget(new TargetPlayer()); + this.getSpellAbility().addTarget(new TargetPlayer(true)); } @@ -78,6 +78,7 @@ class SuddenDisappearanceEffect extends OneShotEffect public SuddenDisappearanceEffect() { super(Outcome.Exile); + staticText = "Exile all nonland permanents target player controls. Return the exiled cards to the battlefield under their owner's control at the beginning of the next end step"; } public SuddenDisappearanceEffect(final SuddenDisappearanceEffect effect) { @@ -86,17 +87,22 @@ class SuddenDisappearanceEffect extends OneShotEffect @Override public boolean apply(Game game, Ability source) { - List perms = game.getBattlefield().getAllActivePermanents(filter, source.getFirstTarget(), game); - if (perms.size() > 0) { - for (Permanent permanent: game.getBattlefield().getAllActivePermanents(filter, source.getFirstTarget(), game)) { - permanent.moveToExile(source.getSourceId(), "Sudden Disappearance", source.getSourceId(), game); + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + List perms = game.getBattlefield().getAllActivePermanents(filter, source.getFirstTarget(), game); + if (perms.size() > 0) { + for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, source.getFirstTarget(), game)) { + controller.moveCardToExileWithInfo(permanent, source.getSourceId(), "Sudden Disappearance", source.getSourceId(), game, Zone.BATTLEFIELD); + } + AtEndOfTurnDelayedTriggeredAbility delayedAbility = new AtEndOfTurnDelayedTriggeredAbility(new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD)); + delayedAbility.setSourceId(source.getSourceId()); + delayedAbility.setControllerId(source.getControllerId()); + game.addDelayedTriggeredAbility(delayedAbility); + } - AtEndOfTurnDelayedTriggeredAbility delayedAbility = new AtEndOfTurnDelayedTriggeredAbility(new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD)); - delayedAbility.setSourceId(source.getSourceId()); - delayedAbility.setControllerId(source.getControllerId()); - game.addDelayedTriggeredAbility(delayedAbility); return true; } + return false; } @@ -105,4 +111,4 @@ class SuddenDisappearanceEffect extends OneShotEffect return new SuddenDisappearanceEffect(this); } -} \ No newline at end of file +} diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/SuddenDisappearanceTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/SuddenDisappearanceTest.java index 30505016989..9e893a2b643 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/SuddenDisappearanceTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/SuddenDisappearanceTest.java @@ -11,6 +11,13 @@ import org.mage.test.serverside.base.CardTestPlayerBase; */ public class SuddenDisappearanceTest extends CardTestPlayerBase { + /** + * Sudden Disappearance + * Sorcery {5}{W} + * Exile all nonland permanents target player controls. + * Return the exiled cards to the battlefield under + * their owner's control at the beginning of the next end step + */ @Test public void testCard() { addCard(Zone.BATTLEFIELD, playerA, "Plains", 6);