diff --git a/Mage.Sets/src/mage/cards/a/AngelicEdict.java b/Mage.Sets/src/mage/cards/a/AngelicEdict.java index a4c3f9386e0..ee1cb0d48ec 100644 --- a/Mage.Sets/src/mage/cards/a/AngelicEdict.java +++ b/Mage.Sets/src/mage/cards/a/AngelicEdict.java @@ -1,33 +1,25 @@ - package mage.cards.a; -import java.util.UUID; import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class AngelicEdict extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("creature or enchantment"); - static { - filter.add(Predicates.or(CardType.CREATURE.getPredicate(), CardType.ENCHANTMENT.getPredicate())); - } - public AngelicEdict(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}"); - + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{W}"); // Exile target creature or enchantment. getSpellAbility().addEffect(new ExileTargetEffect()); - getSpellAbility().addTarget(new TargetPermanent(filter)); + getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT)); } private AngelicEdict(final AngelicEdict card) { diff --git a/Mage.Sets/src/mage/cards/b/BlessedLight.java b/Mage.Sets/src/mage/cards/b/BlessedLight.java index 2164cdc9c3a..00f6507b215 100644 --- a/Mage.Sets/src/mage/cards/b/BlessedLight.java +++ b/Mage.Sets/src/mage/cards/b/BlessedLight.java @@ -1,33 +1,25 @@ - package mage.cards.b; -import java.util.UUID; import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class BlessedLight extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("creature or enchantment"); - - static { - filter.add(Predicates.or(CardType.CREATURE.getPredicate(), CardType.ENCHANTMENT.getPredicate())); - } - public BlessedLight(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{W}"); // Exile target creature or enchantment. getSpellAbility().addEffect(new ExileTargetEffect()); - getSpellAbility().addTarget(new TargetPermanent(filter)); + getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT)); } private BlessedLight(final BlessedLight card) { diff --git a/Mage.Sets/src/mage/cards/b/BloodAspirant.java b/Mage.Sets/src/mage/cards/b/BloodAspirant.java index 9aa5fce17a4..577479a1717 100644 --- a/Mage.Sets/src/mage/cards/b/BloodAspirant.java +++ b/Mage.Sets/src/mage/cards/b/BloodAspirant.java @@ -17,8 +17,6 @@ import mage.constants.Duration; import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.StaticFilters; -import mage.filter.common.FilterControlledPermanent; -import mage.filter.predicate.Predicates; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -28,15 +26,6 @@ import java.util.UUID; */ public final class BloodAspirant extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent("a creature or enchantment"); - - static { - filter.add(Predicates.or( - CardType.CREATURE.getPredicate(), - CardType.ENCHANTMENT.getPredicate() - )); - } - public BloodAspirant(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}"); @@ -56,7 +45,7 @@ public final class BloodAspirant extends CardImpl { new DamageTargetEffect(1), new ManaCostsImpl<>("{1}{R}") ); ability.addCost(new TapSourceCost()); - ability.addCost(new SacrificeTargetCost(filter)); + ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT)); ability.addEffect(new CantBlockTargetEffect(Duration.EndOfTurn) .setText("That creature can't block this turn.")); ability.addTarget(new TargetCreaturePermanent()); diff --git a/Mage.Sets/src/mage/cards/e/ErtaiTheCorrupted.java b/Mage.Sets/src/mage/cards/e/ErtaiTheCorrupted.java index 0ce93a09d58..ee217634f90 100644 --- a/Mage.Sets/src/mage/cards/e/ErtaiTheCorrupted.java +++ b/Mage.Sets/src/mage/cards/e/ErtaiTheCorrupted.java @@ -1,7 +1,6 @@ package mage.cards.e; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -15,25 +14,18 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.Zone; -import mage.filter.common.FilterControlledPermanent; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.TargetSpell; -import mage.target.common.TargetControlledPermanent; + +import java.util.UUID; /** - * * @author fireshoes */ public final class ErtaiTheCorrupted extends CardImpl { - - private static final FilterControlledPermanent filter = new FilterControlledPermanent("a creature or enchantment"); - - static { - filter.add(Predicates.or(CardType.CREATURE.getPredicate(), CardType.ENCHANTMENT.getPredicate())); - } public ErtaiTheCorrupted(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{U}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{U}{B}"); this.supertype.add(SuperType.LEGENDARY); this.subtype.add(SubType.PHYREXIAN); this.subtype.add(SubType.HUMAN); @@ -44,10 +36,10 @@ public final class ErtaiTheCorrupted extends CardImpl { // {U}, {tap}, Sacrifice a creature or enchantment: Counter target spell. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(), new ManaCostsImpl<>("{U}")); ability.addCost(new TapSourceCost()); - ability.addCost(new SacrificeTargetCost(filter)); + ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT)); ability.addTarget(new TargetSpell()); this.addAbility(ability); -} + } private ErtaiTheCorrupted(final ErtaiTheCorrupted card) { super(card); diff --git a/Mage.Sets/src/mage/cards/e/EtherswornAdjudicator.java b/Mage.Sets/src/mage/cards/e/EtherswornAdjudicator.java index 2d4825f6191..95f29ba6e90 100644 --- a/Mage.Sets/src/mage/cards/e/EtherswornAdjudicator.java +++ b/Mage.Sets/src/mage/cards/e/EtherswornAdjudicator.java @@ -1,8 +1,5 @@ - - package mage.cards.e; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -16,26 +13,19 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.Target; import mage.target.TargetPermanent; +import java.util.UUID; + /** - * * @author Loki */ public final class EtherswornAdjudicator extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("creature or enchantment"); - - static { - filter.add(Predicates.or( - CardType.CREATURE.getPredicate(), - CardType.ENCHANTMENT.getPredicate())); - } public EtherswornAdjudicator(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}{U}"); this.subtype.add(SubType.VEDALKEN); this.subtype.add(SubType.KNIGHT); @@ -47,7 +37,7 @@ public final class EtherswornAdjudicator extends CardImpl { // {1}{W}{B}, {T}: Destroy target creature or enchantment. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl<>("{1}{W}{B}")); ability.addCost(new TapSourceCost()); - Target target = new TargetPermanent(filter); + Target target = new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT); ability.addTarget(target); this.addAbility(ability); // {2}{U}: Untap Ethersworn Adjudicator. @@ -62,5 +52,4 @@ public final class EtherswornAdjudicator extends CardImpl { public EtherswornAdjudicator copy() { return new EtherswornAdjudicator(this); } - } diff --git a/Mage.Sets/src/mage/cards/f/FinalFlare.java b/Mage.Sets/src/mage/cards/f/FinalFlare.java index 7471da692d3..a2926703fe6 100644 --- a/Mage.Sets/src/mage/cards/f/FinalFlare.java +++ b/Mage.Sets/src/mage/cards/f/FinalFlare.java @@ -5,9 +5,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterControlledPermanent; -import mage.filter.predicate.Predicates; -import mage.target.common.TargetControlledPermanent; +import mage.filter.StaticFilters; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -17,21 +15,11 @@ import java.util.UUID; */ public final class FinalFlare extends CardImpl { - private static final FilterControlledPermanent filter - = new FilterControlledPermanent("a creature or enchantment"); - - static { - filter.add(Predicates.or( - CardType.CREATURE.getPredicate(), - CardType.ENCHANTMENT.getPredicate() - )); - } - public FinalFlare(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}"); // As an additional cost to cast this spell, sacrifice a creature or enchantment. - this.getSpellAbility().addCost(new SacrificeTargetCost(filter)); + this.getSpellAbility().addCost(new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT)); // Final Flare deals 5 damage to target creature. this.getSpellAbility().addEffect(new DamageTargetEffect(5)); diff --git a/Mage.Sets/src/mage/cards/f/FinalPayment.java b/Mage.Sets/src/mage/cards/f/FinalPayment.java index f046e19db01..79f2b0c8573 100644 --- a/Mage.Sets/src/mage/cards/f/FinalPayment.java +++ b/Mage.Sets/src/mage/cards/f/FinalPayment.java @@ -1,8 +1,5 @@ package mage.cards.f; -import java.util.UUID; - -import mage.abilities.costs.Cost; import mage.abilities.costs.OrCost; import mage.abilities.costs.common.PayLifeCost; import mage.abilities.costs.common.SacrificeTargetCost; @@ -10,30 +7,23 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterControlledPermanent; -import mage.filter.predicate.Predicates; -import mage.target.common.TargetControlledPermanent; +import mage.filter.StaticFilters; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author FateRevoked */ public final class FinalPayment extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent("a creature or enchantment"); - - static { - filter.add(Predicates.or(CardType.CREATURE.getPredicate(), CardType.ENCHANTMENT.getPredicate())); - } public FinalPayment(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}{B}"); // As an additional cost to cast this spell, pay 5 life or sacrifice a creature or enchantment. - final Cost lifeCost = new PayLifeCost(5); - final Cost sacrificeCost = new SacrificeTargetCost(filter); - - this.getSpellAbility().addCost(new OrCost("pay 5 life or sacrifice a creature or enchantment", lifeCost, sacrificeCost + this.getSpellAbility().addCost(new OrCost( + "pay 5 life or sacrifice a creature or enchantment", new PayLifeCost(5), + new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT) )); // Destroy target creature diff --git a/Mage.Sets/src/mage/cards/f/FinalVengeance.java b/Mage.Sets/src/mage/cards/f/FinalVengeance.java index ee2b34dfae8..49514af9d46 100644 --- a/Mage.Sets/src/mage/cards/f/FinalVengeance.java +++ b/Mage.Sets/src/mage/cards/f/FinalVengeance.java @@ -5,8 +5,7 @@ import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -16,20 +15,11 @@ import java.util.UUID; */ public final class FinalVengeance extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("creature or enchantment"); - - static { - filter.add(Predicates.or( - CardType.CREATURE.getPredicate(), - CardType.ENCHANTMENT.getPredicate() - )); - } - public FinalVengeance(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B}"); // As an additional cost to cast this spell, sacrifice a creature or enchantment. - this.getSpellAbility().addCost(new SacrificeTargetCost(filter)); + this.getSpellAbility().addCost(new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT)); // Exile target creature. this.getSpellAbility().addEffect(new ExileTargetEffect()); diff --git a/Mage.Sets/src/mage/cards/f/FlickerOfFate.java b/Mage.Sets/src/mage/cards/f/FlickerOfFate.java index 21356da3cdf..3b6a9092b7c 100644 --- a/Mage.Sets/src/mage/cards/f/FlickerOfFate.java +++ b/Mage.Sets/src/mage/cards/f/FlickerOfFate.java @@ -4,8 +4,7 @@ import mage.abilities.effects.common.ExileThenReturnTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; import java.util.UUID; @@ -15,21 +14,12 @@ import java.util.UUID; */ public final class FlickerOfFate extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("creature or enchantment"); - - static { - filter.add(Predicates.or( - CardType.CREATURE.getPredicate(), - CardType.ENCHANTMENT.getPredicate() - )); - } - public FlickerOfFate(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}"); // Exile target creature or enchantment, then return it to the battlefield under its owner's control. this.getSpellAbility().addEffect(new ExileThenReturnTargetEffect(false, false)); - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT)); } private FlickerOfFate(final FlickerOfFate card) { diff --git a/Mage.Sets/src/mage/cards/k/KayaIntangibleSlayer.java b/Mage.Sets/src/mage/cards/k/KayaIntangibleSlayer.java index 53038628504..93e4cf7ef76 100644 --- a/Mage.Sets/src/mage/cards/k/KayaIntangibleSlayer.java +++ b/Mage.Sets/src/mage/cards/k/KayaIntangibleSlayer.java @@ -1,7 +1,5 @@ package mage.cards.k; -import java.util.UUID; - import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; @@ -10,31 +8,23 @@ import mage.abilities.effects.common.CreateTokenCopyTargetEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.LoseLifeOpponentsEffect; -import mage.constants.*; import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; +import mage.constants.*; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.TargetPermanent; +import java.util.UUID; + /** * @author TheElk801 */ public final class KayaIntangibleSlayer extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("creature or enchantment"); - - static { - filter.add(Predicates.or( - CardType.CREATURE.getPredicate(), - CardType.ENCHANTMENT.getPredicate() - )); - } - public KayaIntangibleSlayer(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{W}{W}{B}{B}"); @@ -57,7 +47,7 @@ public final class KayaIntangibleSlayer extends CardImpl { // -3: Exile target creature or enchantment. If it wasn't an Aura, create a token that's a copy of it, except it's a 1/1 white Spirit creature with flying in addition to its other types. ability = new LoyaltyAbility(new KayaIntangibleSlayerExileEffect(), -3); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MireInMisery.java b/Mage.Sets/src/mage/cards/m/MireInMisery.java index 78d79df94c3..68b2e234b6a 100644 --- a/Mage.Sets/src/mage/cards/m/MireInMisery.java +++ b/Mage.Sets/src/mage/cards/m/MireInMisery.java @@ -4,8 +4,7 @@ import mage.abilities.effects.common.SacrificeOpponentsEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import java.util.UUID; @@ -14,20 +13,11 @@ import java.util.UUID; */ public final class MireInMisery extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("a creature or enchantment"); - - static { - filter.add(Predicates.or( - CardType.CREATURE.getPredicate(), - CardType.ENCHANTMENT.getPredicate() - )); - } - public MireInMisery(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}"); // Each opponent sacrifices a creature or enchantment. - this.getSpellAbility().addEffect(new SacrificeOpponentsEffect(filter)); + this.getSpellAbility().addEffect(new SacrificeOpponentsEffect(StaticFilters.FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT)); } private MireInMisery(final MireInMisery card) { diff --git a/Mage.Sets/src/mage/cards/m/Mortify.java b/Mage.Sets/src/mage/cards/m/Mortify.java index f3c29f5e4cd..83d5105be3d 100644 --- a/Mage.Sets/src/mage/cards/m/Mortify.java +++ b/Mage.Sets/src/mage/cards/m/Mortify.java @@ -1,34 +1,24 @@ - package mage.cards.m; -import java.util.UUID; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; +import java.util.UUID; + /** * @author Loki */ public final class Mortify extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("creature or enchantment"); - - static { - filter.add(Predicates.or( - CardType.CREATURE.getPredicate(), - CardType.ENCHANTMENT.getPredicate())); - } - public Mortify(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}{B}"); - + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}{B}"); this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT)); } private Mortify(final Mortify card) { diff --git a/Mage.Sets/src/mage/cards/o/OneWithTheStars.java b/Mage.Sets/src/mage/cards/o/OneWithTheStars.java index 1b641db4363..183575959f8 100644 --- a/Mage.Sets/src/mage/cards/o/OneWithTheStars.java +++ b/Mage.Sets/src/mage/cards/o/OneWithTheStars.java @@ -8,8 +8,7 @@ import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; @@ -21,14 +20,6 @@ import java.util.UUID; */ public final class OneWithTheStars extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("creature or enchantment"); - - static { - filter.add(Predicates.or( - CardType.CREATURE.getPredicate(), - CardType.ENCHANTMENT.getPredicate() - )); - } public OneWithTheStars(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}"); @@ -36,7 +27,7 @@ public final class OneWithTheStars extends CardImpl { this.subtype.add(SubType.AURA); // Enchant creature or enchantment - TargetPermanent auraTarget = new TargetPermanent(filter); + TargetPermanent auraTarget = new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); Ability ability = new EnchantAbility(auraTarget); diff --git a/Mage.Sets/src/mage/cards/s/ShatterTheOath.java b/Mage.Sets/src/mage/cards/s/ShatterTheOath.java index dae3efef7a2..5cf803fad39 100644 --- a/Mage.Sets/src/mage/cards/s/ShatterTheOath.java +++ b/Mage.Sets/src/mage/cards/s/ShatterTheOath.java @@ -6,8 +6,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.RoleType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.targetpointer.FirstTargetPointer; @@ -20,21 +19,12 @@ import java.util.UUID; */ public final class ShatterTheOath extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("creature or enchantment"); - - static { - filter.add(Predicates.or( - CardType.CREATURE.getPredicate(), - CardType.ENCHANTMENT.getPredicate() - )); - } - public ShatterTheOath(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{B}"); // Destroy target creature or enchantment. Create a Wicked Role token attached to up to one target creature you control. this.getSpellAbility().addEffect(new DestroyTargetEffect().setTargetPointer(new FirstTargetPointer())); - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT)); this.getSpellAbility().addEffect(new CreateRoleAttachedTargetEffect(RoleType.WICKED).setTargetPointer(new SecondTargetPointer())); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent(0, 1)); } diff --git a/Mage.Sets/src/mage/cards/u/UrnOfGodfire.java b/Mage.Sets/src/mage/cards/u/UrnOfGodfire.java index 129510c43bf..b756d87fa7b 100644 --- a/Mage.Sets/src/mage/cards/u/UrnOfGodfire.java +++ b/Mage.Sets/src/mage/cards/u/UrnOfGodfire.java @@ -10,8 +10,7 @@ import mage.abilities.mana.AnyColorManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; import java.util.UUID; @@ -21,15 +20,6 @@ import java.util.UUID; */ public final class UrnOfGodfire extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("creature or enchantment"); - - static { - filter.add(Predicates.or( - CardType.CREATURE.getPredicate(), - CardType.ENCHANTMENT.getPredicate() - )); - } - public UrnOfGodfire(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}"); @@ -40,7 +30,7 @@ public final class UrnOfGodfire extends CardImpl { Ability ability = new SimpleActivatedAbility(new DestroyTargetEffect(), new GenericManaCost(6)); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WitheringTorment.java b/Mage.Sets/src/mage/cards/w/WitheringTorment.java new file mode 100644 index 00000000000..2d5ee441206 --- /dev/null +++ b/Mage.Sets/src/mage/cards/w/WitheringTorment.java @@ -0,0 +1,35 @@ +package mage.cards.w; + +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.effects.common.LoseLifeSourceControllerEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.filter.StaticFilters; +import mage.target.TargetPermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class WitheringTorment extends CardImpl { + + public WitheringTorment(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{B}"); + + // Destroy target creature or enchantment. You lose 2 life. + this.getSpellAbility().addEffect(new DestroyTargetEffect()); + this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(2)); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT)); + } + + private WitheringTorment(final WitheringTorment card) { + super(card); + } + + @Override + public WitheringTorment copy() { + return new WitheringTorment(this); + } +} diff --git a/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java b/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java index 3211d12fe1f..86f2fd27d9b 100644 --- a/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java +++ b/Mage.Sets/src/mage/sets/DuskmournHouseOfHorror.java @@ -163,6 +163,7 @@ public final class DuskmournHouseOfHorror extends ExpansionSet { cards.add(new SetCardInfo("Victor, Valgavoth's Seneschal", 238, Rarity.RARE, mage.cards.v.VictorValgavothsSeneschal.class)); cards.add(new SetCardInfo("Wary Watchdog", 206, Rarity.COMMON, mage.cards.w.WaryWatchdog.class)); cards.add(new SetCardInfo("Winter, Misanthropic Guide", 240, Rarity.RARE, mage.cards.w.WinterMisanthropicGuide.class)); + cards.add(new SetCardInfo("Withering Torment", 124, Rarity.UNCOMMON, mage.cards.w.WitheringTorment.class)); cards.add(new SetCardInfo("Zimone, All-Questioning", 241, Rarity.RARE, mage.cards.z.ZimoneAllQuestioning.class)); cards.removeIf(setCardInfo -> setCardInfo.getName().startsWith("Overlord")); diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index afd6a3958b7..adcaf221b1e 100644 --- a/Mage/src/main/java/mage/filter/StaticFilters.java +++ b/Mage/src/main/java/mage/filter/StaticFilters.java @@ -346,6 +346,16 @@ public final class StaticFilters { FILTER_PERMANENT_ARTIFACT_OR_CREATURE.setLockedFilter(true); } + public static final FilterPermanent FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT = new FilterPermanent("creature or enchantment"); + + static { + FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT.add(Predicates.or( + CardType.CREATURE.getPredicate(), + CardType.ENCHANTMENT.getPredicate() + )); + FILTER_PERMANENT_CREATURE_OR_ENCHANTMENT.setLockedFilter(true); + } + public static final FilterPermanent FILTER_PERMANENT_ARTIFACT_CREATURE_OR_ENCHANTMENT = new FilterPermanent("artifact, creature, or enchantment"); static {