diff --git a/Mage.Sets/src/mage/sets/magicorigins/NissaSageAnimist.java b/Mage.Sets/src/mage/sets/magicorigins/NissaSageAnimist.java index 7959cf7f6b3..d3a209c463a 100644 --- a/Mage.Sets/src/mage/sets/magicorigins/NissaSageAnimist.java +++ b/Mage.Sets/src/mage/sets/magicorigins/NissaSageAnimist.java @@ -28,6 +28,7 @@ package mage.sets.magicorigins; import java.util.UUID; +import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.EntersBattlefieldAbility; @@ -112,19 +113,18 @@ class NissaSageAnimistPlusOneEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - if (controller != null && controller.getLibrary().size() > 0) { + MageObject sourceObject = game.getObject(source.getSourceId()); + if (sourceObject != null && controller != null && controller.getLibrary().size() > 0) { Card card = controller.getLibrary().getFromTop(game); if (card == null) { return false; } - CardsImpl cards = new CardsImpl(); - cards.add(card); - controller.revealCards("Nissa, Sage Animist", cards, game); + controller.revealCards(sourceObject.getIdName(), new CardsImpl(card), game); + Zone targetZone = Zone.HAND; if (card.getCardType().contains(CardType.LAND)) { - return controller.putOntoBattlefieldWithInfo(card, game, Zone.LIBRARY, source.getSourceId()); - } else { - return controller.moveCards(card, Zone.LIBRARY, Zone.HAND, source, game); + targetZone = Zone.BATTLEFIELD; } + return controller.moveCards(card, null, targetZone, source, game); } return true; } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/TransformTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/TransformTest.java index 14e6c0db6a3..d37249116ca 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/TransformTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/TransformTest.java @@ -44,23 +44,35 @@ public class TransformTest extends CardTestPlayerBase { addCard(Zone.LIBRARY, playerA, "Forest"); - addCard(Zone.BATTLEFIELD, playerA, "Forest", 6); + addCard(Zone.BATTLEFIELD, playerA, "Forest", 5); + addCard(Zone.BATTLEFIELD, playerA, "Swamp", 1); // When Nissa, Vastwood Seer enters the battlefield, you may search your library for a basic Forest card, reveal it, put it into your hand, then shuffle your library. // Whenever a land enters the battlefield under your control, if you control seven or more lands, exile Nissa, then return her to the battlefield transformed under her owner's control. addCard(Zone.HAND, playerA, "Nissa, Vastwood Seer"); + addCard(Zone.BATTLEFIELD, playerB, "Forest", 2); + // {G}{G}, Sacrifice Rootrunner: Put target land on top of its owner's library. + addCard(Zone.BATTLEFIELD, playerB, "Rootrunner"); // {2}{G}{G} + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Nissa, Vastwood Seer"); playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Forest"); - setStopAt(1, PhaseStep.BEGIN_COMBAT); + activateAbility(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "{G}{G}", "Swamp"); + activateAbility(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "+1: Reveal"); + + setStopAt(1, PhaseStep.END_TURN); execute(); - assertPermanentCount(playerA, "Forest", 7); + assertGraveyardCount(playerB, "Rootrunner", 1); assertPermanentCount(playerA, "Nissa, Vastwood Seer", 0); assertPermanentCount(playerA, "Nissa, Sage Animist", 1); - assertCounterCount("Nissa, Sage Animist", CounterType.LOYALTY, 3); + + assertCounterCount("Nissa, Sage Animist", CounterType.LOYALTY, 4); + assertPermanentCount(playerA, "Forest", 6); + assertPermanentCount(playerA, "Swamp", 1); + } @Test