From d8e3233cde913cd17090ad8b52894e6c55f7b6a1 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Sat, 15 Oct 2022 10:28:28 -0400 Subject: [PATCH] replace various cards with landfall errata --- .../mage/cards/a/AesiTyrantOfGyreStrait.java | 13 ++--- .../mage/cards/a/ArchitectOfTheUntamed.java | 15 +++-- .../src/mage/cards/c/CourserOfKruphix.java | 5 +- Mage.Sets/src/mage/cards/d/DruidClass.java | 6 +- Mage.Sets/src/mage/cards/e/EvolutionSage.java | 8 +-- .../cards/g/GreensleevesMaroSorcerer.java | 8 +-- .../mage/cards/m/MajaBretagardProtector.java | 8 +-- .../mage/cards/o/OmnathLocusOfTheRoil.java | 6 +- .../src/mage/cards/p/PrimevalBounty.java | 24 ++++---- Mage.Sets/src/mage/cards/r/RoaringEarth.java | 6 +- .../mage/cards/s/StoneSeederHierophant.java | 19 +++---- .../src/mage/cards/t/TatyovaBenthicDruid.java | 10 ++-- .../src/mage/cards/t/TirelessTracker.java | 57 ++++--------------- .../mage/cards/t/ToggoGoblinWeaponsmith.java | 7 +-- .../src/mage/cards/t/TrenchBehemoth.java | 6 +- .../src/mage/cards/v/VinelasherKudzu.java | 14 ++--- 16 files changed, 68 insertions(+), 144 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AesiTyrantOfGyreStrait.java b/Mage.Sets/src/mage/cards/a/AesiTyrantOfGyreStrait.java index 310a28e46f8..d4df690960a 100644 --- a/Mage.Sets/src/mage/cards/a/AesiTyrantOfGyreStrait.java +++ b/Mage.Sets/src/mage/cards/a/AesiTyrantOfGyreStrait.java @@ -1,14 +1,16 @@ package mage.cards.a; import mage.MageInt; -import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; +import mage.abilities.common.LandfallAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.continuous.PlayAdditionalLandsControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; -import mage.filter.StaticFilters; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.constants.SuperType; import java.util.UUID; @@ -31,10 +33,7 @@ public final class AesiTyrantOfGyreStrait extends CardImpl { )); // Whenever a land enters the battlefield under your control, you may draw a card. - this.addAbility(new EntersBattlefieldControlledTriggeredAbility( - Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), - StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT, true - )); + this.addAbility(new LandfallAbility(new DrawCardSourceControllerEffect(1), true)); } private AesiTyrantOfGyreStrait(final AesiTyrantOfGyreStrait card) { diff --git a/Mage.Sets/src/mage/cards/a/ArchitectOfTheUntamed.java b/Mage.Sets/src/mage/cards/a/ArchitectOfTheUntamed.java index 4c8385fa53a..4c1ad38845d 100644 --- a/Mage.Sets/src/mage/cards/a/ArchitectOfTheUntamed.java +++ b/Mage.Sets/src/mage/cards/a/ArchitectOfTheUntamed.java @@ -1,9 +1,7 @@ - package mage.cards.a; -import java.util.UUID; import mage.MageInt; -import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; +import mage.abilities.common.LandfallAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.PayEnergyCost; import mage.abilities.effects.common.CreateTokenEffect; @@ -12,12 +10,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.Zone; -import mage.filter.common.FilterControlledLandPermanent; import mage.game.permanent.token.ArchitectOfTheUntamedBeastToken; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class ArchitectOfTheUntamed extends CardImpl { @@ -31,10 +28,12 @@ public final class ArchitectOfTheUntamed extends CardImpl { this.toughness = new MageInt(3); // Whenever a land enters the battlefield under your control, you get {E}. - this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new GetEnergyCountersControllerEffect(1), new FilterControlledLandPermanent("a land"), false, null, true)); + this.addAbility(new LandfallAbility(new GetEnergyCountersControllerEffect(1))); // Pay {E}{E}{E}{E}{E}{E}{E}{E}: Create a 6/6 colorless Beast artifact creature token. - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new ArchitectOfTheUntamedBeastToken(), 1), new PayEnergyCost(8))); + this.addAbility(new SimpleActivatedAbility( + new CreateTokenEffect(new ArchitectOfTheUntamedBeastToken(), 1), new PayEnergyCost(8) + )); } private ArchitectOfTheUntamed(final ArchitectOfTheUntamed card) { diff --git a/Mage.Sets/src/mage/cards/c/CourserOfKruphix.java b/Mage.Sets/src/mage/cards/c/CourserOfKruphix.java index b24868717f0..9ed69c46a19 100644 --- a/Mage.Sets/src/mage/cards/c/CourserOfKruphix.java +++ b/Mage.Sets/src/mage/cards/c/CourserOfKruphix.java @@ -1,7 +1,7 @@ package mage.cards.c; import mage.MageInt; -import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; +import mage.abilities.common.LandfallAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.continuous.PlayTheTopCardEffect; @@ -12,7 +12,6 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.FilterCard; -import mage.filter.StaticFilters; import mage.filter.common.FilterLandCard; import java.util.UUID; @@ -38,7 +37,7 @@ public final class CourserOfKruphix extends CardImpl { this.addAbility(new SimpleStaticAbility(new PlayTheTopCardEffect(TargetController.YOU, filter, false))); // Whenever a land enters the battlefield under your control, you gain 1 life. - this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new GainLifeEffect(1), StaticFilters.FILTER_LAND_A)); + this.addAbility(new LandfallAbility(new GainLifeEffect(1))); } private CourserOfKruphix(final CourserOfKruphix card) { diff --git a/Mage.Sets/src/mage/cards/d/DruidClass.java b/Mage.Sets/src/mage/cards/d/DruidClass.java index bcb28bdd68f..65a178a9efa 100644 --- a/Mage.Sets/src/mage/cards/d/DruidClass.java +++ b/Mage.Sets/src/mage/cards/d/DruidClass.java @@ -3,7 +3,7 @@ package mage.cards.d; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BecomesClassLevelTriggeredAbility; -import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; +import mage.abilities.common.LandfallAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.LandsYouControlCount; import mage.abilities.effects.common.GainLifeEffect; @@ -40,9 +40,7 @@ public final class DruidClass extends CardImpl { this.addAbility(new ClassReminderAbility()); // Whenever a land enters the battlefield under your control, you gain 1 life. - this.addAbility(new EntersBattlefieldControlledTriggeredAbility( - new GainLifeEffect(1), StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT - )); + this.addAbility(new LandfallAbility(new GainLifeEffect(1))); // {2}{G}: Level 2 this.addAbility(new ClassLevelAbility(2, "{2}{G}")); diff --git a/Mage.Sets/src/mage/cards/e/EvolutionSage.java b/Mage.Sets/src/mage/cards/e/EvolutionSage.java index 9bda0606215..8f463d93da6 100644 --- a/Mage.Sets/src/mage/cards/e/EvolutionSage.java +++ b/Mage.Sets/src/mage/cards/e/EvolutionSage.java @@ -1,13 +1,12 @@ package mage.cards.e; import mage.MageInt; -import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; +import mage.abilities.common.LandfallAbility; import mage.abilities.effects.common.counter.ProliferateEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledLandPermanent; @@ -30,10 +29,7 @@ public final class EvolutionSage extends CardImpl { this.toughness = new MageInt(2); // Whenever a land enters the battlefield under your control, proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) - this.addAbility(new EntersBattlefieldAllTriggeredAbility( - Zone.BATTLEFIELD, new ProliferateEffect(), filter, - false, null, true - )); + this.addAbility(new LandfallAbility(new ProliferateEffect())); } private EvolutionSage(final EvolutionSage card) { diff --git a/Mage.Sets/src/mage/cards/g/GreensleevesMaroSorcerer.java b/Mage.Sets/src/mage/cards/g/GreensleevesMaroSorcerer.java index 293c417636c..449f67aab65 100644 --- a/Mage.Sets/src/mage/cards/g/GreensleevesMaroSorcerer.java +++ b/Mage.Sets/src/mage/cards/g/GreensleevesMaroSorcerer.java @@ -1,7 +1,7 @@ package mage.cards.g; import mage.MageInt; -import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; +import mage.abilities.common.LandfallAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.LandsYouControlCount; import mage.abilities.effects.common.CreateTokenEffect; @@ -11,7 +11,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.FilterCard; -import mage.filter.StaticFilters; import mage.filter.predicate.Predicates; import mage.game.permanent.token.BadgerToken; @@ -45,10 +44,7 @@ public final class GreensleevesMaroSorcerer extends CardImpl { )); // Whenever a land enters the battlefield under your control, create a 3/3 green Badger creature token. - this.addAbility(new EntersBattlefieldControlledTriggeredAbility( - Zone.BATTLEFIELD, new CreateTokenEffect(new BadgerToken()), - StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT, false - )); + this.addAbility(new LandfallAbility(new CreateTokenEffect(new BadgerToken()))); } private GreensleevesMaroSorcerer(final GreensleevesMaroSorcerer card) { diff --git a/Mage.Sets/src/mage/cards/m/MajaBretagardProtector.java b/Mage.Sets/src/mage/cards/m/MajaBretagardProtector.java index 8df0cea4476..6c262aba61e 100644 --- a/Mage.Sets/src/mage/cards/m/MajaBretagardProtector.java +++ b/Mage.Sets/src/mage/cards/m/MajaBretagardProtector.java @@ -1,7 +1,7 @@ package mage.cards.m; import mage.MageInt; -import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; +import mage.abilities.common.LandfallAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; @@ -11,7 +11,6 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.constants.SuperType; -import mage.filter.StaticFilters; import mage.game.permanent.token.HumanWarriorToken; import java.util.UUID; @@ -36,10 +35,7 @@ public final class MajaBretagardProtector extends CardImpl { ))); // Whenever a land enters the battlefield under your control, create a 1/1 white Human Warrior creature token. - this.addAbility(new EntersBattlefieldControlledTriggeredAbility( - new CreateTokenEffect(new HumanWarriorToken()), - StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT - )); + this.addAbility(new LandfallAbility(new CreateTokenEffect(new HumanWarriorToken()))); } private MajaBretagardProtector(final MajaBretagardProtector card) { diff --git a/Mage.Sets/src/mage/cards/o/OmnathLocusOfTheRoil.java b/Mage.Sets/src/mage/cards/o/OmnathLocusOfTheRoil.java index 70c8f511cc6..a75351502b0 100644 --- a/Mage.Sets/src/mage/cards/o/OmnathLocusOfTheRoil.java +++ b/Mage.Sets/src/mage/cards/o/OmnathLocusOfTheRoil.java @@ -2,8 +2,8 @@ package mage.cards.o; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.LandfallAbility; import mage.abilities.condition.Condition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.decorator.ConditionalOneShotEffect; @@ -56,9 +56,7 @@ public final class OmnathLocusOfTheRoil extends CardImpl { this.addAbility(ability); // Whenever a land enters the battlefield under your control, put a +1/+1 counter on target Elemental you control. If you control eight or more lands, draw a card. - ability = new EntersBattlefieldControlledTriggeredAbility( - new AddCountersTargetEffect(CounterType.P1P1.createInstance()), StaticFilters.FILTER_LAND_A - ); + ability = new LandfallAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance())); ability.addEffect(new ConditionalOneShotEffect( new DrawCardSourceControllerEffect(1), condition, "If you control eight or more lands, draw a card." diff --git a/Mage.Sets/src/mage/cards/p/PrimevalBounty.java b/Mage.Sets/src/mage/cards/p/PrimevalBounty.java index ee18f97570e..83761edbc5c 100644 --- a/Mage.Sets/src/mage/cards/p/PrimevalBounty.java +++ b/Mage.Sets/src/mage/cards/p/PrimevalBounty.java @@ -1,11 +1,8 @@ - package mage.cards.p; -import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; +import mage.abilities.common.LandfallAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility; -import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; @@ -15,13 +12,13 @@ import mage.constants.CardType; import mage.counters.CounterType; import mage.filter.FilterSpell; import mage.filter.StaticFilters; -import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.Predicates; import mage.game.permanent.token.BeastToken; import mage.target.common.TargetControlledCreaturePermanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class PrimevalBounty extends CardImpl { @@ -36,19 +33,20 @@ public final class PrimevalBounty extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{G}"); // Whenever you cast a creature spell, create a 3/3 green Beast creature token. - this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new BeastToken()), StaticFilters.FILTER_SPELL_A_CREATURE, false)); + this.addAbility(new SpellCastControllerTriggeredAbility( + new CreateTokenEffect(new BeastToken()), StaticFilters.FILTER_SPELL_A_CREATURE, false + )); // Whenever you cast a noncreature spell, put three +1/+1 counters on target creature you control. - Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance(3)); - Ability ability = new SpellCastControllerTriggeredAbility(effect, filterNonCreature, false); + Ability ability = new SpellCastControllerTriggeredAbility( + new AddCountersTargetEffect(CounterType.P1P1.createInstance(3)), + filterNonCreature, false + ); ability.addTarget(new TargetControlledCreaturePermanent()); this.addAbility(ability); // Whenever a land enters the battlefield under your control, you gain 3 life. - effect = new GainLifeEffect(3); - ability = new EntersBattlefieldControlledTriggeredAbility(effect, StaticFilters.FILTER_LAND_A); - this.addAbility(ability); - + this.addAbility(new LandfallAbility(new GainLifeEffect(3))); } private PrimevalBounty(final PrimevalBounty card) { diff --git a/Mage.Sets/src/mage/cards/r/RoaringEarth.java b/Mage.Sets/src/mage/cards/r/RoaringEarth.java index 5cb9e90e011..18d6fd25763 100644 --- a/Mage.Sets/src/mage/cards/r/RoaringEarth.java +++ b/Mage.Sets/src/mage/cards/r/RoaringEarth.java @@ -1,7 +1,7 @@ package mage.cards.r; import mage.abilities.Ability; -import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; +import mage.abilities.common.LandfallAbility; import mage.abilities.dynamicvalue.common.ManacostVariableValue; import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; @@ -40,9 +40,7 @@ public final class RoaringEarth extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}"); // Whenever a land enters the battlefield under your control, put a +1/+1 counter on target creature or Vehicle you control. - Ability ability = new EntersBattlefieldControlledTriggeredAbility( - new AddCountersTargetEffect(CounterType.P1P1.createInstance()), StaticFilters.FILTER_LAND_A - ); + Ability ability = new LandfallAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance())); ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/StoneSeederHierophant.java b/Mage.Sets/src/mage/cards/s/StoneSeederHierophant.java index 4fdb24476ad..fd2425536a0 100644 --- a/Mage.Sets/src/mage/cards/s/StoneSeederHierophant.java +++ b/Mage.Sets/src/mage/cards/s/StoneSeederHierophant.java @@ -1,10 +1,8 @@ - package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; +import mage.abilities.common.LandfallAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.UntapSourceEffect; @@ -13,31 +11,28 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.Zone; -import mage.filter.common.FilterControlledLandPermanent; -import mage.target.Target; import mage.target.common.TargetLandPermanent; +import java.util.UUID; + /** - * * @author Wehk */ public final class StoneSeederHierophant extends CardImpl { public StoneSeederHierophant(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.DRUID); this.power = new MageInt(1); this.toughness = new MageInt(1); // Whenever a land enters the battlefield under your control, untap Stone-Seeder Hierophant. - this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), new FilterControlledLandPermanent("a land"), false, null, true)); + this.addAbility(new LandfallAbility(new UntapSourceEffect())); // {tap}: Untap target land. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapTargetEffect(), new TapSourceCost()); - Target target = new TargetLandPermanent(); - ability.addTarget(target); + Ability ability = new SimpleActivatedAbility(new UntapTargetEffect(), new TapSourceCost()); + ability.addTarget(new TargetLandPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TatyovaBenthicDruid.java b/Mage.Sets/src/mage/cards/t/TatyovaBenthicDruid.java index 3579fe112d4..042e013eb43 100644 --- a/Mage.Sets/src/mage/cards/t/TatyovaBenthicDruid.java +++ b/Mage.Sets/src/mage/cards/t/TatyovaBenthicDruid.java @@ -1,10 +1,8 @@ - package mage.cards.t; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; +import mage.abilities.common.LandfallAbility; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; @@ -12,10 +10,10 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; -import mage.filter.StaticFilters; + +import java.util.UUID; /** - * * @author L_J */ public final class TatyovaBenthicDruid extends CardImpl { @@ -30,7 +28,7 @@ public final class TatyovaBenthicDruid extends CardImpl { this.toughness = new MageInt(3); // Whenever a land enters the battlefield under your control, you gain 1 life and draw a card. - Ability ability = new EntersBattlefieldControlledTriggeredAbility(new GainLifeEffect(1), StaticFilters.FILTER_LAND_A); + Ability ability = new LandfallAbility(new GainLifeEffect(1)); ability.addEffect(new DrawCardSourceControllerEffect(1).setText("and draw a card")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TirelessTracker.java b/Mage.Sets/src/mage/cards/t/TirelessTracker.java index 2b7d003c33a..2f68429c1c0 100644 --- a/Mage.Sets/src/mage/cards/t/TirelessTracker.java +++ b/Mage.Sets/src/mage/cards/t/TirelessTracker.java @@ -1,48 +1,40 @@ - package mage.cards.t; -import java.util.UUID; import mage.MageInt; -import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; +import mage.abilities.common.LandfallAbility; +import mage.abilities.common.SacrificePermanentTriggeredAbility; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.keyword.InvestigateEffect; 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.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterControlledPermanent; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; + +import java.util.UUID; /** - * * @author fireshoes */ public final class TirelessTracker extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Clue"); - - static { - filter.add(SubType.CLUE.getPredicate()); - } + private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.CLUE, "a Clue"); public TirelessTracker(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.SCOUT); this.power = new MageInt(3); this.toughness = new MageInt(2); // Whenever a land enters the battlefield under your control, investigate. (Create a colorless Clue artifact token with "{2}, Sacrifice this artifact: Draw a card.") - this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new InvestigateEffect(), new FilterControlledLandPermanent("a land"), false, null, true)); + this.addAbility(new LandfallAbility(new InvestigateEffect())); // Whenever you sacrifice a Clue, put a +1/+1 counter on Tireless Tracker. - this.addAbility(new TirelessTrackerTriggeredAbility()); + this.addAbility(new SacrificePermanentTriggeredAbility( + new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter + )); } private TirelessTracker(final TirelessTracker card) { @@ -54,32 +46,3 @@ public final class TirelessTracker extends CardImpl { return new TirelessTracker(this); } } - -class TirelessTrackerTriggeredAbility extends TriggeredAbilityImpl { - - public TirelessTrackerTriggeredAbility() { - super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance())); - setLeavesTheBattlefieldTrigger(true); - setTriggerPhrase("Whenever you sacrifice a Clue, "); - } - - public TirelessTrackerTriggeredAbility(final TirelessTrackerTriggeredAbility ability) { - super(ability); - } - - @Override - public TirelessTrackerTriggeredAbility copy() { - return new TirelessTrackerTriggeredAbility(this); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.SACRIFICED_PERMANENT; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - return event.getPlayerId().equals(this.getControllerId()) - && game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD).hasSubtype(SubType.CLUE, game); - } -} diff --git a/Mage.Sets/src/mage/cards/t/ToggoGoblinWeaponsmith.java b/Mage.Sets/src/mage/cards/t/ToggoGoblinWeaponsmith.java index c4bccbfcce7..15059b0bfa4 100644 --- a/Mage.Sets/src/mage/cards/t/ToggoGoblinWeaponsmith.java +++ b/Mage.Sets/src/mage/cards/t/ToggoGoblinWeaponsmith.java @@ -1,7 +1,7 @@ package mage.cards.t; import mage.MageInt; -import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; +import mage.abilities.common.LandfallAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.PartnerAbility; import mage.cards.CardImpl; @@ -9,7 +9,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; -import mage.filter.StaticFilters; import mage.game.permanent.token.RockToken; import java.util.UUID; @@ -29,9 +28,7 @@ public final class ToggoGoblinWeaponsmith extends CardImpl { this.toughness = new MageInt(2); // Whenever a land enters the battlefield under your control, create an artifact equipment token named Rock wih "Equipped creature has '{1}, {T}, Sacrifice Rock: This creature deals 2 damage to any target'" and equip {1}. - this.addAbility(new EntersBattlefieldControlledTriggeredAbility( - new CreateTokenEffect(new RockToken()), StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT - )); + this.addAbility(new LandfallAbility(new CreateTokenEffect(new RockToken()))); // Partner this.addAbility(PartnerAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/t/TrenchBehemoth.java b/Mage.Sets/src/mage/cards/t/TrenchBehemoth.java index ce01b00ccda..1e79659ff86 100644 --- a/Mage.Sets/src/mage/cards/t/TrenchBehemoth.java +++ b/Mage.Sets/src/mage/cards/t/TrenchBehemoth.java @@ -2,7 +2,7 @@ package mage.cards.t; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; +import mage.abilities.common.LandfallAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.ReturnToHandChosenControlledPermanentCost; import mage.abilities.effects.RequirementEffect; @@ -43,9 +43,7 @@ public final class TrenchBehemoth extends CardImpl { this.addAbility(ability); // Whenever a land enters the battlefield under your control, target creature an opponent controls attacks during its controller's next combat phase if able. - ability = new EntersBattlefieldControlledTriggeredAbility( - new TrenchBehemothEffect(), StaticFilters.FILTER_LAND_A - ); + ability = new LandfallAbility(new TrenchBehemothEffect()); ability.addTarget(new TargetOpponentsCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/v/VinelasherKudzu.java b/Mage.Sets/src/mage/cards/v/VinelasherKudzu.java index c94b4580980..0665107c5d7 100644 --- a/Mage.Sets/src/mage/cards/v/VinelasherKudzu.java +++ b/Mage.Sets/src/mage/cards/v/VinelasherKudzu.java @@ -1,34 +1,30 @@ - package mage.cards.v; -import java.util.UUID; import mage.MageInt; -import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; +import mage.abilities.common.LandfallAbility; 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.filter.common.FilterControlledLandPermanent; + +import java.util.UUID; /** - * * @author Loki */ public final class VinelasherKudzu extends CardImpl { public VinelasherKudzu(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); this.subtype.add(SubType.PLANT); this.power = new MageInt(1); this.toughness = new MageInt(1); // Whenever a land enters the battlefield under your control, put a +1/+1 counter on Vinelasher Kudzu. - this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, - new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new FilterControlledLandPermanent("a land"), false, null, true)); + this.addAbility(new LandfallAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()))); } private VinelasherKudzu(final VinelasherKudzu card) {