diff --git a/Mage.Sets/src/mage/cards/a/AshiokSculptorOfFears.java b/Mage.Sets/src/mage/cards/a/AshiokSculptorOfFears.java index 8de002f7e59..361f63b61e9 100644 --- a/Mage.Sets/src/mage/cards/a/AshiokSculptorOfFears.java +++ b/Mage.Sets/src/mage/cards/a/AshiokSculptorOfFears.java @@ -10,9 +10,8 @@ import mage.abilities.effects.common.continuous.GainControlAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; -import mage.filter.FilterCard; import mage.filter.FilterPermanent; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; @@ -26,8 +25,6 @@ import java.util.UUID; */ public final class AshiokSculptorOfFears extends CardImpl { - private static final FilterCard filter = new FilterCreatureCard("creature card from a graveyard"); - public AshiokSculptorOfFears(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{4}{U}{B}"); @@ -45,7 +42,7 @@ public final class AshiokSculptorOfFears extends CardImpl { // −5: Put target creature card from a graveyard onto the battlefield under your control. ability = new LoyaltyAbility(new ReturnFromGraveyardToBattlefieldTargetEffect() .setText("put target creature card from a graveyard onto the battlefield under your control"), -5); - ability.addTarget(new TargetCardInGraveyard(filter)); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); // −11: Gain control of all creatures target opponent controls. diff --git a/Mage.Sets/src/mage/cards/b/BonecladNecromancer.java b/Mage.Sets/src/mage/cards/b/BonecladNecromancer.java index ef604348192..8159a154c49 100644 --- a/Mage.Sets/src/mage/cards/b/BonecladNecromancer.java +++ b/Mage.Sets/src/mage/cards/b/BonecladNecromancer.java @@ -9,7 +9,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.game.permanent.token.ZombieToken; import mage.target.common.TargetCardInGraveyard; @@ -20,8 +20,6 @@ import java.util.UUID; */ public final class BonecladNecromancer extends CardImpl { - private static final FilterCreatureCard filter = new FilterCreatureCard("creature card from a graveyard"); - public BonecladNecromancer(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}"); @@ -32,7 +30,7 @@ public final class BonecladNecromancer extends CardImpl { // When Boneclad Necromancer enters the battlefield, you may exile target creature card from a graveyard. If you do, create a 2/2 black Zombie creature token. Ability ability = new EntersBattlefieldTriggeredAbility(new ExileTargetEffect(), true); - ability.addTarget(new TargetCardInGraveyard(filter)); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); ability.addEffect(new CreateTokenEffect(new ZombieToken()).concatBy("If you do,")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CarrionImp.java b/Mage.Sets/src/mage/cards/c/CarrionImp.java index 0804414d36b..0f7c861de3d 100644 --- a/Mage.Sets/src/mage/cards/c/CarrionImp.java +++ b/Mage.Sets/src/mage/cards/c/CarrionImp.java @@ -10,8 +10,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.FilterCard; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInGraveyard; import java.util.UUID; @@ -21,8 +20,6 @@ import java.util.UUID; */ public final class CarrionImp extends CardImpl { - private static final FilterCard filter = new FilterCreatureCard("creature card from a graveyard"); - public CarrionImp(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); @@ -36,7 +33,7 @@ public final class CarrionImp extends CardImpl { // When Carrion Imp enters the battlefield, you may exile target creature card from a graveyard. If you do, you gain 2 life. Ability ability = new EntersBattlefieldTriggeredAbility(new ExileTargetEffect(), true); ability.addEffect(new GainLifeEffect(2).concatBy("If you do,")); - ability.addTarget(new TargetCardInGraveyard(filter)); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CemeteryReaper.java b/Mage.Sets/src/mage/cards/c/CemeteryReaper.java index b60ea4218be..73ceef64f44 100644 --- a/Mage.Sets/src/mage/cards/c/CemeteryReaper.java +++ b/Mage.Sets/src/mage/cards/c/CemeteryReaper.java @@ -17,6 +17,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; import mage.game.permanent.token.ZombieToken; @@ -46,7 +47,7 @@ public final class CemeteryReaper extends CardImpl { Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(), new ManaCostsImpl<>("{2}{B}")); ability.addCost(new TapSourceCost()); ability.addEffect(new CreateTokenEffect(new ZombieToken())); - ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/ChainerDementiaMaster.java b/Mage.Sets/src/mage/cards/c/ChainerDementiaMaster.java index 84604079b71..6b4a0f82516 100644 --- a/Mage.Sets/src/mage/cards/c/ChainerDementiaMaster.java +++ b/Mage.Sets/src/mage/cards/c/ChainerDementiaMaster.java @@ -21,6 +21,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.FilterPermanent; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; @@ -56,7 +57,7 @@ public final class ChainerDementiaMaster extends CardImpl { // {B}{B}{B}, Pay 3 life: Put target creature card from a graveyard onto the battlefield under your control. That creature is black and is a Nightmare in addition to its other creature types. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ChainerDementiaMasterEffect(), new ManaCostsImpl<>("{B}{B}{B}")); ability.addCost(new PayLifeCost(3)); - ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); // When Chainer, Dementia Master leaves the battlefield, exile all Nightmares. diff --git a/Mage.Sets/src/mage/cards/c/CoffinQueen.java b/Mage.Sets/src/mage/cards/c/CoffinQueen.java index 9b161be96c1..2a776d04eba 100644 --- a/Mage.Sets/src/mage/cards/c/CoffinQueen.java +++ b/Mage.Sets/src/mage/cards/c/CoffinQueen.java @@ -18,6 +18,7 @@ import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.SubType; import mage.constants.Zone; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.game.Game; import mage.game.events.GameEvent; @@ -45,7 +46,7 @@ public final class CoffinQueen extends CardImpl { // {2}{B}, {tap}: Put target creature card from a graveyard onto the battlefield under your control. When Coffin Queen becomes untapped or you lose control of Coffin Queen, exile that creature. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToBattlefieldTargetEffect(), new ManaCostsImpl<>("{2}{B}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); ability.addEffect(new CoffinQueenCreateDelayedTriggerEffect()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/d/DeathriteShaman.java b/Mage.Sets/src/mage/cards/d/DeathriteShaman.java index 10c13c0086d..496a15fb463 100644 --- a/Mage.Sets/src/mage/cards/d/DeathriteShaman.java +++ b/Mage.Sets/src/mage/cards/d/DeathriteShaman.java @@ -65,7 +65,7 @@ public final class DeathriteShaman extends CardImpl { ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(), new ManaCostsImpl<>("{G}")); ability.addCost(new TapSourceCost()); ability.addEffect(new GainLifeEffect(2)); - ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DebtorsKnell.java b/Mage.Sets/src/mage/cards/d/DebtorsKnell.java index 3f82460ed42..da8c58450d3 100644 --- a/Mage.Sets/src/mage/cards/d/DebtorsKnell.java +++ b/Mage.Sets/src/mage/cards/d/DebtorsKnell.java @@ -10,6 +10,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.TargetController; import mage.constants.Zone; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.target.common.TargetCardInGraveyard; @@ -26,7 +27,7 @@ public final class DebtorsKnell extends CardImpl { // ({WB} can be paid with either {W} or {B}.) // At the beginning of your upkeep, put target creature card from a graveyard onto the battlefield under your control. Ability ability = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToBattlefieldTargetEffect(), TargetController.YOU, false); - ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DemonOfDarkSchemes.java b/Mage.Sets/src/mage/cards/d/DemonOfDarkSchemes.java index d614a125237..975a785f187 100644 --- a/Mage.Sets/src/mage/cards/d/DemonOfDarkSchemes.java +++ b/Mage.Sets/src/mage/cards/d/DemonOfDarkSchemes.java @@ -20,6 +20,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; import mage.constants.Zone; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.target.common.TargetCardInGraveyard; @@ -51,7 +52,7 @@ public final class DemonOfDarkSchemes extends CardImpl { effect.setText("Put target creature card from a graveyard onto the battlefield under your control tapped"); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{2}{B}")); ability.addCost(new PayEnergyCost(4)); - ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DisturbingPlot.java b/Mage.Sets/src/mage/cards/d/DisturbingPlot.java index d2a8cf2c636..7699b07574c 100644 --- a/Mage.Sets/src/mage/cards/d/DisturbingPlot.java +++ b/Mage.Sets/src/mage/cards/d/DisturbingPlot.java @@ -6,6 +6,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.target.common.TargetCardInGraveyard; @@ -16,14 +17,12 @@ import java.util.UUID; */ public final class DisturbingPlot extends CardImpl { - private static final FilterCard filter = new FilterCreatureCard("creature card from a graveyard"); - public DisturbingPlot(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}"); // Return target creature card from a graveyard to its owner's hand. this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInGraveyard(filter)); + this.getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); // Conspire this.addAbility(new ConspireAbility(ConspireAbility.ConspireTargets.ONE)); diff --git a/Mage.Sets/src/mage/cards/e/EndlessObedience.java b/Mage.Sets/src/mage/cards/e/EndlessObedience.java index 74e80dc39de..f696f7f5717 100644 --- a/Mage.Sets/src/mage/cards/e/EndlessObedience.java +++ b/Mage.Sets/src/mage/cards/e/EndlessObedience.java @@ -7,6 +7,7 @@ import mage.abilities.keyword.ConvokeAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.target.common.TargetCardInGraveyard; @@ -24,7 +25,7 @@ public final class EndlessObedience extends CardImpl { this.addAbility(new ConvokeAbility()); // Put target creature card from a graveyard onto the battlefield under your control. - this.getSpellAbility().addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/e/EntrailsFeaster.java b/Mage.Sets/src/mage/cards/e/EntrailsFeaster.java index d6a344b91e4..4c01db95901 100644 --- a/Mage.Sets/src/mage/cards/e/EntrailsFeaster.java +++ b/Mage.Sets/src/mage/cards/e/EntrailsFeaster.java @@ -9,6 +9,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.counters.CounterType; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.game.Game; import mage.game.permanent.Permanent; @@ -47,8 +48,6 @@ public final class EntrailsFeaster extends CardImpl { class EntrailsFeasterEffect extends OneShotEffect { - private static final FilterCreatureCard filter = new FilterCreatureCard("creature card from a graveyard"); - public EntrailsFeasterEffect() { super(Outcome.Detriment); this.staticText = "you may exile a creature card from a graveyard. If you do, put a +1/+1 counter on {this}. If you don't, tap {this}"; @@ -68,7 +67,7 @@ class EntrailsFeasterEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (controller != null && source.getSourceId() != null) { Permanent sourceObject = source.getSourcePermanentIfItStillExists(game); - TargetCardInGraveyard target = new TargetCardInGraveyard(filter); + TargetCardInGraveyard target = new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD); target.withNotTarget(true); if (target.canChoose(controller.getId(), source, game) && controller.chooseUse(outcome, "Exile a creature card from a graveyard?", source, game)) { if (controller.choose(Outcome.Exile, target, source, game)) { diff --git a/Mage.Sets/src/mage/cards/f/FatedReturn.java b/Mage.Sets/src/mage/cards/f/FatedReturn.java index 17ef52dd54e..0b14a823d87 100644 --- a/Mage.Sets/src/mage/cards/f/FatedReturn.java +++ b/Mage.Sets/src/mage/cards/f/FatedReturn.java @@ -11,6 +11,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.target.common.TargetCardInGraveyard; @@ -27,7 +28,7 @@ public final class FatedReturn extends CardImpl { // Put target creature card from a graveyard onto the battlefield under your control. It gains indestructible. If it's your turn, scry 2. this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.getSpellAbility().addEffect(new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.Custom, "It gains indestructible")); this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new ScryEffect(2), MyTurnCondition.instance, diff --git a/Mage.Sets/src/mage/cards/f/FromTheCatacombs.java b/Mage.Sets/src/mage/cards/f/FromTheCatacombs.java index 442d40b32b4..c591c7977de 100644 --- a/Mage.Sets/src/mage/cards/f/FromTheCatacombs.java +++ b/Mage.Sets/src/mage/cards/f/FromTheCatacombs.java @@ -10,6 +10,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.counters.CounterType; import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.target.common.TargetCardInGraveyard; @@ -20,15 +21,13 @@ import java.util.UUID; */ public final class FromTheCatacombs extends CardImpl { - private static final FilterCard filter = new FilterCreatureCard("creature card from a graveyard"); - public FromTheCatacombs(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}{B}"); // Return target creature card from a graveyard to the battlefield with a corpse counter on it. If that creature would leave the battlefield, exile it instead of putting it anywhere else. this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldWithCounterTargetEffect(CounterType.CORPSE.createInstance())); this.getSpellAbility().addEffect(new LeaveBattlefieldExileTargetReplacementEffect("that creature")); - this.getSpellAbility().addTarget(new TargetCardInGraveyard(filter)); + this.getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); // You take the initiative. this.getSpellAbility().addEffect(new TakeTheInitiativeEffect().concatBy("
")); diff --git a/Mage.Sets/src/mage/cards/g/GravespawnSovereign.java b/Mage.Sets/src/mage/cards/g/GravespawnSovereign.java index f750a528bd3..067be5624e6 100644 --- a/Mage.Sets/src/mage/cards/g/GravespawnSovereign.java +++ b/Mage.Sets/src/mage/cards/g/GravespawnSovereign.java @@ -12,6 +12,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; +import mage.filter.StaticFilters; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.permanent.TappedPredicate; @@ -39,7 +40,7 @@ public final class GravespawnSovereign extends CardImpl { // Tap five untapped Zombies you control: Put target creature card from a graveyard onto the battlefield under your control. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToBattlefieldTargetEffect(), new TapTargetCost(new TargetControlledCreaturePermanent(5, 5, filter, true))); - ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HymnOfRebirth.java b/Mage.Sets/src/mage/cards/h/HymnOfRebirth.java index 3b3d9effda3..5951e008836 100644 --- a/Mage.Sets/src/mage/cards/h/HymnOfRebirth.java +++ b/Mage.Sets/src/mage/cards/h/HymnOfRebirth.java @@ -6,6 +6,7 @@ import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffec import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.target.common.TargetCardInGraveyard; @@ -19,7 +20,7 @@ public final class HymnOfRebirth extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}{W}"); // Put target creature card from a graveyard onto the battlefield under your control. - this.getSpellAbility().addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/i/InheritedFiend.java b/Mage.Sets/src/mage/cards/i/InheritedFiend.java index 52f35e6004c..79afa9126fc 100644 --- a/Mage.Sets/src/mage/cards/i/InheritedFiend.java +++ b/Mage.Sets/src/mage/cards/i/InheritedFiend.java @@ -13,6 +13,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.target.common.TargetCardInGraveyard; @@ -23,8 +24,6 @@ import java.util.UUID; */ public final class InheritedFiend extends CardImpl { - private static final FilterCard filter = new FilterCreatureCard("creature card from a graveyard"); - public InheritedFiend(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, ""); @@ -40,7 +39,7 @@ public final class InheritedFiend extends CardImpl { // {2}{B}: Exile target creature card from a graveyard. Put a +1/+1 counter on Inherited Fiend. Ability ability = new SimpleActivatedAbility(new ExileTargetEffect(), new ManaCostsImpl<>("{2}{B}")); ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()).concatBy(".")); - ability.addTarget(new TargetCardInGraveyard(filter)); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KirinTouchedOrochi.java b/Mage.Sets/src/mage/cards/k/KirinTouchedOrochi.java index bf852718875..09d03710924 100644 --- a/Mage.Sets/src/mage/cards/k/KirinTouchedOrochi.java +++ b/Mage.Sets/src/mage/cards/k/KirinTouchedOrochi.java @@ -17,6 +17,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; import mage.counters.CounterType; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterNoncreatureCard; import mage.game.Game; @@ -31,7 +32,6 @@ import mage.target.common.TargetControlledCreaturePermanent; */ public final class KirinTouchedOrochi extends CardImpl { - private static final FilterCreatureCard filter = new FilterCreatureCard("creature card from a graveyard"); private static final FilterNoncreatureCard filter2 = new FilterNoncreatureCard("noncreature card from a graveyard"); public KirinTouchedOrochi(UUID ownerId, CardSetInfo setInfo) { @@ -47,7 +47,7 @@ public final class KirinTouchedOrochi extends CardImpl { // Whenever Kirin-Touched Orochi attacks, choose one — // • Exile target creature card from a graveyard. When you do, create a 1/1 colorless Spirit creature token. Ability ability = new AttacksTriggeredAbility(new KirinTouchedOrochiTokenEffect()); - ability.addTarget(new TargetCardInGraveyard(filter)); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); // • Exile target noncreature card from a graveyard. When you do, put a +1/+1 counter on target creature you control. Mode mode = new Mode(new KirinTouchedOrochiCounterEffect()); diff --git a/Mage.Sets/src/mage/cards/m/MorbidBloom.java b/Mage.Sets/src/mage/cards/m/MorbidBloom.java index be4780fd4ea..b7f81783b49 100644 --- a/Mage.Sets/src/mage/cards/m/MorbidBloom.java +++ b/Mage.Sets/src/mage/cards/m/MorbidBloom.java @@ -9,6 +9,7 @@ import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.game.Game; import mage.game.permanent.token.SaprolingToken; @@ -22,14 +23,12 @@ import java.util.UUID; */ public final class MorbidBloom extends CardImpl { - private static final FilterCard filter = new FilterCreatureCard("creature card from a graveyard"); - public MorbidBloom(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{G}"); // Exile target creature card from a graveyard, then create X 1/1 green Saproling creature tokens, where X is the exiled card's toughness. this.getSpellAbility().addEffect(new MorbidBloomEffect()); - this.getSpellAbility().addTarget(new TargetCardInGraveyard(filter)); + this.getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); } private MorbidBloom(final MorbidBloom card) { diff --git a/Mage.Sets/src/mage/cards/n/Necrogenesis.java b/Mage.Sets/src/mage/cards/n/Necrogenesis.java index a0df9bf6ac6..acc9be3f15e 100644 --- a/Mage.Sets/src/mage/cards/n/Necrogenesis.java +++ b/Mage.Sets/src/mage/cards/n/Necrogenesis.java @@ -11,7 +11,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.game.permanent.token.SaprolingToken; import mage.target.common.TargetCardInGraveyard; @@ -26,7 +26,7 @@ public final class Necrogenesis extends CardImpl { // {2}: Exile target creature card from a graveyard. Create a 1/1 green Saproling creature token. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(), new GenericManaCost(2)); - ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); ability.addEffect(new CreateTokenEffect(new SaprolingToken())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/n/Necromancy.java b/Mage.Sets/src/mage/cards/n/Necromancy.java index 1460a6639cf..6a78315cbf5 100644 --- a/Mage.Sets/src/mage/cards/n/Necromancy.java +++ b/Mage.Sets/src/mage/cards/n/Necromancy.java @@ -10,6 +10,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.target.common.TargetCardInGraveyard; @@ -20,8 +21,6 @@ import java.util.UUID; */ public final class Necromancy extends CardImpl { - private static final FilterCreatureCard filter = new FilterCreatureCard("creature card from a graveyard"); - public Necromancy(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}"); @@ -35,7 +34,7 @@ public final class Necromancy extends CardImpl { // a graveyard onto the battlefield under your control and attach Necromancy to it. When Necromancy // leaves the battlefield, that creature's controller sacrifices it. Ability ability = new AnimateDeadTriggeredAbility(true); - ability.addTarget(new TargetCardInGraveyard(filter)); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/n/NecromanticSummons.java b/Mage.Sets/src/mage/cards/n/NecromanticSummons.java index f4a77106cc7..f747da43f03 100644 --- a/Mage.Sets/src/mage/cards/n/NecromanticSummons.java +++ b/Mage.Sets/src/mage/cards/n/NecromanticSummons.java @@ -12,7 +12,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; import mage.counters.CounterType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.EntersTheBattlefieldEvent; import mage.game.events.GameEvent; @@ -31,7 +31,7 @@ public final class NecromanticSummons extends CardImpl { this.getSpellAbility().addEffect(new NecromanticSummoningReplacementEffect());// has to be added before the moving effect // Put target creature card from a graveyard onto the battlefield under your control. this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); // Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, // that creature enters the battlefield with two additional +1/+1 counters on it. diff --git a/Mage.Sets/src/mage/cards/n/NezumiGraverobber.java b/Mage.Sets/src/mage/cards/n/NezumiGraverobber.java index 1a12006d2a3..299fd00aee6 100644 --- a/Mage.Sets/src/mage/cards/n/NezumiGraverobber.java +++ b/Mage.Sets/src/mage/cards/n/NezumiGraverobber.java @@ -19,6 +19,7 @@ import mage.constants.Outcome; import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.game.Game; import mage.game.permanent.token.TokenImpl; @@ -105,7 +106,7 @@ class NighteyesTheDesecratorToken extends TokenImpl { toughness = new MageInt(2); // {4}{B}: Put target creature card from a graveyard onto the battlefield under your control. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToBattlefieldTargetEffect(), new ManaCostsImpl<>("{4}{B}")); - ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); } private NighteyesTheDesecratorToken(final NighteyesTheDesecratorToken token) { diff --git a/Mage.Sets/src/mage/cards/p/PortalToPhyrexia.java b/Mage.Sets/src/mage/cards/p/PortalToPhyrexia.java index f5da2256ccb..6cb416c830b 100644 --- a/Mage.Sets/src/mage/cards/p/PortalToPhyrexia.java +++ b/Mage.Sets/src/mage/cards/p/PortalToPhyrexia.java @@ -23,8 +23,6 @@ import java.util.UUID; */ public final class PortalToPhyrexia extends CardImpl { - private static final FilterCard filter = new FilterCreatureCard("creature card from a graveyard"); - public PortalToPhyrexia(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{9}"); @@ -38,7 +36,7 @@ public final class PortalToPhyrexia extends CardImpl { new ReturnFromGraveyardToBattlefieldTargetEffect(), TargetController.YOU, false ); ability.addEffect(new AddCreatureTypeAdditionEffect(SubType.PHYREXIAN, false)); - ability.addTarget(new TargetCardInGraveyard(filter)); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/ReviveTheFallen.java b/Mage.Sets/src/mage/cards/r/ReviveTheFallen.java index 96524669fff..110d15edd86 100644 --- a/Mage.Sets/src/mage/cards/r/ReviveTheFallen.java +++ b/Mage.Sets/src/mage/cards/r/ReviveTheFallen.java @@ -9,6 +9,7 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.target.common.TargetCardInGraveyard; @@ -23,7 +24,7 @@ public final class ReviveTheFallen extends CardImpl { // Return target creature card from a graveyard to its owner's hand. this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); // Clash with an opponent. If you win, return Revive the Fallen to its owner's hand. this.getSpellAbility().addEffect(new DoIfClashWonEffect(ReturnToHandSpellEffect.getInstance())); } diff --git a/Mage.Sets/src/mage/cards/r/RiseFall.java b/Mage.Sets/src/mage/cards/r/RiseFall.java index 0adf51a8418..9187668d0e7 100644 --- a/Mage.Sets/src/mage/cards/r/RiseFall.java +++ b/Mage.Sets/src/mage/cards/r/RiseFall.java @@ -25,15 +25,13 @@ import java.util.UUID; */ public final class RiseFall extends SplitCard { - private static final FilterCard filter = new FilterCreatureCard("creature card from a graveyard"); - public RiseFall(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{U}{B}", "{B}{R}", SpellAbilityType.SPLIT); // Rise // Return target creature card from a graveyard and target creature on the battlefield to their owners' hands. getLeftHalfCard().getSpellAbility().addEffect(new RiseEffect()); - getLeftHalfCard().getSpellAbility().addTarget(new TargetCardInGraveyard(filter)); + getLeftHalfCard().getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent()); // Fall diff --git a/Mage.Sets/src/mage/cards/r/RiseFromTheGrave.java b/Mage.Sets/src/mage/cards/r/RiseFromTheGrave.java index 709aab8bba7..542db946b83 100644 --- a/Mage.Sets/src/mage/cards/r/RiseFromTheGrave.java +++ b/Mage.Sets/src/mage/cards/r/RiseFromTheGrave.java @@ -8,6 +8,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.target.common.TargetCardInGraveyard; @@ -22,7 +23,7 @@ public final class RiseFromTheGrave extends CardImpl { // Put target creature card from a graveyard onto the battlefield under your control. That creature is a black Zombie in addition to its other colors and types. - this.getSpellAbility().addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect()); this.getSpellAbility().addEffect(new AddCreatureTypeAdditionEffect(SubType.ZOMBIE, true)); } diff --git a/Mage.Sets/src/mage/cards/r/RotfeasterMaggot.java b/Mage.Sets/src/mage/cards/r/RotfeasterMaggot.java index 1c3067d2afa..76cb7033ac4 100644 --- a/Mage.Sets/src/mage/cards/r/RotfeasterMaggot.java +++ b/Mage.Sets/src/mage/cards/r/RotfeasterMaggot.java @@ -13,7 +13,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetCardInGraveyard; @@ -33,7 +33,7 @@ public final class RotfeasterMaggot extends CardImpl { // When Rotfeaster Maggot enters the battlefield, exile target creature card from a graveyard. You gain life equal to that card's toughness. Ability ability = new EntersBattlefieldTriggeredAbility(new RotfeasterMaggotExileEffect(), false); - ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SelflessExorcist.java b/Mage.Sets/src/mage/cards/s/SelflessExorcist.java index 6461f6bf3a3..79e11cd257c 100644 --- a/Mage.Sets/src/mage/cards/s/SelflessExorcist.java +++ b/Mage.Sets/src/mage/cards/s/SelflessExorcist.java @@ -13,6 +13,7 @@ import mage.constants.Outcome; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.game.Game; import mage.game.permanent.Permanent; @@ -26,8 +27,6 @@ import java.util.UUID; */ public final class SelflessExorcist extends CardImpl { - private static final FilterCard filter = new FilterCreatureCard("creature card from a graveyard"); - public SelflessExorcist(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}"); @@ -38,7 +37,7 @@ public final class SelflessExorcist extends CardImpl { // {tap}: Exile target creature card from a graveyard. That card deals damage equal to its power to Selfless Exorcist. Ability ability = new SimpleActivatedAbility(new SelflessExorcistEffect(), new TapSourceCost()); - ability.addTarget(new TargetCardInGraveyard(filter)); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/ShambleBack.java b/Mage.Sets/src/mage/cards/s/ShambleBack.java index 76cf7ad4288..97a4d734b94 100644 --- a/Mage.Sets/src/mage/cards/s/ShambleBack.java +++ b/Mage.Sets/src/mage/cards/s/ShambleBack.java @@ -8,6 +8,7 @@ import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.game.permanent.token.ZombieToken; import mage.target.common.TargetCardInGraveyard; @@ -23,7 +24,7 @@ public final class ShambleBack extends CardImpl { // Exile target creature card from a graveyard. Create a 2/2 black Zombie creature token. You gain 2 life. this.getSpellAbility().addEffect(new ExileTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.getSpellAbility().addEffect(new CreateTokenEffect(new ZombieToken())); this.getSpellAbility().addEffect(new GainLifeEffect(2)); } diff --git a/Mage.Sets/src/mage/cards/t/TenebTheHarvester.java b/Mage.Sets/src/mage/cards/t/TenebTheHarvester.java index 4677a22e4ed..c8ba5e9d020 100644 --- a/Mage.Sets/src/mage/cards/t/TenebTheHarvester.java +++ b/Mage.Sets/src/mage/cards/t/TenebTheHarvester.java @@ -14,6 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.target.Target; import mage.target.common.TargetCardInGraveyard; @@ -37,7 +38,7 @@ public final class TenebTheHarvester extends CardImpl { // Whenever Teneb, the Harvester deals combat damage to a player, you may pay {2}{B}. If you do, put target creature card from a graveyard onto the battlefield under your control. Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility( new DoIfCostPaid(new ReturnFromGraveyardToBattlefieldTargetEffect(), new ManaCostsImpl<>("{2}{B}")), false); - Target target = new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard")); + Target target = new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD); ability.addTarget(target); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TheCrueltyOfGix.java b/Mage.Sets/src/mage/cards/t/TheCrueltyOfGix.java index c6db012b9aa..0f19e8d3931 100644 --- a/Mage.Sets/src/mage/cards/t/TheCrueltyOfGix.java +++ b/Mage.Sets/src/mage/cards/t/TheCrueltyOfGix.java @@ -13,6 +13,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.Predicates; import mage.target.common.TargetCardInGraveyard; @@ -26,7 +27,6 @@ import mage.target.common.TargetOpponent; public final class TheCrueltyOfGix extends CardImpl { private static final FilterCard filter = new FilterCard("creature or planeswalker card"); - private static final FilterCreatureCard filter2 = new FilterCreatureCard("creature card from a graveyard"); static { filter.add(Predicates.or( @@ -60,7 +60,7 @@ public final class TheCrueltyOfGix extends CardImpl { sagaAbility.addChapterEffect( this, SagaChapter.CHAPTER_III, SagaChapter.CHAPTER_III, new ReturnFromGraveyardToBattlefieldTargetEffect(), - new TargetCardInGraveyard(filter2) + new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD) ); this.addAbility(sagaAbility); } diff --git a/Mage.Sets/src/mage/cards/t/TheScarabGod.java b/Mage.Sets/src/mage/cards/t/TheScarabGod.java index 9a800fd6b5b..5f86b7d719a 100644 --- a/Mage.Sets/src/mage/cards/t/TheScarabGod.java +++ b/Mage.Sets/src/mage/cards/t/TheScarabGod.java @@ -28,6 +28,7 @@ import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.TargetController; import mage.constants.Zone; +import mage.filter.StaticFilters; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreatureCard; import mage.game.Game; @@ -60,7 +61,7 @@ public final class TheScarabGod extends CardImpl { // {2}{U}{B}: Exile target creature card from a graveyard. Create a token that's a copy of it, except it's a 4/4 black Zombie. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new TheScarabGodEffect2(), new ManaCostsImpl<>("{2}{U}{B}")); - ability.addTarget(new TargetCardInGraveyard(1, 1, new FilterCreatureCard("creature card from a graveyard"))); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); // When The Scarab God dies, return it to its owner's hand at the beginning of the next end step. diff --git a/Mage.Sets/src/mage/cards/t/ThrabenHeretic.java b/Mage.Sets/src/mage/cards/t/ThrabenHeretic.java index 4c172e80aaf..eb2fb56b274 100644 --- a/Mage.Sets/src/mage/cards/t/ThrabenHeretic.java +++ b/Mage.Sets/src/mage/cards/t/ThrabenHeretic.java @@ -12,6 +12,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.target.common.TargetCardInGraveyard; @@ -31,7 +32,7 @@ public final class ThrabenHeretic extends CardImpl { // {tap}: Exile target creature card from a graveyard. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TooGreedilyTooDeep.java b/Mage.Sets/src/mage/cards/t/TooGreedilyTooDeep.java index e335556962b..c26f333a848 100644 --- a/Mage.Sets/src/mage/cards/t/TooGreedilyTooDeep.java +++ b/Mage.Sets/src/mage/cards/t/TooGreedilyTooDeep.java @@ -23,14 +23,12 @@ import java.util.UUID; */ public final class TooGreedilyTooDeep extends CardImpl { - private static final FilterCard filter = new FilterCreatureCard("creature card from a graveyard"); - public TooGreedilyTooDeep(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{B}{R}"); // Put target creature card from a graveyard onto the battlefield under your control. That creature deals damage equal to its power to each other creature. this.getSpellAbility().addEffect(new TooGreedilyTooDeepEffect()); - this.getSpellAbility().addTarget(new TargetCardInGraveyard(filter)); + this.getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); } private TooGreedilyTooDeep(final TooGreedilyTooDeep card) { diff --git a/Mage.Sets/src/mage/cards/v/VatEmergence.java b/Mage.Sets/src/mage/cards/v/VatEmergence.java index 3a6d06b12ab..85820429eeb 100644 --- a/Mage.Sets/src/mage/cards/v/VatEmergence.java +++ b/Mage.Sets/src/mage/cards/v/VatEmergence.java @@ -6,6 +6,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.target.common.TargetCardInGraveyard; @@ -16,14 +17,12 @@ import java.util.UUID; */ public final class VatEmergence extends CardImpl { - private static final FilterCard filter = new FilterCreatureCard("creature card from a graveyard"); - public VatEmergence(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}"); // Put target creature card from a graveyard onto the battlefield under your control. Proliferate. this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInGraveyard(filter)); + this.getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.getSpellAbility().addEffect(new ProliferateEffect()); } diff --git a/Mage.Sets/src/mage/cards/v/VileRebirth.java b/Mage.Sets/src/mage/cards/v/VileRebirth.java index 6882ecaa763..5af900ac0d3 100644 --- a/Mage.Sets/src/mage/cards/v/VileRebirth.java +++ b/Mage.Sets/src/mage/cards/v/VileRebirth.java @@ -7,6 +7,7 @@ import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.game.permanent.token.ZombieToken; import mage.target.common.TargetCardInGraveyard; @@ -22,7 +23,7 @@ public final class VileRebirth extends CardImpl { // Exile target creature card from a graveyard. this.getSpellAbility().addEffect(new ExileTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); // Create a 2/2 black Zombie creature token. this.getSpellAbility().addEffect(new CreateTokenEffect(new ZombieToken())); diff --git a/Mage.Sets/src/mage/cards/v/VirtueOfPersistence.java b/Mage.Sets/src/mage/cards/v/VirtueOfPersistence.java index b2d0edccc40..180ad65bb4e 100644 --- a/Mage.Sets/src/mage/cards/v/VirtueOfPersistence.java +++ b/Mage.Sets/src/mage/cards/v/VirtueOfPersistence.java @@ -11,6 +11,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.TargetController; import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreatureCard; import mage.target.common.TargetCardInGraveyard; import mage.target.common.TargetCreaturePermanent; @@ -22,8 +23,6 @@ import java.util.UUID; */ public final class VirtueOfPersistence extends AdventureCard { - private static final FilterCard filter = new FilterCreatureCard("creature card from a graveyard"); - public VirtueOfPersistence(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, new CardType[]{CardType.SORCERY}, "{5}{B}{B}", "Locthwain Scorn", "{1}{B}"); @@ -31,7 +30,7 @@ public final class VirtueOfPersistence extends AdventureCard { Ability ability = new BeginningOfUpkeepTriggeredAbility( new ReturnFromGraveyardToBattlefieldTargetEffect(), TargetController.YOU, false ); - ability.addTarget(new TargetCardInGraveyard(filter)); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); // Locthwain Scorn diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index 03434870556..87c6b5af9a5 100644 --- a/Mage/src/main/java/mage/filter/StaticFilters.java +++ b/Mage/src/main/java/mage/filter/StaticFilters.java @@ -139,6 +139,12 @@ public final class StaticFilters { FILTER_CARD_ARTIFACT_FROM_YOUR_GRAVEYARD.setLockedFilter(true); } + public static final FilterCreatureCard FILTER_CARD_CREATURE_A_GRAVEYARD = new FilterCreatureCard("creature card from a graveyard"); + + static { + FILTER_CARD_CREATURE_A_GRAVEYARD.setLockedFilter(true); + } + public static final FilterNoncreatureCard FILTER_CARD_NON_CREATURE = new FilterNoncreatureCard(); static { diff --git a/Mage/src/main/java/mage/game/permanent/token/NighteyesTheDesecratorToken.java b/Mage/src/main/java/mage/game/permanent/token/NighteyesTheDesecratorToken.java index 209c22a0120..73ba1ce7adb 100644 --- a/Mage/src/main/java/mage/game/permanent/token/NighteyesTheDesecratorToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/NighteyesTheDesecratorToken.java @@ -11,7 +11,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.Zone; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInGraveyard; /** @@ -30,7 +30,7 @@ public final class NighteyesTheDesecratorToken extends TokenImpl { toughness = new MageInt(2); // {4}{B}: Put target creature card from a graveyard onto the battlefield under your control. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToBattlefieldTargetEffect(), new ManaCostsImpl<>("{4}{B}")); - ability.addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); + ability.addTarget(new TargetCardInGraveyard(StaticFilters.FILTER_CARD_CREATURE_A_GRAVEYARD)); this.addAbility(ability); }