diff --git a/Mage.Sets/src/mage/cards/a/AshenmoorLiege.java b/Mage.Sets/src/mage/cards/a/AshenmoorLiege.java index 9671893a004..ca02268669b 100644 --- a/Mage.Sets/src/mage/cards/a/AshenmoorLiege.java +++ b/Mage.Sets/src/mage/cards/a/AshenmoorLiege.java @@ -1,25 +1,19 @@ - package mage.cards.a; -import java.util.UUID; import mage.MageInt; import mage.ObjectColor; -import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.BecomesTargetSourceTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SubType; -import mage.constants.Zone; +import mage.constants.*; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; -import mage.target.targetpointer.FixedTarget; + +import java.util.UUID; /** * @@ -35,7 +29,6 @@ public final class AshenmoorLiege extends CardImpl { filterRedCreature.add(new ColorPredicate(ObjectColor.RED)); } - public AshenmoorLiege(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B/R}{B/R}{B/R}"); this.subtype.add(SubType.ELEMENTAL); @@ -50,10 +43,8 @@ public final class AshenmoorLiege extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filterRedCreature, true))); // Whenever Ashenmoor Liege becomes the target of a spell or ability an opponent controls, that player loses 4 life. - this.addAbility(new AshenmoorLiegeTriggeredAbility()); - - - + this.addAbility(new BecomesTargetSourceTriggeredAbility(new LoseLifeTargetEffect(4), + StaticFilters.FILTER_SPELL_OR_ABILITY_OPPONENTS, SetTargetPointer.PLAYER, false)); } private AshenmoorLiege(final AshenmoorLiege card) { @@ -65,39 +56,3 @@ public final class AshenmoorLiege extends CardImpl { return new AshenmoorLiege(this); } } - -class AshenmoorLiegeTriggeredAbility extends TriggeredAbilityImpl { - - public AshenmoorLiegeTriggeredAbility() { - super(Zone.BATTLEFIELD, new LoseLifeTargetEffect(4), false); - } - - private AshenmoorLiegeTriggeredAbility(final AshenmoorLiegeTriggeredAbility ability) { - super(ability); - } - - @Override - public AshenmoorLiegeTriggeredAbility copy() { - return new AshenmoorLiegeTriggeredAbility(this); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.TARGETED; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - if (event.getTargetId().equals(this.getSourceId()) && game.getOpponents(this.controllerId).contains(event.getPlayerId())) { - getEffects().get(0).setTargetPointer(new FixedTarget(event.getPlayerId())); - return true; - } - return false; - } - - @Override - public String getRule() { - return "Whenever {this} becomes the target of a spell or ability an opponent controls, that player loses 4 life."; - } - -} diff --git a/Mage.Sets/src/mage/cards/e/EternalScourge.java b/Mage.Sets/src/mage/cards/e/EternalScourge.java index 390e7a38783..dab0e5cd815 100644 --- a/Mage.Sets/src/mage/cards/e/EternalScourge.java +++ b/Mage.Sets/src/mage/cards/e/EternalScourge.java @@ -1,10 +1,8 @@ - package mage.cards.e; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.BecomesTargetSourceTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.AsThoughEffectImpl; import mage.abilities.effects.common.ExileSourceEffect; @@ -12,9 +10,10 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; +import mage.filter.StaticFilters; import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; + +import java.util.UUID; /** * @@ -33,7 +32,8 @@ public final class EternalScourge extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.EXILED, new EternalScourgePlayEffect())); // When Eternal Scourge becomes the target of a spell or ability an opponent controls, exile Eternal Scourge. - this.addAbility(new EternalScourgeAbility()); + this.addAbility(new BecomesTargetSourceTriggeredAbility(new ExileSourceEffect(), + StaticFilters.FILTER_SPELL_OR_ABILITY_OPPONENTS)); } private EternalScourge(final EternalScourge card) { @@ -78,37 +78,3 @@ class EternalScourgePlayEffect extends AsThoughEffectImpl { return false; } } - -class EternalScourgeAbility extends TriggeredAbilityImpl { - - public EternalScourgeAbility() { - super(Zone.BATTLEFIELD, new ExileSourceEffect(), false); - } - - private EternalScourgeAbility(final EternalScourgeAbility ability) { - super(ability); - } - - @Override - public EternalScourgeAbility copy() { - return new EternalScourgeAbility(this); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.TARGETED; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - if (event.getTargetId().equals(this.getSourceId()) && game.getOpponents(this.controllerId).contains(event.getPlayerId())) { - return true; - } - return false; - } - - @Override - public String getRule() { - return "Whenever {this} becomes the target of a spell or ability an opponent controls, exile {this}."; - } -} diff --git a/Mage.Sets/src/mage/cards/f/FblthpTheLost.java b/Mage.Sets/src/mage/cards/f/FblthpTheLost.java index eb393f990ca..8e667ab6b40 100644 --- a/Mage.Sets/src/mage/cards/f/FblthpTheLost.java +++ b/Mage.Sets/src/mage/cards/f/FblthpTheLost.java @@ -1,20 +1,19 @@ package mage.cards.f; import mage.MageInt; -import mage.MageObject; import mage.MageObjectReference; -import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.BecomesTargetSourceTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.ShuffleIntoLibrarySourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.EntersTheBattlefieldEvent; import mage.game.events.GameEvent; import mage.game.stack.Spell; -import mage.target.targetpointer.FixedTarget; import mage.watchers.Watcher; import java.util.HashSet; @@ -38,7 +37,8 @@ public final class FblthpTheLost extends CardImpl { this.addAbility(new FblthpTheLostTriggeredAbility()); // When Fblthp becomes the target of a spell, shuffle Fblthp into its owner's library. - this.addAbility(new FblthpTheLostTargetedTriggeredAbility()); + this.addAbility(new BecomesTargetSourceTriggeredAbility(new ShuffleIntoLibrarySourceEffect(), + StaticFilters.FILTER_SPELL_A)); } private FblthpTheLost(final FblthpTheLost card) { @@ -128,40 +128,3 @@ class FblthpTheLostWatcher extends Watcher { } } - -class FblthpTheLostTargetedTriggeredAbility extends TriggeredAbilityImpl { - - FblthpTheLostTargetedTriggeredAbility() { - super(Zone.BATTLEFIELD, new ShuffleIntoLibrarySourceEffect(), false); - } - - private FblthpTheLostTargetedTriggeredAbility(final FblthpTheLostTargetedTriggeredAbility ability) { - super(ability); - } - - @Override - public FblthpTheLostTargetedTriggeredAbility copy() { - return new FblthpTheLostTargetedTriggeredAbility(this); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.TARGETED; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - MageObject eventSourceObject = game.getObject(event.getSourceId()); - if (event.getTargetId().equals(this.getSourceId()) && eventSourceObject instanceof Spell) { - getEffects().get(0).setTargetPointer(new FixedTarget(event.getPlayerId())); - return true; - } - return false; - } - - @Override - public String getRule() { - return "When {this} becomes the target of a spell, shuffle {this} into its owner's library."; - } - -} diff --git a/Mage.Sets/src/mage/cards/f/ForsakenWastes.java b/Mage.Sets/src/mage/cards/f/ForsakenWastes.java index 82d7e4b19a0..4ce1a0fa725 100644 --- a/Mage.Sets/src/mage/cards/f/ForsakenWastes.java +++ b/Mage.Sets/src/mage/cards/f/ForsakenWastes.java @@ -1,28 +1,19 @@ - package mage.cards.f; -import java.util.UUID; -import mage.MageObject; -import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.BecomesTargetSourceTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.effects.common.continuous.CantGainLifeAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SuperType; -import mage.constants.TargetController; -import mage.constants.Zone; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; -import mage.game.stack.Spell; -import mage.target.targetpointer.FixedTarget; +import mage.constants.*; +import mage.filter.StaticFilters; + +import java.util.UUID; /** - * - * @author fireshoes + * @author xenohedron */ public final class ForsakenWastes extends CardImpl { @@ -31,13 +22,15 @@ public final class ForsakenWastes extends CardImpl { this.supertype.add(SuperType.WORLD); // Players can't gain life. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantGainLifeAllEffect())); + this.addAbility(new SimpleStaticAbility(new CantGainLifeAllEffect())); // At the beginning of each player's upkeep, that player loses 1 life. - this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new LoseLifeTargetEffect(1), TargetController.ANY, false, true)); + this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new LoseLifeTargetEffect(1), + TargetController.ANY, false, true)); // Whenever Forsaken Wastes becomes the target of a spell, that spell's controller loses 5 life. - this.addAbility(new ForsakenWastesTriggeredAbility()); + this.addAbility(new BecomesTargetSourceTriggeredAbility(new LoseLifeTargetEffect(5), + StaticFilters.FILTER_SPELL_A, SetTargetPointer.PLAYER, false)); } private ForsakenWastes(final ForsakenWastes card) { @@ -49,40 +42,3 @@ public final class ForsakenWastes extends CardImpl { return new ForsakenWastes(this); } } - -class ForsakenWastesTriggeredAbility extends TriggeredAbilityImpl { - - public ForsakenWastesTriggeredAbility() { - super(Zone.BATTLEFIELD, new LoseLifeTargetEffect(5), false); - } - - private ForsakenWastesTriggeredAbility(final ForsakenWastesTriggeredAbility ability) { - super(ability); - } - - @Override - public ForsakenWastesTriggeredAbility copy() { - return new ForsakenWastesTriggeredAbility(this); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.TARGETED; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - MageObject eventSourceObject = game.getObject(event.getSourceId()); - if (event.getTargetId().equals(this.getSourceId()) && eventSourceObject instanceof Spell) { - getEffects().get(0).setTargetPointer(new FixedTarget(event.getPlayerId())); - return true; - } - return false; - } - - @Override - public String getRule() { - return "Whenever {this} becomes the target of a spell, that spell's controller loses 5 life."; - } - -} diff --git a/Mage.Sets/src/mage/cards/l/LabyrinthGuardian.java b/Mage.Sets/src/mage/cards/l/LabyrinthGuardian.java index 805643e8e95..faf2adeb0fa 100644 --- a/Mage.Sets/src/mage/cards/l/LabyrinthGuardian.java +++ b/Mage.Sets/src/mage/cards/l/LabyrinthGuardian.java @@ -1,10 +1,7 @@ - package mage.cards.l; -import java.util.UUID; import mage.MageInt; -import mage.MageObject; -import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.BecomesTargetSourceTriggeredAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.SacrificeSourceEffect; import mage.abilities.keyword.EmbalmAbility; @@ -12,16 +9,12 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.Zone; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; -import mage.game.stack.Spell; -import mage.target.targetpointer.FixedTarget; +import mage.filter.StaticFilters; + +import java.util.UUID; /** - * - * @author fireshoes + * @author xenohedron */ public final class LabyrinthGuardian extends CardImpl { @@ -34,7 +27,7 @@ public final class LabyrinthGuardian extends CardImpl { this.toughness = new MageInt(3); // When Labyrinth Guardian becomes the target of a spell, sacrifice it. - this.addAbility(new LabyrinthGuardianTriggeredAbility()); + this.addAbility(new BecomesTargetSourceTriggeredAbility(new SacrificeSourceEffect(), StaticFilters.FILTER_SPELL_A)); // Embalm {3}{U} this.addAbility(new EmbalmAbility(new ManaCostsImpl<>("{3}{U}"), this)); @@ -50,40 +43,3 @@ public final class LabyrinthGuardian extends CardImpl { return new LabyrinthGuardian(this); } } - -class LabyrinthGuardianTriggeredAbility extends TriggeredAbilityImpl { - - public LabyrinthGuardianTriggeredAbility() { - super(Zone.BATTLEFIELD, new SacrificeSourceEffect(), false); - } - - private LabyrinthGuardianTriggeredAbility(final LabyrinthGuardianTriggeredAbility ability) { - super(ability); - } - - @Override - public LabyrinthGuardianTriggeredAbility copy() { - return new LabyrinthGuardianTriggeredAbility(this); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.TARGETED; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - MageObject eventSourceObject = game.getObject(event.getSourceId()); - if (event.getTargetId().equals(this.getSourceId()) && eventSourceObject instanceof Spell) { - getEffects().get(0).setTargetPointer(new FixedTarget(event.getPlayerId())); - return true; - } - return false; - } - - @Override - public String getRule() { - return "When {this} becomes the target of a spell, sacrifice it."; - } - -} diff --git a/Mage.Sets/src/mage/cards/l/LavaRunner.java b/Mage.Sets/src/mage/cards/l/LavaRunner.java index d2e9aa10a49..ee1ae0b4812 100644 --- a/Mage.Sets/src/mage/cards/l/LavaRunner.java +++ b/Mage.Sets/src/mage/cards/l/LavaRunner.java @@ -1,26 +1,20 @@ - package mage.cards.l; -import java.util.UUID; import mage.MageInt; -import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.BecomesTargetSourceTriggeredAbility; import mage.abilities.effects.common.SacrificeEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SetTargetPointer; import mage.constants.SubType; -import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; -import mage.target.targetpointer.FixedTarget; +import mage.filter.StaticFilters; + +import java.util.UUID; /** - * - * @author LoneFox - + * @author xenohedron */ public final class LavaRunner extends CardImpl { @@ -32,8 +26,11 @@ public final class LavaRunner extends CardImpl { // Haste this.addAbility(HasteAbility.getInstance()); + // Whenever Lava Runner becomes the target of a spell or ability, that spell or ability's controller sacrifices a land. - this.addAbility(new LavaRunnerAbility()); + this.addAbility(new BecomesTargetSourceTriggeredAbility( + new SacrificeEffect(StaticFilters.FILTER_LAND_A, 1, "that spell or ability's controller"), + StaticFilters.FILTER_SPELL_OR_ABILITY_A, SetTargetPointer.PLAYER, false)); } private LavaRunner(final LavaRunner card) { @@ -45,38 +42,3 @@ public final class LavaRunner extends CardImpl { return new LavaRunner(this); } } - -class LavaRunnerAbility extends TriggeredAbilityImpl { - - public LavaRunnerAbility() { - super(Zone.BATTLEFIELD, new SacrificeEffect(new FilterLandPermanent(), 1, ""), false); - } - - private LavaRunnerAbility(final LavaRunnerAbility ability) { - super(ability); - } - - @Override - public LavaRunnerAbility copy() { - return new LavaRunnerAbility(this); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.TARGETED; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - if(event.getTargetId().equals(this.getSourceId())) { - getEffects().get(0).setTargetPointer(new FixedTarget(event.getPlayerId())); - return true; - } - return false; - } - - @Override - public String getRule() { - return "Whenever {this} becomes the target of a spell or ability, that spell or ability's controller sacrifices a land."; - } -} diff --git a/Mage.Sets/src/mage/cards/m/Mossdog.java b/Mage.Sets/src/mage/cards/m/Mossdog.java index 677884fbd61..a4613140e75 100644 --- a/Mage.Sets/src/mage/cards/m/Mossdog.java +++ b/Mage.Sets/src/mage/cards/m/Mossdog.java @@ -1,23 +1,19 @@ - package mage.cards.m; -import java.util.UUID; import mage.MageInt; -import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.BecomesTargetSourceTriggeredAbility; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.Zone; import mage.counters.CounterType; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; +import mage.filter.StaticFilters; + +import java.util.UUID; /** - * - * @author fireshoes & L_J + * @author xenohedron */ public final class Mossdog extends CardImpl { @@ -29,7 +25,8 @@ public final class Mossdog extends CardImpl { this.toughness = new MageInt(1); // Whenever Mossdog becomes the target of a spell or ability an opponent controls, put a +1/+1 counter on Mossdog. - this.addAbility(new MossdogAbility()); + this.addAbility(new BecomesTargetSourceTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), + StaticFilters.FILTER_SPELL_OR_ABILITY_OPPONENTS)); } private Mossdog(final Mossdog card) { @@ -41,37 +38,3 @@ public final class Mossdog extends CardImpl { return new Mossdog(this); } } - -class MossdogAbility extends TriggeredAbilityImpl { - - public MossdogAbility() { - super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false); - } - - private MossdogAbility(final MossdogAbility ability) { - super(ability); - } - - @Override - public MossdogAbility copy() { - return new MossdogAbility(this); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.TARGETED; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - if (event.getTargetId().equals(this.getSourceId()) && game.getOpponents(this.controllerId).contains(event.getPlayerId())) { - return true; - } - return false; - } - - @Override - public String getRule() { - return "Whenever {this} becomes the target of a spell or ability an opponent controls, put a +1/+1 counter on {this}."; - } -} diff --git a/Mage.Sets/src/mage/cards/r/Retromancer.java b/Mage.Sets/src/mage/cards/r/Retromancer.java index f7cc0d679ea..cff287af531 100644 --- a/Mage.Sets/src/mage/cards/r/Retromancer.java +++ b/Mage.Sets/src/mage/cards/r/Retromancer.java @@ -1,25 +1,19 @@ - package mage.cards.r; -import java.util.UUID; import mage.MageInt; -import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.effects.Effect; +import mage.abilities.common.BecomesTargetSourceTriggeredAbility; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SetTargetPointer; import mage.constants.SubType; -import mage.constants.Zone; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; -import mage.game.permanent.Permanent; -import mage.target.targetpointer.FixedTarget; +import mage.filter.StaticFilters; + +import java.util.UUID; /** - * - * @author L_J + * @author xenohedron */ public final class Retromancer extends CardImpl { @@ -31,7 +25,8 @@ public final class Retromancer extends CardImpl { this.toughness = new MageInt(3); // Whenever Retromancer becomes the target of a spell or ability, Retromancer deals 3 damage to that spell or ability's controller. - this.addAbility(new RetromancerTriggeredAbility(new DamageTargetEffect(3))); + this.addAbility(new BecomesTargetSourceTriggeredAbility(new DamageTargetEffect(3), + StaticFilters.FILTER_SPELL_OR_ABILITY_A, SetTargetPointer.PLAYER, false)); } private Retromancer(final Retromancer card) { @@ -43,41 +38,3 @@ public final class Retromancer extends CardImpl { return new Retromancer(this); } } - -class RetromancerTriggeredAbility extends TriggeredAbilityImpl { - - public RetromancerTriggeredAbility(Effect effect) { - super(Zone.BATTLEFIELD, effect); - } - - private RetromancerTriggeredAbility(final RetromancerTriggeredAbility ability) { - super(ability); - } - - @Override - public RetromancerTriggeredAbility copy() { - return new RetromancerTriggeredAbility(this); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.TARGETED; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - Permanent creature = game.getPermanent(event.getTargetId()); - if (creature != null && event.getTargetId().equals(getSourceId())) { - for (Effect effect : this.getEffects()) { - effect.setTargetPointer(new FixedTarget(event.getPlayerId())); - } - return true; - } - return false; - } - - @Override - public String getRule() { - return "Whenever {this} becomes the target of a spell or ability, {this} deals 3 damage to that spell or ability's controller."; - } -} diff --git a/Mage/src/main/java/mage/game/permanent/token/JaceCunningCastawayIllusionToken.java b/Mage/src/main/java/mage/game/permanent/token/JaceCunningCastawayIllusionToken.java index af042eb79d6..034e280d2d2 100644 --- a/Mage/src/main/java/mage/game/permanent/token/JaceCunningCastawayIllusionToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/JaceCunningCastawayIllusionToken.java @@ -1,16 +1,11 @@ - package mage.game.permanent.token; +import mage.MageInt; +import mage.abilities.common.BecomesTargetSourceTriggeredAbility; +import mage.abilities.effects.common.SacrificeSourceEffect; import mage.constants.CardType; import mage.constants.SubType; -import mage.MageInt; -import mage.MageObject; -import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.effects.common.SacrificeSourceEffect; -import mage.constants.Zone; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.stack.Spell; +import mage.filter.StaticFilters; /** * @author TheElk801 @@ -26,10 +21,11 @@ public final class JaceCunningCastawayIllusionToken extends TokenImpl { power = new MageInt(2); toughness = new MageInt(2); - this.addAbility(new IllusionTokenTriggeredAbility()); + this.addAbility(new BecomesTargetSourceTriggeredAbility(new SacrificeSourceEffect().setText("sacrifice it"), StaticFilters.FILTER_SPELL_A) + .setTriggerPhrase("When this creature becomes the target of a spell, ")); } - protected JaceCunningCastawayIllusionToken(final JaceCunningCastawayIllusionToken token) { + private JaceCunningCastawayIllusionToken(final JaceCunningCastawayIllusionToken token) { super(token); } @@ -38,39 +34,3 @@ public final class JaceCunningCastawayIllusionToken extends TokenImpl { return new JaceCunningCastawayIllusionToken(this); } } - -class IllusionTokenTriggeredAbility extends TriggeredAbilityImpl { - - public IllusionTokenTriggeredAbility() { - super(Zone.BATTLEFIELD, new SacrificeSourceEffect(), false); - } - - protected IllusionTokenTriggeredAbility(final IllusionTokenTriggeredAbility ability) { - super(ability); - } - - @Override - public IllusionTokenTriggeredAbility copy() { - return new IllusionTokenTriggeredAbility(this); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.TARGETED; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - MageObject eventSourceObject = game.getObject(event.getSourceId()); - if (event.getTargetId().equals(this.getSourceId()) && eventSourceObject instanceof Spell) { - return true; - } - return false; - } - - @Override - public String getRule() { - return "When this creature becomes the target of a spell, sacrifice it."; - } - -}