replace some instances of EntersBattlefieldControlledTriggeredAbility with EntersBattlefieldAllTriggeredAbility

This commit is contained in:
theelk801 2025-06-19 08:54:19 -04:00
parent ee2f722b38
commit 96b39c1210
41 changed files with 280 additions and 294 deletions

View file

@ -2,7 +2,7 @@ package mage.cards.a;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
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.combat.CanAttackAsThoughItDidntHaveDefenderAllEffect; import mage.abilities.effects.common.combat.CanAttackAsThoughItDidntHaveDefenderAllEffect;
@ -12,7 +12,11 @@ import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.VigilanceAbility; import mage.abilities.keyword.VigilanceAbility;
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.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.predicate.mageobject.AbilityPredicate;
@ -24,7 +28,7 @@ import java.util.UUID;
*/ */
public final class ArcadesTheStrategist extends CardImpl { public final class ArcadesTheStrategist extends CardImpl {
private static final FilterControlledCreaturePermanent defenderSingle = new FilterControlledCreaturePermanent("a creature with defender"); private static final FilterPermanent defenderSingle = new FilterControlledCreaturePermanent("a creature you control with defender");
private static final FilterCreaturePermanent defenderPlural = new FilterCreaturePermanent("creature you control with defender"); private static final FilterCreaturePermanent defenderPlural = new FilterCreaturePermanent("creature you control with defender");
static { static {
@ -48,7 +52,7 @@ public final class ArcadesTheStrategist extends CardImpl {
this.addAbility(VigilanceAbility.getInstance()); this.addAbility(VigilanceAbility.getInstance());
// Whenever a creature with defender you control enters, draw a card. // Whenever a creature with defender you control enters, draw a card.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldAllTriggeredAbility(
new DrawCardSourceControllerEffect(1), defenderSingle new DrawCardSourceControllerEffect(1), defenderSingle
)); ));

View file

@ -56,7 +56,7 @@ public final class BelakorTheDarkMaster extends CardImpl {
// Prince of Chaos -- When Be'lakor, the Dark Master enters the battlefield, you draw X cards and you lose X life, where X is the number of Demons you control. // Prince of Chaos -- When Be'lakor, the Dark Master enters the battlefield, you draw X cards and you lose X life, where X is the number of Demons you control.
Ability ability = new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(xValue).setText("you draw X cards")); Ability ability = new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(xValue).setText("you draw X cards"));
ability.addEffect(new LoseLifeSourceControllerEffect(xValue).concatBy("and")); ability.addEffect(new LoseLifeSourceControllerEffect(xValue).setText("and you lose X life, where X is the number of Demons you control"));
this.addAbility(ability.withFlavorWord("Prince of Chaos").addHint(hint)); this.addAbility(ability.withFlavorWord("Prince of Chaos").addHint(hint));
// Lord of Torment -- Whenever another Demon you control enters, it deals damage equal to its power to any target. // Lord of Torment -- Whenever another Demon you control enters, it deals damage equal to its power to any target.

View file

@ -2,7 +2,7 @@ package mage.cards.b;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.AsEntersBattlefieldAbility; import mage.abilities.common.AsEntersBattlefieldAbility;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.ChooseCreatureTypeEffect; import mage.abilities.effects.common.ChooseCreatureTypeEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.ChangelingAbility; import mage.abilities.keyword.ChangelingAbility;
@ -13,9 +13,9 @@ import mage.constants.Outcome;
import mage.constants.SubType; import mage.constants.SubType;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.ChosenSubtypePredicate;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.mageobject.ChosenSubtypePredicate;
import java.util.UUID; import java.util.UUID;
@ -25,7 +25,7 @@ import java.util.UUID;
public final class BloodlinePretender extends CardImpl { public final class BloodlinePretender extends CardImpl {
private static final FilterPermanent filter private static final FilterPermanent filter
= new FilterCreaturePermanent("another creature of the chosen type"); = new FilterControlledCreaturePermanent("another creature you control of the chosen type");
static { static {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
@ -46,7 +46,7 @@ public final class BloodlinePretender extends CardImpl {
this.addAbility(new AsEntersBattlefieldAbility(new ChooseCreatureTypeEffect(Outcome.BoostCreature))); this.addAbility(new AsEntersBattlefieldAbility(new ChooseCreatureTypeEffect(Outcome.BoostCreature)));
// Whenever another creature of the chosen type you control enters, put a +1/+1 counter on Bloodline Pretender. // Whenever another creature of the chosen type you control enters, put a +1/+1 counter on Bloodline Pretender.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldAllTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter
)); ));
} }

View file

