diff --git a/Mage.Sets/src/mage/cards/a/AvenRiftwatcher.java b/Mage.Sets/src/mage/cards/a/AvenRiftwatcher.java index 2b767ca4461..36427ed74cf 100644 --- a/Mage.Sets/src/mage/cards/a/AvenRiftwatcher.java +++ b/Mage.Sets/src/mage/cards/a/AvenRiftwatcher.java @@ -30,7 +30,7 @@ public final class AvenRiftwatcher extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Vanishing 3 - this.addAbility(new VanishingAbility(3)); + this.addAbility(new VanishingAbility(this, 3)); // When Aven Riftwatcher enters the battlefield or leaves the battlefield, you gain 2 life. this.addAbility(new EntersBattlefieldOrLeavesSourceTriggeredAbility(new GainLifeEffect(2), false)); diff --git a/Mage.Sets/src/mage/cards/c/Calciderm.java b/Mage.Sets/src/mage/cards/c/Calciderm.java index 5d76f2deaa7..d9453c1faa8 100644 --- a/Mage.Sets/src/mage/cards/c/Calciderm.java +++ b/Mage.Sets/src/mage/cards/c/Calciderm.java @@ -26,7 +26,7 @@ public final class Calciderm extends CardImpl { this.addAbility(ShroudAbility.getInstance()); // Vanishing 4 - this.addAbility(new VanishingAbility(4)); + this.addAbility(new VanishingAbility(this, 4)); } private Calciderm(final Calciderm card) { diff --git a/Mage.Sets/src/mage/cards/c/Chronozoa.java b/Mage.Sets/src/mage/cards/c/Chronozoa.java index 39edd855a93..9066c0a2c9a 100644 --- a/Mage.Sets/src/mage/cards/c/Chronozoa.java +++ b/Mage.Sets/src/mage/cards/c/Chronozoa.java @@ -31,7 +31,7 @@ public final class Chronozoa extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Vanishing 3 (This permanent enters the battlefield with three time counters on it. At the beginning of your upkeep, remove a time counter from it. When the last is removed, sacrifice it.) - this.addAbility(new VanishingAbility(3)); + this.addAbility(new VanishingAbility(this, 3)); // When Chronozoa is put into a graveyard from play, if it had no time counters on it, create two tokens that are copies of it. Effect effect = new CreateTokenCopySourceEffect(2); diff --git a/Mage.Sets/src/mage/cards/d/DeadlyGrub.java b/Mage.Sets/src/mage/cards/d/DeadlyGrub.java index 80e03776e96..0d5e4680962 100644 --- a/Mage.Sets/src/mage/cards/d/DeadlyGrub.java +++ b/Mage.Sets/src/mage/cards/d/DeadlyGrub.java @@ -26,7 +26,7 @@ public final class DeadlyGrub extends CardImpl { this.toughness = new MageInt(1); // Vanishing 3 - this.addAbility(new VanishingAbility(3)); + this.addAbility(new VanishingAbility(this, 3)); // When Deadly Grub dies, if it had no time counters on it, create a 6/1 green Insect creature token with shroud. this.addAbility(new ConditionalInterveningIfTriggeredAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new DeadlyGrubInsectToken(), 1)), diff --git a/Mage.Sets/src/mage/cards/d/DeadwoodTreefolk.java b/Mage.Sets/src/mage/cards/d/DeadwoodTreefolk.java index 7246a3bea09..edcff325728 100644 --- a/Mage.Sets/src/mage/cards/d/DeadwoodTreefolk.java +++ b/Mage.Sets/src/mage/cards/d/DeadwoodTreefolk.java @@ -35,7 +35,7 @@ public final class DeadwoodTreefolk extends CardImpl { this.toughness = new MageInt(6); // Vanishing 3 - this.addAbility(new VanishingAbility(3)); + this.addAbility(new VanishingAbility(this, 3)); // When Deadwood Treefolk enters the battlefield or leaves the battlefield, return another target creature card from your graveyard to your hand. Ability ability = new EntersBattlefieldOrLeavesSourceTriggeredAbility(new ReturnFromGraveyardToHandTargetEffect(), false); diff --git a/Mage.Sets/src/mage/cards/d/DeepForestHermit.java b/Mage.Sets/src/mage/cards/d/DeepForestHermit.java index d1637eea695..d6aff99fe66 100644 --- a/Mage.Sets/src/mage/cards/d/DeepForestHermit.java +++ b/Mage.Sets/src/mage/cards/d/DeepForestHermit.java @@ -33,7 +33,7 @@ public final class DeepForestHermit extends CardImpl { this.toughness = new MageInt(1); // Vanishing 3 - this.addAbility(new VanishingAbility(3)); + this.addAbility(new VanishingAbility(this, 3)); // When Deep Forest Hermit enters the battlefield, create four 1/1 green Squirrel creature tokens. this.addAbility(new EntersBattlefieldTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/f/FourKnocks.java b/Mage.Sets/src/mage/cards/f/FourKnocks.java index 4aebcb4f8d0..c089a702612 100644 --- a/Mage.Sets/src/mage/cards/f/FourKnocks.java +++ b/Mage.Sets/src/mage/cards/f/FourKnocks.java @@ -19,7 +19,7 @@ public final class FourKnocks extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}"); // Vanishing 4 - this.addAbility(new VanishingAbility(4)); + this.addAbility(new VanishingAbility(this, 4)); // At the beginning of your precombat main phase, draw a card. this.addAbility(new BeginningOfPreCombatMainTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/k/KeldonMarauders.java b/Mage.Sets/src/mage/cards/k/KeldonMarauders.java index 085888e6561..2d8d16835f1 100644 --- a/Mage.Sets/src/mage/cards/k/KeldonMarauders.java +++ b/Mage.Sets/src/mage/cards/k/KeldonMarauders.java @@ -27,7 +27,7 @@ public final class KeldonMarauders extends CardImpl { this.toughness = new MageInt(3); // Vanishing 2 - this.addAbility(new VanishingAbility(2)); + this.addAbility(new VanishingAbility(this, 2)); // When Keldon Marauders enters the battlefield or leaves the battlefield, it deals 1 damage to target player. Ability ability = new EntersBattlefieldOrLeavesSourceTriggeredAbility(new DamageTargetEffect(1, "it"), false); diff --git a/Mage.Sets/src/mage/cards/l/LavacoreElemental.java b/Mage.Sets/src/mage/cards/l/LavacoreElemental.java index 484f4f152b1..63e2cd5eb2b 100644 --- a/Mage.Sets/src/mage/cards/l/LavacoreElemental.java +++ b/Mage.Sets/src/mage/cards/l/LavacoreElemental.java @@ -27,7 +27,7 @@ public final class LavacoreElemental extends CardImpl { this.toughness = new MageInt(3); // Vanishing 1 - this.addAbility(new VanishingAbility(1)); + this.addAbility(new VanishingAbility(this, 1)); // Whenever a creature you control deals combat damage to a player, put a time counter on Lavacore Elemental. Effect effect = new AddCountersSourceEffect(CounterType.TIME.createInstance(1)); diff --git a/Mage.Sets/src/mage/cards/l/LostAuramancers.java b/Mage.Sets/src/mage/cards/l/LostAuramancers.java index c6bac572133..cb36225986b 100644 --- a/Mage.Sets/src/mage/cards/l/LostAuramancers.java +++ b/Mage.Sets/src/mage/cards/l/LostAuramancers.java @@ -31,7 +31,7 @@ public final class LostAuramancers extends CardImpl { this.toughness = new MageInt(3); // Vanishing 3 - this.addAbility(new VanishingAbility(3)); + this.addAbility(new VanishingAbility(this, 3)); // When Lost Auramancers dies, if it had no time counters on it, you may search your library // for an enchantment card and put it onto the battlefield. If you do, shuffle your library. diff --git a/Mage.Sets/src/mage/cards/m/MaelstromDjinn.java b/Mage.Sets/src/mage/cards/m/MaelstromDjinn.java index 2902459ec8e..7fd425e4578 100644 --- a/Mage.Sets/src/mage/cards/m/MaelstromDjinn.java +++ b/Mage.Sets/src/mage/cards/m/MaelstromDjinn.java @@ -40,7 +40,7 @@ public final class MaelstromDjinn extends CardImpl { new AddCountersSourceEffect(CounterType.TIME.createInstance(2)) ); ability.addEffect(new GainAbilitySourceEffect( - new VanishingAbility(0), Duration.WhileOnBattlefield + new VanishingAbility(this, 0), Duration.WhileOnBattlefield ).setText("and it gains vanishing")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/OutOfTime.java b/Mage.Sets/src/mage/cards/o/OutOfTime.java index a696ca65063..62e7e0c8845 100644 --- a/Mage.Sets/src/mage/cards/o/OutOfTime.java +++ b/Mage.Sets/src/mage/cards/o/OutOfTime.java @@ -36,7 +36,7 @@ public final class OutOfTime extends CardImpl { this.addAbility(new EntersBattlefieldTriggeredAbility(new OutOfTimePhaseOutEffect())); // Vanishing - this.addAbility(new VanishingAbility(0)); + this.addAbility(new VanishingAbility(this, 0)); } private OutOfTime(final OutOfTime card) { diff --git a/Mage.Sets/src/mage/cards/r/RavagingRiftwurm.java b/Mage.Sets/src/mage/cards/r/RavagingRiftwurm.java index 28b89acb8a1..7de51e903d6 100644 --- a/Mage.Sets/src/mage/cards/r/RavagingRiftwurm.java +++ b/Mage.Sets/src/mage/cards/r/RavagingRiftwurm.java @@ -30,7 +30,7 @@ public final class RavagingRiftwurm extends CardImpl { this.addAbility(new KickerAbility("{4}")); // Vanishing 2 - this.addAbility(new VanishingAbility(2)); + this.addAbility(new VanishingAbility(this, 2)); // If Ravaging Riftwurm was kicked, it enters the battlefield with three additional time counters on it. this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(3)), diff --git a/Mage.Sets/src/mage/cards/r/RealityAcid.java b/Mage.Sets/src/mage/cards/r/RealityAcid.java index 46b38a1f437..004f3b03209 100644 --- a/Mage.Sets/src/mage/cards/r/RealityAcid.java +++ b/Mage.Sets/src/mage/cards/r/RealityAcid.java @@ -38,7 +38,7 @@ public final class RealityAcid extends CardImpl { this.addAbility(ability); // Vanishing 3 - this.addAbility(new VanishingAbility(3)); + this.addAbility(new VanishingAbility(this, 3)); // When Reality Acid leaves the battlefield, enchanted permanent's controller sacrifices it. Effect effect = new SacrificeTargetEffect("enchanted permanent's controller sacrifices it"); diff --git a/Mage.Sets/src/mage/cards/s/SoultetherGolem.java b/Mage.Sets/src/mage/cards/s/SoultetherGolem.java index 79380a675a4..6bfd759ea74 100644 --- a/Mage.Sets/src/mage/cards/s/SoultetherGolem.java +++ b/Mage.Sets/src/mage/cards/s/SoultetherGolem.java @@ -35,7 +35,7 @@ public final class SoultetherGolem extends CardImpl { this.toughness = new MageInt(3); // Vanishing 1 - this.addAbility(new VanishingAbility(1)); + this.addAbility(new VanishingAbility(this, 1)); // Whenever another creature enters the battlefield under your control, put a time counter on Soultether Golem. this.addAbility(new EntersBattlefieldControlledTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/t/Tidewalker.java b/Mage.Sets/src/mage/cards/t/Tidewalker.java index 355cb9e1a57..fa24ee36f1a 100644 --- a/Mage.Sets/src/mage/cards/t/Tidewalker.java +++ b/Mage.Sets/src/mage/cards/t/Tidewalker.java @@ -39,7 +39,7 @@ public final class Tidewalker extends CardImpl { this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(0), new PermanentsOnBattlefieldCount(filter), true), "with a time counter on it for each Island you control")); // Vanishing - this.addAbility(new VanishingAbility(0)); + this.addAbility(new VanishingAbility(this, 0)); // Tidewalker's power and toughness are each equal to the number of time counters on it. this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessSourceEffect(new CountersSourceCount(CounterType.TIME)))); diff --git a/Mage.Sets/src/mage/cards/w/WaningWurm.java b/Mage.Sets/src/mage/cards/w/WaningWurm.java index 0d9c89bf8fd..dfec718e420 100644 --- a/Mage.Sets/src/mage/cards/w/WaningWurm.java +++ b/Mage.Sets/src/mage/cards/w/WaningWurm.java @@ -22,7 +22,7 @@ public final class WaningWurm extends CardImpl { this.toughness = new MageInt(6); // Vanishing 2 - this.addAbility(new VanishingAbility(2)); + this.addAbility(new VanishingAbility(this, 2)); } private WaningWurm(final WaningWurm card) { diff --git a/Mage/src/main/java/mage/abilities/keyword/VanishingAbility.java b/Mage/src/main/java/mage/abilities/keyword/VanishingAbility.java index 6a94262e3a0..9abc56bd91a 100644 --- a/Mage/src/main/java/mage/abilities/keyword/VanishingAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/VanishingAbility.java @@ -9,6 +9,7 @@ import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.SacrificeSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.RemoveCounterSourceEffect; +import mage.cards.Card; import mage.constants.TargetController; import mage.constants.Zone; import mage.counters.CounterType; @@ -25,17 +26,17 @@ public class VanishingAbility extends EntersBattlefieldAbility { private static final Condition condition = new SourceHasCounterCondition(CounterType.TIME); private final int amount; - public VanishingAbility(int amount) { + public VanishingAbility(Card card, int amount) { super(new AddCountersSourceEffect(CounterType.TIME.createInstance(amount))); this.amount = amount; - this.addSubAbility(new ConditionalInterveningIfTriggeredAbility( + card.addAbility(new ConditionalInterveningIfTriggeredAbility( new BeginningOfUpkeepTriggeredAbility( new RemoveCounterSourceEffect(CounterType.TIME.createInstance()), TargetController.YOU, false ), condition, "At the beginning of your upkeep, if this permanent " + "has a time counter on it, remove a time counter from it." ).setRuleVisible(false)); - this.addSubAbility(new VanishingTriggeredAbility()); + card.addAbility(new VanishingTriggeredAbility()); } private VanishingAbility(final VanishingAbility ability) { @@ -83,7 +84,7 @@ class VanishingTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { - if (!CounterType.TIME.getName().equals(event.getData())) { + if (!CounterType.TIME.getName().equals(event.getData()) || !event.getSourceId().equals(getSourceId())) { return false; } Permanent permanent = getSourcePermanentIfItStillExists(game); diff --git a/Utils/keywords.txt b/Utils/keywords.txt index 478144d8ebb..640a6e9c5a9 100644 --- a/Utils/keywords.txt +++ b/Utils/keywords.txt @@ -127,7 +127,7 @@ Undaunted|new| Undying|new| Unearth|cost| Unleash|new| -Vanishing|number| +Vanishing|card, number| Vigilance|instance| Ward|cost| Wither|instance|