diff --git a/Mage.Sets/src/mage/cards/a/ApostlesBlessing.java b/Mage.Sets/src/mage/cards/a/ApostlesBlessing.java index a6ff5335b9f..1deca80d385 100644 --- a/Mage.Sets/src/mage/cards/a/ApostlesBlessing.java +++ b/Mage.Sets/src/mage/cards/a/ApostlesBlessing.java @@ -85,7 +85,7 @@ class ApostlesBlessingEffect extends OneShotEffect { protectionFilter.setMessage(choice.getChoice()); ProtectionAbility protectionAbility = new ProtectionAbility(protectionFilter); ContinuousEffect effect = new GainAbilityTargetEffect(protectionAbility, Duration.EndOfTurn); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); game.addEffect(effect, source); return true; } diff --git a/Mage.Sets/src/mage/cards/b/BrambleSovereign.java b/Mage.Sets/src/mage/cards/b/BrambleSovereign.java index 82802cf07b6..98a23983694 100644 --- a/Mage.Sets/src/mage/cards/b/BrambleSovereign.java +++ b/Mage.Sets/src/mage/cards/b/BrambleSovereign.java @@ -80,7 +80,7 @@ class BrambleSovereignEffect extends OneShotEffect { Permanent permanent = getTargetPointer().getFirstTargetPermanentOrLKI(game, source); if (permanent != null) { CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(permanent.getControllerId()); - effect.setTargetPointer(targetPointer); + effect.setTargetPointer(this.getTargetPointer().copy()); effect.apply(game, source); } return true; diff --git a/Mage.Sets/src/mage/cards/b/BringTheEnding.java b/Mage.Sets/src/mage/cards/b/BringTheEnding.java index d8d0d5a28b3..c3780fd728c 100644 --- a/Mage.Sets/src/mage/cards/b/BringTheEnding.java +++ b/Mage.Sets/src/mage/cards/b/BringTheEnding.java @@ -71,10 +71,10 @@ class BringTheEndingCounterEffect extends OneShotEffect { Player player = game.getPlayer(controllerId); if (player != null && player.getCounters().getCount(CounterType.POISON) >= 3) { - hardCounterEffect.setTargetPointer(this.getTargetPointer()); + hardCounterEffect.setTargetPointer(this.getTargetPointer().copy()); return hardCounterEffect.apply(game, source); } else { - softCounterEffect.setTargetPointer(this.getTargetPointer()); + softCounterEffect.setTargetPointer(this.getTargetPointer().copy()); return softCounterEffect.apply(game, source); } diff --git a/Mage.Sets/src/mage/cards/c/ChampionsOfMinasTirith.java b/Mage.Sets/src/mage/cards/c/ChampionsOfMinasTirith.java index c50d98295c4..36721be5f5e 100644 --- a/Mage.Sets/src/mage/cards/c/ChampionsOfMinasTirith.java +++ b/Mage.Sets/src/mage/cards/c/ChampionsOfMinasTirith.java @@ -90,7 +90,7 @@ class ChampionsOfMinasTirithEffect extends OneShotEffect { new TargetPlayerCantAttackYouEffect(Duration.EndOfCombat), ManaUtil.createManaCost(CardsInTargetPlayerHandCount.instance, game, source, this), "Pay to be able to attack " + player.getName() + " this combat?" - ).setTargetPointer(targetPointer).apply(game, source); + ).setTargetPointer(this.getTargetPointer().copy()).apply(game, source); } } @@ -113,4 +113,4 @@ class ChampionsOfMinasTirithDoIfCostPaid extends DoIfCostPaid { protected Player getPayingPlayer(Game game, Ability source) { return game.getPlayer(targetPointer.getFirst(game, source)); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/c/CurseOfShallowGraves.java b/Mage.Sets/src/mage/cards/c/CurseOfShallowGraves.java index 9cd8e282558..bcc06572abd 100644 --- a/Mage.Sets/src/mage/cards/c/CurseOfShallowGraves.java +++ b/Mage.Sets/src/mage/cards/c/CurseOfShallowGraves.java @@ -16,7 +16,6 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.game.permanent.token.ZombieToken; import mage.players.Player; @@ -120,7 +119,7 @@ class CurseOfShallowEffect extends OneShotEffect { Player attacker = game.getPlayer(this.getTargetPointer().getFirst(game, source)); if (attacker != null && attacker.chooseUse(outcome, "create a tapped 2/2 black Zombie creature token?", source, game)) { Effect effect = new CreateTokenTargetEffect(new ZombieToken(), StaticValue.get(1), true, false); - effect.setTargetPointer(targetPointer); + effect.setTargetPointer(this.getTargetPointer().copy()); return effect.apply(game, source); } return false; diff --git a/Mage.Sets/src/mage/cards/d/DebtOfLoyalty.java b/Mage.Sets/src/mage/cards/d/DebtOfLoyalty.java index b00c1610008..6f1b00c86cf 100644 --- a/Mage.Sets/src/mage/cards/d/DebtOfLoyalty.java +++ b/Mage.Sets/src/mage/cards/d/DebtOfLoyalty.java @@ -58,7 +58,7 @@ class DebtOfLoyaltyEffect extends RegenerateTargetEffect { Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); if (super.replaceEvent(event, source, game) && permanent != null) { GainControlTargetEffect effect = new GainControlTargetEffect(Duration.EndOfGame); - effect.setTargetPointer(targetPointer); + effect.setTargetPointer(this.getTargetPointer().copy()); game.addEffect(effect, source); return true; } diff --git a/Mage.Sets/src/mage/cards/d/DecimatorBeetle.java b/Mage.Sets/src/mage/cards/d/DecimatorBeetle.java index 66ce9e10087..29e3b1a0b2e 100644 --- a/Mage.Sets/src/mage/cards/d/DecimatorBeetle.java +++ b/Mage.Sets/src/mage/cards/d/DecimatorBeetle.java @@ -82,7 +82,7 @@ class DecimatorBeetleEffect extends OneShotEffect { if (targetCreature != null && targetCreature.getCounters(game).containsKey(CounterType.M1M1)) { Effect effect = new RemoveCounterTargetEffect(CounterType.M1M1.createInstance(1)); - effect.setTargetPointer(targetPointer); + effect.setTargetPointer(this.getTargetPointer().copy()); effect.apply(game, source); } targetCreature = game.getPermanent(source.getTargets().get(1).getFirstTarget()); diff --git a/Mage.Sets/src/mage/cards/d/Delay.java b/Mage.Sets/src/mage/cards/d/Delay.java index a127b8e1c96..0e43d711f0f 100644 --- a/Mage.Sets/src/mage/cards/d/Delay.java +++ b/Mage.Sets/src/mage/cards/d/Delay.java @@ -67,7 +67,7 @@ class DelayEffect extends OneShotEffect { Spell spell = game.getStack().getSpell(getTargetPointer().getFirst(game, source)); if (controller != null && spell != null) { Effect effect = new CounterTargetWithReplacementEffect(PutCards.EXILED); - effect.setTargetPointer(targetPointer); + effect.setTargetPointer(this.getTargetPointer().copy()); Card card = game.getCard(spell.getSourceId()); if (card != null && effect.apply(game, source) && game.getState().getZone(card.getId()) == Zone.EXILED) { boolean hasSuspend = card.getAbilities(game).containsClass(SuspendAbility.class); diff --git a/Mage.Sets/src/mage/cards/d/DelinaWildMage.java b/Mage.Sets/src/mage/cards/d/DelinaWildMage.java index 4a57069601b..31e0db4035c 100644 --- a/Mage.Sets/src/mage/cards/d/DelinaWildMage.java +++ b/Mage.Sets/src/mage/cards/d/DelinaWildMage.java @@ -84,7 +84,7 @@ class DelinaWildMageEffect extends OneShotEffect { effect.addAdditionalAbilities(new EndOfCombatTriggeredAbility( new ExileSourceEffect(), false, "Exile this creature at end of combat." )); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); while (true) { int result = player.rollDice(outcome, source, game, 20); effect.apply(game, source); diff --git a/Mage.Sets/src/mage/cards/d/DiabolicServitude.java b/Mage.Sets/src/mage/cards/d/DiabolicServitude.java index 6327d483166..bc8f05ca387 100644 --- a/Mage.Sets/src/mage/cards/d/DiabolicServitude.java +++ b/Mage.Sets/src/mage/cards/d/DiabolicServitude.java @@ -76,7 +76,7 @@ class DiabolicServitudeReturnCreatureEffect extends OneShotEffect { Card cardInGraveyard = game.getCard(getTargetPointer().getFirst(game, source)); if (cardInGraveyard != null) { Effect effect = new ReturnFromGraveyardToBattlefieldTargetEffect(); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); effect.apply(game, source); game.getState().setValue(source.getSourceId().toString() + "returnedCreature", new MageObjectReference(cardInGraveyard.getId(), game)); diff --git a/Mage.Sets/src/mage/cards/d/DualNature.java b/Mage.Sets/src/mage/cards/d/DualNature.java index f43406eb629..f4bebc48649 100644 --- a/Mage.Sets/src/mage/cards/d/DualNature.java +++ b/Mage.Sets/src/mage/cards/d/DualNature.java @@ -87,7 +87,7 @@ class DualNatureCreateTokenEffect extends OneShotEffect { Permanent permanent = getTargetPointer().getFirstTargetPermanentOrLKI(game, source); if (permanent != null) { CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(permanent.getControllerId()); - effect.setTargetPointer(targetPointer); + effect.setTargetPointer(this.getTargetPointer().copy()); effect.apply(game, source); Object object = game.getState().getValue(CardUtil.getCardZoneString("_tokensCreated", source.getSourceId(), game)); Set tokensCreated; diff --git a/Mage.Sets/src/mage/cards/e/ElvishBranchbender.java b/Mage.Sets/src/mage/cards/e/ElvishBranchbender.java index 7fb1feb8e4e..f51ce5ac83b 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishBranchbender.java +++ b/Mage.Sets/src/mage/cards/e/ElvishBranchbender.java @@ -82,7 +82,7 @@ class ElvishBranchbenderEffect extends OneShotEffect { new ElvishBranchbenderToken(xValue), false, false, Duration.EndOfTurn) .withDurationRuleAtStart(true); - effect.setTargetPointer(targetPointer); + effect.setTargetPointer(this.getTargetPointer().copy()); game.addEffect(effect, source); return false; } @@ -104,4 +104,4 @@ class ElvishBranchbenderToken extends TokenImpl { public ElvishBranchbenderToken copy() { return new ElvishBranchbenderToken(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/f/FelhideSpiritbinder.java b/Mage.Sets/src/mage/cards/f/FelhideSpiritbinder.java index 4b0f5148fa4..7cdd4a7a6ca 100644 --- a/Mage.Sets/src/mage/cards/f/FelhideSpiritbinder.java +++ b/Mage.Sets/src/mage/cards/f/FelhideSpiritbinder.java @@ -74,7 +74,7 @@ class FelhideSpiritbinderEffect extends OneShotEffect { Permanent permanent = getTargetPointer().getFirstTargetPermanentOrLKI(game, source); if (permanent != null) { CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(null, CardType.ENCHANTMENT, true); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); if (effect.apply(game, source)) { for (Permanent tokenPermanent : effect.getAddedPermanents()) { ExileTargetEffect exileEffect = new ExileTargetEffect(); diff --git a/Mage.Sets/src/mage/cards/f/FlameKinWarScout.java b/Mage.Sets/src/mage/cards/f/FlameKinWarScout.java index 657891e617d..98976535d90 100644 --- a/Mage.Sets/src/mage/cards/f/FlameKinWarScout.java +++ b/Mage.Sets/src/mage/cards/f/FlameKinWarScout.java @@ -70,7 +70,7 @@ class FlameKinWarScourEffect extends OneShotEffect { if (permanent != null) { if (permanent.sacrifice(source, game)) { Effect effect = new DamageTargetEffect(4).setText("{this} deals 4 damage to it"); - effect.setTargetPointer(this.getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); return effect.apply(game, source); } } diff --git a/Mage.Sets/src/mage/cards/f/FlameshadowConjuring.java b/Mage.Sets/src/mage/cards/f/FlameshadowConjuring.java index db60f72da53..8c4c36677f3 100644 --- a/Mage.Sets/src/mage/cards/f/FlameshadowConjuring.java +++ b/Mage.Sets/src/mage/cards/f/FlameshadowConjuring.java @@ -69,7 +69,7 @@ class FlameshadowConjuringEffect extends OneShotEffect { Permanent permanent = getTargetPointer().getFirstTargetPermanentOrLKI(game, source); if (permanent != null) { CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(null, null, true); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); if (effect.apply(game, source)) { for (Permanent tokenPermanent : effect.getAddedPermanents()) { ExileTargetEffect exileEffect = new ExileTargetEffect(); diff --git a/Mage.Sets/src/mage/cards/g/GildedDrake.java b/Mage.Sets/src/mage/cards/g/GildedDrake.java index fe59fbddc80..260fc6f21eb 100644 --- a/Mage.Sets/src/mage/cards/g/GildedDrake.java +++ b/Mage.Sets/src/mage/cards/g/GildedDrake.java @@ -87,7 +87,7 @@ class GildedDrakeEffect extends OneShotEffect { } ContinuousEffect effect = new ExchangeControlTargetEffect(Duration.EndOfGame, "", true); - effect.setTargetPointer(targetPointer); + effect.setTargetPointer(this.getTargetPointer().copy()); game.addEffect(effect, source); return true; } diff --git a/Mage.Sets/src/mage/cards/g/GravePeril.java b/Mage.Sets/src/mage/cards/g/GravePeril.java index 2f6c1dba1b6..040385e0219 100644 --- a/Mage.Sets/src/mage/cards/g/GravePeril.java +++ b/Mage.Sets/src/mage/cards/g/GravePeril.java @@ -61,7 +61,7 @@ class GravePerilEffect extends OneShotEffect { if (permanent != null) { if (permanent.sacrifice(source, game)) { Effect effect = new DestroyTargetEffect(); - effect.setTargetPointer(this.getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); return effect.apply(game, source); } } diff --git a/Mage.Sets/src/mage/cards/g/GuardianAngel.java b/Mage.Sets/src/mage/cards/g/GuardianAngel.java index 5ef18b5d13b..df10965a220 100644 --- a/Mage.Sets/src/mage/cards/g/GuardianAngel.java +++ b/Mage.Sets/src/mage/cards/g/GuardianAngel.java @@ -19,7 +19,6 @@ import mage.constants.Duration; import mage.constants.Outcome; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetAnyTarget; @@ -80,10 +79,10 @@ class GuardianAngelEffect extends OneShotEffect { targetName = "player " + targetPlayer.getName(); } ContinuousEffect effect = new PreventDamageToTargetEffect(Duration.EndOfTurn, source.getManaCostsToPay().getX(), false); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); game.addEffect(effect, source); SpecialAction specialAction = new GuardianAngelAction(); - specialAction.getEffects().get(0).setTargetPointer(getTargetPointer()); + specialAction.getEffects().get(0).setTargetPointer(this.getTargetPointer().copy()); specialAction.getEffects().get(0).setText("Prevent the next 1 damage that would be dealt to any target this turn (" + targetName + ")."); new CreateSpecialActionEffect(specialAction).apply(game, source); // Create a hidden delayed triggered ability to remove the special action at end of turn. diff --git a/Mage.Sets/src/mage/cards/h/HollowSpecter.java b/Mage.Sets/src/mage/cards/h/HollowSpecter.java index 42e9f978109..e688c889f8a 100644 --- a/Mage.Sets/src/mage/cards/h/HollowSpecter.java +++ b/Mage.Sets/src/mage/cards/h/HollowSpecter.java @@ -70,7 +70,7 @@ class HollowSpecterEffect extends OneShotEffect { if (targetPlayer != null && controller != null && controller.chooseUse(Outcome.Benefit, "Pay {X}?", source, game)) { int payCount = ManaUtil.playerPaysXGenericMana(true, "Hollow Specter", controller, source, game); if (payCount > 0) { - return new DiscardCardYouChooseTargetEffect(payCount).setTargetPointer(targetPointer).apply(game, source); + return new DiscardCardYouChooseTargetEffect(payCount).setTargetPointer(this.getTargetPointer().copy()).apply(game, source); } return true; } diff --git a/Mage.Sets/src/mage/cards/i/ImpulsiveWager.java b/Mage.Sets/src/mage/cards/i/ImpulsiveWager.java index 05539027827..a3dfd774a13 100644 --- a/Mage.Sets/src/mage/cards/i/ImpulsiveWager.java +++ b/Mage.Sets/src/mage/cards/i/ImpulsiveWager.java @@ -65,7 +65,7 @@ class ImpulsiveWagerEffect extends OneShotEffect { List cards = cost.getCards(); if (cards.size() == 1 && cards.get(0).isLand(game)) { Effect effect = new AddCountersTargetEffect(CounterType.BOUNTY.createInstance()); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); effect.apply(game, source); } else { player.drawCards(2, source, game); diff --git a/Mage.Sets/src/mage/cards/i/InallaArchmageRitualist.java b/Mage.Sets/src/mage/cards/i/InallaArchmageRitualist.java index 97a614c4b4b..6ab64832e6d 100644 --- a/Mage.Sets/src/mage/cards/i/InallaArchmageRitualist.java +++ b/Mage.Sets/src/mage/cards/i/InallaArchmageRitualist.java @@ -112,7 +112,7 @@ class InallaArchmageRitualistEffect extends OneShotEffect { Permanent permanent = getTargetPointer().getFirstTargetPermanentOrLKI(game, source); if (permanent != null) { CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(null, null, true); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); if (effect.apply(game, source)) { for (Permanent tokenPermanent : effect.getAddedPermanents()) { ExileTargetEffect exileEffect = new ExileTargetEffect(); diff --git a/Mage.Sets/src/mage/cards/i/InameLifeAspect.java b/Mage.Sets/src/mage/cards/i/InameLifeAspect.java index b542c4d903e..a09e3867000 100644 --- a/Mage.Sets/src/mage/cards/i/InameLifeAspect.java +++ b/Mage.Sets/src/mage/cards/i/InameLifeAspect.java @@ -80,7 +80,7 @@ class InameLifeAspectEffect extends OneShotEffect { if (controller != null && sourceObject != null) { if (controller.chooseUse(outcome, "Exile " + sourceObject.getLogName() + " to return Spirit cards?", source, game)) { Effect effect = new ReturnToHandTargetEffect(); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); effect.getTargetPointer().init(game, source); new ExileSourceEffect().apply(game, source); return effect.apply(game, source); diff --git a/Mage.Sets/src/mage/cards/i/InvokePrejudice.java b/Mage.Sets/src/mage/cards/i/InvokePrejudice.java index c8fca3d3afb..b6500d31588 100644 --- a/Mage.Sets/src/mage/cards/i/InvokePrejudice.java +++ b/Mage.Sets/src/mage/cards/i/InvokePrejudice.java @@ -110,7 +110,7 @@ class InvokePrejudiceEffect extends CounterUnlessPaysEffect { Spell spell = game.getStack().getSpell(getTargetPointer().getFirst(game, source)); if (spell != null) { CounterUnlessPaysEffect effect = new CounterUnlessPaysEffect(new GenericManaCost(spell.getManaValue())); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); result = effect.apply(game, source); } return result; diff --git a/Mage.Sets/src/mage/cards/j/JarJarBinks.java b/Mage.Sets/src/mage/cards/j/JarJarBinks.java index d0e5f5d524e..f3e78ab13ce 100644 --- a/Mage.Sets/src/mage/cards/j/JarJarBinks.java +++ b/Mage.Sets/src/mage/cards/j/JarJarBinks.java @@ -80,7 +80,7 @@ class JarJarBinksEffect extends OneShotEffect { Player opponent = game.getPlayer(getTargetPointer().getFirst(game, source)); if (player != null && jarJar != null && opponent != null) { ContinuousEffect effect = new JarJarBinksGainControlSourceEffect(); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); game.addEffect(effect, source); game.informPlayers(jarJar.getName() + " is now controlled by " + opponent.getLogName()); return true; diff --git a/Mage.Sets/src/mage/cards/l/LandsEdge.java b/Mage.Sets/src/mage/cards/l/LandsEdge.java index 9e90164ebd9..df3a2cd96bd 100644 --- a/Mage.Sets/src/mage/cards/l/LandsEdge.java +++ b/Mage.Sets/src/mage/cards/l/LandsEdge.java @@ -69,7 +69,7 @@ class LandsEdgeEffect extends OneShotEffect { List cards = cost.getCards(); if (cards.size() == 1 && cards.get(0).isLand(game)) { Effect effect = new DamageTargetEffect(2); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); effect.apply(game, source); } diff --git a/Mage.Sets/src/mage/cards/l/LiesaForgottenArchangel.java b/Mage.Sets/src/mage/cards/l/LiesaForgottenArchangel.java index 8a8f18d9aff..518a98ce57a 100644 --- a/Mage.Sets/src/mage/cards/l/LiesaForgottenArchangel.java +++ b/Mage.Sets/src/mage/cards/l/LiesaForgottenArchangel.java @@ -92,7 +92,7 @@ class LiesaForgottenArchangelReturnToHandEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Effect effect = new ReturnToHandTargetEffect(); effect.setText("return that card to its owner's hand"); - effect.setTargetPointer(targetPointer); + effect.setTargetPointer(this.getTargetPointer().copy()); DelayedTriggeredAbility ability = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect); game.addDelayedTriggeredAbility(ability, source); return true; diff --git a/Mage.Sets/src/mage/cards/m/MarchesaTheBlackRose.java b/Mage.Sets/src/mage/cards/m/MarchesaTheBlackRose.java index 130434ac05f..f0891a7d7a5 100644 --- a/Mage.Sets/src/mage/cards/m/MarchesaTheBlackRose.java +++ b/Mage.Sets/src/mage/cards/m/MarchesaTheBlackRose.java @@ -125,7 +125,7 @@ class MarchesaTheBlackRoseEffect extends OneShotEffect { Effect effect = new ReturnToBattlefieldUnderYourControlTargetEffect(); effect.setText("return that card to the battlefield under your control at the beginning of the next end step"); DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect); - delayedAbility.getEffects().get(0).setTargetPointer(getTargetPointer()); + delayedAbility.getEffects().get(0).setTargetPointer(this.getTargetPointer().copy()); game.addDelayedTriggeredAbility(delayedAbility, source); return true; } diff --git a/Mage.Sets/src/mage/cards/m/MirrorMarch.java b/Mage.Sets/src/mage/cards/m/MirrorMarch.java index fc6029cad23..dcd8ea0d188 100644 --- a/Mage.Sets/src/mage/cards/m/MirrorMarch.java +++ b/Mage.Sets/src/mage/cards/m/MirrorMarch.java @@ -77,7 +77,7 @@ class MirrorMarchEffect extends OneShotEffect { CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(player.getId(), null, true, counter); effect.setUseLKI(true); - effect.setTargetPointer(targetPointer); + effect.setTargetPointer(this.getTargetPointer().copy()); effect.apply(game, source); effect.exileTokensCreatedAtNextEndStep(game, source); } diff --git a/Mage.Sets/src/mage/cards/m/MoggInfestation.java b/Mage.Sets/src/mage/cards/m/MoggInfestation.java index 61451d37151..89599024ecf 100644 --- a/Mage.Sets/src/mage/cards/m/MoggInfestation.java +++ b/Mage.Sets/src/mage/cards/m/MoggInfestation.java @@ -85,7 +85,7 @@ class MoggInfestationEffect extends OneShotEffect { || (game.getLastKnownInformation(uuid, Zone.BATTLEFIELD) instanceof PermanentToken && !game.getBattlefield().containsPermanent(uuid))) { Effect effect = new CreateTokenTargetEffect(new GoblinToken(), 2); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); effect.apply(game, source); } } diff --git a/Mage.Sets/src/mage/cards/m/MoltenEchoes.java b/Mage.Sets/src/mage/cards/m/MoltenEchoes.java index 6f414956863..0c7047bc9ff 100644 --- a/Mage.Sets/src/mage/cards/m/MoltenEchoes.java +++ b/Mage.Sets/src/mage/cards/m/MoltenEchoes.java @@ -78,7 +78,7 @@ class MoltenEchoesEffect extends OneShotEffect { Permanent permanent = getTargetPointer().getFirstTargetPermanentOrLKI(game, source); if (permanent != null) { CreateTokenCopyTargetEffect effect = new CreateTokenCopyTargetEffect(null, null, true); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); if (effect.apply(game, source)) { for (Permanent tokenPermanent : effect.getAddedPermanents()) { ExileTargetEffect exileEffect = new ExileTargetEffect(); diff --git a/Mage.Sets/src/mage/cards/n/NightshadeAssassin.java b/Mage.Sets/src/mage/cards/n/NightshadeAssassin.java index 22d2da921af..e79a9bbf471 100644 --- a/Mage.Sets/src/mage/cards/n/NightshadeAssassin.java +++ b/Mage.Sets/src/mage/cards/n/NightshadeAssassin.java @@ -96,7 +96,7 @@ class NightshadeAssassinEffect extends OneShotEffect { controller.revealCards(sourceObject.getIdName(), new CardsImpl(target.getTargets()), game); int unboost = target.getTargets().size() * -1; ContinuousEffect effect = new BoostTargetEffect(unboost, unboost, Duration.EndOfTurn); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); game.addEffect(effect, source); } } diff --git a/Mage.Sets/src/mage/cards/p/ProfaneProcession.java b/Mage.Sets/src/mage/cards/p/ProfaneProcession.java index f6831274a1a..a3ccc5f500c 100644 --- a/Mage.Sets/src/mage/cards/p/ProfaneProcession.java +++ b/Mage.Sets/src/mage/cards/p/ProfaneProcession.java @@ -74,7 +74,7 @@ class ProfaneProcessionEffect extends OneShotEffect { UUID exileId = CardUtil.getCardExileZoneId(game, source); MageObject sourceObject = source.getSourceObject(game); if (controller != null && exileId != null && sourceObject != null) { - new ExileTargetEffect(exileId, sourceObject.getIdName()).setTargetPointer(targetPointer).apply(game, source); + new ExileTargetEffect(exileId, sourceObject.getIdName()).setTargetPointer(this.getTargetPointer().copy()).apply(game, source); game.getState().processAction(game); ExileZone exileZone = game.getExile().getExileZone(exileId); if (exileZone != null && exileZone.size() > 2) { diff --git a/Mage.Sets/src/mage/cards/s/ServantOfTheScale.java b/Mage.Sets/src/mage/cards/s/ServantOfTheScale.java index 3f428012bdb..8ecde4bfcbb 100644 --- a/Mage.Sets/src/mage/cards/s/ServantOfTheScale.java +++ b/Mage.Sets/src/mage/cards/s/ServantOfTheScale.java @@ -81,7 +81,7 @@ class ServantOfTheScaleEffect extends OneShotEffect { int amount = sourcePermanent.getCounters(game).getCount(CounterType.P1P1); if (amount > 0) { Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance(amount)); - effect.setTargetPointer(targetPointer); + effect.setTargetPointer(this.getTargetPointer().copy()); effect.apply(game, source); } return true; diff --git a/Mage.Sets/src/mage/cards/s/SinisterConcierge.java b/Mage.Sets/src/mage/cards/s/SinisterConcierge.java index db9dcb4b95f..043b77c745a 100644 --- a/Mage.Sets/src/mage/cards/s/SinisterConcierge.java +++ b/Mage.Sets/src/mage/cards/s/SinisterConcierge.java @@ -6,7 +6,6 @@ import mage.abilities.Ability; import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.costs.common.ExileSourceFromGraveCost; import mage.abilities.dynamicvalue.common.StaticValue; -import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DoIfCostPaid; @@ -102,10 +101,10 @@ class SinisterConciergeEffect extends OneShotEffect { // Exile, put time counters, and give suspend for target Effect exileTarget = new ExileTargetEffect(); - exileTarget.setTargetPointer(this.getTargetPointer()); + exileTarget.setTargetPointer(this.getTargetPointer().copy()); if (exileTarget.apply(game, source)) { Effect addCountersTargetEffect = new AddCountersTargetEffect(CounterType.TIME.createInstance(3)); - addCountersTargetEffect.setTargetPointer(this.getTargetPointer()); + addCountersTargetEffect.setTargetPointer(this.getTargetPointer().copy()); boolean targetCardShouldGetSuspend = addCountersTargetEffect.apply(game, source); if (targetCardShouldGetSuspend && !targetCreature.getAbilities(game).containsClass(SuspendAbility.class)) { @@ -123,4 +122,4 @@ class SinisterConciergeEffect extends OneShotEffect { public SinisterConciergeEffect copy() { return new SinisterConciergeEffect(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/t/TemptWithReflections.java b/Mage.Sets/src/mage/cards/t/TemptWithReflections.java index 8f9cb0d08ae..54f427533a8 100644 --- a/Mage.Sets/src/mage/cards/t/TemptWithReflections.java +++ b/Mage.Sets/src/mage/cards/t/TemptWithReflections.java @@ -62,7 +62,7 @@ class TemptWithReflectionsEffect extends OneShotEffect { Permanent permanent = getTargetPointer().getFirstTargetPermanentOrLKI(game, source); if (permanent != null) { Effect effect = new CreateTokenCopyTargetEffect(); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); effect.apply(game, source); Set playersSaidYes = new HashSet<>(); @@ -85,12 +85,12 @@ class TemptWithReflectionsEffect extends OneShotEffect { for (UUID playerId : playersSaidYes) { effect = new CreateTokenCopyTargetEffect(playerId); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); effect.apply(game, source); // create a token for the source controller as well effect = new CreateTokenCopyTargetEffect(); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); effect.apply(game, source); } return true; diff --git a/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java b/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java index 8223589591d..2d22a1a8a19 100644 --- a/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java +++ b/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java @@ -76,7 +76,7 @@ class VastwoodAnimistEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { int amount = new PermanentsOnBattlefieldCount(filterAllies).calculate(game, source, this); ContinuousEffect effect = new BecomesCreatureTargetEffect(new VastwoodAnimistElementalToken(amount), false, true, Duration.EndOfTurn); - effect.setTargetPointer(targetPointer); + effect.setTargetPointer(this.getTargetPointer().copy()); game.addEffect(effect, source); return false; } diff --git a/Mage.Sets/src/mage/cards/v/VenarianGlimmer.java b/Mage.Sets/src/mage/cards/v/VenarianGlimmer.java index 2798938d75d..05010a45ede 100644 --- a/Mage.Sets/src/mage/cards/v/VenarianGlimmer.java +++ b/Mage.Sets/src/mage/cards/v/VenarianGlimmer.java @@ -65,7 +65,7 @@ class VenarianGlimmerEffect extends OneShotEffect { FilterCard filter = new FilterNonlandCard(); filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, source.getManaCostsToPay().getX() + 1)); Effect effect = new DiscardCardYouChooseTargetEffect(filter); - effect.setTargetPointer(targetPointer); + effect.setTargetPointer(this.getTargetPointer().copy()); effect.apply(game, source); return true; } diff --git a/Mage.Sets/src/mage/cards/x/XenagosGodOfRevels.java b/Mage.Sets/src/mage/cards/x/XenagosGodOfRevels.java index ee852642dc3..554a1e8583d 100644 --- a/Mage.Sets/src/mage/cards/x/XenagosGodOfRevels.java +++ b/Mage.Sets/src/mage/cards/x/XenagosGodOfRevels.java @@ -89,7 +89,7 @@ class XenagosGodOfRevelsEffect extends OneShotEffect { int power = targetCreature.getPower().getValue(); game.addEffect(new BoostTargetEffect( power, power, Duration.EndOfTurn - ).setTargetPointer(this.getTargetPointer()), source); + ).setTargetPointer(this.getTargetPointer().copy()), source); return false; } } diff --git a/Mage/src/main/java/mage/abilities/effects/common/CreateDelayedTriggeredAbilityEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CreateDelayedTriggeredAbilityEffect.java index 52426022ba9..a4c20b5618a 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/CreateDelayedTriggeredAbilityEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/CreateDelayedTriggeredAbilityEffect.java @@ -49,7 +49,7 @@ public class CreateDelayedTriggeredAbilityEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = ability.copy(); if (this.copyTargets) { if (source.getTargets().isEmpty()) { - delayedAbility.getEffects().setTargetPointer(targetPointer); + delayedAbility.getEffects().setTargetPointer(this.getTargetPointer().copy()); } else { delayedAbility.getTargets().addAll(source.getTargets()); for (Effect effect : delayedAbility.getEffects()) { diff --git a/Mage/src/main/java/mage/abilities/effects/common/DoWhenCostPaid.java b/Mage/src/main/java/mage/abilities/effects/common/DoWhenCostPaid.java index 5e59c33ad69..ae6a40caece 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/DoWhenCostPaid.java +++ b/Mage/src/main/java/mage/abilities/effects/common/DoWhenCostPaid.java @@ -60,7 +60,7 @@ public class DoWhenCostPaid extends OneShotEffect { int bookmark = game.bookmarkState(); if (cost.pay(source, game, source, player.getId(), false)) { if (ability.getTargets().isEmpty()) { - ability.getEffects().setTargetPointer(getTargetPointer()); + ability.getEffects().setTargetPointer(this.getTargetPointer().copy()); } game.fireReflexiveTriggeredAbility(ability, source); player.resetStoredBookmark(game); diff --git a/Mage/src/main/java/mage/abilities/effects/common/ExileUntilSourceLeavesEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ExileUntilSourceLeavesEffect.java index 95a3a8bbb8c..9c2ca0e2ea7 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ExileUntilSourceLeavesEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ExileUntilSourceLeavesEffect.java @@ -56,8 +56,8 @@ public class ExileUntilSourceLeavesEffect extends OneShotEffect { } ExileTargetEffect effect = new ExileTargetEffect(CardUtil.getCardExileZoneId(game, source), permanent.getIdName()); - if (targetPointer != null) { // Grasping Giant - effect.setTargetPointer(targetPointer); + if (this.getTargetPointer() != null) { // Grasping Giant + effect.setTargetPointer(this.getTargetPointer().copy()); } if (effect.apply(game, source)) { game.addDelayedTriggeredAbility(new OnLeaveReturnExiledAbility(returnToZone), source); diff --git a/Mage/src/main/java/mage/abilities/keyword/ScavengeAbility.java b/Mage/src/main/java/mage/abilities/keyword/ScavengeAbility.java index ab14a36558a..1af482c855a 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ScavengeAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ScavengeAbility.java @@ -72,7 +72,7 @@ class ScavengeEffect extends OneShotEffect { int count = card.getPower().getValue(); if (count > 0) { Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance(count)); - effect.setTargetPointer(getTargetPointer()); + effect.setTargetPointer(this.getTargetPointer().copy()); return effect.apply(game, source); } } @@ -84,4 +84,4 @@ class ScavengeEffect extends OneShotEffect { public ScavengeEffect copy() { return new ScavengeEffect(this); } -} \ No newline at end of file +}