@ -2,10 +2,10 @@ package mage.cards.b;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
import mage.cards.*; import mage.cards.*;
import mage.constants.*; import mage.constants.*;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
@ -23,8 +23,7 @@ import java.util.UUID;
*/ */
public final class BrainstealerDragon extends CardImpl { public final class BrainstealerDragon extends CardImpl {
private static final FilterPermanent filter private static final FilterPermanent filter = new FilterNonlandPermanent();
= new FilterNonlandPermanent("a nonland permanent an opponent owns");
static { static {
filter.add(TargetController.OPPONENT.getOwnerPredicate()); filter.add(TargetController.OPPONENT.getOwnerPredicate());
@ -42,15 +41,12 @@ public final class BrainstealerDragon extends CardImpl {
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
// At the beginning of your end step, exile the top card of each opponent's library. You may play those cards for as long as they remain exiled. If you cast a spell this way, you may spend mana as though it were mana of any color to cast it. // At the beginning of your end step, exile the top card of each opponent's library. You may play those cards for as long as they remain exiled. If you cast a spell this way, you may spend mana as though it were mana of any color to cast it.
this.addAbility(new BeginningOfEndStepTriggeredAbility( this.addAbility(new BeginningOfEndStepTriggeredAbility(new BrainstealerDragonExileEffect()));
new BrainstealerDragonExileEffect()
));
// Whenever a nonland permanent an opponent owns you control enters, they lose life equal to its mana value. // Whenever a nonland permanent an opponent owns you control enters, they lose life equal to its mana value.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
Zone.BATTLEFIELD, new BrainstealerDragonLifeEffect(), filter, Zone.BATTLEFIELD, new BrainstealerDragonLifeEffect(), filter, false, SetTargetPointer.PERMANENT
false, SetTargetPointer.PERMANENT ).setTriggerPhrase("Whenever a nonland permanent an opponent owns enters the battlefield under your control, "));
));
} }
private BrainstealerDragon(final BrainstealerDragon card) { private BrainstealerDragon(final BrainstealerDragon card) {

View file

@ -1,8 +1,7 @@
package mage.cards.d; package mage.cards.d;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
@ -10,8 +9,9 @@ import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.predicate.mageobject.AbilityPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
@ -25,31 +25,27 @@ import java.util.UUID;
*/ */
public final class DragonTempest extends CardImpl { public final class DragonTempest extends CardImpl {
private static final FilterCreaturePermanent filterFlying = new FilterCreaturePermanent("a creature with flying"); private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a creature you control with flying");
private static final FilterPermanent filter2 = new FilterControlledPermanent(SubType.DRAGON, "a Dragon you control");
static { static {
filterFlying.add(new AbilityPredicate(FlyingAbility.class)); filter.add(new AbilityPredicate(FlyingAbility.class));
} }
public DragonTempest(UUID ownerId, CardSetInfo setInfo) { public DragonTempest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
// Whenever a creature with flying you control enters, it gains haste until the end of turn. // Whenever a creature with flying you control enters, it gains haste until the end of turn.
Effect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn); this.addAbility(new EntersBattlefieldAllTriggeredAbility(
effect.setText("it gains haste until end of turn"); Zone.BATTLEFIELD, new GainAbilityTargetEffect(HasteAbility.getInstance())
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, effect, filterFlying, false, SetTargetPointer.PERMANENT)); .setText("it gains haste until end of turn"),
filter, false, SetTargetPointer.PERMANENT
));
// Whenever a Dragon you control enters, it deals X damage to any target, where X is the number of Dragons you control. // Whenever a Dragon you control enters, it deals X damage to any target, where X is the number of Dragons you control.
Ability ability = new EntersBattlefieldControlledTriggeredAbility( Ability ability = new EntersBattlefieldAllTriggeredAbility(new DragonTempestDamageEffect(), filter2);
Zone.BATTLEFIELD,
new DragonTempestDamageEffect(),
new FilterCreaturePermanent(SubType.DRAGON, "a Dragon"),
false,
SetTargetPointer.NONE
);
ability.addTarget(new TargetAnyTarget()); ability.addTarget(new TargetAnyTarget());
this.addAbility(ability); this.addAbility(ability);
} }
private DragonTempest(final DragonTempest card) { private DragonTempest(final DragonTempest card) {

View file

@ -2,14 +2,15 @@ package mage.cards.e;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.SetBasePowerToughnessTargetEffect; import mage.abilities.effects.common.continuous.SetBasePowerToughnessTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.mageobject.ColorlessPredicate; import mage.filter.predicate.mageobject.ColorlessPredicate;
import mage.game.Game; import mage.game.Game;
@ -24,7 +25,7 @@ import java.util.UUID;
*/ */
public final class EldraziMimic extends CardImpl { public final class EldraziMimic extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another colorless creature"); private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another colorless creature you control");
static { static {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
@ -39,7 +40,7 @@ public final class EldraziMimic extends CardImpl {
// Whenever another colorless creature you control enters, you may have the base power and toughness of Eldrazi Mimic // Whenever another colorless creature you control enters, you may have the base power and toughness of Eldrazi Mimic
// become that creature's power and toughness until end of turn. // become that creature's power and toughness until end of turn.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldAllTriggeredAbility(
Zone.BATTLEFIELD, new EldraziMimicEffect(), filter, Zone.BATTLEFIELD, new EldraziMimicEffect(), filter,
true, SetTargetPointer.PERMANENT true, SetTargetPointer.PERMANENT
)); ));
@ -59,7 +60,7 @@ class EldraziMimicEffect extends OneShotEffect {
EldraziMimicEffect() { EldraziMimicEffect() {
super(Outcome.BoostCreature); super(Outcome.BoostCreature);
staticText = "you may have the base power and toughness of {this} become that creature's power and toughness until end of turn"; staticText = "you may change {this}'s base power and toughness to that creature's power and toughness until end of turn";
} }
private EldraziMimicEffect(final EldraziMimicEffect effect) { private EldraziMimicEffect(final EldraziMimicEffect effect) {

View file

@ -1,8 +1,6 @@
package mage.cards.e; package mage.cards.e;
import java.util.UUID; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -12,23 +10,24 @@ import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.PowerPredicate;
import java.util.UUID;
/** /**
*
* @author emerald000 * @author emerald000
*/ */
public final class ElementalBond extends CardImpl { public final class ElementalBond extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a creature with power 3 or greater"); private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a creature you control with power 3 or greater");
static { static {
filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 2)); filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 2));
} }
public ElementalBond(UUID ownerId, CardSetInfo setInfo) { public ElementalBond(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
// Whenever a creature with power 3 or greater you control enters, draw a card. // Whenever a creature with power 3 or greater you control enters, draw a card.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new DrawCardSourceControllerEffect(1), filter)); this.addAbility(new EntersBattlefieldAllTriggeredAbility(new DrawCardSourceControllerEffect(1), filter));
} }
private ElementalBond(final ElementalBond card) { private ElementalBond(final ElementalBond card) {

View file

@ -1,7 +1,7 @@
package mage.cards.e; package mage.cards.e;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -9,7 +9,9 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.StaticFilters; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledArtifactPermanent;
import mage.filter.common.FilterControlledEnchantmentPermanent;
import java.util.UUID; import java.util.UUID;
@ -18,6 +20,9 @@ import java.util.UUID;
*/ */
public final class ElvishArchivist extends CardImpl { public final class ElvishArchivist extends CardImpl {
private static final FilterPermanent filter = new FilterControlledArtifactPermanent("one or more artifacts you control");
private static final FilterPermanent filter2 = new FilterControlledEnchantmentPermanent("one or more enchantments you control");
public ElvishArchivist(UUID ownerId, CardSetInfo setInfo) { public ElvishArchivist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
@ -27,18 +32,14 @@ public final class ElvishArchivist extends CardImpl {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// Whenever one or more artifacts enter the battlefield under your control, put two +1/+1 counters on Elvish Archivist. This ability triggers only once each turn. // Whenever one or more artifacts enter the battlefield under your control, put two +1/+1 counters on Elvish Archivist. This ability triggers only once each turn.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldAllTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), filter
StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT ).setTriggersLimitEachTurn(1));
).setTriggersLimitEachTurn(1)
.setTriggerPhrase("Whenever one or more artifacts enter the battlefield under your control, "));
// Whenever one or more enchantments enter the battlefield under your control, draw a card. This ability triggers only once each turn. // Whenever one or more enchantments enter the battlefield under your control, draw a card. This ability triggers only once each turn.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldAllTriggeredAbility(
new DrawCardSourceControllerEffect(1), new DrawCardSourceControllerEffect(1), filter2
StaticFilters.FILTER_CONTROLLED_PERMANENT_ENCHANTMENT ).setTriggersLimitEachTurn(1));
).setTriggersLimitEachTurn(1)
.setTriggerPhrase("Whenever one or more enchantments enter the battlefield under your control, "));
} }
private ElvishArchivist(final ElvishArchivist card) { private ElvishArchivist(final ElvishArchivist card) {

View file

@ -2,7 +2,7 @@ package mage.cards.e;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
@ -15,6 +15,7 @@ import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.permanent.token.ElfWarriorToken; import mage.game.permanent.token.ElfWarriorToken;
@ -26,7 +27,7 @@ import java.util.UUID;
*/ */
public final class ElvishWarmaster extends CardImpl { public final class ElvishWarmaster extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent(SubType.ELF, "one or more other Elves"); private static final FilterPermanent filter = new FilterControlledPermanent(SubType.ELF, "one or more other Elves you control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent(SubType.ELF, "Elves"); private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent(SubType.ELF, "Elves");
static { static {
@ -42,7 +43,7 @@ public final class ElvishWarmaster extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// Whenever one or more other Elves you control enters, create a 1/1 green Elf Warrior creature token. This ability triggers only once each turn. // Whenever one or more other Elves you control enters, create a 1/1 green Elf Warrior creature token. This ability triggers only once each turn.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldAllTriggeredAbility(
new CreateTokenEffect(new ElfWarriorToken()), filter new CreateTokenEffect(new ElfWarriorToken()), filter
).setTriggersLimitEachTurn(1)); ).setTriggersLimitEachTurn(1));

View file

@ -2,7 +2,7 @@ package mage.cards.e;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EnduringGlimmerTriggeredAbility; import mage.abilities.common.EnduringGlimmerTriggeredAbility;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.keyword.LifelinkAbility; import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -22,7 +22,7 @@ import java.util.UUID;
*/ */
public final class EnduringInnocence extends CardImpl { public final class EnduringInnocence extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent(); private static final FilterPermanent filter = new FilterControlledCreaturePermanent("one or more other creatures you control with power 2 or less");
static { static {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
@ -41,10 +41,9 @@ public final class EnduringInnocence extends CardImpl {
this.addAbility(LifelinkAbility.getInstance()); this.addAbility(LifelinkAbility.getInstance());
// Whenever one or more other creatures you control with power 2 or less enter, draw a card. This ability triggers only once each turn. // Whenever one or more other creatures you control with power 2 or less enter, draw a card. This ability triggers only once each turn.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldAllTriggeredAbility(
new DrawCardSourceControllerEffect(1), filter new DrawCardSourceControllerEffect(1), filter
).setTriggersLimitEachTurn(1) ).setTriggersLimitEachTurn(1));
.setTriggerPhrase("Whenever one or more other creatures you control with power 2 or less enter, "));
// When Enduring Innocence dies, if it was a creature, return it to the battlefield under its owner's control. It's an enchantment. // When Enduring Innocence dies, if it was a creature, return it to the battlefield under its owner's control. It's an enchantment.
this.addAbility(new EnduringGlimmerTriggeredAbility()); this.addAbility(new EnduringGlimmerTriggeredAbility());

View file

@ -2,21 +2,21 @@ package mage.cards.e;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.triggers.BeginningOfCombatTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.OneShotEffect; import mage.abilities.dynamicvalue.common.CountersControllerCount;
import mage.abilities.effects.common.counter.AddCountersPlayersEffect; import mage.abilities.effects.common.counter.AddCountersPlayersEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.triggers.BeginningOfCombatTriggeredAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.PowerPredicate;
import mage.game.Game; import mage.target.TargetPermanent;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID; import java.util.UUID;
@ -25,15 +25,18 @@ import java.util.UUID;
*/ */
public final class EzuriClawOfProgress extends CardImpl { public final class EzuriClawOfProgress extends CardImpl {
final private static FilterControlledCreaturePermanent filter final private static FilterPermanent filter
= new FilterControlledCreaturePermanent("a creature with power 2 or less"); = new FilterControlledCreaturePermanent("a creature you control with power 2 or less");
final private static FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent(); final private static FilterPermanent filter2
= new FilterControlledCreaturePermanent("another target creature you control");
static { static {
filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3));
filter2.add(AnotherPredicate.instance); filter2.add(AnotherPredicate.instance);
} }
private static final DynamicValue xValue = new CountersControllerCount(CounterType.EXPERIENCE);
public EzuriClawOfProgress(UUID ownerId, CardSetInfo setInfo) { public EzuriClawOfProgress(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{U}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{U}");
this.supertype.add(SuperType.LEGENDARY); this.supertype.add(SuperType.LEGENDARY);
@ -44,13 +47,17 @@ public final class EzuriClawOfProgress extends CardImpl {
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
// Whenever a creature with power 2 or less you control enters, you get an experience counter. // Whenever a creature with power 2 or less you control enters, you get an experience counter.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new AddCountersPlayersEffect( this.addAbility(new EntersBattlefieldAllTriggeredAbility(
CounterType.EXPERIENCE.createInstance(), TargetController.YOU new AddCountersPlayersEffect(CounterType.EXPERIENCE.createInstance(), TargetController.YOU), filter
), filter)); ));
// At the beginning of combat on your turn, put X +1/+1 counters on another target creature you control, where X is the number of experience counters you have. // At the beginning of combat on your turn, put X +1/+1 counters on another target creature you control, where X is the number of experience counters you have.
Ability ability = new BeginningOfCombatTriggeredAbility(new EzuriClawOfProgressEffect()); Ability ability = new BeginningOfCombatTriggeredAbility(
ability.addTarget(new TargetControlledCreaturePermanent(filter2)); new AddCountersTargetEffect(CounterType.P1P1.createInstance(), xValue)
.setText("put X +1/+1 counters on another target creature you control, " +
"where X is the number of experience counters you have")
);
ability.addTarget(new TargetPermanent(filter2));
this.addAbility(ability); this.addAbility(ability);
} }
@ -63,34 +70,3 @@ public final class EzuriClawOfProgress extends CardImpl {
return new EzuriClawOfProgress(this); return new EzuriClawOfProgress(this);
} }
} }
class EzuriClawOfProgressEffect extends OneShotEffect {
EzuriClawOfProgressEffect() {
super(Outcome.Benefit);
this.staticText = "put X +1/+1 counters on another target creature you control, where X is the number of experience counters you have";
}
private EzuriClawOfProgressEffect(final EzuriClawOfProgressEffect effect) {
super(effect);
}
@Override
public EzuriClawOfProgressEffect copy() {
return new EzuriClawOfProgressEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
Permanent target = game.getPermanent(getTargetPointer().getFirst(game, source));
if (target != null) {
int amount = controller.getCountersCount(CounterType.EXPERIENCE);
target.addCounters(CounterType.P1P1.createInstance(amount), source.getControllerId(), source, game);
}
return true;
}
return false;
}
}

