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);
}