diff --git a/Mage.Sets/src/mage/cards/c/Commandeer.java b/Mage.Sets/src/mage/cards/c/Commandeer.java index 12322d7f71b..30a294bf99f 100644 --- a/Mage.Sets/src/mage/cards/c/Commandeer.java +++ b/Mage.Sets/src/mage/cards/c/Commandeer.java @@ -12,8 +12,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.filter.FilterCard; -import mage.filter.FilterSpell; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.stack.Spell; @@ -28,10 +27,9 @@ import mage.target.common.TargetCardInHand; public final class Commandeer extends CardImpl { private static final FilterCard filter = new FilterCard("two blue cards"); - private static final FilterSpell filterSpell = new FilterSpell("noncreature spell"); + static { filter.add(new ColorPredicate(ObjectColor.BLUE)); - filterSpell.add(Predicates.not(CardType.CREATURE.getPredicate())); } public Commandeer(UUID ownerId, CardSetInfo setInfo) { @@ -43,7 +41,7 @@ public final class Commandeer extends CardImpl { // Gain control of target noncreature spell. You may choose new targets for it. this.getSpellAbility().addEffect(new CommandeerEffect()); - this.getSpellAbility().addTarget(new TargetSpell(filterSpell)); + this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_NON_CREATURE)); } private Commandeer(final Commandeer card) { @@ -60,7 +58,10 @@ class CommandeerEffect extends OneShotEffect { public CommandeerEffect() { super(Outcome.Benefit); - this.staticText = "Gain control of target noncreature spell. You may choose new targets for it"; + this.staticText = "Gain control of target noncreature spell. " + + "You may choose new targets for it. " + + " (If that spell is an artifact, enchantment, or planeswalker, " + + "the permanent enters the battlefield under your control.)"; } public CommandeerEffect(final CommandeerEffect effect) { diff --git a/Mage.Sets/src/mage/cards/c/Countersquall.java b/Mage.Sets/src/mage/cards/c/Countersquall.java index e0074df9607..5a2204a3a07 100644 --- a/Mage.Sets/src/mage/cards/c/Countersquall.java +++ b/Mage.Sets/src/mage/cards/c/Countersquall.java @@ -7,8 +7,7 @@ import mage.abilities.effects.common.LoseLifeTargetControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterSpell; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.TargetSpell; /** @@ -17,18 +16,11 @@ import mage.target.TargetSpell; */ public final class Countersquall extends CardImpl { - private static final FilterSpell filter = new FilterSpell("noncreature spell"); - - static { - filter.add(Predicates.not(CardType.CREATURE.getPredicate())); - } - public Countersquall(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}{B}"); - // Counter target noncreature spell. Its controller loses 2 life. - this.getSpellAbility().addTarget(new TargetSpell(filter)); + this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_NON_CREATURE)); this.getSpellAbility().addEffect(new CounterTargetEffect()); this.getSpellAbility().addEffect(new LoseLifeTargetControllerEffect(2)); } diff --git a/Mage.Sets/src/mage/cards/c/CrueltyOfTheSith.java b/Mage.Sets/src/mage/cards/c/CrueltyOfTheSith.java index b02b36ca2ce..458c9acd38d 100644 --- a/Mage.Sets/src/mage/cards/c/CrueltyOfTheSith.java +++ b/Mage.Sets/src/mage/cards/c/CrueltyOfTheSith.java @@ -10,9 +10,7 @@ import mage.abilities.effects.common.discard.DiscardTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterSpell; import mage.filter.StaticFilters; -import mage.filter.predicate.Predicates; import mage.target.TargetPlayer; import mage.target.TargetSpell; @@ -22,18 +20,12 @@ import mage.target.TargetSpell; */ public final class CrueltyOfTheSith extends CardImpl { - private static final FilterSpell filterNoncreature = new FilterSpell("noncreature spell"); - - static { - filterNoncreature.add(Predicates.not(CardType.CREATURE.getPredicate())); - } - public CrueltyOfTheSith(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}{B}{R}"); // Choose one - Counter target noncreature spell. this.getSpellAbility().addEffect(new CounterTargetEffect()); - this.getSpellAbility().addTarget(new TargetSpell(filterNoncreature)); + this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_NON_CREATURE)); // Target player sacrifices a creture. Mode mode = new Mode(); diff --git a/Mage.Sets/src/mage/cards/d/DiscipleOfTheRing.java b/Mage.Sets/src/mage/cards/d/DiscipleOfTheRing.java index 7a74b6247d0..62dbb1a2c40 100644 --- a/Mage.Sets/src/mage/cards/d/DiscipleOfTheRing.java +++ b/Mage.Sets/src/mage/cards/d/DiscipleOfTheRing.java @@ -18,10 +18,8 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterSpell; +import mage.filter.StaticFilters; import mage.filter.common.FilterInstantOrSorceryCard; -import mage.filter.predicate.Predicates; - import mage.target.TargetSpell; import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCreaturePermanent; @@ -31,12 +29,6 @@ import mage.target.common.TargetCreaturePermanent; * @author fireshoes */ public final class DiscipleOfTheRing extends CardImpl { - - private static final FilterSpell filterSpell = new FilterSpell("noncreature spell"); - - static { - filterSpell.add(Predicates.not(CardType.CREATURE.getPredicate())); - } public DiscipleOfTheRing(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}"); @@ -45,10 +37,11 @@ public final class DiscipleOfTheRing extends CardImpl { this.power = new MageInt(3); this.toughness = new MageInt(4); - // {1}, Exile an instant or sorcery card from your graveyard: Choose one - Counter target noncreature spell unless its controller pay {2}; + // {1}, Exile an instant or sorcery card from your graveyard: + // Choose one - Counter target noncreature spell unless its controller pay {2}; Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterUnlessPaysEffect(new GenericManaCost(2)), new GenericManaCost(1)); ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(1, new FilterInstantOrSorceryCard("an instant or sorcery card from your graveyard")))); - ability.addTarget(new TargetSpell(filterSpell)); + ability.addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_NON_CREATURE)); // or Disciple of the Ring gets +1/+1 until end of turn; Mode mode = new Mode(); diff --git a/Mage.Sets/src/mage/cards/g/GlenElendraArchmage.java b/Mage.Sets/src/mage/cards/g/GlenElendraArchmage.java index 15363240f02..a1a61da72db 100644 --- a/Mage.Sets/src/mage/cards/g/GlenElendraArchmage.java +++ b/Mage.Sets/src/mage/cards/g/GlenElendraArchmage.java @@ -15,8 +15,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; -import mage.filter.FilterSpell; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.TargetSpell; /** @@ -25,12 +24,6 @@ import mage.target.TargetSpell; */ public final class GlenElendraArchmage extends CardImpl { - private static final FilterSpell filter = new FilterSpell("noncreature spell"); - - static { - filter.add(Predicates.not(CardType.CREATURE.getPredicate())); - } - public GlenElendraArchmage(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}"); this.subtype.add(SubType.FAERIE); @@ -44,8 +37,9 @@ public final class GlenElendraArchmage extends CardImpl { // {U}, Sacrifice Glen Elendra Archmage: Counter target noncreature spell. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(), new ManaCostsImpl("{U}")); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetSpell(filter)); + ability.addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_NON_CREATURE)); this.addAbility(ability); + // Persist this.addAbility(new PersistAbility()); } diff --git a/Mage.Sets/src/mage/cards/g/Goblinslide.java b/Mage.Sets/src/mage/cards/g/Goblinslide.java index bc29ba41bd1..0d08e8cd1f5 100644 --- a/Mage.Sets/src/mage/cards/g/Goblinslide.java +++ b/Mage.Sets/src/mage/cards/g/Goblinslide.java @@ -9,8 +9,7 @@ import mage.abilities.effects.common.DoIfCostPaid; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterSpell; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.game.permanent.token.GoblinToken; /** @@ -19,17 +18,16 @@ import mage.game.permanent.token.GoblinToken; */ public final class Goblinslide extends CardImpl { - private static final FilterSpell filter = new FilterSpell("noncreature spell"); - - static { - filter.add(Predicates.not(CardType.CREATURE.getPredicate())); - } - public Goblinslide(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}"); // Whenever you cast a noncreature spell, you may pay {1}. If you do, create a 1/1 red Goblin creature token with haste. - this.addAbility(new SpellCastControllerTriggeredAbility(new DoIfCostPaid(new CreateTokenEffect(new GoblinToken(true)), new GenericManaCost(1)), filter, false)); + this.addAbility(new SpellCastControllerTriggeredAbility(new DoIfCostPaid( + new CreateTokenEffect(new GoblinToken(true)), + new GenericManaCost(1)), + StaticFilters.FILTER_SPELL_NON_CREATURE, + false + )); } private Goblinslide(final Goblinslide card) { diff --git a/Mage.Sets/src/mage/cards/i/IzzetCharm.java b/Mage.Sets/src/mage/cards/i/IzzetCharm.java index 91fe42f1319..3f65a58a442 100644 --- a/Mage.Sets/src/mage/cards/i/IzzetCharm.java +++ b/Mage.Sets/src/mage/cards/i/IzzetCharm.java @@ -10,8 +10,7 @@ import mage.abilities.effects.common.DrawDiscardControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterSpell; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.TargetSpell; import mage.target.common.TargetCreaturePermanent; @@ -21,18 +20,12 @@ import mage.target.common.TargetCreaturePermanent; */ public final class IzzetCharm extends CardImpl { - static private final FilterSpell filter = new FilterSpell("noncreature spell"); - static { - filter.add(Predicates.not(CardType.CREATURE.getPredicate())); - } - public IzzetCharm(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}{R}"); - // Choose one — Counter target noncreature spell unless its controller pays {2}; this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(new GenericManaCost(2))); - this.getSpellAbility().getTargets().add(new TargetSpell(filter)); + this.getSpellAbility().getTargets().add(new TargetSpell(StaticFilters.FILTER_SPELL_NON_CREATURE)); // or Izzet Charm deals 2 damage to target creature; Mode mode = new Mode(); diff --git a/Mage.Sets/src/mage/cards/n/NullBrooch.java b/Mage.Sets/src/mage/cards/n/NullBrooch.java index 64a4de391dd..55022d6be35 100644 --- a/Mage.Sets/src/mage/cards/n/NullBrooch.java +++ b/Mage.Sets/src/mage/cards/n/NullBrooch.java @@ -12,8 +12,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.FilterSpell; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.TargetSpell; /** @@ -21,12 +20,6 @@ import mage.target.TargetSpell; * @author fireshoes */ public final class NullBrooch extends CardImpl { - - private static final FilterSpell filter = new FilterSpell("noncreature spell"); - - static { - filter.add(Predicates.not(CardType.CREATURE.getPredicate())); - } public NullBrooch(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}"); @@ -35,7 +28,7 @@ public final class NullBrooch extends CardImpl { Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(), new ManaCostsImpl("{2}")); ability.addCost(new TapSourceCost()); ability.addCost(new DiscardHandCost()); - ability.addTarget(new TargetSpell(filter)); + ability.addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_NON_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/ScatterArc.java b/Mage.Sets/src/mage/cards/s/ScatterArc.java index 443bf49d7f2..dfe0807614d 100644 --- a/Mage.Sets/src/mage/cards/s/ScatterArc.java +++ b/Mage.Sets/src/mage/cards/s/ScatterArc.java @@ -7,8 +7,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterSpell; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.TargetSpell; /** @@ -17,18 +16,12 @@ import mage.target.TargetSpell; */ public final class ScatterArc extends CardImpl { - private static final FilterSpell filter = new FilterSpell("noncreature spell"); - - static { - filter.add(Predicates.not(CardType.CREATURE.getPredicate())); - } - public ScatterArc(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}"); // Counter target noncreature spell. this.getSpellAbility().addEffect(new CounterTargetEffect()); - this.getSpellAbility().addTarget(new TargetSpell(filter)); + this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_NON_CREATURE)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); diff --git a/Mage.Sets/src/mage/cards/s/SilumgarsCommand.java b/Mage.Sets/src/mage/cards/s/SilumgarsCommand.java index 82a4c341047..02f04a0d2b4 100644 --- a/Mage.Sets/src/mage/cards/s/SilumgarsCommand.java +++ b/Mage.Sets/src/mage/cards/s/SilumgarsCommand.java @@ -12,8 +12,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.filter.FilterPermanent; -import mage.filter.FilterSpell; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; import mage.target.TargetSpell; import mage.target.common.TargetCreaturePermanent; @@ -23,12 +22,9 @@ import mage.target.common.TargetCreaturePermanent; * @author fireshoes */ public final class SilumgarsCommand extends CardImpl { - - private static final FilterSpell filter = new FilterSpell("noncreature spell"); private static final FilterPermanent filter2 = new FilterPermanent("planeswalker"); static { - filter.add(Predicates.not(CardType.CREATURE.getPredicate())); filter2.add(CardType.PLANESWALKER.getPredicate()); } @@ -41,7 +37,7 @@ public final class SilumgarsCommand extends CardImpl { // Counter target noncreature spell; this.getSpellAbility().getEffects().add(new CounterTargetEffect()); - this.getSpellAbility().getTargets().add(new TargetSpell(filter)); + this.getSpellAbility().getTargets().add(new TargetSpell(StaticFilters.FILTER_SPELL_NON_CREATURE)); // or Return target permanent to its owner's hand; Mode mode = new Mode(); diff --git a/Mage.Sets/src/mage/cards/s/SpellPierce.java b/Mage.Sets/src/mage/cards/s/SpellPierce.java index 5bec4428b12..91525d3980f 100644 --- a/Mage.Sets/src/mage/cards/s/SpellPierce.java +++ b/Mage.Sets/src/mage/cards/s/SpellPierce.java @@ -8,8 +8,7 @@ import mage.abilities.effects.common.CounterUnlessPaysEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterSpell; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.TargetSpell; /** @@ -18,19 +17,11 @@ import mage.target.TargetSpell; */ public final class SpellPierce extends CardImpl { - - private static final FilterSpell filter = new FilterSpell("noncreature spell"); - - static { - filter.add(Predicates.not(CardType.CREATURE.getPredicate())); - } - public SpellPierce(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}"); - - // Counter target noncreature spell unless its controller pays . - this.getSpellAbility().addTarget(new TargetSpell(filter)); + // Counter target noncreature spell unless its controller pays 2. + this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_NON_CREATURE)); this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(new GenericManaCost(2))); } @@ -42,5 +33,4 @@ public final class SpellPierce extends CardImpl { public SpellPierce copy() { return new SpellPierce(this); } - } diff --git a/Mage.Sets/src/mage/cards/s/StrongholdMachinist.java b/Mage.Sets/src/mage/cards/s/StrongholdMachinist.java index 2f80d2094fb..a403daf089b 100644 --- a/Mage.Sets/src/mage/cards/s/StrongholdMachinist.java +++ b/Mage.Sets/src/mage/cards/s/StrongholdMachinist.java @@ -14,8 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; -import mage.filter.FilterSpell; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.TargetSpell; /** @@ -24,12 +23,6 @@ import mage.target.TargetSpell; */ public final class StrongholdMachinist extends CardImpl { - private static final FilterSpell filter = new FilterSpell("noncreature spell"); - - static { - filter.add(Predicates.not(CardType.CREATURE.getPredicate())); - } - public StrongholdMachinist(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}"); @@ -42,7 +35,7 @@ public final class StrongholdMachinist extends CardImpl { Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(), new ManaCostsImpl("{U}{U}")); ability.addCost(new TapSourceCost()); ability.addCost(new DiscardCardCost()); - ability.addTarget(new TargetSpell(filter)); + ability.addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_NON_CREATURE)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/StubbornDenial.java b/Mage.Sets/src/mage/cards/s/StubbornDenial.java index 8dddf60dd1b..97845fe4e99 100644 --- a/Mage.Sets/src/mage/cards/s/StubbornDenial.java +++ b/Mage.Sets/src/mage/cards/s/StubbornDenial.java @@ -10,8 +10,7 @@ import mage.abilities.hint.common.FerociousHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterSpell; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.TargetSpell; import java.util.UUID; @@ -21,12 +20,6 @@ import java.util.UUID; */ public final class StubbornDenial extends CardImpl { - private static final FilterSpell filter = new FilterSpell("noncreature spell"); - - static { - filter.add(Predicates.not(CardType.CREATURE.getPredicate())); - } - public StubbornDenial(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}"); @@ -41,7 +34,7 @@ public final class StubbornDenial extends CardImpl { new CounterTargetEffect(), FerociousCondition.instance, "
Ferocious — If you control a creature with power 4 or greater, counter that spell instead")); - this.getSpellAbility().addTarget(new TargetSpell(filter)); + this.getSpellAbility().addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_NON_CREATURE)); this.getSpellAbility().addHint(FerociousHint.instance); } diff --git a/Mage/src/main/java/mage/abilities/keyword/ProwessAbility.java b/Mage/src/main/java/mage/abilities/keyword/ProwessAbility.java index f3d46f24d4f..5c16fac1131 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ProwessAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ProwessAbility.java @@ -2,25 +2,17 @@ package mage.abilities.keyword; import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.effects.common.continuous.BoostSourceEffect; -import mage.constants.CardType; import mage.constants.Duration; -import mage.filter.FilterSpell; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; /** * @author LevelX2 */ public class ProwessAbility extends SpellCastControllerTriggeredAbility { - private static final FilterSpell filterNonCreatureSpell = new FilterSpell("noncreature spell"); - - static { - filterNonCreatureSpell.add(Predicates.not(CardType.CREATURE.getPredicate())); - } - public ProwessAbility() { super(new BoostSourceEffect(1, 1, Duration.EndOfTurn), false); - this.filter = filterNonCreatureSpell; + this.filter = StaticFilters.FILTER_SPELL_NON_CREATURE; } public ProwessAbility(final ProwessAbility ability) {