diff --git a/Mage.Sets/src/mage/cards/a/AerialSurveyor.java b/Mage.Sets/src/mage/cards/a/AerialSurveyor.java index b8199c1a008..3313a035a90 100644 --- a/Mage.Sets/src/mage/cards/a/AerialSurveyor.java +++ b/Mage.Sets/src/mage/cards/a/AerialSurveyor.java @@ -13,10 +13,8 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.FilterCard; import mage.filter.FilterPermanent; import mage.filter.StaticFilters; -import mage.filter.common.FilterBasicLandCard; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.permanent.DefendingPlayerControlsSourceAttackingPredicate; import mage.game.Controllable; @@ -32,8 +30,6 @@ import java.util.stream.Collectors; */ public final class AerialSurveyor extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard(SubType.PLAINS); - public AerialSurveyor(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}{W}"); @@ -45,7 +41,7 @@ public final class AerialSurveyor extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Whenever Aerial Surveyor attacks, if defending player controls more lands than you, search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle. - this.addAbility(new AttacksTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true)) + this.addAbility(new AttacksTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true)) .withInterveningIf(AerialSurveyorCondition.instance) .addHint(LandsYouControlHint.instance) .addHint(AerialSurveyorHint.instance)); diff --git a/Mage.Sets/src/mage/cards/a/AmbitiousFarmhand.java b/Mage.Sets/src/mage/cards/a/AmbitiousFarmhand.java index cf911245785..b92a884539b 100644 --- a/Mage.Sets/src/mage/cards/a/AmbitiousFarmhand.java +++ b/Mage.Sets/src/mage/cards/a/AmbitiousFarmhand.java @@ -14,8 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.SuperType; -import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInLibrary; import java.util.UUID; @@ -25,13 +24,6 @@ import java.util.UUID; */ public final class AmbitiousFarmhand extends CardImpl { - private static final FilterCard filter = new FilterCard("basic Plains card"); - - static { - filter.add(SuperType.BASIC.getPredicate()); - filter.add(SubType.PLAINS.getPredicate()); - } - public AmbitiousFarmhand(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}"); @@ -43,7 +35,7 @@ public final class AmbitiousFarmhand extends CardImpl { // When Ambitious Farmhand enters the battlefield, you may search your library for a basic Plains card, reveal it, put it into your hand, then shuffle. this.addAbility(new EntersBattlefieldTriggeredAbility( - new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true), true + new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true), true )); // Coven—{1}{W}{W}: Transform Ambitious Farmhand. Activate only if you control three or more creatures with different powers. diff --git a/Mage.Sets/src/mage/cards/a/ArchaeomancersMap.java b/Mage.Sets/src/mage/cards/a/ArchaeomancersMap.java index 27cfcac06b0..221acf4cf58 100644 --- a/Mage.Sets/src/mage/cards/a/ArchaeomancersMap.java +++ b/Mage.Sets/src/mage/cards/a/ArchaeomancersMap.java @@ -9,10 +9,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.SuperType; import mage.constants.TargetController; -import mage.filter.FilterCard; import mage.filter.FilterPermanent; import mage.filter.StaticFilters; import mage.filter.common.FilterLandPermanent; @@ -26,13 +23,10 @@ import java.util.UUID; */ public final class ArchaeomancersMap extends CardImpl { - private static final FilterCard filter = new FilterCard("basic Plains cards"); - private static final FilterPermanent filter2 = new FilterLandPermanent("a land an opponent controls"); + private static final FilterPermanent filter = new FilterLandPermanent("a land an opponent controls"); static { - filter.add(SubType.PLAINS.getPredicate()); - filter.add(SuperType.BASIC.getPredicate()); - filter2.add(TargetController.OPPONENT.getControllerPredicate()); + filter.add(TargetController.OPPONENT.getControllerPredicate()); } public ArchaeomancersMap(UUID ownerId, CardSetInfo setInfo) { @@ -40,12 +34,12 @@ public final class ArchaeomancersMap extends CardImpl { // When Archaeomancer's Map enters the battlefield, search your library for up to two basic Plains cards, reveal them, put them into your hand, then shuffle. this.addAbility(new EntersBattlefieldTriggeredAbility( - new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, filter), true) + new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_PLAINS), true) )); // Whenever a land enters the battlefield under an opponent's control, if that player controls more lands than you, you may put a land card from your hand onto the battlefield. this.addAbility(new EntersBattlefieldAllTriggeredAbility( - new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_LAND_A), filter2 + new PutCardFromHandOntoBattlefieldEffect(StaticFilters.FILTER_CARD_LAND_A), filter ).withInterveningIf(ArchaeomancersMapCondition.instance)); } diff --git a/Mage.Sets/src/mage/cards/b/BantPanorama.java b/Mage.Sets/src/mage/cards/b/BantPanorama.java index dbc71082e43..87ff6af34b0 100644 --- a/Mage.Sets/src/mage/cards/b/BantPanorama.java +++ b/Mage.Sets/src/mage/cards/b/BantPanorama.java @@ -1,7 +1,5 @@ - package mage.cards.b; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; @@ -11,11 +9,15 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.target.common.TargetCardInLibrary; +import java.util.UUID; + /** * @author North */ @@ -24,7 +26,6 @@ public final class BantPanorama extends CardImpl { private static final FilterCard filter = new FilterCard("a basic Forest, Plains, or Island card"); static { - filter.add(CardType.LAND.getPredicate()); filter.add(SuperType.BASIC.getPredicate()); filter.add(Predicates.or( SubType.FOREST.getPredicate(), diff --git a/Mage.Sets/src/mage/cards/b/BloomvineRegent.java b/Mage.Sets/src/mage/cards/b/BloomvineRegent.java index 88f7e8cb72d..1b1e0b1ed7c 100644 --- a/Mage.Sets/src/mage/cards/b/BloomvineRegent.java +++ b/Mage.Sets/src/mage/cards/b/BloomvineRegent.java @@ -1,40 +1,31 @@ package mage.cards.b; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.EntersBattlefieldThisOrAnotherTriggeredAbility; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.search.SearchLibraryPutOntoBattlefieldTappedRestInHandEffect; -import mage.cards.OmenCard; -import mage.constants.SubType; import mage.abilities.keyword.FlyingAbility; -import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.cards.OmenCard; import mage.constants.CardType; -import mage.constants.SuperType; +import mage.constants.SubType; import mage.filter.FilterCard; -import mage.filter.common.FilterBasicLandCard; -import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.common.FilterBasicCard; import mage.filter.common.FilterCreaturePermanent; -import mage.target.Target; import mage.target.common.TargetCardInLibrary; +import java.util.UUID; + /** - * * @author Jmlundeen */ public final class BloomvineRegent extends OmenCard { - private static final FilterCard filter = new FilterCard("basic Forest cards"); - - static { - filter.add(SubType.FOREST.getPredicate()); - filter.add(SuperType.BASIC.getPredicate()); - } + private static final FilterCard filter = new FilterBasicCard(SubType.FOREST, "basic Forest cards"); public BloomvineRegent(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, new CardType[]{CardType.SORCERY}, "{3}{G}{G}", "Claim Territory", "{2}{G}"); - + this.subtype.add(SubType.DRAGON); this.power = new MageInt(4); this.toughness = new MageInt(5); diff --git a/Mage.Sets/src/mage/cards/b/BoseijuReachesSkyward.java b/Mage.Sets/src/mage/cards/b/BoseijuReachesSkyward.java index a7d623109af..120cf07a3ab 100644 --- a/Mage.Sets/src/mage/cards/b/BoseijuReachesSkyward.java +++ b/Mage.Sets/src/mage/cards/b/BoseijuReachesSkyward.java @@ -10,9 +10,9 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SagaChapter; import mage.constants.SubType; -import mage.constants.SuperType; import mage.filter.FilterCard; -import mage.filter.common.FilterLandCard; +import mage.filter.StaticFilters; +import mage.filter.common.FilterBasicCard; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetCardInYourGraveyard; @@ -23,13 +23,7 @@ import java.util.UUID; */ public final class BoseijuReachesSkyward extends CardImpl { - private static final FilterCard filter = new FilterCard("basic Forest cards"); - private static final FilterCard filter2 = new FilterLandCard("land card from your graveyard"); - - static { - filter.add(SuperType.BASIC.getPredicate()); - filter.add(SubType.FOREST.getPredicate()); - } + private static final FilterCard filter = new FilterBasicCard(SubType.FOREST, "basic Forest cards"); public BoseijuReachesSkyward(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}"); @@ -52,7 +46,7 @@ public final class BoseijuReachesSkyward extends CardImpl { sagaAbility.addChapterEffect( this, SagaChapter.CHAPTER_II, SagaChapter.CHAPTER_II, new PutOnLibraryTargetEffect(true), - new TargetCardInYourGraveyard(0, 1, filter2) + new TargetCardInYourGraveyard(0, 1, StaticFilters.FILTER_CARD_LAND_FROM_YOUR_GRAVEYARD) ); // III — Exile this Saga, then return it to the battlefield transformed under your control. diff --git a/Mage.Sets/src/mage/cards/b/BountifulLandscape.java b/Mage.Sets/src/mage/cards/b/BountifulLandscape.java index fd792e43046..b456c364b9e 100644 --- a/Mage.Sets/src/mage/cards/b/BountifulLandscape.java +++ b/Mage.Sets/src/mage/cards/b/BountifulLandscape.java @@ -14,7 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.FilterCard; -import mage.filter.common.FilterBasicLandCard; +import mage.filter.common.FilterBasicCard; import mage.filter.predicate.Predicates; import mage.target.common.TargetCardInLibrary; @@ -25,7 +25,7 @@ import java.util.UUID; */ public final class BountifulLandscape extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard("a basic Forest, Island, or Mountain card"); + private static final FilterCard filter = new FilterBasicCard("a basic Forest, Island, or Mountain card"); static { filter.add(Predicates.or( diff --git a/Mage.Sets/src/mage/cards/c/CabalStronghold.java b/Mage.Sets/src/mage/cards/c/CabalStronghold.java index 2f2d4ccfc52..75c31ac39b4 100644 --- a/Mage.Sets/src/mage/cards/c/CabalStronghold.java +++ b/Mage.Sets/src/mage/cards/c/CabalStronghold.java @@ -1,13 +1,12 @@ - package mage.cards.c; -import java.util.UUID; - import mage.Mana; import mage.abilities.Ability; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.hint.Hint; import mage.abilities.hint.ValueHint; import mage.abilities.mana.ColorlessManaAbility; import mage.abilities.mana.DynamicManaAbility; @@ -16,21 +15,26 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; -import mage.filter.common.FilterControlledLandPermanent; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledPermanent; + +import java.util.UUID; /** * @author JRHerlehy - * Created on 4/7/18. + * Created on 4/7/18. */ public final class CabalStronghold extends CardImpl { - private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("basic Swamp you control"); + private static final FilterPermanent filter = new FilterControlledPermanent(SubType.SWAMP, "basic Swamp you control"); static { filter.add(SuperType.BASIC.getPredicate()); - filter.add(SubType.SWAMP.getPredicate()); } + private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter); + private static final Hint hint = new ValueHint("Basic Swamps you control", xValue); + public CabalStronghold(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); @@ -38,9 +42,9 @@ public final class CabalStronghold extends CardImpl { this.addAbility(new ColorlessManaAbility()); // {3}, {T}: Add {B} for each basic Swamp you control. - Ability ability = new DynamicManaAbility(Mana.BlackMana(1), new PermanentsOnBattlefieldCount(filter), new GenericManaCost(3)); + Ability ability = new DynamicManaAbility(Mana.BlackMana(1), xValue, new GenericManaCost(3)); ability.addCost(new TapSourceCost()); - this.addAbility(ability.addHint(new ValueHint("Basic Swamps you control", new PermanentsOnBattlefieldCount(filter)))); + this.addAbility(ability.addHint(hint)); } private CabalStronghold(final CabalStronghold card) { diff --git a/Mage.Sets/src/mage/cards/c/CanoptekWraith.java b/Mage.Sets/src/mage/cards/c/CanoptekWraith.java index 16e238996e4..b0579a1a5e1 100644 --- a/Mage.Sets/src/mage/cards/c/CanoptekWraith.java +++ b/Mage.Sets/src/mage/cards/c/CanoptekWraith.java @@ -12,13 +12,10 @@ import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.SubType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterCard; import mage.filter.StaticFilters; -import mage.filter.common.FilterBasicLandCard; +import mage.filter.common.FilterLandCard; import mage.filter.predicate.Predicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -101,7 +98,8 @@ class CanoptekWraithEffect extends OneShotEffect { if (permanent == null) { return false; } - FilterCard filter = new FilterBasicLandCard("basic land cards with the same name as the chosen land"); + FilterCard filter = new FilterLandCard("basic land cards with the same name as the chosen land"); + filter.add(SuperType.BASIC.getPredicate()); filter.add(new CanoptekWraithPredicate(permanent)); TargetCardInLibrary targetCard = new TargetCardInLibrary(0, 2, filter); player.searchLibrary(targetCard, source, game); @@ -129,4 +127,4 @@ class CanoptekWraithPredicate implements Predicate { public boolean apply(Card input, Game game) { return CardUtil.haveSameNames(permanent, input); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/c/ClayFiredBricks.java b/Mage.Sets/src/mage/cards/c/ClayFiredBricks.java index a6dd2fed8c7..06cc8042fe6 100644 --- a/Mage.Sets/src/mage/cards/c/ClayFiredBricks.java +++ b/Mage.Sets/src/mage/cards/c/ClayFiredBricks.java @@ -8,9 +8,7 @@ import mage.abilities.keyword.CraftAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; -import mage.filter.FilterCard; -import mage.filter.common.FilterBasicLandCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInLibrary; import java.util.UUID; @@ -20,15 +18,13 @@ import java.util.UUID; */ public final class ClayFiredBricks extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard(SubType.PLAINS); - public ClayFiredBricks(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}{W}"); this.secondSideCardClazz = mage.cards.c.CosmiumKiln.class; // When Clay-Fired Bricks enters the battlefield, search your library for a basic Plains card, reveal it, put it into your hand, then shuffle. You gain 2 life. Ability ability = new EntersBattlefieldTriggeredAbility( - new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true) + new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true) ); ability.addEffect(new GainLifeEffect(2)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/c/ContaminatedLandscape.java b/Mage.Sets/src/mage/cards/c/ContaminatedLandscape.java index 33befbbf714..441fc40438e 100644 --- a/Mage.Sets/src/mage/cards/c/ContaminatedLandscape.java +++ b/Mage.Sets/src/mage/cards/c/ContaminatedLandscape.java @@ -14,7 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.FilterCard; -import mage.filter.common.FilterBasicLandCard; +import mage.filter.common.FilterBasicCard; import mage.filter.predicate.Predicates; import mage.target.common.TargetCardInLibrary; @@ -25,7 +25,7 @@ import java.util.UUID; */ public final class ContaminatedLandscape extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard("a basic Plains, Island, or Swamp card"); + private static final FilterCard filter = new FilterBasicCard("a basic Plains, Island, or Swamp card"); static { filter.add(Predicates.or( diff --git a/Mage.Sets/src/mage/cards/d/DeceptiveLandscape.java b/Mage.Sets/src/mage/cards/d/DeceptiveLandscape.java index a795b780bd0..2b8bfcc9640 100644 --- a/Mage.Sets/src/mage/cards/d/DeceptiveLandscape.java +++ b/Mage.Sets/src/mage/cards/d/DeceptiveLandscape.java @@ -14,7 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.FilterCard; -import mage.filter.common.FilterBasicLandCard; +import mage.filter.common.FilterBasicCard; import mage.filter.predicate.Predicates; import mage.target.common.TargetCardInLibrary; @@ -25,7 +25,7 @@ import java.util.UUID; */ public final class DeceptiveLandscape extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard("a basic Plains, Swamp, or Forest card"); + private static final FilterCard filter = new FilterBasicCard("a basic Plains, Swamp, or Forest card"); static { filter.add(Predicates.or( diff --git a/Mage.Sets/src/mage/cards/e/EntishRestoration.java b/Mage.Sets/src/mage/cards/e/EntishRestoration.java index 6df9fc8f39e..a330ef60b17 100644 --- a/Mage.Sets/src/mage/cards/e/EntishRestoration.java +++ b/Mage.Sets/src/mage/cards/e/EntishRestoration.java @@ -1,7 +1,5 @@ package mage.cards.e; -import java.util.UUID; - import mage.abilities.condition.common.FerociousCondition; import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.common.SacrificeControllerEffect; @@ -9,23 +7,20 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; import mage.filter.StaticFilters; -import mage.filter.common.FilterBasicLandCard; import mage.target.common.TargetCardInLibrary; +import java.util.UUID; + /** - * * @author Susucr */ public final class EntishRestoration extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard("basic land cards"); - private static final String rule = "Search your library for up to two basic land cards, " + - "put them onto the battlefield tapped, then shuffle. " + - "If " + FerociousCondition.instance.toString() + ", instead search your library for up " + - "to three basic land cards, put them onto the battlefield tapped, then shuffle."; + "put them onto the battlefield tapped, then shuffle. " + + "If " + FerociousCondition.instance + ", instead search your library for up " + + "to three basic land cards, put them onto the battlefield tapped, then shuffle."; public EntishRestoration(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}"); @@ -35,14 +30,14 @@ public final class EntishRestoration extends CardImpl { // creature with power 4 or greater, instead search your library for up // to three basic land cards, put them onto the battlefield tapped, then shuffle. this.getSpellAbility().addEffect(new SacrificeControllerEffect( - StaticFilters.FILTER_LAND, 1, null + StaticFilters.FILTER_LAND, 1, null ).setText("Sacrifice a land.")); this.getSpellAbility().addEffect( - new ConditionalOneShotEffect( - new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 3, filter), true), - new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, filter), true), - FerociousCondition.instance, rule - ) + new ConditionalOneShotEffect( + new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 3, StaticFilters.FILTER_CARD_BASIC_LANDS), true), + new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true), + FerociousCondition.instance, rule + ) ); } diff --git a/Mage.Sets/src/mage/cards/f/FieldTrip.java b/Mage.Sets/src/mage/cards/f/FieldTrip.java index 25989562648..c397e88f885 100644 --- a/Mage.Sets/src/mage/cards/f/FieldTrip.java +++ b/Mage.Sets/src/mage/cards/f/FieldTrip.java @@ -7,8 +7,8 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.SuperType; import mage.filter.FilterCard; +import mage.filter.common.FilterBasicCard; import mage.target.common.TargetCardInLibrary; import java.util.UUID; @@ -18,12 +18,7 @@ import java.util.UUID; */ public final class FieldTrip extends CardImpl { - private static final FilterCard filter = new FilterCard("basic Forest card"); - - static { - filter.add(SuperType.BASIC.getPredicate()); - filter.add(SubType.FOREST.getPredicate()); - } + private static final FilterCard filter = new FilterBasicCard(SubType.FOREST); public FieldTrip(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}"); diff --git a/Mage.Sets/src/mage/cards/f/ForebodingLandscape.java b/Mage.Sets/src/mage/cards/f/ForebodingLandscape.java index fad15d154d7..bc6b5c61f57 100644 --- a/Mage.Sets/src/mage/cards/f/ForebodingLandscape.java +++ b/Mage.Sets/src/mage/cards/f/ForebodingLandscape.java @@ -14,7 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.FilterCard; -import mage.filter.common.FilterBasicLandCard; +import mage.filter.common.FilterBasicCard; import mage.filter.predicate.Predicates; import mage.target.common.TargetCardInLibrary; @@ -25,7 +25,7 @@ import java.util.UUID; */ public final class ForebodingLandscape extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard("a basic Swamp, Forest, or Island card"); + private static final FilterCard filter = new FilterBasicCard("a basic Swamp, Forest, or Island card"); static { filter.add(Predicates.or( diff --git a/Mage.Sets/src/mage/cards/g/GaeasTouch.java b/Mage.Sets/src/mage/cards/g/GaeasTouch.java index c39ad5d322b..fd1a592b044 100644 --- a/Mage.Sets/src/mage/cards/g/GaeasTouch.java +++ b/Mage.Sets/src/mage/cards/g/GaeasTouch.java @@ -9,8 +9,12 @@ import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.TimingRule; +import mage.constants.Zone; import mage.filter.FilterCard; +import mage.filter.common.FilterBasicCard; import java.util.UUID; @@ -19,12 +23,7 @@ import java.util.UUID; */ public final class GaeasTouch extends CardImpl { - private static final FilterCard filter = new FilterCard("a basic Forest card"); - - static { - filter.add(SuperType.BASIC.getPredicate()); - filter.add(SubType.FOREST.getPredicate()); - } + private static final FilterCard filter = new FilterBasicCard(SubType.FOREST); public GaeasTouch(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}{G}"); diff --git a/Mage.Sets/src/mage/cards/g/GlimpseTheCore.java b/Mage.Sets/src/mage/cards/g/GlimpseTheCore.java index 0445ebb6702..03c1269f250 100644 --- a/Mage.Sets/src/mage/cards/g/GlimpseTheCore.java +++ b/Mage.Sets/src/mage/cards/g/GlimpseTheCore.java @@ -8,7 +8,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.FilterCard; -import mage.filter.common.FilterBasicLandCard; +import mage.filter.common.FilterBasicCard; import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetCardInYourGraveyard; @@ -19,7 +19,7 @@ import java.util.UUID; */ public final class GlimpseTheCore extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard(SubType.FOREST); + private static final FilterCard filter = new FilterBasicCard(SubType.FOREST); private static final FilterCard filter2 = new FilterCard("Cave card from your graveyard"); static { diff --git a/Mage.Sets/src/mage/cards/g/GloryheathLynx.java b/Mage.Sets/src/mage/cards/g/GloryheathLynx.java index cf551f1ccbf..738cdfd068a 100644 --- a/Mage.Sets/src/mage/cards/g/GloryheathLynx.java +++ b/Mage.Sets/src/mage/cards/g/GloryheathLynx.java @@ -9,8 +9,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.SuperType; -import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInLibrary; import java.util.UUID; @@ -20,13 +19,6 @@ import java.util.UUID; */ public final class GloryheathLynx extends CardImpl { - private static final FilterCard filter = new FilterCard("basic Plains card"); - - static { - filter.add(SuperType.BASIC.getPredicate()); - filter.add(SubType.PLAINS.getPredicate()); - } - public GloryheathLynx(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}"); @@ -40,7 +32,7 @@ public final class GloryheathLynx extends CardImpl { // Whenever this creature attacks while saddled, search your library for a basic Plains card, reveal it, put it into your hand, then shuffle. this.addAbility(new AttacksWhileSaddledTriggeredAbility( - new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true) + new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true) )); // Saddle 2 diff --git a/Mage.Sets/src/mage/cards/g/GrixisPanorama.java b/Mage.Sets/src/mage/cards/g/GrixisPanorama.java index 56eb1fbc431..5a62f22285a 100644 --- a/Mage.Sets/src/mage/cards/g/GrixisPanorama.java +++ b/Mage.Sets/src/mage/cards/g/GrixisPanorama.java @@ -1,7 +1,5 @@ - package mage.cards.g; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; @@ -11,13 +9,16 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.target.common.TargetCardInLibrary; +import java.util.UUID; + /** - * * @author North */ public final class GrixisPanorama extends CardImpl { @@ -25,7 +26,6 @@ public final class GrixisPanorama extends CardImpl { private static final FilterCard filter = new FilterCard("a basic Island, Swamp, or Mountain card"); static { - filter.add(CardType.LAND.getPredicate()); filter.add(SuperType.BASIC.getPredicate()); filter.add(Predicates.or( SubType.ISLAND.getPredicate(), @@ -34,7 +34,7 @@ public final class GrixisPanorama extends CardImpl { } public GrixisPanorama(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.LAND},""); + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); this.addAbility(new ColorlessManaAbility()); TargetCardInLibrary target = new TargetCardInLibrary(filter); diff --git a/Mage.Sets/src/mage/cards/g/Groundskeeper.java b/Mage.Sets/src/mage/cards/g/Groundskeeper.java index b5b35ee5935..57fb607e64a 100644 --- a/Mage.Sets/src/mage/cards/g/Groundskeeper.java +++ b/Mage.Sets/src/mage/cards/g/Groundskeeper.java @@ -9,8 +9,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.FilterBasicLandCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInYourGraveyard; import java.util.UUID; @@ -20,8 +19,6 @@ import java.util.UUID; */ public final class Groundskeeper extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard("basic land card from your graveyard"); - public Groundskeeper(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}"); this.subtype.add(SubType.HUMAN); @@ -31,7 +28,7 @@ public final class Groundskeeper extends CardImpl { // {1}{G}: Return target basic land card from your graveyard to your hand. Ability ability = new SimpleActivatedAbility(new ReturnFromGraveyardToHandTargetEffect(), new ManaCostsImpl<>("{1}{G}")); - ability.addTarget(new TargetCardInYourGraveyard(filter)); + ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_BASIC_LAND)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/j/JundPanorama.java b/Mage.Sets/src/mage/cards/j/JundPanorama.java index 7a84beb4ea0..17ee36d0611 100644 --- a/Mage.Sets/src/mage/cards/j/JundPanorama.java +++ b/Mage.Sets/src/mage/cards/j/JundPanorama.java @@ -2,7 +2,6 @@ package mage.cards.j; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; @@ -12,21 +11,23 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.constants.SuperType; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.target.common.TargetCardInLibrary; +import java.util.UUID; + /** - * * @author BetaSteward_at_googlemail.com */ public final class JundPanorama extends CardImpl { - private static final FilterCard filter = new FilterCard("a basic Swamp, Mountain, or Forest card"); + private static final FilterCard filter = new FilterCard("a basic Swamp, Mountain, or Forest card"); static { - filter.add(CardType.LAND.getPredicate()); filter.add(SuperType.BASIC.getPredicate()); filter.add(Predicates.or( SubType.SWAMP.getPredicate(), @@ -35,7 +36,7 @@ public final class JundPanorama extends CardImpl { } public JundPanorama(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.LAND},null); + super(ownerId, setInfo, new CardType[]{CardType.LAND}, null); this.addAbility(new ColorlessManaAbility()); TargetCardInLibrary target = new TargetCardInLibrary(filter); Ability ability = new SimpleActivatedAbility(new SearchLibraryPutInPlayEffect(target, true), new GenericManaCost(1)); diff --git a/Mage.Sets/src/mage/cards/k/KaylasCommand.java b/Mage.Sets/src/mage/cards/k/KaylasCommand.java index f132c26673a..f6fc7fc9006 100644 --- a/Mage.Sets/src/mage/cards/k/KaylasCommand.java +++ b/Mage.Sets/src/mage/cards/k/KaylasCommand.java @@ -1,7 +1,5 @@ package mage.cards.k; -import java.util.UUID; - import mage.abilities.Ability; import mage.abilities.Mode; import mage.abilities.effects.OneShotEffect; @@ -15,10 +13,8 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; -import mage.constants.SubType; -import mage.constants.SuperType; import mage.counters.CounterType; -import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.Construct2Token; @@ -27,20 +23,13 @@ import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.targetpointer.FixedTarget; +import java.util.UUID; + /** - * * @author weirddan455 */ public final class KaylasCommand extends CardImpl { - private static final FilterCard filter - = new FilterCard("a basic Plains card"); - - static { - filter.add(SubType.PLAINS.getPredicate()); - filter.add(SuperType.BASIC.getPredicate()); - } - public KaylasCommand(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{W}{W}"); @@ -55,7 +44,7 @@ public final class KaylasCommand extends CardImpl { this.getSpellAbility().addMode(new Mode(new KaylasCommandCounterEffect())); // * Search your library for a basic Plains card, reveal it, put it into your hand, then shuffle. - this.getSpellAbility().addMode(new Mode(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true))); + this.getSpellAbility().addMode(new Mode(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true))); // * You gain 2 life and scry 2. Mode mode = new Mode(new GainLifeEffect(2)); diff --git a/Mage.Sets/src/mage/cards/k/KeeperOfTheAccord.java b/Mage.Sets/src/mage/cards/k/KeeperOfTheAccord.java index 6867dc7a039..af61b818a89 100644 --- a/Mage.Sets/src/mage/cards/k/KeeperOfTheAccord.java +++ b/Mage.Sets/src/mage/cards/k/KeeperOfTheAccord.java @@ -10,11 +10,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.SuperType; import mage.constants.TargetController; import mage.filter.FilterCard; import mage.filter.FilterPermanent; import mage.filter.StaticFilters; +import mage.filter.common.FilterBasicCard; import mage.game.Game; import mage.game.permanent.token.SoldierToken; import mage.target.common.TargetCardInLibrary; @@ -26,13 +26,6 @@ import java.util.UUID; */ public final class KeeperOfTheAccord extends CardImpl { - private static final FilterCard filter = new FilterCard("basic Plains card"); - - static { - filter.add(SuperType.BASIC.getPredicate()); - filter.add(SubType.PLAINS.getPredicate()); - } - public KeeperOfTheAccord(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}"); diff --git a/Mage.Sets/src/mage/cards/k/KothFireOfResistance.java b/Mage.Sets/src/mage/cards/k/KothFireOfResistance.java index 0261497d5a7..2fe11c98c2e 100644 --- a/Mage.Sets/src/mage/cards/k/KothFireOfResistance.java +++ b/Mage.Sets/src/mage/cards/k/KothFireOfResistance.java @@ -2,16 +2,20 @@ package mage.cards.k; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; +import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; +import mage.abilities.hint.Hint; +import mage.abilities.hint.ValueHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.FilterCard; +import mage.filter.common.FilterBasicCard; import mage.filter.common.FilterControlledPermanent; import mage.game.command.emblems.KothFireOfResistanceEmblem; import mage.target.common.TargetCardInLibrary; @@ -24,14 +28,11 @@ import java.util.UUID; */ public final class KothFireOfResistance extends CardImpl { - private static final FilterCard filter = new FilterCard("basic Mountain card"); - private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("Mountains you control"); - - static { - filter.add(SuperType.BASIC.getPredicate()); - filter.add(SubType.MOUNTAIN.getPredicate()); - filter2.add(SubType.MOUNTAIN.getPredicate()); - } + private static final FilterCard filter = new FilterBasicCard(SubType.MOUNTAIN); + private static final DynamicValue xValue = new PermanentsOnBattlefieldCount( + new FilterControlledPermanent(SubType.MOUNTAIN, "Mountains you control") + ); + private static final Hint hint = new ValueHint(xValue.getMessage(), xValue); public KothFireOfResistance(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{R}{R}"); @@ -44,10 +45,10 @@ public final class KothFireOfResistance extends CardImpl { this.addAbility(new LoyaltyAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true), 2)); // −3: Koth, Fire of Resistance deals damage to target creature equal to the number of Mountains you control. - Ability ability = new LoyaltyAbility(new DamageTargetEffect(new PermanentsOnBattlefieldCount(filter2)) + Ability ability = new LoyaltyAbility(new DamageTargetEffect(xValue) .setText("{this} deals damage to target creature equal to the number of Mountains you control"), -3); ability.addTarget(new TargetCreaturePermanent()); - this.addAbility(ability); + this.addAbility(ability.addHint(hint)); // −7: You get an emblem with "Whenever a Mountain you control enters, this emblem deals 4 damage to any target." this.addAbility(new LoyaltyAbility(new GetEmblemEffect(new KothFireOfResistanceEmblem()), -7)); diff --git a/Mage.Sets/src/mage/cards/l/LodestoneBauble.java b/Mage.Sets/src/mage/cards/l/LodestoneBauble.java index 32f8886f014..129b19bce06 100644 --- a/Mage.Sets/src/mage/cards/l/LodestoneBauble.java +++ b/Mage.Sets/src/mage/cards/l/LodestoneBauble.java @@ -1,8 +1,6 @@ package mage.cards.l; -import java.util.List; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; @@ -14,23 +12,21 @@ import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DrawCardTargetEffect; -import mage.cards.Card; -import mage.cards.Cards; -import mage.cards.CardImpl; -import mage.cards.CardsImpl; -import mage.cards.CardSetInfo; +import mage.cards.*; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.common.FilterBasicLandCard; +import mage.filter.StaticFilters; import mage.game.Game; import mage.players.Player; import mage.target.TargetPlayer; import mage.target.common.TargetCardInGraveyard; import mage.target.targetpointer.FixedTarget; +import java.util.List; +import java.util.UUID; + /** - * * @author ThomasLerner, LevelX2 & L_J */ public final class LodestoneBauble extends CardImpl { @@ -61,7 +57,7 @@ public final class LodestoneBauble extends CardImpl { class LodestoneBaubleTarget extends TargetCardInGraveyard { public LodestoneBaubleTarget() { - super(0, 4, new FilterBasicLandCard("basic land cards from a player's graveyard")); + super(0, 4, StaticFilters.FILTER_CARD_BASIC_LANDS); } private LodestoneBaubleTarget(final LodestoneBaubleTarget target) { @@ -87,7 +83,7 @@ class LodestoneBaubleTarget extends TargetCardInGraveyard { } class LodestoneBaubleEffect extends OneShotEffect { - + LodestoneBaubleEffect() { super(Outcome.Detriment); this.staticText = "Put up to four target basic land cards from a player's graveyard on top of their library in any order"; diff --git a/Mage.Sets/src/mage/cards/l/LoyalWarhound.java b/Mage.Sets/src/mage/cards/l/LoyalWarhound.java index b4939d4e19e..c9dc6e69b41 100644 --- a/Mage.Sets/src/mage/cards/l/LoyalWarhound.java +++ b/Mage.Sets/src/mage/cards/l/LoyalWarhound.java @@ -10,9 +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.StaticFilters; -import mage.filter.common.FilterBasicLandCard; import mage.target.common.TargetCardInLibrary; import java.util.UUID; @@ -22,7 +20,6 @@ import java.util.UUID; */ public final class LoyalWarhound extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard(SubType.PLAINS); private static final Condition condition = new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS); public LoyalWarhound(UUID ownerId, CardSetInfo setInfo) { @@ -38,7 +35,7 @@ public final class LoyalWarhound extends CardImpl { // When Loyal Warhound enters the battlefield, if an opponent controls more lands than you, // search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle. this.addAbility(new EntersBattlefieldTriggeredAbility( - new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true) + new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true) ).withInterveningIf(condition)); } diff --git a/Mage.Sets/src/mage/cards/m/MigrationPath.java b/Mage.Sets/src/mage/cards/m/MigrationPath.java index 88c4442a249..74d1de932d8 100644 --- a/Mage.Sets/src/mage/cards/m/MigrationPath.java +++ b/Mage.Sets/src/mage/cards/m/MigrationPath.java @@ -6,8 +6,7 @@ import mage.abilities.keyword.CyclingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.common.FilterBasicLandCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInLibrary; import java.util.UUID; @@ -17,14 +16,12 @@ import java.util.UUID; */ public final class MigrationPath extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard("basic land cards"); - public MigrationPath(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}"); // Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle your library. this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect( - new TargetCardInLibrary(0, 2, filter), true + new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true )); // Cycling {2} diff --git a/Mage.Sets/src/mage/cards/n/NeverwinterDryad.java b/Mage.Sets/src/mage/cards/n/NeverwinterDryad.java index d32f46b9461..d7b6ffd9207 100644 --- a/Mage.Sets/src/mage/cards/n/NeverwinterDryad.java +++ b/Mage.Sets/src/mage/cards/n/NeverwinterDryad.java @@ -10,8 +10,8 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.SuperType; import mage.filter.FilterCard; +import mage.filter.common.FilterBasicCard; import mage.target.common.TargetCardInLibrary; import java.util.UUID; @@ -21,12 +21,7 @@ import java.util.UUID; */ public final class NeverwinterDryad extends CardImpl { - private static final FilterCard filter = new FilterCard("a basic Forest card"); - - static { - filter.add(SuperType.BASIC.getPredicate()); - filter.add(SubType.FOREST.getPredicate()); - } + private static final FilterCard filter = new FilterBasicCard(SubType.FOREST); public NeverwinterDryad(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}"); diff --git a/Mage.Sets/src/mage/cards/n/NissaVastwoodSeer.java b/Mage.Sets/src/mage/cards/n/NissaVastwoodSeer.java index 14fac45f978..01b027d210d 100644 --- a/Mage.Sets/src/mage/cards/n/NissaVastwoodSeer.java +++ b/Mage.Sets/src/mage/cards/n/NissaVastwoodSeer.java @@ -12,6 +12,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.FilterCard; +import mage.filter.common.FilterBasicCard; import mage.filter.common.FilterLandPermanent; import mage.target.common.TargetCardInLibrary; @@ -22,12 +23,7 @@ import java.util.UUID; */ public final class NissaVastwoodSeer extends CardImpl { - private static final FilterCard filter = new FilterCard("basic Forest card"); - - static { - filter.add(SuperType.BASIC.getPredicate()); - filter.add(SubType.FOREST.getPredicate()); - } + private static final FilterCard filter = new FilterBasicCard(SubType.FOREST); private static final Condition condition = new PermanentsOnTheBattlefieldCondition( new FilterLandPermanent("you control seven or more lands"), diff --git a/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java b/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java index a1bdc5302ca..0c206b20644 100644 --- a/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java +++ b/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java @@ -1,7 +1,6 @@ package mage.cards.n; -import java.util.UUID; import mage.abilities.condition.common.SpellMasteryCondition; import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.common.search.SearchLibraryPutOntoBattlefieldTappedRestInHandEffect; @@ -9,22 +8,18 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.SuperType; import mage.filter.FilterCard; +import mage.filter.common.FilterBasicCard; import mage.target.common.TargetCardInLibrary; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class NissasPilgrimage extends CardImpl { - private static final FilterCard filter = new FilterCard("basic Forest cards"); - - static { - filter.add(SuperType.BASIC.getPredicate()); - filter.add(SubType.FOREST.getPredicate()); - } + private static final FilterCard filter = new FilterBasicCard(SubType.FOREST, "basic Forest cards"); public NissasPilgrimage(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}"); diff --git a/Mage.Sets/src/mage/cards/n/NissasTriumph.java b/Mage.Sets/src/mage/cards/n/NissasTriumph.java index b331f7faaaf..9973eec8af1 100644 --- a/Mage.Sets/src/mage/cards/n/NissasTriumph.java +++ b/Mage.Sets/src/mage/cards/n/NissasTriumph.java @@ -8,10 +8,10 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.SuperType; import mage.filter.FilterCard; import mage.filter.FilterPermanent; import mage.filter.StaticFilters; +import mage.filter.common.FilterBasicCard; import mage.filter.common.FilterControlledPlaneswalkerPermanent; import mage.target.common.TargetCardInLibrary; @@ -22,14 +22,9 @@ import java.util.UUID; */ public final class NissasTriumph extends CardImpl { - private static final FilterCard filter = new FilterCard("basic Forest cards"); + private static final FilterCard filter = new FilterBasicCard(SubType.FOREST, "basic Forest cards"); private static final FilterPermanent filter2 = new FilterControlledPlaneswalkerPermanent(SubType.NISSA); - static { - filter.add(SuperType.BASIC.getPredicate()); - filter.add(SubType.FOREST.getPredicate()); - } - private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter2); public NissasTriumph(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/o/OldGrowthDryads.java b/Mage.Sets/src/mage/cards/o/OldGrowthDryads.java index faff60d8cda..c4013547c4b 100644 --- a/Mage.Sets/src/mage/cards/o/OldGrowthDryads.java +++ b/Mage.Sets/src/mage/cards/o/OldGrowthDryads.java @@ -1,10 +1,6 @@ package mage.cards.o; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; - import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -16,13 +12,16 @@ import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.SubType; import mage.constants.Zone; -import mage.filter.common.FilterBasicLandCard; +import mage.filter.StaticFilters; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetCardInLibrary; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** - * * @author TheElk801 */ public final class OldGrowthDryads extends CardImpl { @@ -70,7 +69,7 @@ class OldGrowthDryadsEffect extends OneShotEffect { for (UUID opponentId : game.getOpponents(source.getControllerId())) { Player opponent = game.getPlayer(opponentId); if (opponent != null && opponent.chooseUse(Outcome.PutLandInPlay, "Search your library for a basic land card and put it onto the battlefield tapped?", source, game)) { - TargetCardInLibrary target = new TargetCardInLibrary(new FilterBasicLandCard()); + TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND); if (opponent.searchLibrary(target, source, game)) { Card targetCard = opponent.getLibrary().getCard(target.getFirstTarget(), game); if (targetCard != null) { diff --git a/Mage.Sets/src/mage/cards/p/PathOfTheAnimist.java b/Mage.Sets/src/mage/cards/p/PathOfTheAnimist.java index 364c4813a13..7381e054b1c 100644 --- a/Mage.Sets/src/mage/cards/p/PathOfTheAnimist.java +++ b/Mage.Sets/src/mage/cards/p/PathOfTheAnimist.java @@ -8,7 +8,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.StaticFilters; -import mage.filter.common.FilterBasicLandCard; import mage.target.common.TargetCardInLibrary; /** diff --git a/Mage.Sets/src/mage/cards/p/PerilousLandscape.java b/Mage.Sets/src/mage/cards/p/PerilousLandscape.java index bddc03dd3ac..dbabbbf75ff 100644 --- a/Mage.Sets/src/mage/cards/p/PerilousLandscape.java +++ b/Mage.Sets/src/mage/cards/p/PerilousLandscape.java @@ -14,7 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.FilterCard; -import mage.filter.common.FilterBasicLandCard; +import mage.filter.common.FilterBasicCard; import mage.filter.predicate.Predicates; import mage.target.common.TargetCardInLibrary; @@ -25,7 +25,7 @@ import java.util.UUID; */ public final class PerilousLandscape extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard("a basic Island, Mountain, or Plains card"); + private static final FilterCard filter = new FilterBasicCard("a basic Island, Mountain, or Plains card"); static { filter.add(Predicates.or( diff --git a/Mage.Sets/src/mage/cards/p/PilgrimOfTheAges.java b/Mage.Sets/src/mage/cards/p/PilgrimOfTheAges.java index d5253ad0410..161b6dfcf56 100644 --- a/Mage.Sets/src/mage/cards/p/PilgrimOfTheAges.java +++ b/Mage.Sets/src/mage/cards/p/PilgrimOfTheAges.java @@ -10,9 +10,8 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.SuperType; import mage.constants.Zone; -import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInLibrary; import java.util.UUID; @@ -22,13 +21,6 @@ import java.util.UUID; */ public final class PilgrimOfTheAges extends CardImpl { - private static final FilterCard filter = new FilterCard("a basic Plains card"); - - static { - filter.add(SuperType.BASIC.getPredicate()); - filter.add(SubType.PLAINS.getPredicate()); - } - public PilgrimOfTheAges(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}"); @@ -38,7 +30,7 @@ public final class PilgrimOfTheAges extends CardImpl { // When Pilgrim of the Ages enters the battlefield, you may search your library for a basic Plains card, reveal it, put it into your hand, then shuffle. this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect( - new TargetCardInLibrary(filter), true + new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true ), true)); // {6}: Return Pilgrim of the Ages from your graveyard to your hand. diff --git a/Mage.Sets/src/mage/cards/p/Plasmancer.java b/Mage.Sets/src/mage/cards/p/Plasmancer.java index 3b34c120737..52e56ae77fc 100644 --- a/Mage.Sets/src/mage/cards/p/Plasmancer.java +++ b/Mage.Sets/src/mage/cards/p/Plasmancer.java @@ -8,8 +8,8 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.SuperType; import mage.filter.FilterCard; +import mage.filter.common.FilterBasicCard; import mage.target.common.TargetCardInLibrary; import java.util.UUID; @@ -19,12 +19,7 @@ import java.util.UUID; */ public final class Plasmancer extends CardImpl { - private static final FilterCard filter = new FilterCard("a basic Swamp card"); - - static { - filter.add(SuperType.BASIC.getPredicate()); - filter.add(SubType.SWAMP.getPredicate()); - } + private static final FilterCard filter = new FilterBasicCard(SubType.SWAMP); public Plasmancer(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}{B}{B}"); diff --git a/Mage.Sets/src/mage/cards/r/RoilingRegrowth.java b/Mage.Sets/src/mage/cards/r/RoilingRegrowth.java index 20f43c3368f..fc7f8d5a4c7 100644 --- a/Mage.Sets/src/mage/cards/r/RoilingRegrowth.java +++ b/Mage.Sets/src/mage/cards/r/RoilingRegrowth.java @@ -5,9 +5,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; import mage.filter.StaticFilters; -import mage.filter.common.FilterBasicLandCard; import mage.target.common.TargetCardInLibrary; import java.util.UUID; @@ -17,8 +15,6 @@ import java.util.UUID; */ public final class RoilingRegrowth extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard("basic land cards"); - public RoilingRegrowth(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}"); @@ -27,7 +23,7 @@ public final class RoilingRegrowth extends CardImpl { StaticFilters.FILTER_LAND, 1, null ).setText("Sacrifice a land.")); this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect( - new TargetCardInLibrary(0, 2, filter), true + new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true )); } diff --git a/Mage.Sets/src/mage/cards/s/SaguWildling.java b/Mage.Sets/src/mage/cards/s/SaguWildling.java index 8d08c6822c1..b81bfcdc405 100644 --- a/Mage.Sets/src/mage/cards/s/SaguWildling.java +++ b/Mage.Sets/src/mage/cards/s/SaguWildling.java @@ -1,27 +1,27 @@ package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; -import mage.cards.OmenCard; -import mage.constants.SubType; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardSetInfo; +import mage.cards.OmenCard; import mage.constants.CardType; -import mage.filter.common.FilterBasicLandCard; +import mage.constants.SubType; +import mage.filter.StaticFilters; import mage.target.common.TargetCardInLibrary; +import java.util.UUID; + /** - * * @author Jmlundeen */ public final class SaguWildling extends OmenCard { public SaguWildling(UUID ownerId, CardSetInfo setInfo) { - super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, new CardType[]{CardType.SORCERY}, "{4}{G}", "Roost Seek", "{G}"); - + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, new CardType[]{CardType.SORCERY}, "{4}{G}", "Roost Seek", "{G}"); + this.subtype.add(SubType.DRAGON); this.power = new MageInt(3); this.toughness = new MageInt(3); @@ -34,7 +34,7 @@ public final class SaguWildling extends OmenCard { // Roost Seek // Search your library for a basic land card, reveal it, put it into your hand, then shuffle. - TargetCardInLibrary target = new TargetCardInLibrary(new FilterBasicLandCard()); + TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND); this.getSpellCard().getSpellAbility().addEffect(new SearchLibraryPutInHandEffect(target, true)); this.finalizeOmen(); } diff --git a/Mage.Sets/src/mage/cards/s/ScoutingHawk.java b/Mage.Sets/src/mage/cards/s/ScoutingHawk.java index e77d45c12f3..5917de178d7 100644 --- a/Mage.Sets/src/mage/cards/s/ScoutingHawk.java +++ b/Mage.Sets/src/mage/cards/s/ScoutingHawk.java @@ -10,8 +10,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.SuperType; -import mage.filter.FilterCard; import mage.filter.StaticFilters; import mage.target.common.TargetCardInLibrary; @@ -22,13 +20,6 @@ import java.util.UUID; */ public final class ScoutingHawk extends CardImpl { - private static final FilterCard filter = new FilterCard("a basic Plains card"); - - static { - filter.add(SuperType.BASIC.getPredicate()); - filter.add(SubType.PLAINS.getPredicate()); - } - private static final Condition condition = new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS); public ScoutingHawk(UUID ownerId, CardSetInfo setInfo) { @@ -43,7 +34,7 @@ public final class ScoutingHawk extends CardImpl { // Keen Sight — When Scouting Hawk enters the battlefield, if an opponent controls more lands than you, search your library for a basic Plains card, put it onto the battlefield tapped, then shuffle. this.addAbility(new EntersBattlefieldTriggeredAbility( - new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true) + new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true) ).withInterveningIf(condition).withFlavorWord("Keen Sight")); } diff --git a/Mage.Sets/src/mage/cards/s/SeethingLandscape.java b/Mage.Sets/src/mage/cards/s/SeethingLandscape.java index 7f300662195..2d0fcb893f2 100644 --- a/Mage.Sets/src/mage/cards/s/SeethingLandscape.java +++ b/Mage.Sets/src/mage/cards/s/SeethingLandscape.java @@ -14,7 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.FilterCard; -import mage.filter.common.FilterBasicLandCard; +import mage.filter.common.FilterBasicCard; import mage.filter.predicate.Predicates; import mage.target.common.TargetCardInLibrary; @@ -25,7 +25,7 @@ import java.util.UUID; */ public final class SeethingLandscape extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard("a basic Island, Swamp, or Mountain card"); + private static final FilterCard filter = new FilterBasicCard("a basic Island, Swamp, or Mountain card"); static { filter.add(Predicates.or( diff --git a/Mage.Sets/src/mage/cards/s/ShatteredLandscape.java b/Mage.Sets/src/mage/cards/s/ShatteredLandscape.java index e4f4e1cbce3..3cf79f2a06b 100644 --- a/Mage.Sets/src/mage/cards/s/ShatteredLandscape.java +++ b/Mage.Sets/src/mage/cards/s/ShatteredLandscape.java @@ -14,7 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.FilterCard; -import mage.filter.common.FilterBasicLandCard; +import mage.filter.common.FilterBasicCard; import mage.filter.predicate.Predicates; import mage.target.common.TargetCardInLibrary; @@ -25,7 +25,7 @@ import java.util.UUID; */ public final class ShatteredLandscape extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard("a basic Mountain, Plains, or Swamp card"); + private static final FilterCard filter = new FilterBasicCard("a basic Mountain, Plains, or Swamp card"); static { filter.add(Predicates.or( diff --git a/Mage.Sets/src/mage/cards/s/ShelteringLandscape.java b/Mage.Sets/src/mage/cards/s/ShelteringLandscape.java index b649e9d2abb..ad50704c9e7 100644 --- a/Mage.Sets/src/mage/cards/s/ShelteringLandscape.java +++ b/Mage.Sets/src/mage/cards/s/ShelteringLandscape.java @@ -14,7 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.FilterCard; -import mage.filter.common.FilterBasicLandCard; +import mage.filter.common.FilterBasicCard; import mage.filter.predicate.Predicates; import mage.target.common.TargetCardInLibrary; @@ -25,7 +25,7 @@ import java.util.UUID; */ public final class ShelteringLandscape extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard("a basic Mountain, Forest, or Plains card"); + private static final FilterCard filter = new FilterBasicCard("a basic Mountain, Forest, or Plains card"); static { filter.add(Predicates.or( diff --git a/Mage.Sets/src/mage/cards/s/StoicFarmer.java b/Mage.Sets/src/mage/cards/s/StoicFarmer.java index 364f78fdefd..c2c90b44517 100644 --- a/Mage.Sets/src/mage/cards/s/StoicFarmer.java +++ b/Mage.Sets/src/mage/cards/s/StoicFarmer.java @@ -12,8 +12,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.SuperType; -import mage.filter.FilterCard; import mage.filter.StaticFilters; import mage.target.common.TargetCardInLibrary; @@ -24,13 +22,6 @@ import java.util.UUID; */ public final class StoicFarmer extends CardImpl { - private static final FilterCard filter = new FilterCard("a basic Plains card"); - - static { - filter.add(SuperType.BASIC.getPredicate()); - filter.add(SubType.PLAINS.getPredicate()); - } - private static final Condition condition = new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS); public StoicFarmer(UUID ownerId, CardSetInfo setInfo) { @@ -44,8 +35,8 @@ public final class StoicFarmer extends CardImpl { // When Stoic Farmer enters the battlefield, search your library for a basic Plains card and reveal it. If an opponent controls more lands than you, put it onto the battlefield tapped. Otherwise, put it into your hand. Then shuffle your library. this.addAbility(new EntersBattlefieldTriggeredAbility( new ConditionalOneShotEffect( - new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true), - new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true), + new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true), + new SearchLibraryPutInHandEffect(new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true), condition, "search your library for a basic Plains card and reveal it. " + "If an opponent controls more lands than you, put it onto the battlefield tapped. " + "Otherwise put it into your hand. Then shuffle" diff --git a/Mage.Sets/src/mage/cards/s/SunbladeSamurai.java b/Mage.Sets/src/mage/cards/s/SunbladeSamurai.java index 7224e1a3e64..5c09c178713 100644 --- a/Mage.Sets/src/mage/cards/s/SunbladeSamurai.java +++ b/Mage.Sets/src/mage/cards/s/SunbladeSamurai.java @@ -10,7 +10,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.SuperType; import mage.filter.FilterCard; import mage.target.common.TargetCardInLibrary; @@ -21,12 +20,7 @@ import java.util.UUID; */ public final class SunbladeSamurai extends CardImpl { - private static final FilterCard filter = new FilterCard("a basic Plains card"); - - static { - filter.add(SubType.PLAINS.getPredicate()); - filter.add(SuperType.BASIC.getPredicate()); - } + private static final FilterCard filter = new FilterCard(SubType.PLAINS); public SunbladeSamurai(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{4}{W}"); diff --git a/Mage.Sets/src/mage/cards/t/TheBirthOfMeletis.java b/Mage.Sets/src/mage/cards/t/TheBirthOfMeletis.java index a5c02de00f0..18ee073cf7d 100644 --- a/Mage.Sets/src/mage/cards/t/TheBirthOfMeletis.java +++ b/Mage.Sets/src/mage/cards/t/TheBirthOfMeletis.java @@ -9,8 +9,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SagaChapter; import mage.constants.SubType; -import mage.constants.SuperType; -import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.game.permanent.token.ArtifactWallToken; import mage.target.common.TargetCardInLibrary; @@ -21,13 +20,6 @@ import java.util.UUID; */ public final class TheBirthOfMeletis extends CardImpl { - private static final FilterCard filter = new FilterCard("a basic Plains card"); - - static { - filter.add(SubType.PLAINS.getPredicate()); - filter.add(SuperType.BASIC.getPredicate()); - } - public TheBirthOfMeletis(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}"); @@ -39,7 +31,7 @@ public final class TheBirthOfMeletis extends CardImpl { // I — Search your library for a basic Plains card, reveal it, put it into your hand, then shuffle your library. sagaAbility.addChapterEffect( this, SagaChapter.CHAPTER_I, new SearchLibraryPutInHandEffect( - new TargetCardInLibrary(filter), true + new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true ) ); diff --git a/Mage.Sets/src/mage/cards/t/TheRestorationOfEiganjo.java b/Mage.Sets/src/mage/cards/t/TheRestorationOfEiganjo.java index 6d8e353f4c7..3de02b60f26 100644 --- a/Mage.Sets/src/mage/cards/t/TheRestorationOfEiganjo.java +++ b/Mage.Sets/src/mage/cards/t/TheRestorationOfEiganjo.java @@ -10,8 +10,12 @@ import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.ComparisonType; +import mage.constants.SagaChapter; +import mage.constants.SubType; import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.filter.common.FilterPermanentCard; import mage.filter.predicate.mageobject.ManaValuePredicate; import mage.target.common.TargetCardInLibrary; @@ -24,14 +28,10 @@ import java.util.UUID; */ public final class TheRestorationOfEiganjo extends CardImpl { - private static final FilterCard filter - = new FilterCard("a basic Plains card"); private static final FilterCard filter2 = new FilterPermanentCard("permanent card with mana value 2 or less from your graveyard"); static { - filter.add(SubType.PLAINS.getPredicate()); - filter.add(SuperType.BASIC.getPredicate()); filter2.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 3)); } @@ -47,7 +47,7 @@ public final class TheRestorationOfEiganjo extends CardImpl { // I - Search your library for a basic Plains card, reveal it, put it into your hand, then shuffle. sagaAbility.addChapterEffect( this, SagaChapter.CHAPTER_I, new SearchLibraryPutInHandEffect( - new TargetCardInLibrary(filter), true + new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_PLAINS), true ) ); diff --git a/Mage.Sets/src/mage/cards/t/TranquilLandscape.java b/Mage.Sets/src/mage/cards/t/TranquilLandscape.java index 89b06c627ec..99c9104ff89 100644 --- a/Mage.Sets/src/mage/cards/t/TranquilLandscape.java +++ b/Mage.Sets/src/mage/cards/t/TranquilLandscape.java @@ -14,7 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.FilterCard; -import mage.filter.common.FilterBasicLandCard; +import mage.filter.common.FilterBasicCard; import mage.filter.predicate.Predicates; import mage.target.common.TargetCardInLibrary; @@ -25,7 +25,7 @@ import java.util.UUID; */ public final class TranquilLandscape extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard("a basic Forest, Plains, or Island card"); + private static final FilterCard filter = new FilterBasicCard("a basic Forest, Plains, or Island card"); static { filter.add(Predicates.or( diff --git a/Mage.Sets/src/mage/cards/t/TwistedLandscape.java b/Mage.Sets/src/mage/cards/t/TwistedLandscape.java index 39c79522389..ce3ed038b08 100644 --- a/Mage.Sets/src/mage/cards/t/TwistedLandscape.java +++ b/Mage.Sets/src/mage/cards/t/TwistedLandscape.java @@ -14,7 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.FilterCard; -import mage.filter.common.FilterBasicLandCard; +import mage.filter.common.FilterBasicCard; import mage.filter.predicate.Predicates; import mage.target.common.TargetCardInLibrary; @@ -25,7 +25,7 @@ import java.util.UUID; */ public final class TwistedLandscape extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard("a basic Swamp, Mountain, or Forest card"); + private static final FilterCard filter = new FilterBasicCard("a basic Swamp, Mountain, or Forest card"); static { filter.add(Predicates.or( diff --git a/Mage.Sets/src/mage/cards/v/VastwoodSurge.java b/Mage.Sets/src/mage/cards/v/VastwoodSurge.java index 90138baa2e5..2b41ed826d8 100644 --- a/Mage.Sets/src/mage/cards/v/VastwoodSurge.java +++ b/Mage.Sets/src/mage/cards/v/VastwoodSurge.java @@ -9,9 +9,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.counters.CounterType; -import mage.filter.FilterCard; import mage.filter.StaticFilters; -import mage.filter.common.FilterBasicLandCard; import mage.target.common.TargetCardInLibrary; import java.util.UUID; @@ -21,8 +19,6 @@ import java.util.UUID; */ public final class VastwoodSurge extends CardImpl { - private static final FilterCard filter = new FilterBasicLandCard("basic land cards"); - public VastwoodSurge(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{G}"); @@ -31,7 +27,7 @@ public final class VastwoodSurge extends CardImpl { // Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle your library. If this spell was kicked, put two +1/+1 counters on each creature you control. this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect( - new TargetCardInLibrary(0, 2, filter), true + new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true )); this.getSpellAbility().addEffect(new ConditionalOneShotEffect( new AddCountersAllEffect( diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index 05e18a8be30..22e9caa2ea1 100644 --- a/Mage/src/main/java/mage/filter/StaticFilters.java +++ b/Mage/src/main/java/mage/filter/StaticFilters.java @@ -185,24 +185,33 @@ public final class StaticFilters { FILTER_CARD_LAND_A.setLockedFilter(true); } - public static final FilterBasicLandCard FILTER_CARD_BASIC_LAND = new FilterBasicLandCard(); + public static final FilterLandCard FILTER_CARD_BASIC_LAND = new FilterLandCard("basic land card"); static { + FILTER_CARD_BASIC_LAND.add(SuperType.BASIC.getPredicate()); FILTER_CARD_BASIC_LAND.setLockedFilter(true); } - public static final FilterBasicLandCard FILTER_CARD_BASIC_LANDS = new FilterBasicLandCard("basic land cards"); + public static final FilterLandCard FILTER_CARD_BASIC_LANDS = new FilterLandCard("basic land cards"); static { + FILTER_CARD_BASIC_LANDS.add(SuperType.BASIC.getPredicate()); FILTER_CARD_BASIC_LANDS.setLockedFilter(true); } - public static final FilterBasicLandCard FILTER_CARD_BASIC_LAND_A = new FilterBasicLandCard("a basic land card"); + public static final FilterLandCard FILTER_CARD_BASIC_LAND_A = new FilterLandCard("a basic land card"); static { + FILTER_CARD_BASIC_LAND_A.add(SuperType.BASIC.getPredicate()); FILTER_CARD_BASIC_LAND_A.setLockedFilter(true); } + public static final FilterBasicCard FILTER_CARD_BASIC_PLAINS = new FilterBasicCard(SubType.PLAINS); + + static { + FILTER_CARD_BASIC_PLAINS.setLockedFilter(true); + } + public static final FilterNonlandCard FILTER_CARD_NON_LAND = new FilterNonlandCard(); static { diff --git a/Mage/src/main/java/mage/filter/common/FilterBasicCard.java b/Mage/src/main/java/mage/filter/common/FilterBasicCard.java new file mode 100644 index 00000000000..5996f7d9042 --- /dev/null +++ b/Mage/src/main/java/mage/filter/common/FilterBasicCard.java @@ -0,0 +1,33 @@ +package mage.filter.common; + +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.filter.FilterCard; + +/** + * @author BetaSteward_at_googlemail.com + */ +public class FilterBasicCard extends FilterCard { + + public FilterBasicCard(SubType subType) { + this(subType, "basic " + subType + " card"); + } + + public FilterBasicCard(String name) { + this(null, name); + } + + public FilterBasicCard(SubType subType, String name) { + super(subType, name); + this.add(SuperType.BASIC.getPredicate()); + } + + protected FilterBasicCard(final FilterBasicCard filter) { + super(filter); + } + + @Override + public FilterBasicCard copy() { + return new FilterBasicCard(this); + } +} diff --git a/Mage/src/main/java/mage/filter/common/FilterBasicLandCard.java b/Mage/src/main/java/mage/filter/common/FilterBasicLandCard.java deleted file mode 100644 index 521d283b722..00000000000 --- a/Mage/src/main/java/mage/filter/common/FilterBasicLandCard.java +++ /dev/null @@ -1,37 +0,0 @@ - -package mage.filter.common; - -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.SuperType; -import mage.filter.FilterCard; - -/** - * @author BetaSteward_at_googlemail.com - */ -public class FilterBasicLandCard extends FilterCard { - - public FilterBasicLandCard() { - this("basic land card"); - } - - public FilterBasicLandCard(SubType subType) { - this("basic " + subType + " card"); - this.add(subType.getPredicate()); - } - - public FilterBasicLandCard(String name) { - super(name); - this.add(CardType.LAND.getPredicate()); - this.add(SuperType.BASIC.getPredicate()); - } - - protected FilterBasicLandCard(final FilterBasicLandCard filter) { - super(filter); - } - - @Override - public FilterBasicLandCard copy() { - return new FilterBasicLandCard(this); - } -}