View file

@ -1,12 +1,12 @@
package mage.cards.f; package mage.cards.f;
import mage.MageInt; import mage.MageInt;
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.condition.common.MonarchIsSourceControllerCondition; import mage.abilities.condition.common.MonarchIsSourceControllerCondition;
import mage.abilities.effects.common.BecomesMonarchSourceEffect; import mage.abilities.effects.common.BecomesMonarchSourceEffect;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.hint.common.MonarchHint; import mage.abilities.hint.common.MonarchHint;
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
@ -23,7 +23,7 @@ import java.util.UUID;
public final class FaramirStewardOfGondor extends CardImpl { public final class FaramirStewardOfGondor extends CardImpl {
private static final FilterPermanent filter private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("a legendary creature with mana value 4 or greater"); = new FilterControlledCreaturePermanent("a legendary creature you control with mana value 4 or greater");
static { static {
filter.add(SuperType.LEGENDARY.getPredicate()); filter.add(SuperType.LEGENDARY.getPredicate());
@ -40,7 +40,7 @@ public final class FaramirStewardOfGondor extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// Whenever a legendary creature with mana value 4 or greater you control enters, you become the monarch. // Whenever a legendary creature with mana value 4 or greater you control enters, you become the monarch.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new BecomesMonarchSourceEffect(), filter).addHint(MonarchHint.instance)); this.addAbility(new EntersBattlefieldAllTriggeredAbility(new BecomesMonarchSourceEffect(), filter).addHint(MonarchHint.instance));
// At the beginning of your end step, if you're the monarch, create two 1/1 white Human Soldier creature tokens. // At the beginning of your end step, if you're the monarch, create two 1/1 white Human Soldier creature tokens.
this.addAbility(new BeginningOfEndStepTriggeredAbility( this.addAbility(new BeginningOfEndStepTriggeredAbility(

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.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.keyword.ChangelingAbility; import mage.abilities.keyword.ChangelingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -9,9 +9,9 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.NamePredicate;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.mageobject.NamePredicate;
import java.util.UUID; import java.util.UUID;
@ -21,7 +21,7 @@ import java.util.UUID;
public final class GladewalkerRitualist extends CardImpl { public final class GladewalkerRitualist extends CardImpl {
private static final FilterPermanent filter private static final FilterPermanent filter
= new FilterCreaturePermanent("another creature named Gladewalker Ritualist"); = new FilterControlledCreaturePermanent("another creature you control named Gladewalker Ritualist");
static { static {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
@ -39,9 +39,7 @@ public final class GladewalkerRitualist extends CardImpl {
this.addAbility(new ChangelingAbility()); this.addAbility(new ChangelingAbility());
// Whenever another creature named Gladewalker Ritualist you control enters, draw a card. // Whenever another creature named Gladewalker Ritualist you control enters, draw a card.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldAllTriggeredAbility(new DrawCardSourceControllerEffect(1), filter));
new DrawCardSourceControllerEffect(1), filter
));
} }
private GladewalkerRitualist(final GladewalkerRitualist card) { private GladewalkerRitualist(final GladewalkerRitualist card) {

View file

@ -1,33 +1,33 @@
package mage.cards.g; package mage.cards.g;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
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.ComparisonType; import mage.constants.ComparisonType;
import mage.constants.Zone; import mage.constants.SubType;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.PowerPredicate;
import java.util.UUID;
/** /**
*
* @author jeffwadsworth * @author jeffwadsworth
*/ */
public final class GodtrackerOfJund extends CardImpl { public final class GodtrackerOfJund extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with power 5 or greater"); private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a creature you control with power 5 or greater");
static { static {
filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 4)); filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 4));
} }
public GodtrackerOfJund(UUID ownerId, CardSetInfo setInfo) { public GodtrackerOfJund(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{G}");
this.subtype.add(SubType.ELF); this.subtype.add(SubType.ELF);
this.subtype.add(SubType.SHAMAN); this.subtype.add(SubType.SHAMAN);
@ -35,8 +35,9 @@ public final class GodtrackerOfJund extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// Whenever a creature with power 5 or greater you control enters, you may put a +1/+1 counter on Godtracker of Jund. // Whenever a creature with power 5 or greater you control enters, you may put a +1/+1 counter on Godtracker of Jund.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, this.addAbility(new EntersBattlefieldAllTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter, true)); new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter, true
));
} }
private GodtrackerOfJund(final GodtrackerOfJund card) { private GodtrackerOfJund(final GodtrackerOfJund card) {

View file

@ -1,8 +1,7 @@
package mage.cards.i; package mage.cards.i;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
@ -12,16 +11,18 @@ import mage.constants.CardType;
import mage.constants.PutCards; import mage.constants.PutCards;
import mage.constants.SubType; import mage.constants.SubType;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.filter.common.FilterArtifactPermanent; import mage.filter.common.FilterControlledArtifactPermanent;
import java.util.UUID;
/** /**
*
* @author weirddan455 * @author weirddan455
*/ */
public final class IngeniousSmith extends CardImpl { public final class IngeniousSmith extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("one or more artifacts"); private static final FilterPermanent filter = new FilterControlledArtifactPermanent("one or more artifacts you control");
public IngeniousSmith(UUID ownerId, CardSetInfo setInfo) { public IngeniousSmith(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
@ -34,12 +35,16 @@ public final class IngeniousSmith extends CardImpl {
// When Ingenious Smith enters the battlefield, look at the top four cards of your library. // When Ingenious Smith enters the battlefield, look at the top four cards of your library.
// You may reveal an artifact card from among them and put it into your hand. // You may reveal an artifact card from among them and put it into your hand.
// Put the rest on the bottom of your library in a random order. // Put the rest on the bottom of your library in a random order.
this.addAbility(new EntersBattlefieldTriggeredAbility(new LookLibraryAndPickControllerEffect( this.addAbility(new EntersBattlefieldTriggeredAbility(
4, 1, StaticFilters.FILTER_CARD_ARTIFACT_AN, PutCards.HAND, PutCards.BOTTOM_RANDOM))); new LookLibraryAndPickControllerEffect(
4, 1, StaticFilters.FILTER_CARD_ARTIFACT_AN,
PutCards.HAND, PutCards.BOTTOM_RANDOM
)
));
// Whenever one or more artifacts enter the battlefield under your control, put a +1/+1 counter on Ingenious Smith. // Whenever one or more artifacts enter the battlefield under your control, put a +1/+1 counter on Ingenious Smith.
// This ability triggers only once each turn. // This ability triggers only once each turn.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldAllTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter
).setTriggersLimitEachTurn(1)); ).setTriggersLimitEachTurn(1));
} }

View file

@ -2,14 +2,17 @@ package mage.cards.k;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.LoyaltyAbility; import mage.abilities.LoyaltyAbility;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.effects.common.UntapTargetEffect;
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.constants.ComparisonType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
@ -21,7 +24,7 @@ import java.util.UUID;
public final class KioraBehemothBeckoner extends CardImpl { public final class KioraBehemothBeckoner extends CardImpl {
private static final FilterPermanent filter private static final FilterPermanent filter
= new FilterCreaturePermanent("a creature with power 4 or greater"); = new FilterControlledCreaturePermanent("a creature you control with power 4 or greater");
static { static {
filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 3)); filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 3));
@ -35,9 +38,7 @@ public final class KioraBehemothBeckoner extends CardImpl {
this.setStartingLoyalty(7); this.setStartingLoyalty(7);
// Whenever a creature with power 4 or greater you control enters, draw a card. // Whenever a creature with power 4 or greater you control enters, draw a card.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldAllTriggeredAbility(new DrawCardSourceControllerEffect(1), filter));
Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), filter, false
));
// -1: Untap target permanent. // -1: Untap target permanent.
Ability ability = new LoyaltyAbility(new UntapTargetEffect(), -1); Ability ability = new LoyaltyAbility(new UntapTargetEffect(), -1);

View file

@ -1,7 +1,7 @@
package mage.cards.k; package mage.cards.k;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -22,7 +22,7 @@ import java.util.UUID;
public final class KronchWrangler extends CardImpl { public final class KronchWrangler extends CardImpl {
private static final FilterPermanent filter private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("a creature with power 4 or greater"); = new FilterControlledCreaturePermanent("a creature you control with power 4 or greater");
static { static {
filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 3)); filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 3));
@ -40,7 +40,7 @@ public final class KronchWrangler extends CardImpl {
this.addAbility(TrampleAbility.getInstance()); this.addAbility(TrampleAbility.getInstance());
// Whenever a creature with power 4 or greater you control enters, put a +1/+1 counter on Kronch Wrangler. // Whenever a creature with power 4 or greater you control enters, put a +1/+1 counter on Kronch Wrangler.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldAllTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter
)); ));
} }

