package org.mage.test.cards.replacement; import mage.constants.PhaseStep; import mage.constants.Zone; import org.junit.Test; import org.mage.test.serverside.base.CardTestPlayerBase; /** * Created by escplan9 */ public class WouldDieExileInsteadTest extends CardTestPlayerBase { /* * Reported bug: Damnation with Kalitas, Traitor of Ghet on my side and 3 opponent creatures, it only exiled 1 creature giving me only 1 zombie instead of 3. */ @Test public void kalitasDamnationInteraction() { /* Kalitas, Traitor of Ghet {2}{B}{B} 3/4 lifelink - Legendary Vampire If a nontoken creature an opponent controls would die, instead exile that card and put a 2/2 black Zombie creature token onto the battlefield. */ addCard(Zone.BATTLEFIELD, playerA, "Kalitas, Traitor of Ghet", 1); /* Damnation {2}{B}{B} - Sorcery Destroy all creatures. They can't be regenerated. */ addCard(Zone.HAND, playerA, "Damnation", 1); addCard(Zone.BATTLEFIELD, playerA, "Swamp", 4); addCard(Zone.BATTLEFIELD, playerB, "Bronze Sable", 1); addCard(Zone.BATTLEFIELD, playerB, "Wall of Roots", 1); addCard(Zone.BATTLEFIELD, playerB, "Sigiled Starfish", 1); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Damnation"); setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); assertGraveyardCount(playerA, "Kalitas, Traitor of Ghet", 1); assertGraveyardCount(playerA, "Damnation", 1); assertExileCount("Bronze Sable", 1); assertExileCount("Wall of Roots", 1); assertExileCount("Sigiled Starfish", 1); assertGraveyardCount(playerB, 0); // all 3 creatures of playerB should be exiled not in graveyard assertExileCount("Kalitas, Traitor of Ghet", 0); // player controlled, not opponent so not exiled assertPermanentCount(playerA, "Zombie", 3); // 3 tokens generated from exiling 3 opponent's creatures } /* * Reported bug #3359 (NOTE: test is failing due to bug in code) * Creature with 2 toughness targetted by Soul-Scar Mage and Magma Spray was not exiled when it died */ @Test public void magmaSpray_SoulScarMageEffect_ShouldExile() { /* Magma Spray {R} Instant Magma Spray deals 2 damage to target creature. If that creature would die this turn, exile it instead. */ String mSpray = "Magma Spray"; /* Soul-Scar Mage {R} Creature - Human Wizard 1/2 Prowess If a source you control would deal noncombat damage to a creature an opponent controls, put that many -1/-1 counters on that creature instead. */ String ssMage = "Soul-Scar Mage"; String gBears = "Grizzly Bears"; // {1}{G} 2/2 addCard(Zone.BATTLEFIELD, playerA, ssMage); addCard(Zone.BATTLEFIELD, playerA, "Mountain"); addCard(Zone.HAND, playerA, mSpray); addCard(Zone.BATTLEFIELD, playerB, gBears); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, mSpray, gBears); setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); assertPermanentCount(playerA, ssMage, 1); assertGraveyardCount(playerA, mSpray, 1); assertPermanentCount(playerB, gBears, 0); assertPowerToughness(playerA, ssMage, 2, 3); // prowess triggered assertGraveyardCount(playerB, gBears, 0); assertExileCount(playerB, gBears, 1); } /* * Incendiary Flow is worded slightly differently and would not exile here. See issue #3359 for details. */ @Test public void incendiaryFlow_SoulScarMageEffect_ShouldNotExile() { /* Soul-Scar Mage {R} Creature - Human Wizard 1/2 Prowess If a source you control would deal noncombat damage to a creature an opponent controls, put that many -1/-1 counters on that creature instead. */ String ssMage = "Soul-Scar Mage"; /* Incendiary Flow {1}{R} Sorcery Incendiary Flow deals 3 damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead. */ String iFlow = "Incendiary Flow"; String hGiant = "Hill Giant"; // {3}{R} 3/3 addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2); addCard(Zone.BATTLEFIELD, playerA, ssMage); addCard(Zone.HAND, playerA, iFlow); addCard(Zone.BATTLEFIELD, playerB, hGiant); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, iFlow, hGiant); setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); assertPermanentCount(playerA, ssMage, 1); assertGraveyardCount(playerA, iFlow, 1); assertPermanentCount(playerB, hGiant, 0); assertPowerToughness(playerA, ssMage, 2, 3); // prowess triggered assertGraveyardCount(playerB, hGiant, 1); assertExileCount(playerB, hGiant, 0); } }