diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheNezumi.java b/Mage.Sets/src/mage/cards/p/PatronOfTheNezumi.java index bad292df09b..710bad43f7c 100644 --- a/Mage.Sets/src/mage/cards/p/PatronOfTheNezumi.java +++ b/Mage.Sets/src/mage/cards/p/PatronOfTheNezumi.java @@ -28,12 +28,12 @@ package mage.cards.p; import java.util.UUID; + import mage.MageInt; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.Effect; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.keyword.OfferingAbility; -import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -44,6 +44,7 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; import mage.game.events.ZoneChangeEvent; +import mage.game.permanent.Permanent; import mage.target.targetpointer.FixedTarget; @@ -96,10 +97,9 @@ class PatronOfTheNezumiTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { ZoneChangeEvent zEvent = (ZoneChangeEvent) event; - if (zEvent.getFromZone() == Zone.BATTLEFIELD - && zEvent.getToZone() == Zone.GRAVEYARD) { - Card card = game.getCard(zEvent.getTargetId()); - if (card != null && game.getOpponents(controllerId).contains(card.getOwnerId())) { + if (zEvent.isDiesEvent()) { + Permanent permanent = game.getPermanentOrLKIBattlefield(zEvent.getTargetId()); + if (permanent != null && game.getOpponents(controllerId).contains(permanent.getOwnerId())) { this.getEffects().get(0).setTargetPointer(new FixedTarget(zEvent.getPlayerId())); return true; } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/PatronOfTheNezumiTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/PatronOfTheNezumiTest.java new file mode 100644 index 00000000000..67d0f76e215 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/PatronOfTheNezumiTest.java @@ -0,0 +1,82 @@ +package org.mage.test.cards.single; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * @author JRHerlehy Created on 12/27/17. + */ +public class PatronOfTheNezumiTest extends CardTestPlayerBase { + + // Rat offering + // Whenever a permanent is put into an opponent's graveyard, that player loses 1 life. + + private final String patron = "Patron of the Nezumi"; + private final String thopter = "Ornithopter"; + private final String elspeth = "Elspeth, Sun's Champion"; + private final String elspethAbility = "+1: Create three"; + private final String elesh = "Elesh Norn, Grand Cenobite"; + private final String sinkhole = "Sinkhole"; + + @Test + public void testEffectWithTokens() { + this.setupTest(); + + this.addCard(Zone.BATTLEFIELD, playerB, elspeth); + + this.activateAbility(2, PhaseStep.PRECOMBAT_MAIN, playerB, elspethAbility); + this.activateAbility(4, PhaseStep.PRECOMBAT_MAIN, playerB, elspethAbility); + + this.castSpell(5, PhaseStep.PRECOMBAT_MAIN, playerA, elesh); + + this.setStopAt(5, PhaseStep.POSTCOMBAT_MAIN); + this.execute(); + + this.assertPermanentCount(playerB, 1); + this.assertLife(playerA, 20); + this.assertLife(playerB, 14); + } + + @Test + public void testEffectWithRIP() { + this.setupTest(); + + this.addCard(Zone.BATTLEFIELD, playerA, "Rest in Peace"); + this.addCard(Zone.BATTLEFIELD, playerB, thopter, 5); + + this.castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, elesh); + + this.setStopAt(1, PhaseStep.POSTCOMBAT_MAIN); + this.execute(); + + this.assertExileCount(playerB, 5); + this.assertLife(playerA, 20); + this.assertLife(playerB, 20); + } + + @Test + public void testEffectWithCreatures() { + this.setupTest(); + + this.addCard(Zone.BATTLEFIELD, playerB, thopter, 5); + + this.castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, elesh); + + this.setStopAt(1, PhaseStep.POSTCOMBAT_MAIN); + this.execute(); + + this.assertPermanentCount(playerB, 0); + this.assertLife(playerA, 20); + this.assertLife(playerB, 15); + } + + private void setupTest() { + this.addCard(Zone.BATTLEFIELD, playerA, patron); + this.addCard(Zone.BATTLEFIELD, playerA, "Swamp", 5); + this.addCard(Zone.BATTLEFIELD, playerA, "Plains", 5); + this.addCard(Zone.HAND, playerA, sinkhole); + this.addCard(Zone.HAND, playerA, elesh); + } +}