View file

@ -1,25 +1,24 @@
package mage.cards.l; package mage.cards.l;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.PopulateEffect; import mage.abilities.effects.common.PopulateEffect;
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.ComparisonType; import mage.constants.ComparisonType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.PowerPredicate;
import mage.filter.predicate.permanent.TokenPredicate; import mage.filter.predicate.permanent.TokenPredicate;
import java.util.UUID; import java.util.UUID;
/** /**
*
* @author notgreat * @author notgreat
*/ */
public final class LifeFindsAWay extends CardImpl { public final class LifeFindsAWay extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("nontoken creature with power 4 or greater"); private static final FilterPermanent filter = new FilterControlledCreaturePermanent("nontoken creature you control with power 4 or greater");
static { static {
filter.add(TokenPredicate.FALSE); filter.add(TokenPredicate.FALSE);
@ -30,7 +29,7 @@ public final class LifeFindsAWay extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
// Whenever a nontoken creature with power 4 or greater you control enters, populate. // Whenever a nontoken creature with power 4 or greater you control enters, populate.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new PopulateEffect(), filter)); this.addAbility(new EntersBattlefieldAllTriggeredAbility(new PopulateEffect(), filter));
} }
private LifeFindsAWay(final LifeFindsAWay card) { private LifeFindsAWay(final LifeFindsAWay card) {

View file

@ -1,7 +1,7 @@
package mage.cards.l; package mage.cards.l;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
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.PreventAllDamageToAllEffect; import mage.abilities.effects.common.PreventAllDamageToAllEffect;
@ -22,7 +22,7 @@ public final class LosheelClockworkScholar extends CardImpl {
private static final FilterPermanent filter private static final FilterPermanent filter
= new FilterArtifactCreaturePermanent("attacking artifact creatures you control"); = new FilterArtifactCreaturePermanent("attacking artifact creatures you control");
private static final FilterPermanent filter2 private static final FilterPermanent filter2
= new FilterArtifactCreaturePermanent("one or more artifact creatures"); = new FilterArtifactCreaturePermanent("one or more artifact creatures you control");
static { static {
filter.add(TargetController.YOU.getControllerPredicate()); filter.add(TargetController.YOU.getControllerPredicate());
@ -45,7 +45,7 @@ public final class LosheelClockworkScholar extends CardImpl {
))); )));
// Whenever one or more artifact creatures enter the battlefield under your control, draw a card. This ability triggers only once each turn. // Whenever one or more artifact creatures enter the battlefield under your control, draw a card. This ability triggers only once each turn.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldAllTriggeredAbility(
new DrawCardSourceControllerEffect(1), filter2 new DrawCardSourceControllerEffect(1), filter2
).setTriggersLimitEachTurn(1)); ).setTriggersLimitEachTurn(1));
} }

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.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -23,7 +23,7 @@ import java.util.UUID;
public final class MarketwatchPhantom extends CardImpl { public final class MarketwatchPhantom extends CardImpl {
private static final FilterPermanent filter private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("another creature with power 2 or less"); = new FilterControlledCreaturePermanent("another creature you control with power 2 or less");
static { static {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
@ -39,7 +39,7 @@ public final class MarketwatchPhantom extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// Whenever another creature with power 2 or less you control enters, Marketwatch Phantom gains flying until end of turn. // Whenever another creature with power 2 or less you control enters, Marketwatch Phantom gains flying until end of turn.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldAllTriggeredAbility(
new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), filter new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), filter
)); ));
} }

