From ada17b1690f67bc25ea8c54ed7b26a354a323e43 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Mon, 30 Jan 2017 21:49:57 +0100 Subject: [PATCH] * Reyhan, Last of the Abzan - Fixed that dies triggered ability was not reset correctly if it triggered multiple times. --- .../mage/cards/r/ReyhanLastOfTheAbzan.java | 1 + .../enters/SepulchralPrimordialTest.java | 31 +++++++++++++++++ .../mage/test/multiplayer/PrimordialTest.java | 33 +++++++++++++++++++ 3 files changed, 65 insertions(+) diff --git a/Mage.Sets/src/mage/cards/r/ReyhanLastOfTheAbzan.java b/Mage.Sets/src/mage/cards/r/ReyhanLastOfTheAbzan.java index 251075252e..8e8dd03aad 100644 --- a/Mage.Sets/src/mage/cards/r/ReyhanLastOfTheAbzan.java +++ b/Mage.Sets/src/mage/cards/r/ReyhanLastOfTheAbzan.java @@ -112,6 +112,7 @@ class ReyhanLastOfTheAbzanTriggeredAbility extends TriggeredAbilityImpl { if (permanent.getControllerId().equals(this.getControllerId()) && permanent.getCardType().contains(CardType.CREATURE)) { int countersOn = permanent.getCounters(game).getCount(CounterType.P1P1); if (countersOn > 0) { + this.getEffects().clear(); this.addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance(countersOn))); } return true; diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/SepulchralPrimordialTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/SepulchralPrimordialTest.java index 54701af759..b546babd06 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/SepulchralPrimordialTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/SepulchralPrimordialTest.java @@ -59,4 +59,35 @@ public class SepulchralPrimordialTest extends CardTestPlayerBase { assertLife(playerB, 20); } + + /** + * Sepulchral Primordial's "enter the battlefield" effect works correctly on + * cast, but does not trigger if he is returned to the battlefield by other + * means (e.g. summoned from the graveyard). I've encountered this in + * 4-player commander games with other humans. + */ + @Test + public void testETBFromGraveyardEffect() { + // Return target creature card from your graveyard to the battlefield. Put a +1/+1 counter on it. + addCard(Zone.HAND, playerA, "Miraculous Recovery", 1); // Instant {4}{W} + // When Sepulchral Primordial enters the battlefield, for each opponent, you may put up to one + // target creature card from that player's graveyard onto the battlefield under your control. + addCard(Zone.GRAVEYARD, playerA, "Sepulchral Primordial", 1); // Creature 5/4 + addCard(Zone.BATTLEFIELD, playerA, "Plains", 5); + + addCard(Zone.GRAVEYARD, playerB, "Silvercoat Lion", 1); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Miraculous Recovery", "Sepulchral Primordial"); + addTarget(playerA, "Silvercoat Lion"); // target for ETB Sepulchral Primordial + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertGraveyardCount(playerA, "Miraculous Recovery", 1); + assertPowerToughness(playerA, "Sepulchral Primordial", 6, 5); + assertPermanentCount(playerA, "Silvercoat Lion", 1); + + assertLife(playerA, 20); + assertLife(playerB, 20); + + } } diff --git a/Mage.Tests/src/test/java/org/mage/test/multiplayer/PrimordialTest.java b/Mage.Tests/src/test/java/org/mage/test/multiplayer/PrimordialTest.java index 7045c79628..86fe7d95c6 100644 --- a/Mage.Tests/src/test/java/org/mage/test/multiplayer/PrimordialTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/multiplayer/PrimordialTest.java @@ -67,6 +67,39 @@ public class PrimordialTest extends CardTestMultiPlayerBase { assertGraveyardCount(playerD, "Pillarfield Ox", 0); } + /** + * Sepulchral Primordial's "enter the battlefield" effect works correctly on + * cast, but does not trigger if he is returned to the battlefield by other + * means (e.g. summoned from the graveyard). I've encountered this in + * 4-player commander games with other humans. + */ + @Test + public void SepulchralPrimordialFromGraveyardTest() { + // Return target creature card from your graveyard to the battlefield. Put a +1/+1 counter on it. + addCard(Zone.HAND, playerA, "Miraculous Recovery", 1); // Instant {4}{W} + // When Sepulchral Primordial enters the battlefield, for each opponent, you may put up to one + // target creature card from that player's graveyard onto the battlefield under your control. + addCard(Zone.GRAVEYARD, playerA, "Sepulchral Primordial"); + addCard(Zone.BATTLEFIELD, playerA, "Plains", 5); + + // Player order: A -> D -> C -> B + addCard(Zone.GRAVEYARD, playerB, "Silvercoat Lion"); + addCard(Zone.GRAVEYARD, playerC, "Walking Corpse"); + addCard(Zone.GRAVEYARD, playerD, "Pillarfield Ox"); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Miraculous Recovery", "Sepulchral Primordial"); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertPermanentCount(playerA, "Sepulchral Primordial", 1); + assertPermanentCount(playerA, "Silvercoat Lion", 1); + assertPermanentCount(playerA, "Walking Corpse", 0); + assertPermanentCount(playerA, "Pillarfield Ox", 1); + assertGraveyardCount(playerC, "Walking Corpse", 1); + assertGraveyardCount(playerD, "Pillarfield Ox", 0); + } + /** * Diluvian Primordial ETB trigger never happened in a 3 player FFA * commander game. He just resolved, no ETB trigger occurred.