diff --git a/Mage.Sets/src/mage/sets/avacynrestored/BurnAtTheStake.java b/Mage.Sets/src/mage/sets/avacynrestored/BurnAtTheStake.java index 666a042a4e7..016e1a2e0b7 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/BurnAtTheStake.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/BurnAtTheStake.java @@ -158,13 +158,13 @@ class BurnAtTheStakeEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { int amount = (new GetXValue()).calculate(game, source) * 3; - Permanent permanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); if (permanent != null) { permanent.damage(amount, source.getSourceId(), game, true, false); return true; } - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { player.damage(amount, source.getSourceId(), game, false, true); return true; diff --git a/Mage.Sets/src/mage/sets/avacynrestored/GallowsAtWillowHill.java b/Mage.Sets/src/mage/sets/avacynrestored/GallowsAtWillowHill.java index a5e766e6d83..4b4fed0ac7b 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/GallowsAtWillowHill.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/GallowsAtWillowHill.java @@ -104,8 +104,8 @@ class GallowsAtWillowHillEffect extends OneShotEffect @Override public boolean apply(Game game, Ability source) { int affectedTargets = 0; - if (targetPointer.getTargets(source).size() > 0) { - for (UUID permanentId : targetPointer.getTargets(source)) { + if (targetPointer.getTargets(game, source).size() > 0) { + for (UUID permanentId : targetPointer.getTargets(game, source)) { Permanent permanent = game.getPermanent(permanentId); if (permanent != null) { Player controller = game.getPlayer(permanent.getControllerId()); diff --git a/Mage.Sets/src/mage/sets/avacynrestored/GhostlyFlicker.java b/Mage.Sets/src/mage/sets/avacynrestored/GhostlyFlicker.java index 8ef4e8e01f2..500af6ecbd4 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/GhostlyFlicker.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/GhostlyFlicker.java @@ -96,7 +96,7 @@ class GhostlyFlickerEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { UUID exileId = source.getSourceId(); - for (UUID permanentId : targetPointer.getTargets(source)) { + for (UUID permanentId : targetPointer.getTargets(game, source)) { Permanent target = game.getPermanent(permanentId); if (target != null) { target.moveToExile(exileId, "Ghostly Flicker", source.getId(), game); diff --git a/Mage.Sets/src/mage/sets/avacynrestored/JointAssault.java b/Mage.Sets/src/mage/sets/avacynrestored/JointAssault.java index af6eb8dda5e..e37bf175b18 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/JointAssault.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/JointAssault.java @@ -92,7 +92,7 @@ class JointAssaultBoostTargetEffect extends ContinuousEffectImpl { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null && player.getLibrary().size() > 0) { Library library = player.getLibrary(); Card card; diff --git a/Mage.Sets/src/mage/sets/avacynrestored/TamiyoTheMoonSage.java b/Mage.Sets/src/mage/sets/avacynrestored/TamiyoTheMoonSage.java index 55ba2beb9c6..3b6ce7cb140 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/TamiyoTheMoonSage.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/TamiyoTheMoonSage.java @@ -199,7 +199,7 @@ class TamiyoTheMoonSageEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Card card = game.getCard(this.targetPointer.getFirst(source)); + Card card = game.getCard(this.targetPointer.getFirst(game, source)); if (card != null) { return card.moveToZone(Zone.HAND, source.getId(), game, true); } diff --git a/Mage.Sets/src/mage/sets/avacynrestored/TibaltTheFiendBlooded.java b/Mage.Sets/src/mage/sets/avacynrestored/TibaltTheFiendBlooded.java index 74e68109182..082caa41ea1 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/TibaltTheFiendBlooded.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/TibaltTheFiendBlooded.java @@ -177,7 +177,7 @@ class TibaltTheFiendBloodedControlEffect extends ContinuousEffectImpl { @Override public boolean apply(Game game, Ability source) { - Card c = game.getCard(targetPointer.getFirst(source)); + Card c = game.getCard(targetPointer.getFirst(game, source)); if (c != null) { c.moveToZone(Constants.Zone.BATTLEFIELD, source.getSourceId(), game, false); } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/CranialExtraction.java b/Mage.Sets/src/mage/sets/championsofkamigawa/CranialExtraction.java index e54d3c6b4b1..e579a8e8e2b 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/CranialExtraction.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/CranialExtraction.java @@ -86,7 +86,7 @@ class CranialExtractionEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); Player controller = game.getPlayer(source.getControllerId()); if (player != null && controller != null) { Choice cardChoice = new ChoiceImpl(); diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/HeartbeatOfSpring.java b/Mage.Sets/src/mage/sets/championsofkamigawa/HeartbeatOfSpring.java index b2f000f8014..90e6a55e36c 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/HeartbeatOfSpring.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/HeartbeatOfSpring.java @@ -124,7 +124,7 @@ class HeartbeatOfSpringEffect extends ManaEffect { @Override public boolean apply(Game game, Ability source) { - Permanent land = game.getPermanent(this.targetPointer.getFirst(source)); + Permanent land = game.getPermanent(this.targetPointer.getFirst(game, source)); Abilities mana = land.getAbilities().getManaAbilities(Zone.BATTLEFIELD); Mana types = new Mana(); for (ManaAbility ability: mana) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/HisokaMinamoSensei.java b/Mage.Sets/src/mage/sets/championsofkamigawa/HisokaMinamoSensei.java index 86f96e3333d..9b359a8c76c 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/HisokaMinamoSensei.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/HisokaMinamoSensei.java @@ -140,11 +140,11 @@ class HisokaMinamoSenseiCounterEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); if (permanent != null) { permanent.damage(permanent.getPower().getValue(), permanent.getId(), game, true, false); return true; diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/Mindblaze.java b/Mage.Sets/src/mage/sets/championsofkamigawa/Mindblaze.java index 37e7a3282d5..bacff50a961 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/Mindblaze.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/Mindblaze.java @@ -90,7 +90,7 @@ class MindblazeEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); Player playerControls = game.getPlayer(source.getControllerId()); if (player != null && playerControls != null) { Choice cardChoice = new ChoiceImpl(); diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/NezumiGraverobber.java b/Mage.Sets/src/mage/sets/championsofkamigawa/NezumiGraverobber.java index 602b623cbc5..f2ed03e8110 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/NezumiGraverobber.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/NezumiGraverobber.java @@ -99,7 +99,7 @@ class NezumiGraverobberFlipEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent targetCreature = game.getPermanent(this.getTargetPointer().getFirst(source)); + Permanent targetCreature = game.getPermanent(this.getTargetPointer().getFirst(game, source)); if (targetCreature != null) { AtTheEndOfCombatDelayedTriggeredAbility delayedAbility = new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()); delayedAbility.setSourceId(source.getSourceId()); diff --git a/Mage.Sets/src/mage/sets/conflux/DarkTemper.java b/Mage.Sets/src/mage/sets/conflux/DarkTemper.java index 628aca46f80..44e40703c9a 100644 --- a/Mage.Sets/src/mage/sets/conflux/DarkTemper.java +++ b/Mage.Sets/src/mage/sets/conflux/DarkTemper.java @@ -85,7 +85,7 @@ class DarkTemperEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); if (permanent == null) { return false; } diff --git a/Mage.Sets/src/mage/sets/darkascension/AfflictedDeserter.java b/Mage.Sets/src/mage/sets/darkascension/AfflictedDeserter.java index 64782193d20..cde072d26e3 100644 --- a/Mage.Sets/src/mage/sets/darkascension/AfflictedDeserter.java +++ b/Mage.Sets/src/mage/sets/darkascension/AfflictedDeserter.java @@ -152,8 +152,8 @@ class WerewolfRansackerEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { int affectedTargets = 0; - if (targetPointer.getTargets(source).size() > 0) { - for (UUID permanentId : targetPointer.getTargets(source)) { + if (targetPointer.getTargets(game, source).size() > 0) { + for (UUID permanentId : targetPointer.getTargets(game, source)) { Permanent permanent = game.getPermanent(permanentId); if (permanent != null) { if (permanent.destroy(source.getId(), game, false)) { diff --git a/Mage.Sets/src/mage/sets/darkascension/CurseOfEchoes.java b/Mage.Sets/src/mage/sets/darkascension/CurseOfEchoes.java index 73e1c3ebb71..c5d5831c10b 100644 --- a/Mage.Sets/src/mage/sets/darkascension/CurseOfEchoes.java +++ b/Mage.Sets/src/mage/sets/darkascension/CurseOfEchoes.java @@ -142,7 +142,7 @@ class CurseOfEchoesEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Spell spell = game.getStack().getSpell(targetPointer.getFirst(source)); + Spell spell = game.getStack().getSpell(targetPointer.getFirst(game, source)); if (spell != null) { String chooseMessage = "Copy target spell? You may choose new targets for the copy."; for (UUID playerId: game.getPlayerList()) { diff --git a/Mage.Sets/src/mage/sets/darkascension/DungeonGeists.java b/Mage.Sets/src/mage/sets/darkascension/DungeonGeists.java index a430fef4b32..193f038b51f 100644 --- a/Mage.Sets/src/mage/sets/darkascension/DungeonGeists.java +++ b/Mage.Sets/src/mage/sets/darkascension/DungeonGeists.java @@ -136,7 +136,7 @@ class DungeonGeistsEffect extends ReplacementEffectImpl { if (game.getTurn().getStepType() == Constants.PhaseStep.UNTAP && event.getType() == GameEvent.EventType.UNTAP) { - if (event.getTargetId().equals(targetPointer.getFirst(source))) { + if (event.getTargetId().equals(targetPointer.getFirst(game, source))) { return true; } } diff --git a/Mage.Sets/src/mage/sets/darkascension/HavengulLich.java b/Mage.Sets/src/mage/sets/darkascension/HavengulLich.java index 2c7a268da24..c37545a704b 100644 --- a/Mage.Sets/src/mage/sets/darkascension/HavengulLich.java +++ b/Mage.Sets/src/mage/sets/darkascension/HavengulLich.java @@ -115,7 +115,7 @@ class HavengulLichPlayEffect extends AsThoughEffectImpl public boolean applies(UUID sourceId, Ability source, Game game) { Card card = game.getCard(sourceId); if (card != null && game.getState().getZone(card.getId()) == Constants.Zone.GRAVEYARD) { - if (targetPointer.getFirst(source).equals(card.getId())) + if (targetPointer.getFirst(game, source).equals(card.getId())) return true; } return false; @@ -136,7 +136,7 @@ class HavengulLichPlayedEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - DelayedTriggeredAbility ability = new HavengulLichDelayedTriggeredAbility(targetPointer.getFirst(source)); + DelayedTriggeredAbility ability = new HavengulLichDelayedTriggeredAbility(targetPointer.getFirst(game, source)); ability.setSourceId(source.getSourceId()); ability.setControllerId(source.getControllerId()); game.addDelayedTriggeredAbility(ability); diff --git a/Mage.Sets/src/mage/sets/darkascension/IncreasingSavagery.java b/Mage.Sets/src/mage/sets/darkascension/IncreasingSavagery.java index 8ced3a12c09..c3886a10f82 100644 --- a/Mage.Sets/src/mage/sets/darkascension/IncreasingSavagery.java +++ b/Mage.Sets/src/mage/sets/darkascension/IncreasingSavagery.java @@ -91,7 +91,7 @@ class IncreasingSavageryEffect extends OneShotEffect { if (spell.getFromZone() == Constants.Zone.GRAVEYARD) { amount = 10; } - Permanent permanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); if (permanent != null) { permanent.addCounters(CounterType.P1P1.createInstance(amount), game); } diff --git a/Mage.Sets/src/mage/sets/darkascension/IncreasingVengeance.java b/Mage.Sets/src/mage/sets/darkascension/IncreasingVengeance.java index bb1ee8ebab9..f0762faaaf5 100644 --- a/Mage.Sets/src/mage/sets/darkascension/IncreasingVengeance.java +++ b/Mage.Sets/src/mage/sets/darkascension/IncreasingVengeance.java @@ -94,7 +94,7 @@ class IncreasingVengeanceEffect extends OneShotEffect @Override public boolean apply(Game game, Ability source) { - Spell spell = game.getStack().getSpell(targetPointer.getFirst(source)); + Spell spell = game.getStack().getSpell(targetPointer.getFirst(game, source)); if (spell != null) { Spell copy = spell.copySpell(); copy.setControllerId(source.getControllerId()); diff --git a/Mage.Sets/src/mage/sets/darkascension/LostInTheWoods.java b/Mage.Sets/src/mage/sets/darkascension/LostInTheWoods.java index 6e4518ed3ea..86d809cdb39 100644 --- a/Mage.Sets/src/mage/sets/darkascension/LostInTheWoods.java +++ b/Mage.Sets/src/mage/sets/darkascension/LostInTheWoods.java @@ -97,7 +97,7 @@ class LostInTheWoodsEffect extends OneShotEffect { if (card != null) { if (card.getSubtype().contains("Forest")) { - Permanent permanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); if (permanent != null) { permanent.removeFromCombat(game); } diff --git a/Mage.Sets/src/mage/sets/darkascension/SoulSeizer.java b/Mage.Sets/src/mage/sets/darkascension/SoulSeizer.java index 2b8c32c6392..fcdb4a7bdf0 100644 --- a/Mage.Sets/src/mage/sets/darkascension/SoulSeizer.java +++ b/Mage.Sets/src/mage/sets/darkascension/SoulSeizer.java @@ -136,7 +136,7 @@ class SoulSeizerEffect extends OneShotEffect { Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null && permanent.canTransform()) { if (permanent.transform(game)) { - Permanent attachTo = game.getPermanent(targetPointer.getFirst(source)); + Permanent attachTo = game.getPermanent(targetPointer.getFirst(game, source)); if (attachTo != null) { return attachTo.addAttachment(source.getSourceId(), game); } diff --git a/Mage.Sets/src/mage/sets/darkascension/SpitefulShadows.java b/Mage.Sets/src/mage/sets/darkascension/SpitefulShadows.java index 5e512a29cc6..203c9f8b127 100644 --- a/Mage.Sets/src/mage/sets/darkascension/SpitefulShadows.java +++ b/Mage.Sets/src/mage/sets/darkascension/SpitefulShadows.java @@ -132,7 +132,7 @@ class SpitefulShadowsEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Integer damageAmount = (Integer) this.getValue("damageAmount"); - UUID targetId = this.targetPointer.getFirst(source); + UUID targetId = this.targetPointer.getFirst(game, source); if (damageAmount != null && targetId != null) { Permanent permanent = game.getPermanent(targetId); if (permanent == null) { diff --git a/Mage.Sets/src/mage/sets/darkascension/WrackWithMadness.java b/Mage.Sets/src/mage/sets/darkascension/WrackWithMadness.java index 4cdb68d4559..a9923cb850e 100644 --- a/Mage.Sets/src/mage/sets/darkascension/WrackWithMadness.java +++ b/Mage.Sets/src/mage/sets/darkascension/WrackWithMadness.java @@ -83,7 +83,7 @@ class WrackWithMadnessEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); if (permanent != null) { permanent.damage(permanent.getPower().getValue(), permanent.getId(), game, true, false); return true; diff --git a/Mage.Sets/src/mage/sets/darksteel/EmissaryOfHope.java b/Mage.Sets/src/mage/sets/darksteel/EmissaryOfHope.java index 2e592d301f8..298920e6994 100644 --- a/Mage.Sets/src/mage/sets/darksteel/EmissaryOfHope.java +++ b/Mage.Sets/src/mage/sets/darksteel/EmissaryOfHope.java @@ -93,7 +93,7 @@ class EmissaryOfHopeEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player targetPlayer = game.getPlayer(targetPointer.getFirst(source)); + Player targetPlayer = game.getPlayer(targetPointer.getFirst(game, source)); Player sourcePlayer = game.getPlayer(source.getControllerId()); if (targetPlayer != null && sourcePlayer != null) { int amount = game.getBattlefield().count(filter, targetPlayer.getId(), game); diff --git a/Mage.Sets/src/mage/sets/eventide/DeathbringerLiege.java b/Mage.Sets/src/mage/sets/eventide/DeathbringerLiege.java index 1a73eb354fa..e210fc13c0c 100644 --- a/Mage.Sets/src/mage/sets/eventide/DeathbringerLiege.java +++ b/Mage.Sets/src/mage/sets/eventide/DeathbringerLiege.java @@ -108,7 +108,7 @@ class DeathbringerLiegeEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent p = game.getPermanent(targetPointer.getFirst(source)); + Permanent p = game.getPermanent(targetPointer.getFirst(game, source)); if (p != null && p.isTapped()) { p.destroy(source.getSourceId(), game, false); } diff --git a/Mage.Sets/src/mage/sets/innistrad/BackFromTheBrink.java b/Mage.Sets/src/mage/sets/innistrad/BackFromTheBrink.java index 5738cbd5271..7dd3ccd2cca 100644 --- a/Mage.Sets/src/mage/sets/innistrad/BackFromTheBrink.java +++ b/Mage.Sets/src/mage/sets/innistrad/BackFromTheBrink.java @@ -87,7 +87,7 @@ class BackFromTheBrinkEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Card card = game.getCard(this.targetPointer.getFirst(source)); + Card card = game.getCard(this.targetPointer.getFirst(game, source)); if (card != null) { EmptyToken token = new EmptyToken(); CardUtil.copyTo(token).from(card); diff --git a/Mage.Sets/src/mage/sets/innistrad/BalefireDragon.java b/Mage.Sets/src/mage/sets/innistrad/BalefireDragon.java index 3400e96124d..966e4d9aeaa 100644 --- a/Mage.Sets/src/mage/sets/innistrad/BalefireDragon.java +++ b/Mage.Sets/src/mage/sets/innistrad/BalefireDragon.java @@ -86,7 +86,7 @@ class BalefireDragonEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { int amount = (Integer)getValue("damage"); if (amount > 0) { diff --git a/Mage.Sets/src/mage/sets/innistrad/BrimstoneVolley.java b/Mage.Sets/src/mage/sets/innistrad/BrimstoneVolley.java index 1718b824044..95e822f6385 100644 --- a/Mage.Sets/src/mage/sets/innistrad/BrimstoneVolley.java +++ b/Mage.Sets/src/mage/sets/innistrad/BrimstoneVolley.java @@ -86,12 +86,12 @@ class BrimstoneVolleyEffect extends OneShotEffect { if (watcher.conditionMet()) { damage = 5; } - Permanent permanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); if (permanent != null) { permanent.damage(damage, source.getSourceId(), game, true, false); return true; } - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { player.damage(damage, source.getSourceId(), game, false, true); return true; diff --git a/Mage.Sets/src/mage/sets/innistrad/CacklingCounterpart.java b/Mage.Sets/src/mage/sets/innistrad/CacklingCounterpart.java index 4b3943886dd..391c2dd5bda 100644 --- a/Mage.Sets/src/mage/sets/innistrad/CacklingCounterpart.java +++ b/Mage.Sets/src/mage/sets/innistrad/CacklingCounterpart.java @@ -85,7 +85,7 @@ class CacklingCounterpartEffect extends OneShotEffect @Override public boolean apply(Game game, Ability source) { - Card card = game.getCard(this.targetPointer.getFirst(source)); + Card card = game.getCard(this.targetPointer.getFirst(game, source)); if (card != null) { EmptyToken token = new EmptyToken(); CardUtil.copyTo(token).from(card); diff --git a/Mage.Sets/src/mage/sets/innistrad/CreepyDoll.java b/Mage.Sets/src/mage/sets/innistrad/CreepyDoll.java index d9ede6935c5..6d227fd6391 100644 --- a/Mage.Sets/src/mage/sets/innistrad/CreepyDoll.java +++ b/Mage.Sets/src/mage/sets/innistrad/CreepyDoll.java @@ -123,7 +123,7 @@ class CreepyDollEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); if (player != null) { if (player.flipCoin(game)) { - UUID targetId = getTargetPointer().getFirst(source); + UUID targetId = getTargetPointer().getFirst(game, source); Permanent permanent = game.getPermanent(targetId); if (permanent != null) { permanent.destroy(source.getId(), game, false); diff --git a/Mage.Sets/src/mage/sets/innistrad/ElderCathar.java b/Mage.Sets/src/mage/sets/innistrad/ElderCathar.java index 3aa0b418da4..2e4bf0687d3 100644 --- a/Mage.Sets/src/mage/sets/innistrad/ElderCathar.java +++ b/Mage.Sets/src/mage/sets/innistrad/ElderCathar.java @@ -94,7 +94,7 @@ class ElderCatharAddCountersTargetEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { StackObject spell = game.getStack().getStackObject( - targetPointer.getFirst(source)); + targetPointer.getFirst(game, source)); Cost cost = new GenericManaCost(1); if (spell != null) { Player player = game.getPlayer(spell.getControllerId()); diff --git a/Mage.Sets/src/mage/sets/innistrad/GarrukRelentless.java b/Mage.Sets/src/mage/sets/innistrad/GarrukRelentless.java index d033aff22f8..d6240f215fe 100644 --- a/Mage.Sets/src/mage/sets/innistrad/GarrukRelentless.java +++ b/Mage.Sets/src/mage/sets/innistrad/GarrukRelentless.java @@ -135,7 +135,7 @@ class GarrukRelentlessDamageEffect extends OneShotEffect { maxCost = test; } } - Permanent permanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); if (permanent != null) { permanent.damage(maxCost, source.getSourceId(), game, true, false); return true; } - Player targetPlayer = game.getPlayer(targetPointer.getFirst(source)); + Player targetPlayer = game.getPlayer(targetPointer.getFirst(game, source)); if (targetPlayer != null) { targetPlayer.damage(maxCost, source.getSourceId(), game, false, true); return true; diff --git a/Mage.Sets/src/mage/sets/innistrad/SeverTheBloodline.java b/Mage.Sets/src/mage/sets/innistrad/SeverTheBloodline.java index 4313a0dd442..b891c3f1cb3 100644 --- a/Mage.Sets/src/mage/sets/innistrad/SeverTheBloodline.java +++ b/Mage.Sets/src/mage/sets/innistrad/SeverTheBloodline.java @@ -90,7 +90,7 @@ class SeverTheBloodlineEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent targetPermanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent targetPermanent = game.getPermanent(targetPointer.getFirst(game, source)); if (targetPermanent != null) { FilterCreaturePermanent filter = new FilterCreaturePermanent(); filter.getName().add(targetPermanent.getName()); diff --git a/Mage.Sets/src/mage/sets/innistrad/SkaabRuinator.java b/Mage.Sets/src/mage/sets/innistrad/SkaabRuinator.java index f4f1ef40ba0..ca80654f4a9 100644 --- a/Mage.Sets/src/mage/sets/innistrad/SkaabRuinator.java +++ b/Mage.Sets/src/mage/sets/innistrad/SkaabRuinator.java @@ -138,7 +138,7 @@ class SkaabRuinatorEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Card target = (Card) game.getObject(targetPointer.getFirst(source)); + Card target = (Card) game.getObject(targetPointer.getFirst(game, source)); if (target != null) { Player controller = game.getPlayer(target.getOwnerId()); if (controller != null) { diff --git a/Mage.Sets/src/mage/sets/innistrad/SnapcasterMage.java b/Mage.Sets/src/mage/sets/innistrad/SnapcasterMage.java index db8182a6ab7..91df7ef935c 100644 --- a/Mage.Sets/src/mage/sets/innistrad/SnapcasterMage.java +++ b/Mage.Sets/src/mage/sets/innistrad/SnapcasterMage.java @@ -108,7 +108,7 @@ class SnapcasterMageEffect extends ContinuousEffectImpl { @Override public boolean apply(Game game, Ability source) { - Card card = game.getCard(targetPointer.getFirst(source)); + Card card = game.getCard(targetPointer.getFirst(game, source)); if (card != null) { FlashbackAbility ability; if (card.getCardType().contains(CardType.INSTANT)) diff --git a/Mage.Sets/src/mage/sets/magic2010/ConsumeSpirit.java b/Mage.Sets/src/mage/sets/magic2010/ConsumeSpirit.java index be55c050ee0..ea81575f72c 100644 --- a/Mage.Sets/src/mage/sets/magic2010/ConsumeSpirit.java +++ b/Mage.Sets/src/mage/sets/magic2010/ConsumeSpirit.java @@ -90,11 +90,11 @@ class ConsumeSpiritEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { int damage = source.getManaCostsToPay().getX(); if (damage > 0) { - Permanent permanent = game.getPermanent(getTargetPointer().getFirst(source)); + Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source)); if (permanent != null) { permanent.damage(damage, source.getSourceId(), game, true, false); } else { - Player player = game.getPlayer(getTargetPointer().getFirst(source)); + Player player = game.getPlayer(getTargetPointer().getFirst(game, source)); if (player != null) { player.damage(damage, source.getSourceId(), game, false, true); } diff --git a/Mage.Sets/src/mage/sets/magic2010/Fireball.java b/Mage.Sets/src/mage/sets/magic2010/Fireball.java index 0e45428b0e2..e4b75cd70ff 100644 --- a/Mage.Sets/src/mage/sets/magic2010/Fireball.java +++ b/Mage.Sets/src/mage/sets/magic2010/Fireball.java @@ -86,12 +86,12 @@ class FireballEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - int numTargets = targetPointer.getTargets(source).size(); + int numTargets = targetPointer.getTargets(game, source).size(); int damage = source.getManaCostsToPay().getX(); if (numTargets > 0) { int damagePer = damage/numTargets; if (damagePer > 0) { - for (UUID targetId: targetPointer.getTargets(source)) { + for (UUID targetId: targetPointer.getTargets(game, source)) { Permanent permanent = game.getPermanent(targetId); if (permanent != null) { permanent.damage(damagePer, source.getSourceId(), game, true, false); diff --git a/Mage.Sets/src/mage/sets/magic2010/HiveMind.java b/Mage.Sets/src/mage/sets/magic2010/HiveMind.java index 1cb62089c33..d233d217236 100644 --- a/Mage.Sets/src/mage/sets/magic2010/HiveMind.java +++ b/Mage.Sets/src/mage/sets/magic2010/HiveMind.java @@ -121,7 +121,7 @@ class HiveMindEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Spell spell = game.getStack().getSpell(targetPointer.getFirst(source)); + Spell spell = game.getStack().getSpell(targetPointer.getFirst(game, source)); Player player = game.getPlayer(source.getControllerId()); if (spell != null && player != null) { Set players = player.getInRange(); diff --git a/Mage.Sets/src/mage/sets/magic2010/SphinxAmbassador.java b/Mage.Sets/src/mage/sets/magic2010/SphinxAmbassador.java index ee67ed047b8..66f401af179 100644 --- a/Mage.Sets/src/mage/sets/magic2010/SphinxAmbassador.java +++ b/Mage.Sets/src/mage/sets/magic2010/SphinxAmbassador.java @@ -96,7 +96,7 @@ class SphinxAmbassadorEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); - Player targetPlayer = game.getPlayer(targetPointer.getFirst(source)); + Player targetPlayer = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null && targetPlayer != null) { TargetCardInLibrary target = new TargetCardInLibrary(); diff --git a/Mage.Sets/src/mage/sets/magic2011/MerfolkSpy.java b/Mage.Sets/src/mage/sets/magic2011/MerfolkSpy.java index 8f29a4fa9e1..a0394cbdb6c 100644 --- a/Mage.Sets/src/mage/sets/magic2011/MerfolkSpy.java +++ b/Mage.Sets/src/mage/sets/magic2011/MerfolkSpy.java @@ -87,7 +87,7 @@ class MerfolkSpyEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null && player.getHand().size() > 0) { Cards revealed = new CardsImpl(); revealed.add(player.getHand().getRandom(game)); diff --git a/Mage.Sets/src/mage/sets/magic2012/BloodlordOfVaasgoth.java b/Mage.Sets/src/mage/sets/magic2012/BloodlordOfVaasgoth.java index e46c03f15de..9c1c0d06880 100644 --- a/Mage.Sets/src/mage/sets/magic2012/BloodlordOfVaasgoth.java +++ b/Mage.Sets/src/mage/sets/magic2012/BloodlordOfVaasgoth.java @@ -108,7 +108,7 @@ class BloodlordOfVaasgothEffect extends ContinuousEffectImpl { @Override public boolean apply(Game game, Ability source) { - Spell object = game.getStack().getSpell(targetPointer.getFirst(source)); + Spell object = game.getStack().getSpell(targetPointer.getFirst(game, source)); if (object != null) { Permanent permanent = game.getPermanent(object.getSourceId()); if (permanent != null) { diff --git a/Mage.Sets/src/mage/sets/magic2012/CrownOfEmpires.java b/Mage.Sets/src/mage/sets/magic2012/CrownOfEmpires.java index a3c43a1bd7d..6ebb8f02340 100644 --- a/Mage.Sets/src/mage/sets/magic2012/CrownOfEmpires.java +++ b/Mage.Sets/src/mage/sets/magic2012/CrownOfEmpires.java @@ -85,7 +85,7 @@ class CrownOfEmpiresEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent target = game.getPermanent(targetPointer.getFirst(source)); + Permanent target = game.getPermanent(targetPointer.getFirst(game, source)); boolean scepter = false; boolean throne = false; for (Permanent permanent : game.getBattlefield().getAllActivePermanents(source.getControllerId())) { @@ -130,7 +130,7 @@ class CrownOfEmpiresControlEffect extends ContinuousEffectImpl { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { if (controller.flipCoin(game)) { - Permanent permanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); if (permanent != null) { permanent.damage(2, source.getSourceId(), game, true, false); return true; } - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { player.damage(2, source.getSourceId(), game, false, true); return true; diff --git a/Mage.Sets/src/mage/sets/magic2012/JaceMemoryAdept.java b/Mage.Sets/src/mage/sets/magic2012/JaceMemoryAdept.java index 3c40d6dda08..4e33129c4f6 100644 --- a/Mage.Sets/src/mage/sets/magic2012/JaceMemoryAdept.java +++ b/Mage.Sets/src/mage/sets/magic2012/JaceMemoryAdept.java @@ -99,7 +99,7 @@ class JaceMemoryAdeptEffect extends DrawCardTargetEffect { @Override public boolean apply(Game game, Ability source) { - for (UUID target : targetPointer.getTargets(source)) { + for (UUID target : targetPointer.getTargets(game, source)) { Player player = game.getPlayer(target); if (player != null) { player.drawCards(amount.calculate(game, source), game); diff --git a/Mage.Sets/src/mage/sets/magic2012/ScepterOfEmpires.java b/Mage.Sets/src/mage/sets/magic2012/ScepterOfEmpires.java index 2fc46c18d11..e86b58e9da0 100644 --- a/Mage.Sets/src/mage/sets/magic2012/ScepterOfEmpires.java +++ b/Mage.Sets/src/mage/sets/magic2012/ScepterOfEmpires.java @@ -95,7 +95,7 @@ class ScepterOfEmpiresEffect extends OneShotEffect { int amount = throne && crown ? 3 : 1; - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { player.damage(amount, source.getSourceId(), game, false, true); return true; diff --git a/Mage.Sets/src/mage/sets/magic2012/Scrambleverse.java b/Mage.Sets/src/mage/sets/magic2012/Scrambleverse.java index b9211970f41..613d2a21497 100644 --- a/Mage.Sets/src/mage/sets/magic2012/Scrambleverse.java +++ b/Mage.Sets/src/mage/sets/magic2012/Scrambleverse.java @@ -125,7 +125,7 @@ class ScrambleverseControlEffect extends ContinuousEffectImpl { @Override public boolean apply(Game game, Ability source) { - Spell spell = game.getStack().getSpell(targetPointer.getFirst(source)); + Spell spell = game.getStack().getSpell(targetPointer.getFirst(game, source)); if (spell != null) { if (spell.moveToExile(source.getSourceId(), "Knowledge Pool Exile", id, game)) { Player player = game.getPlayer(spell.getControllerId()); diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/Mirrorworks.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/Mirrorworks.java index cdb1fa1456c..385cc66fd86 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/Mirrorworks.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/Mirrorworks.java @@ -132,7 +132,7 @@ class MirrorworksEffect extends OneShotEffect { if (player.chooseUse(outcome, "Pay " + cost.getText() + " and " + staticText, game)) { cost.clearPaid(); if (cost.pay(source, game, source.getId(), source.getControllerId(), false)) { - UUID targetId = targetPointer.getFirst(source); + UUID targetId = targetPointer.getFirst(game, source); if (targetId != null) { MageObject target = game.getLastKnownInformation(targetId, Constants.Zone.BATTLEFIELD); if (target != null && target instanceof Permanent) { diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/MorbidPlunder.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/MorbidPlunder.java index 47106d14fb1..9fc4523c4f0 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/MorbidPlunder.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/MorbidPlunder.java @@ -85,7 +85,7 @@ class MorbidPlunderEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { boolean result = false; - for (UUID target : targetPointer.getTargets(source)) { + for (UUID target : targetPointer.getTargets(game, source)) { Card card = game.getCard(target); if (card != null) { result |= card.moveToZone(Zone.HAND, source.getId(), game, true); diff --git a/Mage.Sets/src/mage/sets/newphyrexia/AuriokSurvivors.java b/Mage.Sets/src/mage/sets/newphyrexia/AuriokSurvivors.java index c356d65cf7e..ab8834bc002 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/AuriokSurvivors.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/AuriokSurvivors.java @@ -96,7 +96,7 @@ class AuriokSurvivorsEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent p = game.getPermanent(targetPointer.getFirst(source)); + Permanent p = game.getPermanent(targetPointer.getFirst(game, source)); Permanent sourcePermanent = game.getPermanent(source.getSourceId()); Player player = game.getPlayer(source.getControllerId()); if (p != null && player != null && sourcePermanent != null) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/BeastWithin.java b/Mage.Sets/src/mage/sets/newphyrexia/BeastWithin.java index 8913131ffe0..fbe8b29120f 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/BeastWithin.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/BeastWithin.java @@ -87,7 +87,7 @@ class BeastWithinEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent permanent = (Permanent) game.getLastKnownInformation(targetPointer.getFirst(source), Constants.Zone.BATTLEFIELD); + Permanent permanent = (Permanent) game.getLastKnownInformation(targetPointer.getFirst(game, source), Constants.Zone.BATTLEFIELD); if (permanent != null) { BeastToken token = new BeastToken(); token.putOntoBattlefield(1, game, source.getId(), permanent.getControllerId()); diff --git a/Mage.Sets/src/mage/sets/newphyrexia/CorruptedResolve.java b/Mage.Sets/src/mage/sets/newphyrexia/CorruptedResolve.java index c417250f883..d05fcf53c70 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/CorruptedResolve.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/CorruptedResolve.java @@ -80,11 +80,11 @@ class CorruptedResolveEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Spell spell = game.getStack().getSpell(targetPointer.getFirst(source)); + Spell spell = game.getStack().getSpell(targetPointer.getFirst(game, source)); if (spell != null) { Player player = game.getPlayer(spell.getControllerId()); if (player != null && player.getCounters().containsKey(CounterType.POISON)) - return game.getStack().counter(targetPointer.getFirst(source), source.getSourceId(), game); + return game.getStack().counter(targetPointer.getFirst(game, source), source.getSourceId(), game); } return false; } diff --git a/Mage.Sets/src/mage/sets/newphyrexia/ExclusionRitual.java b/Mage.Sets/src/mage/sets/newphyrexia/ExclusionRitual.java index 41f65e00d55..496ed4a9856 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/ExclusionRitual.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/ExclusionRitual.java @@ -92,7 +92,7 @@ class ExclusionRitualImprintEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null && controller != null) { controller.lookAtCards("Gitaxian Probe", player.getHand(), game); } diff --git a/Mage.Sets/src/mage/sets/newphyrexia/InvaderParasite.java b/Mage.Sets/src/mage/sets/newphyrexia/InvaderParasite.java index 42ba4b6b90d..ec1b7b3a9aa 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/InvaderParasite.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/InvaderParasite.java @@ -91,7 +91,7 @@ class InvaderParasiteImprintEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { GenericManaCost cost = new GenericManaCost(2); if (!cost.pay(source, game, player.getId(), player.getId(), false)) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/MortisDogs.java b/Mage.Sets/src/mage/sets/newphyrexia/MortisDogs.java index 73c1415cffb..4194e3a2312 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/MortisDogs.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/MortisDogs.java @@ -89,7 +89,7 @@ class MortisDogsEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); Permanent sourcePermanent = game.getPermanent(source.getSourceId()); if (player != null && sourcePermanent != null) { player.loseLife(sourcePermanent.getPower().getValue(), game); diff --git a/Mage.Sets/src/mage/sets/newphyrexia/OmenMachine.java b/Mage.Sets/src/mage/sets/newphyrexia/OmenMachine.java index feaf03277e8..ed29d8dfd6a 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/OmenMachine.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/OmenMachine.java @@ -152,7 +152,7 @@ class OmenMachineEffect2 extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { Card card = player.getLibrary().removeFromTop(game); if (card != null) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/VorinclexVoiceOfHunger.java b/Mage.Sets/src/mage/sets/newphyrexia/VorinclexVoiceOfHunger.java index 65682b48291..5dc97bbbf63 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/VorinclexVoiceOfHunger.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/VorinclexVoiceOfHunger.java @@ -136,7 +136,7 @@ class VorinclexEffect extends ManaEffect { @Override public boolean apply(Game game, Ability source) { - Permanent land = game.getPermanent(this.targetPointer.getFirst(source)); + Permanent land = game.getPermanent(this.targetPointer.getFirst(game, source)); Abilities mana = land.getAbilities().getManaAbilities(Zone.BATTLEFIELD); Mana types = new Mana(); for (ManaAbility ability: mana) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/WhisperingSpecter.java b/Mage.Sets/src/mage/sets/newphyrexia/WhisperingSpecter.java index 8fac78c0a4f..667935f4c20 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/WhisperingSpecter.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/WhisperingSpecter.java @@ -88,7 +88,7 @@ class WhisperingSpecterEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { int value = player.getCounters().getCount(CounterType.POISON); if (value > 0) { diff --git a/Mage.Sets/src/mage/sets/ravnika/ClutchOfTheUndercity.java b/Mage.Sets/src/mage/sets/ravnika/ClutchOfTheUndercity.java index ae4fac050a6..2ba9661f0f2 100644 --- a/Mage.Sets/src/mage/sets/ravnika/ClutchOfTheUndercity.java +++ b/Mage.Sets/src/mage/sets/ravnika/ClutchOfTheUndercity.java @@ -84,7 +84,7 @@ class ClutchOfTheUndercityEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent target = game.getPermanent(targetPointer.getFirst(source)); + Permanent target = game.getPermanent(targetPointer.getFirst(game, source)); if (target != null) { ObjectColor color = target.getColor(); target.destroy(source.getSourceId(), game, false); diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/GravityWell.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/GravityWell.java index 10b5c67e78e..21515112034 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/GravityWell.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/GravityWell.java @@ -122,7 +122,7 @@ class GravityWellEffect extends ContinuousEffectImpl { @Override public boolean apply(Constants.Layer layer, Constants.SubLayer sublayer, Ability source, Game game) { - Permanent permanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); if (permanent != null) { switch (layer) { case AbilityAddingRemovingEffects_6: diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/ArcTrail.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/ArcTrail.java index f73208cddb5..1eeb216ed52 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/ArcTrail.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/ArcTrail.java @@ -95,7 +95,7 @@ class ArcTrailEffect extends OneShotEffect { boolean twoDamageDone = false; int damage = 2; - for ( UUID target : targetPointer.getTargets(source) ) { + for ( UUID target : targetPointer.getTargets(game, source) ) { Permanent permanent = game.getPermanent(target); if ( twoDamageDone ) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/EngulfingSlagwurm.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/EngulfingSlagwurm.java index e264c2ed1aa..2ecaa503246 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/EngulfingSlagwurm.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/EngulfingSlagwurm.java @@ -87,7 +87,7 @@ class EngulfingSlagwurmEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - MageObject c = game.getLastKnownInformation(targetPointer.getFirst(source), Constants.Zone.BATTLEFIELD); + MageObject c = game.getLastKnownInformation(targetPointer.getFirst(game, source), Constants.Zone.BATTLEFIELD); if (c != null && controller != null) { controller.gainLife(c.getPower().getValue(), game); } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/FulgentDistraction.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/FulgentDistraction.java index d686dfe87c1..838d9128706 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/FulgentDistraction.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/FulgentDistraction.java @@ -83,7 +83,7 @@ class FulgentDistractionEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - for ( UUID target : targetPointer.getTargets(source) ) { + for ( UUID target : targetPointer.getTargets(game, source) ) { Permanent creature = game.getPermanent(target); List copiedAttachments = new ArrayList(creature.getAttachments()); diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/GolemArtisan.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/GolemArtisan.java index 5896c152771..6d226f0ec82 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/GolemArtisan.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/GolemArtisan.java @@ -113,7 +113,7 @@ class GolemArtisanEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); Player playerControls = game.getPlayer(source.getControllerId()); if (permanent != null && playerControls != null) { Choice abilityChoice = new ChoiceImpl(); diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/LiegeOfTheTangle.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/LiegeOfTheTangle.java index 26c17ac9249..ab1f00fcbe2 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/LiegeOfTheTangle.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/LiegeOfTheTangle.java @@ -174,7 +174,7 @@ class LiegeOfTheTangleEffect extends ContinuousEffectImpl { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); Player controller = game.getPlayer(source.getControllerId()); if (player != null && controller != null) { Choice cardChoice = new ChoiceImpl(); diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/MimicVat.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/MimicVat.java index 12683648640..cd76757e7ab 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/MimicVat.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/MimicVat.java @@ -155,7 +155,7 @@ class MimicVatEffect extends OneShotEffect { permanent.clearImprinted(game); // Imprint a new one - UUID target = targetPointer.getFirst(source); + UUID target = targetPointer.getFirst(game, source); if (target != null) { Card card = game.getCard(target); card.moveToExile(getId(), "Mimic Vat (Imprint)", source.getSourceId(), game); diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/NimDeathmantle.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/NimDeathmantle.java index 50e759cd81f..ee5524fd53f 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/NimDeathmantle.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/NimDeathmantle.java @@ -160,7 +160,7 @@ class NimDeathmantleEffect extends OneShotEffect { if (player.chooseUse(Constants.Outcome.Benefit, equipment.getName() + " - Pay " + cost.getText() + "?", game)) { cost.clearPaid(); if (cost.pay(source, game, source.getId(), source.getControllerId(), false)) { - UUID target = targetPointer.getFirst(source); + UUID target = targetPointer.getFirst(game, source); if (target != null && equipment != null) { Card card = game.getCard(target); // check if it's still in graveyard diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/PainfulQuandary.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/PainfulQuandary.java index b1d25720dc9..1f753a44d6f 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/PainfulQuandary.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/PainfulQuandary.java @@ -117,7 +117,7 @@ class PainfulQuandryEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { Cost cost = new DiscardTargetCost(new TargetCardInHand()); if (cost.canPay(player.getId(), player.getId(), game)) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/PrecursorGolem.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/PrecursorGolem.java index 1eb3f740e1a..469762b834e 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/PrecursorGolem.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/PrecursorGolem.java @@ -121,7 +121,7 @@ class PrecursorGolemCopyTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { TargetDiscard target = new TargetDiscard(player.getId()); player.choose(Outcome.Discard, target, source.getSourceId(), game); diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/RustTick.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/RustTick.java index 9671f207109..bd8f8a8bf17 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/RustTick.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/RustTick.java @@ -97,7 +97,7 @@ class RustTickTapTargetEffect extends TapTargetEffect { public boolean apply(Game game, Ability source) { Permanent rustTick = game.getPermanent(source.getSourceId()); if (rustTick != null) rustTick.clearConnectedCards("HisokasGuard"); - for (UUID target : targetPointer.getTargets(source)) { + for (UUID target : targetPointer.getTargets(game, source)) { Permanent permanent = game.getPermanent(target); if (permanent != null) { rustTick.addConnectedCard("HisokasGuard", permanent.getId()); diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/ShapeAnew.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/ShapeAnew.java index cf349c923a8..be7912aa95c 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/ShapeAnew.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/ShapeAnew.java @@ -89,7 +89,7 @@ public class ShapeAnew extends CardImpl { @Override public boolean apply(Game game, Ability source) { - Permanent sourcePermanent = (Permanent) game.getLastKnownInformation(targetPointer.getFirst(source), Constants.Zone.BATTLEFIELD); + Permanent sourcePermanent = (Permanent) game.getLastKnownInformation(targetPointer.getFirst(game, source), Constants.Zone.BATTLEFIELD); if (sourcePermanent == null) { return false; } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/VenserTheSojourner.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/VenserTheSojourner.java index 8b24844a1c1..36360f6e163 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/VenserTheSojourner.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/VenserTheSojourner.java @@ -110,8 +110,8 @@ class VenserTheSojournerEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - if (getTargetPointer().getFirst(source) != null) { - Permanent permanent = game.getPermanent(getTargetPointer().getFirst(source)); + if (getTargetPointer().getFirst(game, source) != null) { + Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source)); if (permanent != null) { if (permanent.moveToExile(source.getSourceId(), "Venser, the Sojourner", source.getSourceId(), game)) { //create delayed triggered ability diff --git a/Mage.Sets/src/mage/sets/shardsofalara/CradleOfVitality.java b/Mage.Sets/src/mage/sets/shardsofalara/CradleOfVitality.java index 9113dd1cea2..4b022227410 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/CradleOfVitality.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/CradleOfVitality.java @@ -124,7 +124,7 @@ class CradleOfVitalityEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { int affectedTargets = 0; Integer amount = (Integer) getValue("amount"); - for (UUID uuid : targetPointer.getTargets(source)) { + for (UUID uuid : targetPointer.getTargets(game, source)) { Permanent permanent = game.getPermanent(uuid); permanent.addCounters(CounterType.P1P1.createInstance(amount), game); affectedTargets ++; diff --git a/Mage.Sets/src/mage/sets/tenth/Peek.java b/Mage.Sets/src/mage/sets/tenth/Peek.java index 62fce094a1a..d9462de28ea 100644 --- a/Mage.Sets/src/mage/sets/tenth/Peek.java +++ b/Mage.Sets/src/mage/sets/tenth/Peek.java @@ -81,7 +81,7 @@ class PeekEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null && controller != null) { controller.lookAtCards("Peek", player.getHand(), game); } diff --git a/Mage.Sets/src/mage/sets/worldwake/ArchonOfRedemption.java b/Mage.Sets/src/mage/sets/worldwake/ArchonOfRedemption.java index 93ed10c8768..59c6de2c1be 100644 --- a/Mage.Sets/src/mage/sets/worldwake/ArchonOfRedemption.java +++ b/Mage.Sets/src/mage/sets/worldwake/ArchonOfRedemption.java @@ -126,10 +126,10 @@ class ArchonOfRedemptionEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent p = game.getPermanent(targetPointer.getFirst(source)); + Permanent p = game.getPermanent(targetPointer.getFirst(game, source)); Player player = game.getPlayer(source.getControllerId()); if (p == null) { - p = (Permanent) game.getLastKnownInformation(targetPointer.getFirst(source), Constants.Zone.BATTLEFIELD); + p = (Permanent) game.getLastKnownInformation(targetPointer.getFirst(game, source), Constants.Zone.BATTLEFIELD); } if (p != null && player != null) { player.gainLife(p.getPower().getValue(), game); diff --git a/Mage.Sets/src/mage/sets/worldwake/NaturesClaim.java b/Mage.Sets/src/mage/sets/worldwake/NaturesClaim.java index 40b64160dcc..ba0f00faf69 100644 --- a/Mage.Sets/src/mage/sets/worldwake/NaturesClaim.java +++ b/Mage.Sets/src/mage/sets/worldwake/NaturesClaim.java @@ -87,7 +87,7 @@ class NaturesClaimEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent target = (Permanent) game.getLastKnownInformation(targetPointer.getFirst(source), Constants.Zone.BATTLEFIELD); + Permanent target = (Permanent) game.getLastKnownInformation(targetPointer.getFirst(game, source), Constants.Zone.BATTLEFIELD); if (target != null) { Player player = game.getPlayer(target.getControllerId()); if (player != null) { diff --git a/Mage.Sets/src/mage/sets/worldwake/StrengthOfTheTajuru.java b/Mage.Sets/src/mage/sets/worldwake/StrengthOfTheTajuru.java index bc5f0234207..cf8369b0d55 100644 --- a/Mage.Sets/src/mage/sets/worldwake/StrengthOfTheTajuru.java +++ b/Mage.Sets/src/mage/sets/worldwake/StrengthOfTheTajuru.java @@ -100,7 +100,7 @@ class StrengthOfTheTajuruAddCountersTargetEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Card c = game.getCard(targetPointer.getFirst(source)); + Card c = game.getCard(targetPointer.getFirst(game, source)); if (c != null) { c.moveToZone(Constants.Zone.BATTLEFIELD, source.getSourceId(), game, false); return true; diff --git a/Mage.Sets/src/mage/sets/zendikar/BlazingTorch.java b/Mage.Sets/src/mage/sets/zendikar/BlazingTorch.java index 00ac49c931e..ac42f2aff3f 100644 --- a/Mage.Sets/src/mage/sets/zendikar/BlazingTorch.java +++ b/Mage.Sets/src/mage/sets/zendikar/BlazingTorch.java @@ -182,12 +182,12 @@ class BlazingTorchDamageEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); if (permanent != null && sourceId != null) { permanent.damage(2, sourceId, game, true, false); return true; } - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null && sourceId != null) { player.damage(2, sourceId, game, false, true); return true; diff --git a/Mage.Sets/src/mage/sets/zendikar/ChandraAblaze.java b/Mage.Sets/src/mage/sets/zendikar/ChandraAblaze.java index 0a7cd493edf..9d102e4a5ac 100644 --- a/Mage.Sets/src/mage/sets/zendikar/ChandraAblaze.java +++ b/Mage.Sets/src/mage/sets/zendikar/ChandraAblaze.java @@ -142,13 +142,13 @@ class ChandraAblazeEffect2 extends OneShotEffect { public boolean apply(Game game, Ability source) { Card card = (Card) this.getValue("discardedCard"); if (card != null && card.getColor().isRed()) { - Permanent permanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); if (permanent != null) { permanent.damage(4, source.getSourceId(), game, true, false); return true; } - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { player.damage(4, source.getSourceId(), game, false, true); return true; diff --git a/Mage.Sets/src/mage/sets/zendikar/KhalniGem.java b/Mage.Sets/src/mage/sets/zendikar/KhalniGem.java index 4feacf5156a..b6419b7252e 100644 --- a/Mage.Sets/src/mage/sets/zendikar/KhalniGem.java +++ b/Mage.Sets/src/mage/sets/zendikar/KhalniGem.java @@ -101,7 +101,7 @@ class KhalniGemReturnToHandTargetEffect extends OneShotEffect{ @Override public boolean apply(Game game, Ability source) { int affectedTargets = 0; - if (targetPointer.getTargets(source).size() > 0) { - for (UUID spellId : targetPointer.getTargets(source)) { + if (targetPointer.getTargets(game, source).size() > 0) { + for (UUID spellId : targetPointer.getTargets(game, source)) { Spell spell = game.getStack().getSpell(spellId); if (spell != null) { spell.moveToExile(null, null, source.getId(), game); diff --git a/Mage.Sets/src/mage/sets/zendikar/SorinMarkov.java b/Mage.Sets/src/mage/sets/zendikar/SorinMarkov.java index e512453a3d1..5e1392e12de 100644 --- a/Mage.Sets/src/mage/sets/zendikar/SorinMarkov.java +++ b/Mage.Sets/src/mage/sets/zendikar/SorinMarkov.java @@ -103,7 +103,7 @@ class SorinMarkovEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { player.setLife(10, game); return true; diff --git a/Mage/src/mage/abilities/common/EntersBattlefieldAbility.java b/Mage/src/mage/abilities/common/EntersBattlefieldAbility.java index ea1becb40d8..7e998c72c8c 100644 --- a/Mage/src/mage/abilities/common/EntersBattlefieldAbility.java +++ b/Mage/src/mage/abilities/common/EntersBattlefieldAbility.java @@ -40,7 +40,7 @@ import mage.abilities.effects.EntersBattlefieldEffect; public class EntersBattlefieldAbility extends StaticAbility { public EntersBattlefieldAbility(Effect effect) { - super(Zone.BATTLEFIELD, new EntersBattlefieldEffect(effect, "")); + super(Zone.BATTLEFIELD, new EntersBattlefieldEffect(effect, null)); } public EntersBattlefieldAbility(Effect effect, String rule) { diff --git a/Mage/src/mage/abilities/effects/AuraReplacementEffect.java b/Mage/src/mage/abilities/effects/AuraReplacementEffect.java index e138d7c1996..8853345d7d6 100644 --- a/Mage/src/mage/abilities/effects/AuraReplacementEffect.java +++ b/Mage/src/mage/abilities/effects/AuraReplacementEffect.java @@ -87,7 +87,7 @@ public class AuraReplacementEffect extends ReplacementEffectImpl @Override public boolean apply(Game game, Ability source) { - Spell spell = game.getStack().getSpell(targetPointer.getFirst(source)); + Spell spell = game.getStack().getSpell(targetPointer.getFirst(game, source)); if (spell != null) { Spell copy = spell.copySpell(); copy.setControllerId(source.getControllerId()); diff --git a/Mage/src/mage/abilities/effects/common/CounterUnlessPaysEffect.java b/Mage/src/mage/abilities/effects/common/CounterUnlessPaysEffect.java index c2e64237907..1de6858b0f1 100644 --- a/Mage/src/mage/abilities/effects/common/CounterUnlessPaysEffect.java +++ b/Mage/src/mage/abilities/effects/common/CounterUnlessPaysEffect.java @@ -62,7 +62,7 @@ public class CounterUnlessPaysEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); if (permanent != null) { permanent.damage(amount.calculate(game, source), source.getSourceId(), game, preventable, false); return true; } - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { player.damage(amount.calculate(game, source), source.getSourceId(), game, false, preventable); return true; diff --git a/Mage/src/mage/abilities/effects/common/DestroyTargetEffect.java b/Mage/src/mage/abilities/effects/common/DestroyTargetEffect.java index 63d69154a1d..98ca28b0c24 100644 --- a/Mage/src/mage/abilities/effects/common/DestroyTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/DestroyTargetEffect.java @@ -84,8 +84,8 @@ public class DestroyTargetEffect extends OneShotEffect { } } } - else if (targetPointer.getTargets(source).size() > 0) { - for (UUID permanentId : targetPointer.getTargets(source)) { + else if (targetPointer.getTargets(game, source).size() > 0) { + for (UUID permanentId : targetPointer.getTargets(game, source)) { Permanent permanent = game.getPermanent(permanentId); if (permanent != null) { permanent.destroy(source.getId(), game, noRegen); diff --git a/Mage/src/mage/abilities/effects/common/DiscardTargetEffect.java b/Mage/src/mage/abilities/effects/common/DiscardTargetEffect.java index 73c11c16bcd..0449445fbda 100644 --- a/Mage/src/mage/abilities/effects/common/DiscardTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/DiscardTargetEffect.java @@ -77,7 +77,7 @@ public class DiscardTargetEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { if (randomDiscard) { int maxAmount = Math.min(amount.calculate(game, source), player.getHand().size()); diff --git a/Mage/src/mage/abilities/effects/common/DrawCardTargetEffect.java b/Mage/src/mage/abilities/effects/common/DrawCardTargetEffect.java index e6bf33b282d..f43de6d3790 100644 --- a/Mage/src/mage/abilities/effects/common/DrawCardTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/DrawCardTargetEffect.java @@ -66,7 +66,7 @@ public class DrawCardTargetEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { player.drawCards(amount.calculate(game, source), game); return true; diff --git a/Mage/src/mage/abilities/effects/common/ExileFromZoneTargetEffect.java b/Mage/src/mage/abilities/effects/common/ExileFromZoneTargetEffect.java index 60282a0d728..6eba2499a4f 100644 --- a/Mage/src/mage/abilities/effects/common/ExileFromZoneTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/ExileFromZoneTargetEffect.java @@ -77,7 +77,7 @@ public class ExileFromZoneTargetEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); if (exileId == null) { exileId = getId(); @@ -84,7 +84,7 @@ public class ExileTargetEffect extends OneShotEffect { if (permanent != null) { return permanent.moveToExile(exileId, exileZone, source.getSourceId(), game); } else { - Card card = game.getCard(targetPointer.getFirst(source)); + Card card = game.getCard(targetPointer.getFirst(game, source)); if (card != null) { return card.moveToExile(exileId, exileZone, source.getSourceId(), game); } diff --git a/Mage/src/mage/abilities/effects/common/ExileTargetForSourceEffect.java b/Mage/src/mage/abilities/effects/common/ExileTargetForSourceEffect.java index d352a7c45d1..5ebdb8ec614 100644 --- a/Mage/src/mage/abilities/effects/common/ExileTargetForSourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/ExileTargetForSourceEffect.java @@ -66,12 +66,12 @@ public class ExileTargetForSourceEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - for (UUID playerId: targetPointer.getTargets(source)) { + for (UUID playerId: targetPointer.getTargets(game, source)) { Player player = game.getPlayer(playerId); if (player != null) { player.gainLife(life, game); diff --git a/Mage/src/mage/abilities/effects/common/ImprintTargetEffect.java b/Mage/src/mage/abilities/effects/common/ImprintTargetEffect.java index 7dad292f47a..1b63b3c8929 100644 --- a/Mage/src/mage/abilities/effects/common/ImprintTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/ImprintTargetEffect.java @@ -59,11 +59,11 @@ public class ImprintTargetEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Permanent sourcePermanent = game.getPermanent(source.getSourceId()); if (sourcePermanent != null) { - Permanent permanent = game.getPermanent(targetPointer.getFirst(source)); + Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); if (permanent != null) { sourcePermanent.imprint(permanent.getId(), game); } else { - Card card = game.getCard(targetPointer.getFirst(source)); + Card card = game.getCard(targetPointer.getFirst(game, source)); if (card != null) { sourcePermanent.imprint(card.getId(), game); } diff --git a/Mage/src/mage/abilities/effects/common/LoseLifeControllerEffect.java b/Mage/src/mage/abilities/effects/common/LoseLifeControllerEffect.java index 40319f15111..fc1b9d69ca6 100644 --- a/Mage/src/mage/abilities/effects/common/LoseLifeControllerEffect.java +++ b/Mage/src/mage/abilities/effects/common/LoseLifeControllerEffect.java @@ -64,10 +64,10 @@ public class LoseLifeControllerEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player != null) { player.loseLife(amount.calculate(game, source), game); return true; diff --git a/Mage/src/mage/abilities/effects/common/MayTapOrUntapTargetEffect.java b/Mage/src/mage/abilities/effects/common/MayTapOrUntapTargetEffect.java index 3305ee9d284..99a6c777bac 100644 --- a/Mage/src/mage/abilities/effects/common/MayTapOrUntapTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/MayTapOrUntapTargetEffect.java @@ -22,7 +22,7 @@ public class MayTapOrUntapTargetEffect extends OneShotEffect{ @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(targetPointer.getFirst(source)); + Player player = game.getPlayer(targetPointer.getFirst(game, source)); if (player == null) { return false; diff --git a/Mage/src/mage/abilities/effects/common/SacrificeEquippedEffect.java b/Mage/src/mage/abilities/effects/common/SacrificeEquippedEffect.java index aecd867fa46..fe2c8f951ab 100644 --- a/Mage/src/mage/abilities/effects/common/SacrificeEquippedEffect.java +++ b/Mage/src/mage/abilities/effects/common/SacrificeEquippedEffect.java @@ -60,7 +60,7 @@ public class SacrificeEquippedEffect extends OneShotEffect @Override public boolean apply(Game game, Ability source) { int affectedTargets = 0; - for (UUID permanentId : targetPointer.getTargets(source)) { + for (UUID permanentId : targetPointer.getTargets(game, source)) { Permanent permanent = game.getPermanent(permanentId); if (permanent != null) { permanent.sacrifice(source.getSourceId(), game); diff --git a/Mage/src/mage/abilities/effects/common/SkipNextPlayerUntapStepEffect.java b/Mage/src/mage/abilities/effects/common/SkipNextPlayerUntapStepEffect.java index 619c4a01318..a50c952021a 100644 --- a/Mage/src/mage/abilities/effects/common/SkipNextPlayerUntapStepEffect.java +++ b/Mage/src/mage/abilities/effects/common/SkipNextPlayerUntapStepEffect.java @@ -60,7 +60,7 @@ public class SkipNextPlayerUntapStepEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - for (UUID target : targetPointer.getTargets(source)) { + for (UUID target : targetPointer.getTargets(game, source)) { Permanent permanent = game.getPermanent(target); if (permanent != null) { permanent.tap(game); diff --git a/Mage/src/mage/abilities/effects/common/UntapTargetEffect.java b/Mage/src/mage/abilities/effects/common/UntapTargetEffect.java index 9261b6f4c23..2073c9351de 100644 --- a/Mage/src/mage/abilities/effects/common/UntapTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/UntapTargetEffect.java @@ -58,7 +58,7 @@ public class UntapTargetEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - for (UUID target: targetPointer.getTargets(source)) { + for (UUID target: targetPointer.getTargets(game, source)) { Permanent permanent = game.getPermanent(target); if (permanent != null) { permanent.untap(game); diff --git a/Mage/src/mage/abilities/effects/common/continious/AddCardSubTypeTargetEffect.java b/Mage/src/mage/abilities/effects/common/continious/AddCardSubTypeTargetEffect.java index 1b1b42e4575..dc1df2dbdab 100644 --- a/Mage/src/mage/abilities/effects/common/continious/AddCardSubTypeTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/continious/AddCardSubTypeTargetEffect.java @@ -53,7 +53,7 @@ public class AddCardSubTypeTargetEffect extends ContinuousEffectImpl { power = new StaticValue(power.calculate(game, source)); toughness = new StaticValue(toughness.calculate(game, source)); } + targetPointer.init(game, source); } @Override public boolean apply(Game game, Ability source) { int affectedTargets = 0; - for (UUID permanentId : targetPointer.getTargets(source)) { + for (UUID permanentId : targetPointer.getTargets(game, source)) { Permanent target = (Permanent) game.getPermanent(permanentId); if (target != null) { target.addPower(power.calculate(game, source)); diff --git a/Mage/src/mage/abilities/effects/common/continious/GainAbilityTargetEffect.java b/Mage/src/mage/abilities/effects/common/continious/GainAbilityTargetEffect.java index 22401b0fabc..9f9713e6b7c 100644 --- a/Mage/src/mage/abilities/effects/common/continious/GainAbilityTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/continious/GainAbilityTargetEffect.java @@ -33,13 +33,13 @@ import mage.Constants.Layer; import mage.Constants.Outcome; import mage.Constants.SubLayer; import mage.abilities.Ability; +import mage.abilities.Mode; import mage.abilities.effects.ContinuousEffectImpl; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.target.Target; import java.util.UUID; -import mage.abilities.Mode; -import mage.target.Target; /** * @@ -65,10 +65,16 @@ public class GainAbilityTargetEffect extends ContinuousEffectImpl zoneChangeCounter = new HashMap(); public static FirstTargetPointer getInstance() { - return instance; + return new FirstTargetPointer(); + } + + public FirstTargetPointer() { + } + + public FirstTargetPointer(FirstTargetPointer firstTargetPointer) { + this.zoneChangeCounter = new HashMap(); + for (Map.Entry entry : firstTargetPointer.zoneChangeCounter.entrySet()) { + this.zoneChangeCounter.put(entry.getKey(), entry.getValue()); + } } @Override - public List getTargets(Ability source) { + public void init(Game game, Ability source) { + if (source.getTargets().size() > 0) { + for (UUID target : source.getTargets().get(0).getTargets()) { + Card card = game.getCard(target); + if (card != null) { + this.zoneChangeCounter.put(target, card.getZoneChangeCounter()); + } + } + } + } + + @Override + public List getTargets(Game game, Ability source) { ArrayList target = new ArrayList(); - if (source.getTargets().size() > 0) - target.addAll(source.getTargets().get(0).getTargets()); + if (source.getTargets().size() > 0) { + for (UUID targetId : source.getTargets().get(0).getTargets()) { + Card card = game.getCard(targetId); + if (card != null && zoneChangeCounter.containsKey(targetId) + && card.getZoneChangeCounter() != zoneChangeCounter.get(targetId)) { + continue; + } + target.add(targetId); + } + } return target; } @Override - public UUID getFirst(Ability source) { - return source.getFirstTarget(); + public UUID getFirst(Game game, Ability source) { + UUID targetId = source.getFirstTarget(); + if (zoneChangeCounter.containsKey(targetId)) { + Card card = game.getCard(targetId); + if (card != null && zoneChangeCounter.containsKey(targetId) + && card.getZoneChangeCounter() != zoneChangeCounter.get(targetId)) { + return null; + } + } + return targetId; } @Override public TargetPointer copy() { - return instance; + return new FirstTargetPointer(this); } } diff --git a/Mage/src/mage/target/targetpointer/FixedTarget.java b/Mage/src/mage/target/targetpointer/FixedTarget.java index 1f3c8266b18..d23972e75ef 100644 --- a/Mage/src/mage/target/targetpointer/FixedTarget.java +++ b/Mage/src/mage/target/targetpointer/FixedTarget.java @@ -1,6 +1,8 @@ package mage.target.targetpointer; import mage.abilities.Ability; +import mage.cards.Card; +import mage.game.Game; import java.util.ArrayList; import java.util.List; @@ -8,6 +10,7 @@ import java.util.UUID; public class FixedTarget implements TargetPointer { private UUID target; + private int zoneChangeCounter; public FixedTarget(UUID target) { this.target = target; @@ -15,17 +18,42 @@ public class FixedTarget implements TargetPointer { public FixedTarget(final FixedTarget fixedTarget) { this.target = fixedTarget.target; + this.zoneChangeCounter = fixedTarget.zoneChangeCounter; } @Override - public List getTargets(Ability source) { + public void init(Game game, Ability source) { + Card card = game.getCard(target); + if (card != null) { + this.zoneChangeCounter = card.getZoneChangeCounter(); + } + } + + @Override + public List getTargets(Game game, Ability source) { + // check target not changed zone + if (this.zoneChangeCounter > 0) { // will be zero if not defined in init + Card card = game.getCard(target); + if (card != null && card.getZoneChangeCounter() != this.zoneChangeCounter) { + return new ArrayList(); // return empty + } + } + ArrayList list = new ArrayList(1); list.add(target); return list; } @Override - public UUID getFirst(Ability source) { + public UUID getFirst(Game game, Ability source) { + // check target not changed zone + if (this.zoneChangeCounter > 0) { // will be zero if not defined in init + Card card = game.getCard(target); + if (card != null && card.getZoneChangeCounter() != this.zoneChangeCounter) { + return null; + } + } + return target; } diff --git a/Mage/src/mage/target/targetpointer/TargetPointer.java b/Mage/src/mage/target/targetpointer/TargetPointer.java index caf9ce7b9fd..545b018924e 100644 --- a/Mage/src/mage/target/targetpointer/TargetPointer.java +++ b/Mage/src/mage/target/targetpointer/TargetPointer.java @@ -1,13 +1,15 @@ package mage.target.targetpointer; -import java.io.Serializable; import mage.abilities.Ability; +import mage.game.Game; +import java.io.Serializable; import java.util.List; import java.util.UUID; public interface TargetPointer extends Serializable { - List getTargets(Ability source); - UUID getFirst(Ability source); + void init(Game game, Ability source); + List getTargets(Game game, Ability source); + UUID getFirst(Game game, Ability source); TargetPointer copy(); }