diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/emblems/EmblemOfCardTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/emblems/EmblemOfCardTest.java index e480a360f99..20fbeb98ebc 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/emblems/EmblemOfCardTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/emblems/EmblemOfCardTest.java @@ -33,6 +33,7 @@ public class EmblemOfCardTest extends CardTestPlayerBase { assertLife(playerA, 13); assertEmblemCount(playerA, 1); } + @Test public void testEmblemOfYurlok() { // Vigilance @@ -79,6 +80,7 @@ public class EmblemOfCardTest extends CardTestPlayerBase { assertPermanentCount(playerA, "Colossal Dreadmaw", 1); assertEmblemCount(playerA, 1); } + @Test public void testEmblemOfParadoxEngine() { // Whenever you cast a spell, untap all nonland permanents you control. @@ -126,6 +128,7 @@ public class EmblemOfCardTest extends CardTestPlayerBase { assertLife(playerA, 14); assertEmblemCount(playerA, 1); } + @Test public void testEmblemOfDoublingSeason() { // If an effect would create one or more tokens under your control, it @@ -181,4 +184,34 @@ public class EmblemOfCardTest extends CardTestPlayerBase { execute(); assertEmblemCount(playerA, 1); } + + @Test + public void testEmblemOfMaelstromNexus() { + setStrictChooseMode(true); + + // The first spell you cast each turn has cascade. + addEmblem(playerA, new EmblemOfCard( + CardRepository.instance.findCard("Maelstrom Nexus", true).getMockCard() + )); + + // Grizzly Bears {1}{G} + addCard(Zone.HAND, playerA, "Grizzly Bears"); + addCard(Zone.BATTLEFIELD, playerA, "Forest", 2); + + skipInitShuffling(); + // Elite Vanguard {W} + addCard(Zone.LIBRARY, playerA, "Elite Vanguard"); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Grizzly Bears"); + setChoice(playerA, true); // yes to cascade + waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN); + + setStopAt(1, PhaseStep.PRECOMBAT_MAIN); + execute(); + + assertPermanentCount(playerA, "Elite Vanguard", 1); + assertPermanentCount(playerA, "Grizzly Bears", 1); + assertEmblemCount(playerA, 1); + } + } diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java index 51da977fe09..057b2e6143e 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java @@ -721,6 +721,9 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement } currentGame.getState().addCommandObject(newEmblem); + for (Ability ability : newEmblem.getAbilities()) { + currentGame.getState().addAbility(ability, null, newEmblem); + } } /** diff --git a/Mage/src/main/java/mage/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java index aa1f5df9ce4..ac8c5d80f70 100644 --- a/Mage/src/main/java/mage/game/GameImpl.java +++ b/Mage/src/main/java/mage/game/GameImpl.java @@ -1335,7 +1335,11 @@ public abstract class GameImpl implements Game { for (UUID playerId : state.getPlayerList(startingPlayerId)) { for (DeckCardInfo info : gameOptions.perPlayerEmblemCards) { Card card = EmblemOfCard.cardFromDeckInfo(info); - addEmblem(new EmblemOfCard(card), card, playerId); + Emblem emblem = new EmblemOfCard(card); + addEmblem(emblem, card, playerId); + for (Ability ability : emblem.getAbilities()) { + state.addAbility(ability, null, emblem); + } } } } @@ -1343,7 +1347,11 @@ public abstract class GameImpl implements Game { if (!gameOptions.globalEmblemCards.isEmpty()) { for (DeckCardInfo info : gameOptions.globalEmblemCards) { Card card = EmblemOfCard.cardFromDeckInfo(info); - addEmblem(new EmblemOfCard(card), card, startingPlayerId); + Emblem emblem = new EmblemOfCard(card); + addEmblem(emblem, card, startingPlayerId); + for (Ability ability : emblem.getAbilities()) { + state.addAbility(ability, null, emblem); + } } } }