From a0ef96e9755548ba32e2f3bf59b9cab9358512c9 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Wed, 19 Feb 2014 08:21:57 +0100 Subject: [PATCH] * Pyromancer Ascension - Fixed that the triggered ability that copies a spell also works, if the spell that was copied left the stack (e.g. countered) before the ability resolves. --- .../sets/zendikar/PyromancerAscension.java | 19 +++++-------------- .../effects/common/CopyTargetSpellEffect.java | 4 ++++ 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/Mage.Sets/src/mage/sets/zendikar/PyromancerAscension.java b/Mage.Sets/src/mage/sets/zendikar/PyromancerAscension.java index 0541cedb17b..6a14431e88e 100644 --- a/Mage.Sets/src/mage/sets/zendikar/PyromancerAscension.java +++ b/Mage.Sets/src/mage/sets/zendikar/PyromancerAscension.java @@ -29,14 +29,14 @@ package mage.sets.zendikar; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Rarity; -import mage.constants.Zone; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.common.CopyTargetSpellEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.Card; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.FilterSpell; import mage.filter.predicate.Predicates; @@ -46,6 +46,7 @@ import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.game.stack.Spell; import mage.target.TargetSpell; +import mage.target.targetpointer.FixedTarget; /** * @@ -125,17 +126,8 @@ class PyromancerAscensionQuestTriggeredAbility extends TriggeredAbilityImpl { - private static final FilterSpell filter = new FilterSpell(); - - static { - filter.add(Predicates.or( - new CardTypePredicate(CardType.INSTANT), - new CardTypePredicate(CardType.SORCERY))); - } - PyromancerAscensionCopyTriggeredAbility() { super(Zone.BATTLEFIELD, new CopyTargetSpellEffect(), true); - this.addTarget(new TargetSpell(filter)); } PyromancerAscensionCopyTriggeredAbility(final PyromancerAscensionCopyTriggeredAbility ability) { @@ -154,8 +146,7 @@ class PyromancerAscensionCopyTriggeredAbility extends TriggeredAbilityImpl= 2) { - this.getTargets().get(0).clearChosen(); - this.getTargets().get(0).add(spell.getId(), game); + this.getEffects().get(0).setTargetPointer(new FixedTarget(spell.getId())); return true; } } diff --git a/Mage/src/mage/abilities/effects/common/CopyTargetSpellEffect.java b/Mage/src/mage/abilities/effects/common/CopyTargetSpellEffect.java index 98c97ad5a70..a1216e5aca5 100644 --- a/Mage/src/mage/abilities/effects/common/CopyTargetSpellEffect.java +++ b/Mage/src/mage/abilities/effects/common/CopyTargetSpellEffect.java @@ -33,6 +33,7 @@ import mage.constants.Outcome; import mage.abilities.Ability; import mage.abilities.Mode; import mage.abilities.effects.OneShotEffect; +import mage.constants.Zone; import mage.game.Game; import mage.game.stack.Spell; import mage.players.Player; @@ -54,6 +55,9 @@ public class CopyTargetSpellEffect extends OneShotEffect @Override public boolean apply(Game game, Ability source) { Spell spell = game.getStack().getSpell(targetPointer.getFirst(game, source)); + if (spell == null) { + spell = (Spell) game.getLastKnownInformation(targetPointer.getFirst(game, source), Zone.STACK); + } if (spell != null) { Spell copy = spell.copySpell(); copy.setControllerId(source.getControllerId());