From b9eb11860458a461f73013e97353a47e8bb482d4 Mon Sep 17 00:00:00 2001 From: "Alex W. Jackson" Date: Sun, 2 Jan 2022 02:07:31 -0500 Subject: [PATCH] Use StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD everywhere possible --- Mage.Sets/src/mage/cards/b/BalothNull.java | 5 +- Mage.Sets/src/mage/cards/b/BoneHarvest.java | 5 +- .../mage/cards/c/ChampionOfStraySouls.java | 3 +- Mage.Sets/src/mage/cards/c/Corpseweft.java | 5 +- Mage.Sets/src/mage/cards/d/DeadRevels.java | 7 +-- Mage.Sets/src/mage/cards/d/DeathsDuet.java | 5 +- Mage.Sets/src/mage/cards/d/DrudgeSpell.java | 10 ++-- Mage.Sets/src/mage/cards/d/DutifulReturn.java | 6 +-- Mage.Sets/src/mage/cards/e/EverAfter.java | 5 +- Mage.Sets/src/mage/cards/f/FindFinality.java | 9 ++-- Mage.Sets/src/mage/cards/f/FontOfReturn.java | 6 +-- .../src/mage/cards/f/FootbottomFeast.java | 7 ++- Mage.Sets/src/mage/cards/f/ForeverYoung.java | 54 ++----------------- Mage.Sets/src/mage/cards/g/Gravepurge.java | 6 +-- .../src/mage/cards/i/ImagesOfThePast.java | 4 +- Mage.Sets/src/mage/cards/m/MacabreWaltz.java | 11 ++-- .../src/mage/cards/m/MarchOfTheReturned.java | 6 +-- Mage.Sets/src/mage/cards/m/MorbidPlunder.java | 5 +- Mage.Sets/src/mage/cards/p/PipersMelody.java | 7 ++- .../src/mage/cards/r/Reinforcements.java | 5 +- Mage.Sets/src/mage/cards/r/RenewingTouch.java | 7 ++- .../src/mage/cards/s/SoulOfInnistrad.java | 7 ++- Mage.Sets/src/mage/cards/s/SoulSalvage.java | 5 +- Mage.Sets/src/mage/cards/s/SoulStrings.java | 4 +- Mage.Sets/src/mage/cards/s/SuturedGhoul.java | 5 +- .../src/mage/cards/u/UnmakeTheGraves.java | 8 ++- .../src/mage/cards/u/UrborgUprising.java | 5 +- Mage.Sets/src/mage/cards/w/WakeTheDead.java | 6 +-- Mage.Sets/src/mage/cards/w/WanderInDeath.java | 9 ++-- 29 files changed, 71 insertions(+), 156 deletions(-) diff --git a/Mage.Sets/src/mage/cards/b/BalothNull.java b/Mage.Sets/src/mage/cards/b/BalothNull.java index c34915f93b8..97c1ab790e6 100644 --- a/Mage.Sets/src/mage/cards/b/BalothNull.java +++ b/Mage.Sets/src/mage/cards/b/BalothNull.java @@ -1,4 +1,3 @@ - package mage.cards.b; import java.util.UUID; @@ -10,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.target.common.TargetCardInYourGraveyard; /** @@ -27,7 +26,7 @@ public final class BalothNull extends CardImpl { // When Baloth Null enters the battlefield, return up to two target creature cards from your graveyard to your hand. Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToHandTargetEffect(), false); - ability.addTarget(new TargetCardInYourGraveyard(0, 2, new FilterCreatureCard("creature cards from your graveyard"))); + ability.addTarget(new TargetCardInYourGraveyard(0, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BoneHarvest.java b/Mage.Sets/src/mage/cards/b/BoneHarvest.java index d914b6658be..abfb66a2c53 100644 --- a/Mage.Sets/src/mage/cards/b/BoneHarvest.java +++ b/Mage.Sets/src/mage/cards/b/BoneHarvest.java @@ -1,4 +1,3 @@ - package mage.cards.b; import java.util.UUID; @@ -9,7 +8,7 @@ import mage.abilities.effects.common.PutOnLibraryTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; /** @@ -23,7 +22,7 @@ public final class BoneHarvest extends CardImpl { // Put any number of target creature cards from your graveyard on top of your library. this.getSpellAbility().addEffect(new PutOnLibraryTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, new FilterCreatureCard("creature cards from your graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); // Draw a card at the beginning of the next turn's upkeep. this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false)); diff --git a/Mage.Sets/src/mage/cards/c/ChampionOfStraySouls.java b/Mage.Sets/src/mage/cards/c/ChampionOfStraySouls.java index be43b08456e..e6a66d2b748 100644 --- a/Mage.Sets/src/mage/cards/c/ChampionOfStraySouls.java +++ b/Mage.Sets/src/mage/cards/c/ChampionOfStraySouls.java @@ -17,7 +17,6 @@ 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.mageobject.AnotherPredicate; import mage.game.Game; import mage.target.common.TargetCardInYourGraveyard; @@ -84,7 +83,7 @@ enum ChampionOfStraySoulsAdjuster implements TargetAdjuster { if (effect instanceof ReturnFromGraveyardToBattlefieldTargetEffect) { int xValue = GetXValue.instance.calculate(game, ability, null); ability.getTargets().clear(); - ability.addTarget(new TargetCardInYourGraveyard(xValue, xValue, new FilterCreatureCard("creature cards from your graveyard"))); + ability.addTarget(new TargetCardInYourGraveyard(xValue, xValue, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); } } } diff --git a/Mage.Sets/src/mage/cards/c/Corpseweft.java b/Mage.Sets/src/mage/cards/c/Corpseweft.java index 75c0672c613..d5037d2e3cf 100644 --- a/Mage.Sets/src/mage/cards/c/Corpseweft.java +++ b/Mage.Sets/src/mage/cards/c/Corpseweft.java @@ -1,4 +1,3 @@ - package mage.cards.c; import java.util.UUID; @@ -14,7 +13,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.token.CorpseweftZombieToken; import mage.players.Player; @@ -31,7 +30,7 @@ public final class Corpseweft extends CardImpl { // {1}{B}, Exile one or more creature cards from your graveyard: Create a tapped X/X black Zombie Horror creature token, where X is twice the number of cards exiled this way. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CorpseweftEffect(), new ManaCostsImpl("{1}{B}")); - ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(1, Integer.MAX_VALUE, new FilterCreatureCard("creature cards from your graveyard")))); + ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(1, Integer.MAX_VALUE, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DeadRevels.java b/Mage.Sets/src/mage/cards/d/DeadRevels.java index b0c8368e773..87422d87769 100644 --- a/Mage.Sets/src/mage/cards/d/DeadRevels.java +++ b/Mage.Sets/src/mage/cards/d/DeadRevels.java @@ -6,8 +6,7 @@ import mage.abilities.keyword.SpectacleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; import java.util.UUID; @@ -17,14 +16,12 @@ import java.util.UUID; */ public final class DeadRevels extends CardImpl { - private static final FilterCard filter = new FilterCreatureCard("creature cards from your graveyard"); - public DeadRevels(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{B}"); // Return up to two target creature cards from your graveyard to your hand. this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, filter)); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); // Spectacle {1}{B} this.addAbility(new SpectacleAbility(this, new ManaCostsImpl("{1}{B}"))); diff --git a/Mage.Sets/src/mage/cards/d/DeathsDuet.java b/Mage.Sets/src/mage/cards/d/DeathsDuet.java index dfc50146cf8..0e8f8683e12 100644 --- a/Mage.Sets/src/mage/cards/d/DeathsDuet.java +++ b/Mage.Sets/src/mage/cards/d/DeathsDuet.java @@ -1,4 +1,3 @@ - package mage.cards.d; import java.util.UUID; @@ -6,7 +5,7 @@ import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; /** @@ -20,7 +19,7 @@ public final class DeathsDuet extends CardImpl { // Return two target creature cards from your graveyard to your hand. this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(2, new FilterCreatureCard("creature cards from your graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); } private DeathsDuet(final DeathsDuet card) { diff --git a/Mage.Sets/src/mage/cards/d/DrudgeSpell.java b/Mage.Sets/src/mage/cards/d/DrudgeSpell.java index d559bace2e7..c4632f2ca09 100644 --- a/Mage.Sets/src/mage/cards/d/DrudgeSpell.java +++ b/Mage.Sets/src/mage/cards/d/DrudgeSpell.java @@ -1,4 +1,3 @@ - package mage.cards.d; import java.util.UUID; @@ -6,17 +5,18 @@ import mage.abilities.Ability; import mage.abilities.common.LeavesBattlefieldTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.ExileFromGraveCost; -import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.ColoredManaSymbol; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.filter.predicate.permanent.TokenPredicate; import mage.game.permanent.token.SkeletonRegenerateToken; import mage.target.common.TargetCardInYourGraveyard; @@ -40,8 +40,8 @@ public final class DrudgeSpell extends CardImpl { // {B}, Exile two creature cards from your graveyard: Create a 1/1 black Skeleton creature token. It has "{B}: Regenerate this creature." Effect effect = new CreateTokenEffect(new SkeletonRegenerateToken()); effect.setText("create a 1/1 black Skeleton creature token. It has \"{B}: Regenerate this creature.\""); - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{B}")); - ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(2, 2, new FilterCreatureCard("creature cards from your graveyard")))); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ColoredManaCost(ColoredManaSymbol.B)); + ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(2, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD))); this.addAbility(ability); // When Drudge Spell leaves the battlefield, destroy all Skeleton tokens. They can't be regenerated. diff --git a/Mage.Sets/src/mage/cards/d/DutifulReturn.java b/Mage.Sets/src/mage/cards/d/DutifulReturn.java index 33577242618..8bd52baff68 100644 --- a/Mage.Sets/src/mage/cards/d/DutifulReturn.java +++ b/Mage.Sets/src/mage/cards/d/DutifulReturn.java @@ -1,4 +1,3 @@ - package mage.cards.d; import java.util.UUID; @@ -6,7 +5,7 @@ import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; /** @@ -18,10 +17,9 @@ public final class DutifulReturn extends CardImpl { public DutifulReturn(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}"); - // Return up to two target creature cards from your graveyard to your hand. this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, new FilterCreatureCard("creature cards from your graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); } private DutifulReturn(final DutifulReturn card) { diff --git a/Mage.Sets/src/mage/cards/e/EverAfter.java b/Mage.Sets/src/mage/cards/e/EverAfter.java index f27e9391d4d..687eeae9a9e 100644 --- a/Mage.Sets/src/mage/cards/e/EverAfter.java +++ b/Mage.Sets/src/mage/cards/e/EverAfter.java @@ -1,4 +1,3 @@ - package mage.cards.e; import java.util.UUID; @@ -9,7 +8,7 @@ import mage.abilities.effects.common.continuous.BecomesBlackZombieAdditionEffect import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; /** @@ -24,7 +23,7 @@ public final class EverAfter extends CardImpl { // Return up to two target creature cards from your graveyard to the battlefield. Each of those creatures is a black Zombie in addition // to its other colors and types. Put Ever After on the bottom of its owner's library. this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, new FilterCreatureCard("creature cards from your graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); Effect effect = new BecomesBlackZombieAdditionEffect(); effect.setText("Each of those creatures is a black Zombie in addition to its other colors and types"); this.getSpellAbility().addEffect(effect); diff --git a/Mage.Sets/src/mage/cards/f/FindFinality.java b/Mage.Sets/src/mage/cards/f/FindFinality.java index 5263dddebf5..47f69b73e71 100644 --- a/Mage.Sets/src/mage/cards/f/FindFinality.java +++ b/Mage.Sets/src/mage/cards/f/FindFinality.java @@ -14,8 +14,7 @@ import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.SpellAbilityType; import mage.counters.CounterType; -import mage.filter.FilterCard; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.game.Game; import mage.players.Player; import mage.target.Target; @@ -29,9 +28,6 @@ import mage.target.targetpointer.FixedTarget; */ public final class FindFinality extends SplitCard { - private static final FilterCard filter - = new FilterCreatureCard("creature cards from your graveyard"); - public FindFinality(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{B/G}{B/G}", "{4}{B}{G}", SpellAbilityType.SPLIT); @@ -41,7 +37,7 @@ public final class FindFinality extends SplitCard { new ReturnFromGraveyardToHandTargetEffect() ); this.getLeftHalfCard().getSpellAbility().addTarget( - new TargetCardInYourGraveyard(0, 2, filter) + new TargetCardInYourGraveyard(0, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD) ); // Finality @@ -86,6 +82,7 @@ class FinalityEffect extends OneShotEffect { return false; } Target target = new TargetControlledCreaturePermanent(0, 1); + target.setNotTarget(true); if (player.choose( Outcome.BoostCreature, target, source.getSourceId(), game )) { diff --git a/Mage.Sets/src/mage/cards/f/FontOfReturn.java b/Mage.Sets/src/mage/cards/f/FontOfReturn.java index 8c5cbcd0d54..1491cd26268 100644 --- a/Mage.Sets/src/mage/cards/f/FontOfReturn.java +++ b/Mage.Sets/src/mage/cards/f/FontOfReturn.java @@ -1,4 +1,3 @@ - package mage.cards.f; import java.util.UUID; @@ -11,7 +10,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.target.common.TargetCardInYourGraveyard; /** @@ -23,11 +22,10 @@ public final class FontOfReturn extends CardImpl { public FontOfReturn(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}"); - // {3}{B}, Sacrifice Font of Return: Return up to three target creature cards from your graveyard to your hand. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToHandTargetEffect(), new ManaCostsImpl("{3}{B}")); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetCardInYourGraveyard(0, 3, new FilterCreatureCard("creature cards from your graveyard"))); + ability.addTarget(new TargetCardInYourGraveyard(0, 3, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FootbottomFeast.java b/Mage.Sets/src/mage/cards/f/FootbottomFeast.java index 25af502c72f..e8c1078ee90 100644 --- a/Mage.Sets/src/mage/cards/f/FootbottomFeast.java +++ b/Mage.Sets/src/mage/cards/f/FootbottomFeast.java @@ -1,4 +1,3 @@ - package mage.cards.f; import java.util.UUID; @@ -7,7 +6,7 @@ import mage.abilities.effects.common.PutOnLibraryTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; /** @@ -21,8 +20,8 @@ public final class FootbottomFeast extends CardImpl { // Put any number of target creature cards from your graveyard on top of your library. this.getSpellAbility().addEffect(new PutOnLibraryTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, new FilterCreatureCard("creature cards from your graveyard"))); - + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); + // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); } diff --git a/Mage.Sets/src/mage/cards/f/ForeverYoung.java b/Mage.Sets/src/mage/cards/f/ForeverYoung.java index 144e81ebf09..c90b5c59023 100644 --- a/Mage.Sets/src/mage/cards/f/ForeverYoung.java +++ b/Mage.Sets/src/mage/cards/f/ForeverYoung.java @@ -1,24 +1,14 @@ package mage.cards.f; -import mage.abilities.Ability; -import mage.abilities.effects.OneShotEffect; +import java.util.UUID; import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.PutOnLibraryTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.cards.CardsImpl; import mage.constants.CardType; -import mage.constants.Outcome; import mage.filter.StaticFilters; -import mage.game.Game; -import mage.players.Player; -import mage.target.Target; import mage.target.common.TargetCardInYourGraveyard; -import java.util.Collection; -import java.util.Objects; -import java.util.UUID; -import java.util.stream.Collectors; - /** * @author TheElk801 */ @@ -28,10 +18,8 @@ public final class ForeverYoung extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}"); // Put any number of target creature cards from your graveyard on top of your library. - this.getSpellAbility().addEffect(new ForeverYoungEffect()); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard( - 0, Integer.MAX_VALUE, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD - )); + this.getSpellAbility().addEffect(new PutOnLibraryTargetEffect(true)); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); @@ -46,37 +34,3 @@ public final class ForeverYoung extends CardImpl { return new ForeverYoung(this); } } - -class ForeverYoungEffect extends OneShotEffect { - - ForeverYoungEffect() { - super(Outcome.Benefit); - staticText = "Put any number of target creature cards from your graveyard on top of your library"; - } - - private ForeverYoungEffect(final ForeverYoungEffect effect) { - super(effect); - } - - @Override - public ForeverYoungEffect copy() { - return new ForeverYoungEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(source.getControllerId()); - if (player == null) { - return false; - } - return player.putCardsOnTopOfLibrary(new CardsImpl( - source.getTargets() - .stream() - .map(Target::getTargets) - .flatMap(Collection::stream) - .map(game::getCard) - .filter(Objects::nonNull) - .collect(Collectors.toSet()) - ), game, source, true); - } -} \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/g/Gravepurge.java b/Mage.Sets/src/mage/cards/g/Gravepurge.java index 503cb18eaaf..78684394a82 100644 --- a/Mage.Sets/src/mage/cards/g/Gravepurge.java +++ b/Mage.Sets/src/mage/cards/g/Gravepurge.java @@ -1,4 +1,3 @@ - package mage.cards.g; import java.util.UUID; @@ -7,7 +6,7 @@ import mage.abilities.effects.common.PutOnLibraryTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; /** @@ -19,10 +18,9 @@ public final class Gravepurge extends CardImpl { public Gravepurge(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}"); - // Put any number of target creature cards from your graveyard on top of your library. this.getSpellAbility().addEffect(new PutOnLibraryTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, new FilterCreatureCard("creature cards from your graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); } diff --git a/Mage.Sets/src/mage/cards/i/ImagesOfThePast.java b/Mage.Sets/src/mage/cards/i/ImagesOfThePast.java index 52445298b8a..fad38ad15ba 100644 --- a/Mage.Sets/src/mage/cards/i/ImagesOfThePast.java +++ b/Mage.Sets/src/mage/cards/i/ImagesOfThePast.java @@ -11,7 +11,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; 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.TargetCardInYourGraveyard; @@ -27,7 +27,7 @@ public final class ImagesOfThePast extends CardImpl { // Return up to two target creature cards from your graveyard to the battlefield, then exile those creatures. this.getSpellAbility().addEffect(new ImagesOfThePastEffect()); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, new FilterCreatureCard("creature cards from your graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); } diff --git a/Mage.Sets/src/mage/cards/m/MacabreWaltz.java b/Mage.Sets/src/mage/cards/m/MacabreWaltz.java index fe0cb2aa6e0..af85cacd153 100644 --- a/Mage.Sets/src/mage/cards/m/MacabreWaltz.java +++ b/Mage.Sets/src/mage/cards/m/MacabreWaltz.java @@ -1,14 +1,11 @@ - package mage.cards.m; - import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.abilities.effects.common.discard.DiscardControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; import java.util.UUID; @@ -18,15 +15,13 @@ import java.util.UUID; */ public final class MacabreWaltz extends CardImpl { - private static final FilterCard filter = new FilterCreatureCard("creature cards from your graveyard"); - public MacabreWaltz(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}"); // Return up to two target creature cards from your graveyard to your hand, then discard a card. this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, filter)); - this.getSpellAbility().addEffect(new DiscardControllerEffect(1).setText(", then discard a card")); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); + this.getSpellAbility().addEffect(new DiscardControllerEffect(1).concatBy(", then")); } private MacabreWaltz(final MacabreWaltz card) { diff --git a/Mage.Sets/src/mage/cards/m/MarchOfTheReturned.java b/Mage.Sets/src/mage/cards/m/MarchOfTheReturned.java index cf98549e7ae..bd739cced9b 100644 --- a/Mage.Sets/src/mage/cards/m/MarchOfTheReturned.java +++ b/Mage.Sets/src/mage/cards/m/MarchOfTheReturned.java @@ -1,4 +1,3 @@ - package mage.cards.m; import java.util.UUID; @@ -6,7 +5,7 @@ import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; /** @@ -18,10 +17,9 @@ public final class MarchOfTheReturned extends CardImpl { public MarchOfTheReturned(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{B}"); - // Return up to two target creature cards from your graveyard to your hand. this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0,2, new FilterCreatureCard("creature cards from your graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); } private MarchOfTheReturned(final MarchOfTheReturned card) { diff --git a/Mage.Sets/src/mage/cards/m/MorbidPlunder.java b/Mage.Sets/src/mage/cards/m/MorbidPlunder.java index d36a0a1220e..6a151cdcc6c 100644 --- a/Mage.Sets/src/mage/cards/m/MorbidPlunder.java +++ b/Mage.Sets/src/mage/cards/m/MorbidPlunder.java @@ -1,4 +1,3 @@ - package mage.cards.m; import java.util.UUID; @@ -6,7 +5,7 @@ import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; /** @@ -21,7 +20,7 @@ public final class MorbidPlunder extends CardImpl { // Return up to two target creature cards from your graveyard to your hand. this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, new FilterCreatureCard("creature cards from your graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); } private MorbidPlunder(final MorbidPlunder card) { diff --git a/Mage.Sets/src/mage/cards/p/PipersMelody.java b/Mage.Sets/src/mage/cards/p/PipersMelody.java index 824f1a10833..6e4101121d3 100644 --- a/Mage.Sets/src/mage/cards/p/PipersMelody.java +++ b/Mage.Sets/src/mage/cards/p/PipersMelody.java @@ -1,4 +1,3 @@ - package mage.cards.p; import java.util.UUID; @@ -10,7 +9,7 @@ import mage.cards.CardsImpl; import mage.constants.CardType; 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.TargetCardInYourGraveyard; @@ -26,7 +25,7 @@ public final class PipersMelody extends CardImpl { // Shuffle any number of target creature cards from your graveyard into your library. this.getSpellAbility().addEffect(new PipersMelodyShuffleEffect()); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, new FilterCreatureCard("creature cards from your graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); } private PipersMelody(final PipersMelody card) { @@ -43,7 +42,7 @@ class PipersMelodyShuffleEffect extends OneShotEffect { PipersMelodyShuffleEffect() { super(Outcome.Neutral); - this.staticText = "Shuffle any number of target cards from your graveyard into your library"; + this.staticText = "Shuffle any number of target creature cards from your graveyard into your library"; } PipersMelodyShuffleEffect(final PipersMelodyShuffleEffect effect) { diff --git a/Mage.Sets/src/mage/cards/r/Reinforcements.java b/Mage.Sets/src/mage/cards/r/Reinforcements.java index ed1e15e309b..1617387dbb7 100644 --- a/Mage.Sets/src/mage/cards/r/Reinforcements.java +++ b/Mage.Sets/src/mage/cards/r/Reinforcements.java @@ -1,4 +1,3 @@ - package mage.cards.r; import java.util.UUID; @@ -6,7 +5,7 @@ import mage.abilities.effects.common.PutOnLibraryTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; /** @@ -20,7 +19,7 @@ public final class Reinforcements extends CardImpl { // Put up to three target creature cards from your graveyard on top of your library. this.getSpellAbility().addEffect(new PutOnLibraryTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 3, new FilterCreatureCard("creature cards from your graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 3, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); } private Reinforcements(final Reinforcements card) { diff --git a/Mage.Sets/src/mage/cards/r/RenewingTouch.java b/Mage.Sets/src/mage/cards/r/RenewingTouch.java index f023afe71c3..058b1fa9d36 100644 --- a/Mage.Sets/src/mage/cards/r/RenewingTouch.java +++ b/Mage.Sets/src/mage/cards/r/RenewingTouch.java @@ -1,4 +1,3 @@ - package mage.cards.r; import java.util.UUID; @@ -10,7 +9,7 @@ import mage.cards.CardsImpl; import mage.constants.CardType; 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.TargetCardInYourGraveyard; @@ -26,7 +25,7 @@ public final class RenewingTouch extends CardImpl { // Shuffle any number of target creature cards from your graveyard into your library. this.getSpellAbility().addEffect(new RenewingTouchEffect()); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, new FilterCreatureCard("creature cards from your graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); } private RenewingTouch(final RenewingTouch card) { @@ -43,7 +42,7 @@ class RenewingTouchEffect extends OneShotEffect { RenewingTouchEffect() { super(Outcome.Neutral); - this.staticText = "Shuffle any number of target cards from your graveyard into your library"; + this.staticText = "Shuffle any number of target creature cards from your graveyard into your library"; } RenewingTouchEffect(final RenewingTouchEffect effect) { diff --git a/Mage.Sets/src/mage/cards/s/SoulOfInnistrad.java b/Mage.Sets/src/mage/cards/s/SoulOfInnistrad.java index 8323d3ae7b9..618d80d18d7 100644 --- a/Mage.Sets/src/mage/cards/s/SoulOfInnistrad.java +++ b/Mage.Sets/src/mage/cards/s/SoulOfInnistrad.java @@ -1,4 +1,3 @@ - package mage.cards.s; import java.util.UUID; @@ -14,7 +13,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; /** @@ -34,13 +33,13 @@ public final class SoulOfInnistrad extends CardImpl { this.addAbility(DeathtouchAbility.getInstance()); // {3}{B}{B}: Return up to three target creature cards from your graveyard to your hand. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToHandTargetEffect(), new ManaCostsImpl("{3}{B}{B}")); - ability.addTarget(new TargetCardInYourGraveyard(0, 3, new FilterCreatureCard("creature cards from your graveyard"))); + ability.addTarget(new TargetCardInYourGraveyard(0, 3, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); this.addAbility(ability); // {3}{B}{B}, Exile Soul of Innistrad from your graveyard: Return up to three target creature cards from your graveyard to your hand. ability = new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnFromGraveyardToHandTargetEffect(), new ManaCostsImpl("{3}{B}{B}")); ability.addCost(new ExileSourceFromGraveCost()); - ability.addTarget(new TargetCardInYourGraveyard(0, 3, new FilterCreatureCard("creature cards from your graveyard"))); + ability.addTarget(new TargetCardInYourGraveyard(0, 3, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SoulSalvage.java b/Mage.Sets/src/mage/cards/s/SoulSalvage.java index c520775e3fc..edaba3341d6 100644 --- a/Mage.Sets/src/mage/cards/s/SoulSalvage.java +++ b/Mage.Sets/src/mage/cards/s/SoulSalvage.java @@ -1,4 +1,3 @@ - package mage.cards.s; import java.util.UUID; @@ -6,7 +5,7 @@ import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; /** @@ -20,7 +19,7 @@ public final class SoulSalvage extends CardImpl { // Return up to two target creature cards from your graveyard to your hand. this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, new FilterCreatureCard("creature cards from your graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); } private SoulSalvage(final SoulSalvage card) { diff --git a/Mage.Sets/src/mage/cards/s/SoulStrings.java b/Mage.Sets/src/mage/cards/s/SoulStrings.java index 2dc59f32dee..4baa0b5c03d 100644 --- a/Mage.Sets/src/mage/cards/s/SoulStrings.java +++ b/Mage.Sets/src/mage/cards/s/SoulStrings.java @@ -6,7 +6,7 @@ import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; import java.util.UUID; @@ -25,7 +25,7 @@ public final class SoulStrings extends CardImpl { Effect effect = new DoUnlessAnyPlayerPaysEffect( new ReturnFromGraveyardToHandTargetEffect(), ManacostVariableValue.REGULAR); this.getSpellAbility().addEffect(effect); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(2, new FilterCreatureCard("creature cards from your graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); } private SoulStrings(final SoulStrings card) { diff --git a/Mage.Sets/src/mage/cards/s/SuturedGhoul.java b/Mage.Sets/src/mage/cards/s/SuturedGhoul.java index 1fe4a7a394a..a910577a8f8 100644 --- a/Mage.Sets/src/mage/cards/s/SuturedGhoul.java +++ b/Mage.Sets/src/mage/cards/s/SuturedGhoul.java @@ -1,4 +1,3 @@ - package mage.cards.s; import java.util.UUID; @@ -21,7 +20,7 @@ import mage.constants.SubType; import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -82,7 +81,7 @@ class SuturedGhoulEffect extends OneShotEffect { return false; } if (!controller.getGraveyard().isEmpty()) { - TargetCardInYourGraveyard target = new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, new FilterCreatureCard("creature cards from your graveyard")); + TargetCardInYourGraveyard target = new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD); if (controller.chooseTarget(Outcome.Benefit, target, source, game)) { int count = 0; for (UUID uuid : target.getTargets()) { diff --git a/Mage.Sets/src/mage/cards/u/UnmakeTheGraves.java b/Mage.Sets/src/mage/cards/u/UnmakeTheGraves.java index 55901c0dffb..3c3ba3e79df 100644 --- a/Mage.Sets/src/mage/cards/u/UnmakeTheGraves.java +++ b/Mage.Sets/src/mage/cards/u/UnmakeTheGraves.java @@ -1,4 +1,3 @@ - package mage.cards.u; import java.util.UUID; @@ -7,7 +6,7 @@ import mage.abilities.keyword.ConvokeAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; /** @@ -19,13 +18,12 @@ public final class UnmakeTheGraves extends CardImpl { public UnmakeTheGraves(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{B}"); - // Convoke this.addAbility(new ConvokeAbility()); - + // Return up to two target creature cards from your graveyard to your hand. this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, new FilterCreatureCard("creature cards from your graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); } private UnmakeTheGraves(final UnmakeTheGraves card) { diff --git a/Mage.Sets/src/mage/cards/u/UrborgUprising.java b/Mage.Sets/src/mage/cards/u/UrborgUprising.java index 4bd67178ba7..ba255c80bf2 100644 --- a/Mage.Sets/src/mage/cards/u/UrborgUprising.java +++ b/Mage.Sets/src/mage/cards/u/UrborgUprising.java @@ -1,4 +1,3 @@ - package mage.cards.u; import java.util.UUID; @@ -7,7 +6,7 @@ import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; /** @@ -20,7 +19,7 @@ public final class UrborgUprising extends CardImpl { // Return up to two target creature cards from your graveyard to your hand. this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect()); - this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, new FilterCreatureCard("creature cards from your graveyard"))); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); diff --git a/Mage.Sets/src/mage/cards/w/WakeTheDead.java b/Mage.Sets/src/mage/cards/w/WakeTheDead.java index 69b9add820e..2826698f6d8 100644 --- a/Mage.Sets/src/mage/cards/w/WakeTheDead.java +++ b/Mage.Sets/src/mage/cards/w/WakeTheDead.java @@ -17,8 +17,7 @@ import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.TurnPhase; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -58,12 +57,11 @@ public final class WakeTheDead extends CardImpl { enum WakeTheDeadAdjuster implements TargetAdjuster { instance; - private static final FilterCard filter = new FilterCreatureCard("creature cards from your graveyard"); @Override public void adjustTargets(Ability ability, Game game) { ability.getTargets().clear(); - ability.addTarget(new TargetCardInYourGraveyard(ability.getManaCostsToPay().getX(), filter)); + ability.addTarget(new TargetCardInYourGraveyard(ability.getManaCostsToPay().getX(), StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); } } diff --git a/Mage.Sets/src/mage/cards/w/WanderInDeath.java b/Mage.Sets/src/mage/cards/w/WanderInDeath.java index f7550907403..4001fb4f2be 100644 --- a/Mage.Sets/src/mage/cards/w/WanderInDeath.java +++ b/Mage.Sets/src/mage/cards/w/WanderInDeath.java @@ -1,14 +1,13 @@ - package mage.cards.w; import java.util.UUID; -import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.abilities.keyword.CyclingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterCreatureCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; /** @@ -21,11 +20,11 @@ public final class WanderInDeath extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}"); // Return up to two target creature cards from your graveyard to your hand. - getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, new FilterCreatureCard("creature cards from your graveyard"))); + getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)); getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect()); // Cycling {2} - this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}"))); + this.addAbility(new CyclingAbility(new GenericManaCost(2))); } private WanderInDeath(final WanderInDeath card) {