replace various cards with landfall errata

This commit is contained in:
Evan Kranzler 2022-10-15 10:28:28 -04:00
parent 4a685a098d
commit d8e3233cde
16 changed files with 68 additions and 144 deletions

View file

@ -1,14 +1,16 @@
package mage.cards.a; package mage.cards.a;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.LandfallAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.continuous.PlayAdditionalLandsControllerEffect; import mage.abilities.effects.common.continuous.PlayAdditionalLandsControllerEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.CardType;
import mage.filter.StaticFilters; import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import java.util.UUID; 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. // Whenever a land enters the battlefield under your control, you may draw a card.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new LandfallAbility(new DrawCardSourceControllerEffect(1), true));
Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1),
StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT, true
));
} }
private AesiTyrantOfGyreStrait(final AesiTyrantOfGyreStrait card) { private AesiTyrantOfGyreStrait(final AesiTyrantOfGyreStrait card) {

View file

@ -1,9 +1,7 @@
package mage.cards.a; package mage.cards.a;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.common.LandfallAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.PayEnergyCost; import mage.abilities.costs.common.PayEnergyCost;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
@ -12,12 +10,11 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledLandPermanent;
import mage.game.permanent.token.ArchitectOfTheUntamedBeastToken; import mage.game.permanent.token.ArchitectOfTheUntamedBeastToken;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class ArchitectOfTheUntamed extends CardImpl { public final class ArchitectOfTheUntamed extends CardImpl {
@ -31,10 +28,12 @@ public final class ArchitectOfTheUntamed extends CardImpl {
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
// Whenever a land enters the battlefield under your control, you get {E}. // 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. // 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) { private ArchitectOfTheUntamed(final ArchitectOfTheUntamed card) {

View file

@ -1,7 +1,7 @@
package mage.cards.c; package mage.cards.c;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.LandfallAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.continuous.PlayTheTopCardEffect; import mage.abilities.effects.common.continuous.PlayTheTopCardEffect;
@ -12,7 +12,6 @@ import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.filter.FilterCard; import mage.filter.FilterCard;
import mage.filter.StaticFilters;
import mage.filter.common.FilterLandCard; import mage.filter.common.FilterLandCard;
import java.util.UUID; import java.util.UUID;
@ -38,7 +37,7 @@ public final class CourserOfKruphix extends CardImpl {
this.addAbility(new SimpleStaticAbility(new PlayTheTopCardEffect(TargetController.YOU, filter, false))); this.addAbility(new SimpleStaticAbility(new PlayTheTopCardEffect(TargetController.YOU, filter, false)));
// Whenever a land enters the battlefield under your control, you gain 1 life. // 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) { private CourserOfKruphix(final CourserOfKruphix card) {

View file

@ -3,7 +3,7 @@ package mage.cards.d;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.BecomesClassLevelTriggeredAbility; import mage.abilities.common.BecomesClassLevelTriggeredAbility;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.LandfallAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.LandsYouControlCount; import mage.abilities.dynamicvalue.common.LandsYouControlCount;
import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.GainLifeEffect;
@ -40,9 +40,7 @@ public final class DruidClass extends CardImpl {
this.addAbility(new ClassReminderAbility()); this.addAbility(new ClassReminderAbility());
// Whenever a land enters the battlefield under your control, you gain 1 life. // Whenever a land enters the battlefield under your control, you gain 1 life.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new LandfallAbility(new GainLifeEffect(1)));
new GainLifeEffect(1), StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT
));
// {2}{G}: Level 2 // {2}{G}: Level 2
this.addAbility(new ClassLevelAbility(2, "{2}{G}")); this.addAbility(new ClassLevelAbility(2, "{2}{G}"));

View file

@ -1,13 +1,12 @@
package mage.cards.e; package mage.cards.e;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.common.LandfallAbility;
import mage.abilities.effects.common.counter.ProliferateEffect; import mage.abilities.effects.common.counter.ProliferateEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterControlledLandPermanent;
@ -30,10 +29,7 @@ public final class EvolutionSage extends CardImpl {
this.toughness = new MageInt(2); 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.) // 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( this.addAbility(new LandfallAbility(new ProliferateEffect()));
Zone.BATTLEFIELD, new ProliferateEffect(), filter,
false, null, true
));
} }
private EvolutionSage(final EvolutionSage card) { private EvolutionSage(final EvolutionSage card) {

View file

@ -1,7 +1,7 @@
package mage.cards.g; package mage.cards.g;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.LandfallAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.LandsYouControlCount; import mage.abilities.dynamicvalue.common.LandsYouControlCount;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
@ -11,7 +11,6 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.filter.FilterCard; import mage.filter.FilterCard;
import mage.filter.StaticFilters;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import mage.game.permanent.token.BadgerToken; 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. // Whenever a land enters the battlefield under your control, create a 3/3 green Badger creature token.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new LandfallAbility(new CreateTokenEffect(new BadgerToken())));
Zone.BATTLEFIELD, new CreateTokenEffect(new BadgerToken()),
StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT, false
));
} }
private GreensleevesMaroSorcerer(final GreensleevesMaroSorcerer card) { private GreensleevesMaroSorcerer(final GreensleevesMaroSorcerer card) {

View file

@ -1,7 +1,7 @@
package mage.cards.m; package mage.cards.m;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.LandfallAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect;
@ -11,7 +11,6 @@ import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.filter.StaticFilters;
import mage.game.permanent.token.HumanWarriorToken; import mage.game.permanent.token.HumanWarriorToken;
import java.util.UUID; 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. // Whenever a land enters the battlefield under your control, create a 1/1 white Human Warrior creature token.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new LandfallAbility(new CreateTokenEffect(new HumanWarriorToken())));
new CreateTokenEffect(new HumanWarriorToken()),
StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT
));
} }
private MajaBretagardProtector(final MajaBretagardProtector card) { private MajaBretagardProtector(final MajaBretagardProtector card) {

View file

@ -2,8 +2,8 @@ package mage.cards.o;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.LandfallAbility;
import mage.abilities.condition.Condition; import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.decorator.ConditionalOneShotEffect;
@ -56,9 +56,7 @@ public final class OmnathLocusOfTheRoil extends CardImpl {
this.addAbility(ability); 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. // 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( ability = new LandfallAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()));
new AddCountersTargetEffect(CounterType.P1P1.createInstance()), StaticFilters.FILTER_LAND_A
);
ability.addEffect(new ConditionalOneShotEffect( ability.addEffect(new ConditionalOneShotEffect(
new DrawCardSourceControllerEffect(1), condition, new DrawCardSourceControllerEffect(1), condition,
"If you control eight or more lands, draw a card." "If you control eight or more lands, draw a card."

View file

@ -1,11 +1,8 @@
package mage.cards.p; package mage.cards.p;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.LandfallAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect;
@ -15,13 +12,13 @@ import mage.constants.CardType;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterSpell; import mage.filter.FilterSpell;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import mage.game.permanent.token.BeastToken; import mage.game.permanent.token.BeastToken;
import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class PrimevalBounty extends CardImpl { 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}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{G}");
// Whenever you cast a creature spell, create a 3/3 green Beast creature token. // 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. // 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(
Ability ability = new SpellCastControllerTriggeredAbility(effect, filterNonCreature, false); new AddCountersTargetEffect(CounterType.P1P1.createInstance(3)),
filterNonCreature, false
);
ability.addTarget(new TargetControlledCreaturePermanent()); ability.addTarget(new TargetControlledCreaturePermanent());
this.addAbility(ability); this.addAbility(ability);
// Whenever a land enters the battlefield under your control, you gain 3 life. // Whenever a land enters the battlefield under your control, you gain 3 life.
effect = new GainLifeEffect(3); this.addAbility(new LandfallAbility(new GainLifeEffect(3)));
ability = new EntersBattlefieldControlledTriggeredAbility(effect, StaticFilters.FILTER_LAND_A);
this.addAbility(ability);
} }
private PrimevalBounty(final PrimevalBounty card) { private PrimevalBounty(final PrimevalBounty card) {

View file

@ -1,7 +1,7 @@
package mage.cards.r; package mage.cards.r;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.LandfallAbility;
import mage.abilities.dynamicvalue.common.ManacostVariableValue; import mage.abilities.dynamicvalue.common.ManacostVariableValue;
import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect; import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect; 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}"); 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. // 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( Ability ability = new LandfallAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()));
new AddCountersTargetEffect(CounterType.P1P1.createInstance()), StaticFilters.FILTER_LAND_A
);
ability.addTarget(new TargetPermanent(filter)); ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability); this.addAbility(ability);

View file

@ -1,10 +1,8 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.common.LandfallAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.UntapSourceEffect; import mage.abilities.effects.common.UntapSourceEffect;
@ -13,13 +11,11 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledLandPermanent;
import mage.target.Target;
import mage.target.common.TargetLandPermanent; import mage.target.common.TargetLandPermanent;
import java.util.UUID;
/** /**
*
* @author Wehk * @author Wehk
*/ */
public final class StoneSeederHierophant extends CardImpl { public final class StoneSeederHierophant extends CardImpl {
@ -32,12 +28,11 @@ public final class StoneSeederHierophant extends CardImpl {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// Whenever a land enters the battlefield under your control, untap Stone-Seeder Hierophant. // 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. // {tap}: Untap target land.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapTargetEffect(), new TapSourceCost()); Ability ability = new SimpleActivatedAbility(new UntapTargetEffect(), new TapSourceCost());
Target target = new TargetLandPermanent(); ability.addTarget(new TargetLandPermanent());
ability.addTarget(target);
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -1,10 +1,8 @@
package mage.cards.t; package mage.cards.t;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; 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.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.GainLifeEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -12,10 +10,10 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.filter.StaticFilters;
import java.util.UUID;
/** /**
*
* @author L_J * @author L_J
*/ */
public final class TatyovaBenthicDruid extends CardImpl { public final class TatyovaBenthicDruid extends CardImpl {
@ -30,7 +28,7 @@ public final class TatyovaBenthicDruid extends CardImpl {
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
// Whenever a land enters the battlefield under your control, you gain 1 life and draw a card. // 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")); ability.addEffect(new DrawCardSourceControllerEffect(1).setText("and draw a card"));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -1,35 +1,25 @@
package mage.cards.t; package mage.cards.t;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.LandfallAbility;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.common.SacrificePermanentTriggeredAbility;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.effects.keyword.InvestigateEffect; import mage.abilities.effects.keyword.InvestigateEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
import mage.game.Game;
import mage.game.events.GameEvent; import java.util.UUID;
import mage.game.events.GameEvent.EventType;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class TirelessTracker extends CardImpl { public final class TirelessTracker extends CardImpl {
private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Clue"); private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.CLUE, "a Clue");
static {
filter.add(SubType.CLUE.getPredicate());
}
public TirelessTracker(UUID ownerId, CardSetInfo setInfo) { public TirelessTracker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
@ -39,10 +29,12 @@ public final class TirelessTracker extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// Whenever a land enters the battlefield under your control, investigate. <i>(Create a colorless Clue artifact token with "{2}, Sacrifice this artifact: Draw a card.")</i> // Whenever a land enters the battlefield under your control, investigate. <i>(Create a colorless Clue artifact token with "{2}, Sacrifice this artifact: Draw a card.")</i>
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. // 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) { private TirelessTracker(final TirelessTracker card) {
@ -54,32 +46,3 @@ public final class TirelessTracker extends CardImpl {
return new TirelessTracker(this); 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);
}
}

View file

@ -1,7 +1,7 @@
package mage.cards.t; package mage.cards.t;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.LandfallAbility;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.keyword.PartnerAbility; import mage.abilities.keyword.PartnerAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -9,7 +9,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.filter.StaticFilters;
import mage.game.permanent.token.RockToken; import mage.game.permanent.token.RockToken;
import java.util.UUID; import java.util.UUID;
@ -29,9 +28,7 @@ public final class ToggoGoblinWeaponsmith extends CardImpl {
this.toughness = new MageInt(2); 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}. // 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( this.addAbility(new LandfallAbility(new CreateTokenEffect(new RockToken())));
new CreateTokenEffect(new RockToken()), StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT
));
// Partner // Partner
this.addAbility(PartnerAbility.getInstance()); this.addAbility(PartnerAbility.getInstance());

View file

@ -2,7 +2,7 @@ package mage.cards.t;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.LandfallAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.ReturnToHandChosenControlledPermanentCost; import mage.abilities.costs.common.ReturnToHandChosenControlledPermanentCost;
import mage.abilities.effects.RequirementEffect; import mage.abilities.effects.RequirementEffect;
@ -43,9 +43,7 @@ public final class TrenchBehemoth extends CardImpl {
this.addAbility(ability); 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. // 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( ability = new LandfallAbility(new TrenchBehemothEffect());
new TrenchBehemothEffect(), StaticFilters.FILTER_LAND_A
);
ability.addTarget(new TargetOpponentsCreaturePermanent()); ability.addTarget(new TargetOpponentsCreaturePermanent());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -1,20 +1,17 @@
package mage.cards.v; package mage.cards.v;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.common.LandfallAbility;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.common.FilterControlledLandPermanent;
import java.util.UUID;
/** /**
*
* @author Loki * @author Loki
*/ */
public final class VinelasherKudzu extends CardImpl { public final class VinelasherKudzu extends CardImpl {
@ -27,8 +24,7 @@ public final class VinelasherKudzu extends CardImpl {
this.toughness = 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. // Whenever a land enters the battlefield under your control, put a +1/+1 counter on Vinelasher Kudzu.
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, this.addAbility(new LandfallAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance())));
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new FilterControlledLandPermanent("a land"), false, null, true));
} }
private VinelasherKudzu(final VinelasherKudzu card) { private VinelasherKudzu(final VinelasherKudzu card) {