View file

@ -1,8 +1,6 @@
package mage.cards.m; package mage.cards.m;
import java.util.UUID; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -11,28 +9,31 @@ import mage.constants.ComparisonType;
import mage.constants.SetTargetPointer; import mage.constants.SetTargetPointer;
import mage.constants.Zone; import mage.constants.Zone;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.PowerPredicate;
import java.util.UUID;
/** /**
*
* @author Plopman * @author Plopman
*/ */
public final class MightyEmergence extends CardImpl { public final class MightyEmergence extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a creature with power 5 or greater"); private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a creature you control with power 5 or greater");
static { static {
filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 4)); filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 4));
} }
public MightyEmergence(UUID ownerId, CardSetInfo setInfo) { public MightyEmergence(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{G}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
// Whenever a creature with power 5 or greater you control enters, you may put two +1/+1 counters on it. // Whenever a creature with power 5 or greater you control enters, you may put two +1/+1 counters on it.
Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance(2)); this.addAbility(new EntersBattlefieldAllTriggeredAbility(
effect.setText("you may put two +1/+1 counters on it"); Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance(2))
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, effect, filter, true, SetTargetPointer.PERMANENT)); .setText("put two +1/+1 counters on it"), filter, true, SetTargetPointer.PERMANENT
));
} }
private MightyEmergence(final MightyEmergence card) { private MightyEmergence(final MightyEmergence card) {

View file

@ -3,7 +3,7 @@ package mage.cards.m;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.DelayedTriggeredAbility; import mage.abilities.DelayedTriggeredAbility;
import mage.abilities.common.AsEntersBattlefieldAbility; import mage.abilities.common.AsEntersBattlefieldAbility;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.ChooseCreatureTypeEffect; import mage.abilities.effects.common.ChooseCreatureTypeEffect;
@ -15,6 +15,7 @@ import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.SetTargetPointer; import mage.constants.SetTargetPointer;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.ChosenSubtypePredicate; import mage.filter.predicate.mageobject.ChosenSubtypePredicate;
import mage.filter.predicate.permanent.TokenPredicate; import mage.filter.predicate.permanent.TokenPredicate;
@ -25,11 +26,17 @@ import mage.target.targetpointer.FixedTarget;
import java.util.UUID; import java.util.UUID;
/** /**
*
* @author ciaccona007 * @author ciaccona007
*/ */
public final class MoltenEchoes extends CardImpl { public final class MoltenEchoes extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("nontoken creature you control of the chosen type");
static {
filter.add(TokenPredicate.FALSE);
filter.add(ChosenSubtypePredicate.TRUE);
}
public MoltenEchoes(UUID ownerId, CardSetInfo setInfo) { public MoltenEchoes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{R}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{R}");
@ -37,14 +44,9 @@ public final class MoltenEchoes extends CardImpl {
this.addAbility(new AsEntersBattlefieldAbility(new ChooseCreatureTypeEffect(Outcome.Copy))); this.addAbility(new AsEntersBattlefieldAbility(new ChooseCreatureTypeEffect(Outcome.Copy)));
// Whenever a nontoken creature of the chosen type you control enters, create a token that's a copy of that creature. That token gains haste. Exile it at the beginning of the next end step. // Whenever a nontoken creature of the chosen type you control enters, create a token that's a copy of that creature. That token gains haste. Exile it at the beginning of the next end step.
FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("nontoken creature of the chosen type"); this.addAbility(new EntersBattlefieldAllTriggeredAbility(
filter.add(TokenPredicate.FALSE); Zone.BATTLEFIELD, new MoltenEchoesEffect(), filter, false, SetTargetPointer.PERMANENT
filter.add(ChosenSubtypePredicate.TRUE); ));
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new MoltenEchoesEffect(),
filter, false, SetTargetPointer.PERMANENT
);
this.addAbility(ability);
} }
private MoltenEchoes(final MoltenEchoes card) { private MoltenEchoes(final MoltenEchoes card) {

View file

@ -2,7 +2,7 @@ package mage.cards.n;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -10,7 +10,7 @@ import mage.constants.CardType;
import mage.constants.ComparisonType; import mage.constants.ComparisonType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent;
@ -22,7 +22,7 @@ import java.util.UUID;
*/ */
public final class NeighborhoodGuardian extends CardImpl { public final class NeighborhoodGuardian extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("another creature with power 2 or less"); private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another creature you control with power 2 or less");
static { static {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
@ -37,7 +37,7 @@ public final class NeighborhoodGuardian extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// Whenever another creature with power 2 or less you control enters, target creature you control gets +1/+1 until end of turn. // Whenever another creature with power 2 or less you control enters, target creature you control gets +1/+1 until end of turn.
Ability ability = new EntersBattlefieldControlledTriggeredAbility(new BoostTargetEffect(1, 1), filter); Ability ability = new EntersBattlefieldAllTriggeredAbility(new BoostTargetEffect(1, 1), filter);
ability.addTarget(new TargetControlledCreaturePermanent()); ability.addTarget(new TargetControlledCreaturePermanent());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -1,7 +1,7 @@
package mage.cards.o; package mage.cards.o;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.mana.AddManaOfAnyColorEffect; import mage.abilities.effects.mana.AddManaOfAnyColorEffect;
@ -24,7 +24,7 @@ import java.util.UUID;
public final class OutcasterTrailblazer extends CardImpl { public final class OutcasterTrailblazer extends CardImpl {
private static final FilterPermanent filter private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("another creature with power 4 or greater"); = new FilterControlledCreaturePermanent("another creature you control with power 4 or greater");
static { static {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
@ -43,7 +43,7 @@ public final class OutcasterTrailblazer extends CardImpl {
this.addAbility(new EntersBattlefieldTriggeredAbility(new AddManaOfAnyColorEffect())); this.addAbility(new EntersBattlefieldTriggeredAbility(new AddManaOfAnyColorEffect()));
// Whenever another creature with power 4 or greater you control enters, draw a card. // Whenever another creature with power 4 or greater you control enters, draw a card.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new DrawCardSourceControllerEffect(1), filter)); this.addAbility(new EntersBattlefieldAllTriggeredAbility(new DrawCardSourceControllerEffect(1), filter));
// Plot {2}{G} // Plot {2}{G}
this.addAbility(new PlotAbility("{2}{G}")); this.addAbility(new PlotAbility("{2}{G}"));

View file

@ -1,37 +1,35 @@
package mage.cards.p; package mage.cards.p;
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.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
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.ComparisonType; import mage.constants.ComparisonType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone; import mage.filter.FilterPermanent;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCardInYourGraveyard;
import java.util.UUID;
/** /**
*
* @author jeffwadsworth * @author jeffwadsworth
*/ */
public final class Paleoloth extends CardImpl { public final class Paleoloth extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature with power 5 or greater"); private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another creature you control with power 5 or greater");
static { static {
filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 4)); filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 4));
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
} }
private static final String rule = "Whenever another creature with power 5 or greater you control enters, you may return target creature card from your graveyard to your hand.";
public Paleoloth(UUID ownerId, CardSetInfo setInfo) { public Paleoloth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
this.subtype.add(SubType.BEAST); this.subtype.add(SubType.BEAST);
@ -40,10 +38,11 @@ public final class Paleoloth extends CardImpl {
this.toughness = new MageInt(5); this.toughness = new MageInt(5);
// Whenever another creature with power 5 or greater you control enters, you may return target creature card from your graveyard to your hand. // Whenever another creature with power 5 or greater you control enters, you may return target creature card from your graveyard to your hand.
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToHandTargetEffect(), filter, true); Ability ability = new EntersBattlefieldAllTriggeredAbility(
new ReturnFromGraveyardToHandTargetEffect(), filter, true
);
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE)); ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE));
this.addAbility(ability); this.addAbility(ability);
} }
private Paleoloth(final Paleoloth card) { private Paleoloth(final Paleoloth card) {

View file

@ -1,6 +1,6 @@
package mage.cards.s; package mage.cards.s;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.keyword.ScryEffect; import mage.abilities.effects.keyword.ScryEffect;
@ -9,7 +9,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.ComparisonType; import mage.constants.ComparisonType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterArtifactPermanent; import mage.filter.common.FilterControlledArtifactPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.mageobject.ManaValuePredicate; import mage.filter.predicate.mageobject.ManaValuePredicate;
import mage.game.permanent.token.KarnConstructToken; import mage.game.permanent.token.KarnConstructToken;
@ -22,7 +22,7 @@ import java.util.UUID;
public final class SimulacrumSynthesizer extends CardImpl { public final class SimulacrumSynthesizer extends CardImpl {
private static final FilterPermanent filter = private static final FilterPermanent filter =
new FilterArtifactPermanent("another artifact with mana value 3 or greater"); new FilterControlledArtifactPermanent("another artifact you control with mana value 3 or greater");
static { static {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
@ -36,9 +36,7 @@ public final class SimulacrumSynthesizer extends CardImpl {
this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(2))); this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(2)));
// Whenever another artifact with mana value 3 or more you control enters, create a 0/0 colorless Construct artifact creature token with "This creature gets +1/+1 for each artifact you control." // Whenever another artifact with mana value 3 or more you control enters, create a 0/0 colorless Construct artifact creature token with "This creature gets +1/+1 for each artifact you control."
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldAllTriggeredAbility(new CreateTokenEffect(new KarnConstructToken()), filter));
new CreateTokenEffect(new KarnConstructToken()), filter
));
} }
private SimulacrumSynthesizer(final SimulacrumSynthesizer card) { private SimulacrumSynthesizer(final SimulacrumSynthesizer card) {

View file

@ -1,8 +1,7 @@
package mage.cards.s; package mage.cards.s;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.DraftFromSpellbookEffect; import mage.abilities.effects.common.DraftFromSpellbookEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -10,6 +9,7 @@ import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import java.util.Arrays; import java.util.Arrays;
@ -22,7 +22,7 @@ import java.util.UUID;
*/ */
public final class SlimefootThallidTransplant extends CardImpl { public final class SlimefootThallidTransplant extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("a Swamp or Forest"); private static final FilterPermanent filter = new FilterControlledPermanent("a Swamp or Forest you control");
static { static {
filter.add(Predicates.or( filter.add(Predicates.or(
@ -49,7 +49,7 @@ public final class SlimefootThallidTransplant extends CardImpl {
"Yavimaya Sapherd" "Yavimaya Sapherd"
)); ));
public SlimefootThallidTransplant (UUID ownerId, CardSetInfo setInfo) { public SlimefootThallidTransplant(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{G}");
this.supertype.add(SuperType.LEGENDARY); this.supertype.add(SuperType.LEGENDARY);
@ -58,9 +58,7 @@ public final class SlimefootThallidTransplant extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// Whenever a Swamp or Forest you control enters, draft a card from Slimefoot, Thallid Transplants spellbook. // Whenever a Swamp or Forest you control enters, draft a card from Slimefoot, Thallid Transplants spellbook.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldAllTriggeredAbility(new DraftFromSpellbookEffect(spellbook), filter));
new DraftFromSpellbookEffect(spellbook), filter
));
} }
private SlimefootThallidTransplant(final SlimefootThallidTransplant card) { private SlimefootThallidTransplant(final SlimefootThallidTransplant card) {

View file

@ -1,7 +1,7 @@
package mage.cards.s; package mage.cards.s;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.keyword.SurveilEffect; import mage.abilities.effects.keyword.SurveilEffect;
import mage.abilities.keyword.MenaceAbility; import mage.abilities.keyword.MenaceAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -10,7 +10,7 @@ import mage.constants.CardType;
import mage.constants.ComparisonType; import mage.constants.ComparisonType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.PowerPredicate;
@ -22,7 +22,7 @@ import java.util.UUID;
public final class SnarlingGorehound extends CardImpl { public final class SnarlingGorehound extends CardImpl {
private static final FilterPermanent filter private static final FilterPermanent filter
= new FilterCreaturePermanent("another creature with power 2 or less"); = new FilterControlledCreaturePermanent("another creature you control with power 2 or less");
static { static {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
@ -40,7 +40,7 @@ public final class SnarlingGorehound extends CardImpl {
this.addAbility(new MenaceAbility(false)); this.addAbility(new MenaceAbility(false));
// Whenever another creature with power 2 or less you control enters, surveil 1. // Whenever another creature with power 2 or less you control enters, surveil 1.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new SurveilEffect(1), filter)); this.addAbility(new EntersBattlefieldAllTriggeredAbility(new SurveilEffect(1), filter));
} }
private SnarlingGorehound(final SnarlingGorehound card) { private SnarlingGorehound(final SnarlingGorehound card) {

View file

@ -1,8 +1,7 @@
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
@ -12,20 +11,22 @@ import mage.cards.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.PowerPredicate;
import mage.filter.predicate.mageobject.ToughnessPredicate; import mage.filter.predicate.mageobject.ToughnessPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class SwordOfTheMeek extends CardImpl { public final class SwordOfTheMeek extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a 1/1 creature"); private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a 1/1 creature you control");
static { static {
filter.add(new PowerPredicate(ComparisonType.EQUAL_TO, 1)); filter.add(new PowerPredicate(ComparisonType.EQUAL_TO, 1));
@ -33,16 +34,19 @@ public final class SwordOfTheMeek extends CardImpl {
} }
public SwordOfTheMeek(UUID ownerId, CardSetInfo setInfo) { public SwordOfTheMeek(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}"); super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
this.subtype.add(SubType.EQUIPMENT); this.subtype.add(SubType.EQUIPMENT);
// Equipped creature gets +1/+2. // Equipped creature gets +1/+2.
this.addAbility(new SimpleStaticAbility(new BoostEquippedEffect(1, 2, Duration.WhileOnBattlefield))); this.addAbility(new SimpleStaticAbility(new BoostEquippedEffect(1, 2)));
// Equip {2} // Equip {2}
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(2), false)); this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(2), false));
// Whenever a 1/1 creature you control enters, you may return Sword of the Meek from your graveyard to the battlefield, then attach it to that creature. // Whenever a 1/1 creature you control enters, you may return Sword of the Meek from your graveyard to the battlefield, then attach it to that creature.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.GRAVEYARD, new SwordOfTheMeekEffect(), filter, true, SetTargetPointer.PERMANENT) this.addAbility(new EntersBattlefieldAllTriggeredAbility(
.setTriggerPhrase("Whenever a 1/1 creature enters under your control, ")); Zone.GRAVEYARD, new SwordOfTheMeekEffect(), filter, true, SetTargetPointer.PERMANENT
));
} }
private SwordOfTheMeek(final SwordOfTheMeek card) { private SwordOfTheMeek(final SwordOfTheMeek card) {
@ -59,7 +63,7 @@ class SwordOfTheMeekEffect extends OneShotEffect {
SwordOfTheMeekEffect() { SwordOfTheMeekEffect() {
super(Outcome.Benefit); super(Outcome.Benefit);
this.staticText = "you may return {this} from your graveyard to the battlefield, then attach it to that creature"; this.staticText = "you may return this card from your graveyard to the battlefield, then attach it to that creature";
} }
private SwordOfTheMeekEffect(final SwordOfTheMeekEffect effect) { private SwordOfTheMeekEffect(final SwordOfTheMeekEffect effect) {

View file

@ -1,6 +1,6 @@
package mage.cards.s; package mage.cards.s;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
@ -8,7 +8,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.Predicate; import mage.filter.predicate.Predicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
@ -20,7 +20,7 @@ import java.util.UUID;
*/ */
public final class SymmetryMatrix extends CardImpl { public final class SymmetryMatrix extends CardImpl {
private static final FilterPermanent filter = new FilterCreaturePermanent("a creature with power equal to its toughness"); private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a creature you control with power equal to its toughness");
static { static {
filter.add(SymmetryMatrixPredicate.instance); filter.add(SymmetryMatrixPredicate.instance);
@ -30,9 +30,9 @@ public final class SymmetryMatrix extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}"); super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
// Whenever a creature with power equal to its toughness you control enters, you may pay {1}. If you do, draw a card. // Whenever a creature with power equal to its toughness you control enters, you may pay {1}. If you do, draw a card.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new DoIfCostPaid( this.addAbility(new EntersBattlefieldAllTriggeredAbility(
new DrawCardSourceControllerEffect(1), new GenericManaCost(1) new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new GenericManaCost(1)), filter
), filter)); ));
} }
private SymmetryMatrix(final SymmetryMatrix card) { private SymmetryMatrix(final SymmetryMatrix card) {

View file

@ -1,8 +1,6 @@
package mage.cards.t; package mage.cards.t;
import java.util.UUID; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
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.GainAbilityControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
@ -12,31 +10,37 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.ComparisonType; import mage.constants.ComparisonType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone; import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.PowerPredicate;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class TemurAscendancy extends CardImpl { public final class TemurAscendancy extends CardImpl {
final private static FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with power 4 or greater"); final private static FilterPermanent filter = new FilterControlledCreaturePermanent("a creature you control with power 4 or greater");
static { static {
filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 3)); filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 3));
} }
public TemurAscendancy(UUID ownerId, CardSetInfo setInfo) { public TemurAscendancy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}{U}{R}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}{U}{R}");
// Creatures you control have haste. // Creatures you control have haste.
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(HasteAbility.getInstance(), Duration.WhileOnBattlefield, new FilterControlledCreaturePermanent("Creatures")))); this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
HasteAbility.getInstance(), Duration.WhileOnBattlefield,
StaticFilters.FILTER_PERMANENT_CREATURES
)));
// Whenever a creature with power 4 or greater you control enters, you may draw a card. // Whenever a creature with power 4 or greater you control enters, you may draw a card.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), filter, true)); this.addAbility(new EntersBattlefieldAllTriggeredAbility(
new DrawCardSourceControllerEffect(1), filter, true
));
} }
private TemurAscendancy(final TemurAscendancy card) { private TemurAscendancy(final TemurAscendancy card) {

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.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.keyword.VigilanceAbility; import mage.abilities.keyword.VigilanceAbility;
@ -13,7 +13,7 @@ import mage.constants.ComparisonType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.PowerPredicate;
import java.util.UUID; import java.util.UUID;
@ -24,7 +24,7 @@ import java.util.UUID;
public final class TerritorialBoar extends CardImpl { public final class TerritorialBoar extends CardImpl {
private static final FilterPermanent filter private static final FilterPermanent filter
= new FilterCreaturePermanent("a creature with power 4 or greater"); = new FilterControlledCreaturePermanent("a creature you control with power 4 or greater");
static { static {
filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 3)); filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 3));
@ -38,7 +38,7 @@ public final class TerritorialBoar extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// Whenever a creature with power 4 or greater you control enters, Territorial Boar gets +1/+1 and gains vigilance until end of turn. // Whenever a creature with power 4 or greater you control enters, Territorial Boar gets +1/+1 and gains vigilance until end of turn.
Ability ability = new EntersBattlefieldControlledTriggeredAbility(new BoostSourceEffect( Ability ability = new EntersBattlefieldAllTriggeredAbility(new BoostSourceEffect(
1, 1, Duration.EndOfTurn 1, 1, Duration.EndOfTurn
).setText("{this} gets +1/+1"), filter); ).setText("{this} gets +1/+1"), filter);
ability.addEffect(new GainAbilitySourceEffect( ability.addEffect(new GainAbilitySourceEffect(

View file

@ -1,29 +1,30 @@
package mage.cards.t; package mage.cards.t;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.CrewAbility; import mage.abilities.keyword.CrewAbility;
import mage.abilities.keyword.FlyingAbility;
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.filter.common.FilterArtifactPermanent; import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledArtifactPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.permanent.TokenPredicate; import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.permanent.token.ThePrydwenSteelFlagshipHumanKnightToken; import mage.game.permanent.token.ThePrydwenSteelFlagshipHumanKnightToken;
import mage.watchers.common.ArtifactEnteredControllerWatcher; import mage.watchers.common.ArtifactEnteredControllerWatcher;
import java.util.UUID;
/** /**
* @author Cguy7777 * @author Cguy7777
*/ */
public final class ThePrydwenSteelFlagship extends CardImpl { public final class ThePrydwenSteelFlagship extends CardImpl {
private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("another nontoken artifact"); private static final FilterPermanent filter = new FilterControlledArtifactPermanent("another nontoken artifact you control");
static { static {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
@ -44,14 +45,12 @@ public final class ThePrydwenSteelFlagship extends CardImpl {
// Whenever another nontoken artifact you control enters, // Whenever another nontoken artifact you control enters,
// create a 2/2 white Human Knight creature token with // create a 2/2 white Human Knight creature token with
// "This creature gets +2/+2 as long as an artifact entered the battlefield under your control this turn." // "This creature gets +2/+2 as long as an artifact entered the battlefield under your control this turn."
this.addAbility( this.addAbility(new EntersBattlefieldAllTriggeredAbility(
new EntersBattlefieldControlledTriggeredAbility( new CreateTokenEffect(new ThePrydwenSteelFlagshipHumanKnightToken()), filter
new CreateTokenEffect(new ThePrydwenSteelFlagshipHumanKnightToken()), filter), ), new ArtifactEnteredControllerWatcher());
new ArtifactEnteredControllerWatcher());
// Crew 2 // Crew 2
this.addAbility(new CrewAbility(2)); this.addAbility(new CrewAbility(2));
} }
private ThePrydwenSteelFlagship(final ThePrydwenSteelFlagship card) { private ThePrydwenSteelFlagship(final ThePrydwenSteelFlagship card) {

View file

@ -11,6 +11,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.predicate.permanent.TappedPredicate; import mage.filter.predicate.permanent.TappedPredicate;
@ -25,7 +26,7 @@ import java.util.UUID;
*/ */
public final class TillerEngine extends CardImpl { public final class TillerEngine extends CardImpl {
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent(); private static final FilterPermanent filter = new FilterControlledLandPermanent();
static { static {
filter.add(TappedPredicate.TAPPED); filter.add(TappedPredicate.TAPPED);
@ -40,7 +41,7 @@ public final class TillerEngine extends CardImpl {
// Whenever a land enters the battlefield tapped and under your control, choose one // Whenever a land enters the battlefield tapped and under your control, choose one
// Untap that land. // Untap that land.
Ability ability = new EntersBattlefieldControlledTriggeredAbility(new TillerEngineUntapEffect(), filter) Ability ability = new EntersBattlefieldControlledTriggeredAbility(new TillerEngineUntapEffect(), filter)
.setTriggerPhrase("Whenever a land enters the battlefield tapped and under your control, "); .setTriggerPhrase("Whenever a land you control enters tapped, ");
// Tap target nonland permanent an opponent controls. // Tap target nonland permanent an opponent controls.
Mode mode = new Mode(new TapTargetEffect()); Mode mode = new Mode(new TapTargetEffect());

View file

@ -1,7 +1,7 @@
package mage.cards.w; package mage.cards.w;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect; import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect;
@ -11,7 +11,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreatureCard;
@ -26,8 +25,8 @@ import java.util.UUID;
public final class WatcherOfTheSpheres extends CardImpl { public final class WatcherOfTheSpheres extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("Creature spells with flying"); private static final FilterCreatureCard filter = new FilterCreatureCard("creature spells with flying");
private static final FilterPermanent filter1 = new FilterControlledCreaturePermanent("another creature with flying"); private static final FilterPermanent filter1 = new FilterControlledCreaturePermanent("another creature you control with flying");
static { static {
filter.add(new AbilityPredicate(FlyingAbility.class)); filter.add(new AbilityPredicate(FlyingAbility.class));
@ -50,7 +49,9 @@ public final class WatcherOfTheSpheres extends CardImpl {
this.addAbility(new SimpleStaticAbility(new SpellsCostReductionControllerEffect(filter, 1))); this.addAbility(new SimpleStaticAbility(new SpellsCostReductionControllerEffect(filter, 1)));
// Whenever another creature with flying you control enters, Watcher of the Spheres gets +1/+1 until end of turn. // Whenever another creature with flying you control enters, Watcher of the Spheres gets +1/+1 until end of turn.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), filter1, false)); this.addAbility(new EntersBattlefieldAllTriggeredAbility(
new BoostSourceEffect(1, 1, Duration.EndOfTurn), filter1
));
} }
private WatcherOfTheSpheres(final WatcherOfTheSpheres card) { private WatcherOfTheSpheres(final WatcherOfTheSpheres card) {

View file

@ -1,36 +1,39 @@
package mage.cards.w; package mage.cards.w;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
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.ComparisonType; import mage.constants.ComparisonType;
import mage.constants.Zone; import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.PowerPredicate;
import mage.target.common.TargetAnyTarget; import mage.target.common.TargetAnyTarget;
import java.util.UUID;
/** /**
*
* @author Plopman * @author Plopman
*/ */
public final class WhereAncientsTread extends CardImpl { public final class WhereAncientsTread extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with power 5 or greater"); private static final FilterPermanent filter = new FilterControlledCreaturePermanent("a creature you control with power 5 or greater");
static { static {
filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 4)); filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 4));
} }
public WhereAncientsTread(UUID ownerId, CardSetInfo setInfo) { public WhereAncientsTread(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{4}{R}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{R}");
// Whenever a creature with power 5 or greater you control enters, you may have Where Ancients Tread deal 5 damage to any target. // Whenever a creature with power 5 or greater you control enters, you may have Where Ancients Tread deal 5 damage to any target.
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new DamageTargetEffect(5).setText("you may have {this} deal 5 damage to any target"), filter, true); Ability ability = new EntersBattlefieldAllTriggeredAbility(
new DamageTargetEffect(5)
.setText("you may have {this} deal 5 damage to any target"),
filter, true
);
ability.addTarget(new TargetAnyTarget()); ability.addTarget(new TargetAnyTarget());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -2,7 +2,7 @@ package mage.cards.w;
import mage.MageInt; import mage.MageInt;
import mage.MageObject; import mage.MageObject;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
@ -14,7 +14,6 @@ import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicate; import mage.filter.predicate.Predicate;
import mage.filter.predicate.mageobject.AbilityPredicate; import mage.filter.predicate.mageobject.AbilityPredicate;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.mageobject.AnotherPredicate;
@ -30,7 +29,7 @@ public final class WingmantleChaplain extends CardImpl {
private static final FilterPermanent filter private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("creature with defender you control"); = new FilterControlledCreaturePermanent("creature with defender you control");
private static final FilterPermanent filter2 private static final FilterPermanent filter2
= new FilterCreaturePermanent("another creature with defender"); = new FilterControlledCreaturePermanent("another creature you control with defender");
private static final Predicate<MageObject> predicate private static final Predicate<MageObject> predicate
= new AbilityPredicate(DefenderAbility.class); = new AbilityPredicate(DefenderAbility.class);
@ -57,7 +56,7 @@ public final class WingmantleChaplain extends CardImpl {
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new BirdToken(), xValue))); this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new BirdToken(), xValue)));
// Whenever another creature with defender you control enters, create a 1/1 white Bird creature token with flying. // Whenever another creature with defender you control enters, create a 1/1 white Bird creature token with flying.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new CreateTokenEffect(new BirdToken()), filter2)); this.addAbility(new EntersBattlefieldAllTriggeredAbility(new CreateTokenEffect(new BirdToken()), filter2));
} }
private WingmantleChaplain(final WingmantleChaplain card) { private WingmantleChaplain(final WingmantleChaplain card) {

View file

@ -2,7 +2,7 @@ package mage.cards.w;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.GainLifeEffect;
@ -19,7 +19,6 @@ import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.mageobject.PowerPredicate; import mage.filter.predicate.mageobject.PowerPredicate;
@ -31,7 +30,7 @@ import java.util.UUID;
public final class WispdrinkerVampire extends CardImpl { public final class WispdrinkerVampire extends CardImpl {
private static final FilterPermanent filter private static final FilterPermanent filter
= new FilterCreaturePermanent("another creature with power 2 or less"); = new FilterControlledCreaturePermanent("another creature you control with power 2 or less");
private static final FilterPermanent filter2 = new FilterControlledCreaturePermanent(); private static final FilterPermanent filter2 = new FilterControlledCreaturePermanent();
static { static {
@ -52,7 +51,7 @@ public final class WispdrinkerVampire extends CardImpl {
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
// Whenever another creature with power 2 or less you control enters, each opponent loses 1 life and you gain 1 life. // Whenever another creature with power 2 or less you control enters, each opponent loses 1 life and you gain 1 life.
Ability ability = new EntersBattlefieldControlledTriggeredAbility(new LoseLifeOpponentsEffect(1), filter); Ability ability = new EntersBattlefieldAllTriggeredAbility(new LoseLifeOpponentsEffect(1), filter);
ability.addEffect(new GainLifeEffect(1).concatBy("and")); ability.addEffect(new GainLifeEffect(1).concatBy("and"));
this.addAbility(ability); this.addAbility(ability);

View file

@ -76,8 +76,9 @@ public class EntersBattlefieldAllTriggeredAbility extends TriggeredAbilityImpl {
String filterMessage = filter.getMessage(); String filterMessage = filter.getMessage();
if (filterMessage.startsWith("one or more")) { if (filterMessage.startsWith("one or more")) {
setTriggerPhrase(getWhen() + filterMessage + " enter, "); setTriggerPhrase(getWhen() + filterMessage + " enter, ");
} else {
setTriggerPhrase(getWhen() + CardUtil.addArticle(filterMessage) + " enters, ");
} }
setTriggerPhrase(getWhen() + CardUtil.addArticle(filterMessage) + " enters, ");
} }
@Override @Override

View file

@ -14,7 +14,7 @@ import mage.constants.Zone;
public final class EldraziSpawnToken extends TokenImpl { public final class EldraziSpawnToken extends TokenImpl {
public EldraziSpawnToken() { public EldraziSpawnToken() {
super("Eldrazi Spawn Token", "0/1 colorless Eldrazi Spawn creature token with \"Sacrifice this creature: Add {C}.\""); super("Eldrazi Spawn Token", "0/1 colorless Eldrazi Spawn creature token with \"Sacrifice this token: Add {C}.\"");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
subtype.add(SubType.ELDRAZI); subtype.add(SubType.ELDRAZI);
subtype.add(SubType.SPAWN); subtype.add(SubType.SPAWN);

View file

@ -19,7 +19,7 @@ public class ThePrydwenSteelFlagshipHumanKnightToken extends TokenImpl {
* /!\ You need to add ArtifactEnteredControllerWatcher to any card using this token * /!\ You need to add ArtifactEnteredControllerWatcher to any card using this token
*/ */
public ThePrydwenSteelFlagshipHumanKnightToken() { public ThePrydwenSteelFlagshipHumanKnightToken() {
super("Human Knight Token", "2/2 white Human Knight creature token with \"This creature " + super("Human Knight Token", "2/2 white Human Knight creature token with \"This token " +
"gets +2/+2 as long as an artifact entered the battlefield under your control this turn.\""); "gets +2/+2 as long as an artifact entered the battlefield under your control this turn.\"");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setWhite(true); color.setWhite(true);