From 036d4426dd2ee5e1167f689e96d8a893e9dd0da9 Mon Sep 17 00:00:00 2001 From: Duncan Townsend Date: Thu, 29 Jan 2015 00:23:01 -0500 Subject: [PATCH] Fixed #694. Copied spells will cease to exist when leaving the stack for the exile or graveyard zones. This also fixes the problem where countering a spell copy would also counter the original. --- Mage/src/mage/game/stack/Spell.java | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/Mage/src/mage/game/stack/Spell.java b/Mage/src/mage/game/stack/Spell.java index cc2af9596ea..c3cf48980aa 100644 --- a/Mage/src/mage/game/stack/Spell.java +++ b/Mage/src/mage/game/stack/Spell.java @@ -201,7 +201,7 @@ public class Spell implements StackObject, Card { index++; } } - if (!copiedSpell) { + if (!isCopiedSpell()) { for (Effect effect : ability.getEffects()) { if (effect instanceof PostResolveEffect) { if (((PostResolveEffect) effect).isActive(ability, game)) { @@ -509,7 +509,9 @@ public class Spell implements StackObject, Card { @Override public void counter(UUID sourceId, Game game) { - card.moveToZone(Zone.GRAVEYARD, sourceId, game, false); + if (!isCopiedSpell()) { + card.moveToZone(Zone.GRAVEYARD, sourceId, game, false); + } } @Override @@ -836,13 +838,15 @@ public class Spell implements StackObject, Card { game.getStack().remove(this); game.rememberLKI(this.getId(), event.getFromZone(), this); - if (exileId == null) { - game.getExile().getPermanentExile().add(this.card); + if (!this.isCopiedSpell()) { + if (exileId == null) { + game.getExile().getPermanentExile().add(this.card); + } else { + game.getExile().createZone(exileId, name).add(this.card); + } + + game.setZone(this.card.getId(), event.getToZone()); } - else { - game.getExile().createZone(exileId, name).add(this.card); - } - game.setZone(this.card.getId(), event.getToZone()); game.fireEvent(event); return event.getToZone() == Zone.EXILED; }