From 00281f0b1082718650ec1a7642a7a6ca08b2818e Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Fri, 12 Dec 2014 14:24:59 +0100 Subject: [PATCH] Imporved setTargetPointer of EntersBattlefieldAllTriggeredAbility. --- .../sets/commander/RikuOfTwoReflections.java | 3 +- .../mage/sets/darksteel/GenesisChamber.java | 3 +- .../src/mage/sets/magic2014/AjanisChosen.java | 5 +- .../sets/magic2014/OathOfTheAncientWood.java | 3 +- .../mage/sets/magic2014/OgreBattledriver.java | 3 +- .../mage/sets/morningtide/CloakAndDagger.java | 3 +- .../mage/sets/morningtide/DivinersWand.java | 3 +- .../sets/morningtide/ObsidianBattleAxe.java | 3 +- .../mage/sets/morningtide/ThornbiteStaff.java | 3 +- .../sets/morningtide/VeteransArmaments.java | 4 +- .../sets/planechase2012/SaiOfTheShinobi.java | 4 +- .../mage/sets/ravnika/CloudstoneCurio.java | 52 +++++++++---------- .../mage/sets/shadowmoor/PollutedBonds.java | 25 ++++----- .../src/mage/sets/shadowmoor/PrisonTerm.java | 3 +- .../EntersBattlefieldAllTriggeredAbility.java | 26 +++++++--- ...BattlefieldControlledTriggeredAbility.java | 5 +- 16 files changed, 84 insertions(+), 64 deletions(-) diff --git a/Mage.Sets/src/mage/sets/commander/RikuOfTwoReflections.java b/Mage.Sets/src/mage/sets/commander/RikuOfTwoReflections.java index bcf2f982db..badc985d95 100644 --- a/Mage.Sets/src/mage/sets/commander/RikuOfTwoReflections.java +++ b/Mage.Sets/src/mage/sets/commander/RikuOfTwoReflections.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Rarity; +import mage.constants.SetTargetPointer; import mage.constants.Zone; import mage.filter.FilterSpell; import mage.filter.common.FilterControlledCreaturePermanent; @@ -88,7 +89,7 @@ public class RikuOfTwoReflections extends CardImpl { // Whenever another nontoken creature enters the battlefield under your control, you may pay {G}{U}. If you do, put a token that's a copy of that creature onto the battlefield. Ability ability = new EntersBattlefieldAllTriggeredAbility( - Zone.BATTLEFIELD, new RikuOfTwoReflectionsCopyTokenEffect(),filterPermanent, false, true, + Zone.BATTLEFIELD, new RikuOfTwoReflectionsCopyTokenEffect(),filterPermanent, false, SetTargetPointer.PERMANENT, "Whenever another nontoken creature enters the battlefield under your control, you may pay {G}{U}. If you do, put a token that's a copy of that creature onto the battlefield.", true); ability.addCost(new ManaCostsImpl("{G}{U}")); diff --git a/Mage.Sets/src/mage/sets/darksteel/GenesisChamber.java b/Mage.Sets/src/mage/sets/darksteel/GenesisChamber.java index 682ac51de0..025bbff7be 100644 --- a/Mage.Sets/src/mage/sets/darksteel/GenesisChamber.java +++ b/Mage.Sets/src/mage/sets/darksteel/GenesisChamber.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Rarity; +import mage.constants.SetTargetPointer; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -78,7 +79,7 @@ class GenesisChamberTriggeredAbility extends EntersBattlefieldAllTriggeredAbilit private static final String rule = "Whenever a nontoken creature enters the battlefield, if {this} is untapped, that creature's controller puts a 1/1 colorless Myr artifact creature token onto the battlefield"; public GenesisChamberTriggeredAbility(Effect effect, FilterPermanent filter) { - super(Zone.BATTLEFIELD, effect, filter, false, true, rule); + super(Zone.BATTLEFIELD, effect, filter, false, SetTargetPointer.PERMANENT, rule); } public GenesisChamberTriggeredAbility(final GenesisChamberTriggeredAbility ability) { diff --git a/Mage.Sets/src/mage/sets/magic2014/AjanisChosen.java b/Mage.Sets/src/mage/sets/magic2014/AjanisChosen.java index 1a35a69b7d..5d37d65536 100644 --- a/Mage.Sets/src/mage/sets/magic2014/AjanisChosen.java +++ b/Mage.Sets/src/mage/sets/magic2014/AjanisChosen.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Rarity; +import mage.constants.SetTargetPointer; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -67,7 +68,9 @@ public class AjanisChosen extends CardImpl { this.toughness = new MageInt(3); // Whenever an enchantment enters the battlefield under your control, put a 2/2 white Cat creature token onto the battlefield. If that enchantment is an Aura, you may attach it to the token. - this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new AjanisChosenEffect(), filter, false, true, "Whenever an enchantment enters the battlefield under your control, put a 2/2 white Cat creature token onto the battlefield. If that enchantment is an Aura, you may attach it to the token")); + this.addAbility(new EntersBattlefieldAllTriggeredAbility( + Zone.BATTLEFIELD, new AjanisChosenEffect(), filter, false, SetTargetPointer.PERMANENT, + "Whenever an enchantment enters the battlefield under your control, put a 2/2 white Cat creature token onto the battlefield. If that enchantment is an Aura, you may attach it to the token")); } public AjanisChosen(final AjanisChosen card) { diff --git a/Mage.Sets/src/mage/sets/magic2014/OathOfTheAncientWood.java b/Mage.Sets/src/mage/sets/magic2014/OathOfTheAncientWood.java index 16ae7014c2..ed04126e40 100644 --- a/Mage.Sets/src/mage/sets/magic2014/OathOfTheAncientWood.java +++ b/Mage.Sets/src/mage/sets/magic2014/OathOfTheAncientWood.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; +import mage.constants.SetTargetPointer; import mage.constants.TargetController; import mage.constants.Zone; import mage.counters.CounterType; @@ -61,7 +62,7 @@ public class OathOfTheAncientWood extends CardImpl { // Whenever Oath of the Ancient Wood or another enchantment enters the battlefield under your control, you may put a +1/+1 counter on target creature. Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance()); - Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, effect, filter, true, false, null, true); + Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, effect, filter, true, SetTargetPointer.PERMANENT, null, true); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/magic2014/OgreBattledriver.java b/Mage.Sets/src/mage/sets/magic2014/OgreBattledriver.java index a62ec18298..e3a8227586 100644 --- a/Mage.Sets/src/mage/sets/magic2014/OgreBattledriver.java +++ b/Mage.Sets/src/mage/sets/magic2014/OgreBattledriver.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Rarity; +import mage.constants.SetTargetPointer; import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; @@ -70,7 +71,7 @@ public class OgreBattledriver extends CardImpl { this.toughness = new MageInt(3); // Whenever another creature enters the battlefield under your control, that creature gets +2/+0 and gains haste until end of turn. - Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new BoostTargetEffect(2, 0, Duration.EndOfTurn), filter, false, true, rule, true); + Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new BoostTargetEffect(2, 0, Duration.EndOfTurn), filter, false, SetTargetPointer.PERMANENT, rule, true); ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/sets/morningtide/CloakAndDagger.java b/Mage.Sets/src/mage/sets/morningtide/CloakAndDagger.java index d2248595e9..7756551585 100644 --- a/Mage.Sets/src/mage/sets/morningtide/CloakAndDagger.java +++ b/Mage.Sets/src/mage/sets/morningtide/CloakAndDagger.java @@ -43,6 +43,7 @@ import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.ShroudAbility; import mage.cards.CardImpl; +import mage.constants.SetTargetPointer; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -71,7 +72,7 @@ public class CloakAndDagger extends CardImpl { // Whenever a Rogue creature enters the battlefield, you may attach Cloak and Dagger to it. this.addAbility(new EntersBattlefieldAllTriggeredAbility( Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {source} to it"), - filter, true, true, null)); + filter, true, SetTargetPointer.PERMANENT, null)); // Equip {3} this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(3))); } diff --git a/Mage.Sets/src/mage/sets/morningtide/DivinersWand.java b/Mage.Sets/src/mage/sets/morningtide/DivinersWand.java index 9f5066510c..06f953f68e 100644 --- a/Mage.Sets/src/mage/sets/morningtide/DivinersWand.java +++ b/Mage.Sets/src/mage/sets/morningtide/DivinersWand.java @@ -49,6 +49,7 @@ import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; +import mage.constants.SetTargetPointer; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -85,7 +86,7 @@ public class DivinersWand extends CardImpl { // Whenever a Wizard creature enters the battlefield, you may attach Diviner's Wand to it. this.addAbility(new EntersBattlefieldAllTriggeredAbility( Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {source} to it"), - filter, true, true, null)); + filter, true, SetTargetPointer.PERMANENT, null)); // Equip {3} this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(3))); } diff --git a/Mage.Sets/src/mage/sets/morningtide/ObsidianBattleAxe.java b/Mage.Sets/src/mage/sets/morningtide/ObsidianBattleAxe.java index d37da9fd35..ee4e220489 100644 --- a/Mage.Sets/src/mage/sets/morningtide/ObsidianBattleAxe.java +++ b/Mage.Sets/src/mage/sets/morningtide/ObsidianBattleAxe.java @@ -43,6 +43,7 @@ import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; +import mage.constants.SetTargetPointer; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -71,7 +72,7 @@ public class ObsidianBattleAxe extends CardImpl { // Whenever a Warrior creature enters the battlefield, you may attach Obsidian Battle-Axe to it. this.addAbility(new EntersBattlefieldAllTriggeredAbility( Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {source} to it"), - filter, true, true, null)); + filter, true, SetTargetPointer.PERMANENT, null)); // Equip {3} this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(3))); } diff --git a/Mage.Sets/src/mage/sets/morningtide/ThornbiteStaff.java b/Mage.Sets/src/mage/sets/morningtide/ThornbiteStaff.java index b0116fe9e5..9ca83df020 100644 --- a/Mage.Sets/src/mage/sets/morningtide/ThornbiteStaff.java +++ b/Mage.Sets/src/mage/sets/morningtide/ThornbiteStaff.java @@ -47,6 +47,7 @@ import mage.abilities.effects.common.UntapSourceEffect; import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; +import mage.constants.SetTargetPointer; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -83,7 +84,7 @@ public class ThornbiteStaff extends CardImpl { // Whenever a Shaman creature enters the battlefield, you may attach Thornbite Staff to it. this.addAbility(new EntersBattlefieldAllTriggeredAbility( Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {source} to it"), - filter, true, true, null)); + filter, true, SetTargetPointer.PERMANENT, null)); // Equip {4} this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(4))); } diff --git a/Mage.Sets/src/mage/sets/morningtide/VeteransArmaments.java b/Mage.Sets/src/mage/sets/morningtide/VeteransArmaments.java index fdb7411706..1a03b1c635 100644 --- a/Mage.Sets/src/mage/sets/morningtide/VeteransArmaments.java +++ b/Mage.Sets/src/mage/sets/morningtide/VeteransArmaments.java @@ -47,6 +47,7 @@ import mage.abilities.effects.common.continious.BoostSourceEffect; import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; +import mage.constants.SetTargetPointer; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -79,7 +80,8 @@ public class VeteransArmaments extends CardImpl { // Whenever a Soldier creature enters the battlefield, you may attach Veteran's Armaments to it. this.addAbility(new EntersBattlefieldAllTriggeredAbility( Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {source} to it"), - filter, true, true, null)); + filter, true, SetTargetPointer.PERMANENT, null)); + // Equip {2} this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2))); } diff --git a/Mage.Sets/src/mage/sets/planechase2012/SaiOfTheShinobi.java b/Mage.Sets/src/mage/sets/planechase2012/SaiOfTheShinobi.java index f16c9b4304..aa5969b4cf 100644 --- a/Mage.Sets/src/mage/sets/planechase2012/SaiOfTheShinobi.java +++ b/Mage.Sets/src/mage/sets/planechase2012/SaiOfTheShinobi.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.continious.BoostEquippedEffect; import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; +import mage.constants.SetTargetPointer; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.ControllerPredicate; @@ -65,8 +66,7 @@ public class SaiOfTheShinobi extends CardImpl { // Whenever a creature enters the battlefield under your control, you may attach Sai of the Shinobi to it. this.addAbility(new EntersBattlefieldAllTriggeredAbility( Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {source} to it"), - filter, true, true, - null, true)); + filter, true, SetTargetPointer.PERMANENT, null, true)); // Equip {2} this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(2))); } diff --git a/Mage.Sets/src/mage/sets/ravnika/CloudstoneCurio.java b/Mage.Sets/src/mage/sets/ravnika/CloudstoneCurio.java index 3fc8a7bb8b..29df20508c 100644 --- a/Mage.Sets/src/mage/sets/ravnika/CloudstoneCurio.java +++ b/Mage.Sets/src/mage/sets/ravnika/CloudstoneCurio.java @@ -30,15 +30,16 @@ package mage.sets.ravnika; import java.util.HashSet; import java.util.Set; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Rarity; -import mage.constants.TargetController; -import mage.constants.Zone; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.SetTargetPointer; +import mage.constants.TargetController; +import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -66,7 +67,7 @@ public class CloudstoneCurio extends CardImpl { this.expansionSetCode = "RAV"; // Whenever a nonartifact permanent enters the battlefield under your control, you may return another permanent you control that shares a card type with it to its owner's hand. - this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new CloudstoneCurioEffect(), filter, true, true, "", true)); + this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new CloudstoneCurioEffect(), filter, true, SetTargetPointer.PERMANENT, "", true)); } @@ -99,34 +100,31 @@ class CloudstoneCurioEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent triggeringCreature = game.getPermanent(getTargetPointer().getFirst(game, source)); - if (triggeringCreature == null) { - triggeringCreature = (Permanent) game.getLastKnownInformation(getTargetPointer().getFirst(game, source), Zone.BATTLEFIELD); - } - if (triggeringCreature != null) { - FilterPermanent filter = new FilterPermanent("another permanent you control that shares a card type with " + triggeringCreature.getName()); - filter.add(Predicates.not(new PermanentIdPredicate(triggeringCreature.getId()))); - filter.add(new ControllerPredicate(TargetController.YOU)); - Set cardTypes = new HashSet(); - for (CardType cardType :triggeringCreature.getCardType()) { - cardTypes.add(new CardTypePredicate(cardType)); + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + Permanent triggeringCreature = game.getPermanent(getTargetPointer().getFirst(game, source)); + if (triggeringCreature == null) { + triggeringCreature = (Permanent) game.getLastKnownInformation(getTargetPointer().getFirst(game, source), Zone.BATTLEFIELD); } - filter.add(Predicates.or(cardTypes)); - TargetPermanent target = new TargetPermanent(1,1,filter, true); - Player controller = game.getPlayer(source.getControllerId()); - if (controller != null) { + if (triggeringCreature != null) { + FilterPermanent filter = new FilterPermanent("another permanent you control that shares a card type with " + triggeringCreature.getName()); + filter.add(Predicates.not(new PermanentIdPredicate(triggeringCreature.getId()))); + filter.add(new ControllerPredicate(TargetController.YOU)); + Set cardTypes = new HashSet<>(); + for (CardType cardType : triggeringCreature.getCardType()) { + cardTypes.add(new CardTypePredicate(cardType)); + } + filter.add(Predicates.or(cardTypes)); + TargetPermanent target = new TargetPermanent(1, 1, filter, true); + if (target.canChoose(controller.getId(), game) && controller.chooseTarget(outcome, target, source, game)) { Permanent returningCreature = game.getPermanent(target.getFirstTarget()); if (returningCreature != null) { - if (returningCreature.moveToZone(Zone.HAND, source.getSourceId(), game, true)) { - game.informPlayers(new StringBuilder("Cloudstone Curio: Returning ").append(returningCreature.getName()).append(" to owner's hand").toString()); - return true; - } - + controller.moveCardToHandWithInfo(returningCreature, source.getSourceId(), game, Zone.BATTLEFIELD); } } } - + return true; } return false; } diff --git a/Mage.Sets/src/mage/sets/shadowmoor/PollutedBonds.java b/Mage.Sets/src/mage/sets/shadowmoor/PollutedBonds.java index e333dd673d..09b018c4ad 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/PollutedBonds.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/PollutedBonds.java @@ -35,12 +35,12 @@ import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Rarity; +import mage.constants.SetTargetPointer; import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.permanent.ControllerPredicate; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.players.Player; /** @@ -64,7 +64,7 @@ public class PollutedBonds extends CardImpl { this.color.setBlack(true); // Whenever a land enters the battlefield under an opponent's control, that player loses 2 life and you gain 2 life. - this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new PollutedBondsEffect(), filter, false, true, rule, true)); + this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new PollutedBondsEffect(), filter, false, SetTargetPointer.PLAYER, rule, true)); } @@ -96,18 +96,15 @@ class PollutedBondsEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player you = game.getPlayer(source.getControllerId()); - Player opponent = null; - Permanent land = game.getPermanent(targetPointer.getFirst(game, source)); - if (land != null) { - opponent = game.getPlayer(land.getControllerId()); + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + Player opponent = game.getPlayer(getTargetPointer().getFirst(game, source)); + if (opponent != null) { + opponent.loseLife(2, game); + } + controller.gainLife(2, game); + return true; } - if (opponent != null) { - opponent.loseLife(2, game); - } - if (you != null) { - you.gainLife(2, game); - } - return true; + return false; } } diff --git a/Mage.Sets/src/mage/sets/shadowmoor/PrisonTerm.java b/Mage.Sets/src/mage/sets/shadowmoor/PrisonTerm.java index 5580094514..ccb6d675dc 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/PrisonTerm.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/PrisonTerm.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.combat.CantBlockAttackActivateAttachedEffec import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.constants.Outcome; +import mage.constants.SetTargetPointer; import mage.constants.TargetController; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -82,7 +83,7 @@ public class PrisonTerm extends CardImpl { // Whenever a creature enters the battlefield under an opponent's control, you may attach Prison Term to that creature. this.addAbility(new EntersBattlefieldAllTriggeredAbility( - Zone.BATTLEFIELD, new PrisonTermEffect(), filter, true, true, "Whenever a creature enters the battlefield under an opponent's control, you may attach Prison Term to that creature.")); + Zone.BATTLEFIELD, new PrisonTermEffect(), filter, true, SetTargetPointer.PERMANENT, "Whenever a creature enters the battlefield under an opponent's control, you may attach Prison Term to that creature.")); } public PrisonTerm(final PrisonTerm card) { diff --git a/Mage/src/mage/abilities/common/EntersBattlefieldAllTriggeredAbility.java b/Mage/src/mage/abilities/common/EntersBattlefieldAllTriggeredAbility.java index d36eef2089..35fd64ff9a 100644 --- a/Mage/src/mage/abilities/common/EntersBattlefieldAllTriggeredAbility.java +++ b/Mage/src/mage/abilities/common/EntersBattlefieldAllTriggeredAbility.java @@ -28,9 +28,11 @@ package mage.abilities.common; import java.util.UUID; -import mage.constants.Zone; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.Effect; +import mage.constants.SetTargetPointer; +import static mage.constants.SetTargetPointer.PERMANENT; +import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.game.Game; import mage.game.events.GameEvent; @@ -46,7 +48,7 @@ public class EntersBattlefieldAllTriggeredAbility extends TriggeredAbilityImpl { protected FilterPermanent filter; protected String rule; protected boolean controlled; - protected boolean setTargetPointer; + protected SetTargetPointer setTargetPointer; /** * zone = BATTLEFIELD optional = false @@ -63,7 +65,7 @@ public class EntersBattlefieldAllTriggeredAbility extends TriggeredAbilityImpl { } public EntersBattlefieldAllTriggeredAbility(Zone zone, Effect effect, FilterPermanent filter, boolean optional) { - this(zone, effect, filter, optional, false, null, false); + this(zone, effect, filter, optional, SetTargetPointer.NONE, null, false); } public EntersBattlefieldAllTriggeredAbility(Zone zone, Effect effect, FilterPermanent filter, boolean optional, String rule) { @@ -71,14 +73,14 @@ public class EntersBattlefieldAllTriggeredAbility extends TriggeredAbilityImpl { } public EntersBattlefieldAllTriggeredAbility(Zone zone, Effect effect, FilterPermanent filter, boolean optional, String rule, boolean controlled) { - this(zone, effect, filter, optional, false, rule, controlled); + this(zone, effect, filter, optional, SetTargetPointer.NONE, rule, controlled); } - public EntersBattlefieldAllTriggeredAbility(Zone zone, Effect effect, FilterPermanent filter, boolean optional, boolean setTargetPointer, String rule) { + public EntersBattlefieldAllTriggeredAbility(Zone zone, Effect effect, FilterPermanent filter, boolean optional, SetTargetPointer setTargetPointer, String rule) { this(zone, effect, filter, optional, setTargetPointer, rule, false); } - public EntersBattlefieldAllTriggeredAbility(Zone zone, Effect effect, FilterPermanent filter, boolean optional, boolean setTargetPointer, String rule, boolean controlled) { + public EntersBattlefieldAllTriggeredAbility(Zone zone, Effect effect, FilterPermanent filter, boolean optional, SetTargetPointer setTargetPointer, String rule, boolean controlled) { super(zone, effect, optional); this.filter = filter; this.rule = rule; @@ -100,9 +102,17 @@ public class EntersBattlefieldAllTriggeredAbility extends TriggeredAbilityImpl { UUID targetId = event.getTargetId(); Permanent permanent = game.getPermanent(targetId); if (permanent != null && filter.match(permanent, getSourceId(), getControllerId(), game)) { - if (setTargetPointer) { + if (!setTargetPointer.equals(SetTargetPointer.NONE)) { for (Effect effect : this.getEffects()) { - effect.setTargetPointer(new FixedTarget(event.getTargetId())); + switch(setTargetPointer) { + case PERMANENT: + effect.setTargetPointer(new FixedTarget(event.getTargetId())); + break; + case PLAYER: + effect.setTargetPointer(new FixedTarget(permanent.getControllerId())); + break; + } + } } return true; diff --git a/Mage/src/mage/abilities/common/EntersBattlefieldControlledTriggeredAbility.java b/Mage/src/mage/abilities/common/EntersBattlefieldControlledTriggeredAbility.java index 479588cfaa..b0e4c4f7cc 100644 --- a/Mage/src/mage/abilities/common/EntersBattlefieldControlledTriggeredAbility.java +++ b/Mage/src/mage/abilities/common/EntersBattlefieldControlledTriggeredAbility.java @@ -29,6 +29,7 @@ package mage.abilities.common; import mage.abilities.effects.Effect; +import mage.constants.SetTargetPointer; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.game.Game; @@ -63,10 +64,10 @@ public class EntersBattlefieldControlledTriggeredAbility extends EntersBattlefie } public EntersBattlefieldControlledTriggeredAbility(Zone zone, Effect effect, FilterPermanent filter, boolean optional, String rule) { - this(zone, effect, filter, optional, false, rule); + this(zone, effect, filter, optional, SetTargetPointer.NONE, rule); } - public EntersBattlefieldControlledTriggeredAbility(Zone zone, Effect effect, FilterPermanent filter, boolean optional, boolean setTargetPointer, String rule) { + public EntersBattlefieldControlledTriggeredAbility(Zone zone, Effect effect, FilterPermanent filter, boolean optional, SetTargetPointer setTargetPointer, String rule) { super(zone, effect, filter, optional, setTargetPointer, rule, true); }