Harness the Storm - Fixed wrong ability copy method leading to not correct functioning (fixes #1686).

This commit is contained in:
LevelX2 2016-04-06 19:09:55 +02:00
parent 709ea95a5b
commit 9c8258c54b
2 changed files with 64 additions and 12 deletions

View file

@ -103,8 +103,8 @@ class HarnessTheStormTriggeredAbility extends SpellCastControllerTriggeredAbilit
}
@Override
public SpellCastControllerTriggeredAbility copy() {
return super.copy(); //To change body of generated methods, choose Tools | Templates.
public HarnessTheStormTriggeredAbility copy() {
return new HarnessTheStormTriggeredAbility(this);
}
}

View file

@ -36,7 +36,6 @@ import org.mage.test.serverside.base.CardTestPlayerBase;
*
* @author LevelX2
*/
public class SpellCastTriggerTest extends CardTestPlayerBase {
/**
@ -50,7 +49,7 @@ public class SpellCastTriggerTest extends CardTestPlayerBase {
addCard(Zone.BATTLEFIELD, playerA, "Sunscorch Regent", 1);
addCard(Zone.HAND, playerB, "Lightning Bolt");
addCard(Zone.BATTLEFIELD, playerB, "Mountain", 1);
addCard(Zone.BATTLEFIELD, playerB, "Mountain", 1);
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "Lightning Bolt", playerA);
@ -59,9 +58,9 @@ public class SpellCastTriggerTest extends CardTestPlayerBase {
assertLife(playerA, 18); // 20 -3 +1
assertLife(playerB, 20);
assertGraveyardCount(playerB, "Lightning Bolt", 1);
assertPowerToughness(playerA, "Sunscorch Regent", 5, 4);
}
@ -69,13 +68,13 @@ public class SpellCastTriggerTest extends CardTestPlayerBase {
* Monastery Mentor triggers are causing a "rollback" error.
*/
@Test
public void testMonasteryMentor() {
public void testMonasteryMentor() {
// Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)
// Whenever you cast a noncreature spell, put a 1/1 white Monk creature token with prowess onto the battlefield.
addCard(Zone.BATTLEFIELD, playerA, "Monastery Mentor", 1);
addCard(Zone.HAND, playerA, "Lightning Bolt", 2);
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Lightning Bolt", playerB);
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Lightning Bolt", playerB);
@ -83,14 +82,67 @@ public class SpellCastTriggerTest extends CardTestPlayerBase {
setStopAt(1, PhaseStep.END_TURN);
execute();
assertLife(playerA, 20);
assertLife(playerA, 20);
assertLife(playerB, 14);
assertGraveyardCount(playerA, "Lightning Bolt", 2);
assertPermanentCount(playerA, "Monk", 2);
assertPowerToughness(playerA, "Monk", 2, 2);
assertPowerToughness(playerA, "Monk", 1, 1);
assertPowerToughness(playerA, "Monastery Mentor", 4, 4);
}
}
@Test
public void testHarnessTheStormFirstTurn() {
// Whenever you cast an instant or sorcery spell from your hand, you may cast target card with the same name as that spell from your graveyard.
addCard(Zone.BATTLEFIELD, playerA, "Harness the Storm", 1);
// Put two 1/1 red Devil creature tokens onto the battlefield. They have "When this creature dies, it deals 1 damage to target creature or player."
addCard(Zone.HAND, playerA, "Dance with Devils", 1); // {3}{R}
addCard(Zone.GRAVEYARD, playerA, "Dance with Devils", 1); // {3}{R}
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 8);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Dance with Devils");
setChoice(playerA, "Yes");
setStopAt(1, PhaseStep.END_TURN);
execute();
assertGraveyardCount(playerA, "Dance with Devils", 2);
assertPermanentCount(playerA, "Devil", 4);
}
/**
* I had cast Dance with Devils the turn before. On this turn I was casting
* Read the Bones. The enchantment should not have triggered and if it did
* it should have asked me to cast read the bones.
*/
@Test
public void testHarnessTheStormThirdTurn() {
// Whenever you cast an instant or sorcery spell from your hand, you may cast target card with the same name as that spell from your graveyard.
addCard(Zone.BATTLEFIELD, playerA, "Harness the Storm", 1);
// Put two 1/1 red Devil creature tokens onto the battlefield. They have "When this creature dies, it deals 1 damage to target creature or player."
addCard(Zone.HAND, playerA, "Dance with Devils", 1); // {3}{R}
// Scry 2, then draw two cards. You lose 2 life.
addCard(Zone.HAND, playerA, "Read the Bones", 1); // {2}{B}
addCard(Zone.GRAVEYARD, playerA, "Read the Bones", 1);
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 4);
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 4);
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Dance with Devils");
castSpell(3, PhaseStep.PRECOMBAT_MAIN, playerA, "Read the Bones");
setStopAt(3, PhaseStep.BEGIN_COMBAT);
execute();
assertGraveyardCount(playerA, "Dance with Devils", 1);
assertPermanentCount(playerA, "Devil", 2);
assertGraveyardCount(playerA, "Read the Bones", 2);
assertHandCount(playerA, 5); // one normally drawn + 4 from Read the Bones
}
}