diff --git a/Mage.Sets/src/mage/cards/a/AcidicSoil.java b/Mage.Sets/src/mage/cards/a/AcidicSoil.java index 28587b2cad8..149821c7fbc 100644 --- a/Mage.Sets/src/mage/cards/a/AcidicSoil.java +++ b/Mage.Sets/src/mage/cards/a/AcidicSoil.java @@ -33,7 +33,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -78,7 +78,7 @@ class AcidicSoilEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - List permanents = game.getBattlefield().getActivePermanents(new FilterLandPermanent(), source.getControllerId(), source.getSourceId(), game); + List permanents = game.getBattlefield().getActivePermanents(StaticFilters.FILTER_LAND, source.getControllerId(), source.getSourceId(), game); for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) { Player player = game.getPlayer(playerId); if (player != null) { diff --git a/Mage.Sets/src/mage/cards/a/Armageddon.java b/Mage.Sets/src/mage/cards/a/Armageddon.java index 01783d32168..8eda2a39add 100644 --- a/Mage.Sets/src/mage/cards/a/Armageddon.java +++ b/Mage.Sets/src/mage/cards/a/Armageddon.java @@ -31,7 +31,7 @@ import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import java.util.UUID; @@ -46,7 +46,7 @@ public class Armageddon extends CardImpl { // Destroy all lands. - this.getSpellAbility().addEffect(new DestroyAllEffect(new FilterLandPermanent("lands"))); + this.getSpellAbility().addEffect(new DestroyAllEffect(StaticFilters.FILTER_LANDS)); } public Armageddon(final Armageddon card) { diff --git a/Mage.Sets/src/mage/cards/b/BlanketOfNight.java b/Mage.Sets/src/mage/cards/b/BlanketOfNight.java index 3daf758aab0..8532cec6a8b 100644 --- a/Mage.Sets/src/mage/cards/b/BlanketOfNight.java +++ b/Mage.Sets/src/mage/cards/b/BlanketOfNight.java @@ -38,6 +38,7 @@ import mage.constants.CardType; import mage.constants.DependencyType; import mage.constants.Duration; import mage.constants.Zone; +import mage.filter.StaticFilters; import mage.filter.common.FilterLandPermanent; import java.util.UUID; @@ -55,7 +56,7 @@ public class BlanketOfNight extends CardImpl { // Each land is a Swamp in addition to its other land types. Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(new BlackManaAbility(), Duration.WhileOnBattlefield, new FilterLandPermanent(), "Each land is a Swamp in addition to its other land types")); - ability.addEffect(new AddCardSubtypeAllEffect(new FilterLandPermanent(), "Swamp", DependencyType.BecomeSwamp)); + ability.addEffect(new AddCardSubtypeAllEffect(StaticFilters.FILTER_LAND, "Swamp", DependencyType.BecomeSwamp)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BoomBust.java b/Mage.Sets/src/mage/cards/b/BoomBust.java index 7edf763ed8d..01272520d1e 100644 --- a/Mage.Sets/src/mage/cards/b/BoomBust.java +++ b/Mage.Sets/src/mage/cards/b/BoomBust.java @@ -27,7 +27,6 @@ */ package mage.cards.b; -import java.util.UUID; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DestroyAllEffect; import mage.abilities.effects.common.DestroyTargetEffect; @@ -36,10 +35,13 @@ import mage.cards.SplitCard; import mage.constants.CardType; import mage.constants.SpellAbilityType; import mage.constants.TargetController; +import mage.filter.StaticFilters; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.permanent.ControllerPredicate; import mage.target.TargetPermanent; +import java.util.UUID; + public class BoomBust extends SplitCard { private static final FilterLandPermanent filter1 = new FilterLandPermanent("land you control"); @@ -63,7 +65,7 @@ public class BoomBust extends SplitCard { // Bust // Destroy all lands. - getRightHalfCard().getSpellAbility().addEffect(new DestroyAllEffect(new FilterLandPermanent())); + getRightHalfCard().getSpellAbility().addEffect(new DestroyAllEffect(StaticFilters.FILTER_LANDS)); } diff --git a/Mage.Sets/src/mage/cards/b/BurningSands.java b/Mage.Sets/src/mage/cards/b/BurningSands.java index a6bec6f2c9c..f001bcfe42e 100644 --- a/Mage.Sets/src/mage/cards/b/BurningSands.java +++ b/Mage.Sets/src/mage/cards/b/BurningSands.java @@ -34,7 +34,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.targetpointer.FixedTarget; @@ -48,13 +48,12 @@ import java.util.UUID; public class BurningSands extends CardImpl { private final UUID originalId; - private static final FilterLandPermanent filter = new FilterLandPermanent(); public BurningSands(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{R}{R}"); // Whenever a creature dies, that creature's controller sacrifices a land. - Ability ability = new DiesCreatureTriggeredAbility(new SacrificeEffect(filter, 1, "that creature's controller"), false, false, true); + Ability ability = new DiesCreatureTriggeredAbility(new SacrificeEffect(StaticFilters.FILTER_LAND, 1, "that creature's controller"), false, false, true); originalId = ability.getOriginalId(); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/ChromaticLantern.java b/Mage.Sets/src/mage/cards/c/ChromaticLantern.java index d1d4965a3dd..0cfd3398974 100644 --- a/Mage.Sets/src/mage/cards/c/ChromaticLantern.java +++ b/Mage.Sets/src/mage/cards/c/ChromaticLantern.java @@ -35,7 +35,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import java.util.UUID; @@ -48,7 +48,7 @@ public class ChromaticLantern extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}"); // Lands you control have "{T}: Add one mana of any color to your mana pool." - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(new AnyColorManaAbility(), Duration.WhileOnBattlefield, new FilterLandPermanent("Lands"), false))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(new AnyColorManaAbility(), Duration.WhileOnBattlefield, StaticFilters.FILTER_LANDS, false))); // {T}: Add one mana of any color to your mana pool. this.addAbility(new AnyColorManaAbility()); diff --git a/Mage.Sets/src/mage/cards/c/ConcealedCourtyard.java b/Mage.Sets/src/mage/cards/c/ConcealedCourtyard.java index 5a43f451a4c..2fa58106b70 100644 --- a/Mage.Sets/src/mage/cards/c/ConcealedCourtyard.java +++ b/Mage.Sets/src/mage/cards/c/ConcealedCourtyard.java @@ -27,7 +27,6 @@ */ package mage.cards.c; -import mage.constants.ComparisonType; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.condition.Condition; import mage.abilities.condition.InvertCondition; @@ -39,7 +38,8 @@ import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterLandPermanent; +import mage.constants.ComparisonType; +import mage.filter.StaticFilters; import java.util.UUID; @@ -53,7 +53,7 @@ public class ConcealedCourtyard extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.LAND},""); // Concealed Courtyard enters the battlefield tapped unless you control two or fewer other lands. - Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(new FilterLandPermanent(), ComparisonType.FEWER_THAN, 3)); + Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 3)); String abilityText = "tapped unless you control fewer than 3 lands"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); diff --git a/Mage.Sets/src/mage/cards/c/CopperlineGorge.java b/Mage.Sets/src/mage/cards/c/CopperlineGorge.java index e8009154d02..35bce7dc386 100644 --- a/Mage.Sets/src/mage/cards/c/CopperlineGorge.java +++ b/Mage.Sets/src/mage/cards/c/CopperlineGorge.java @@ -27,7 +27,6 @@ */ package mage.cards.c; -import mage.constants.ComparisonType; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.condition.Condition; import mage.abilities.condition.InvertCondition; @@ -39,7 +38,8 @@ import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterLandPermanent; +import mage.constants.ComparisonType; +import mage.filter.StaticFilters; import java.util.UUID; @@ -48,14 +48,11 @@ import java.util.UUID; * @author maurer.it_at_gmail.com */ public class CopperlineGorge extends CardImpl { - - private static FilterLandPermanent filter = new FilterLandPermanent(); - public CopperlineGorge(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.LAND},null); // Copperline Gorge enters the battlefield tapped unless you control two or fewer other lands. - Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.FEWER_THAN, 3)); + Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 3)); String abilityText = "tapped unless you control two or fewer other lands"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); this.addAbility(new RedManaAbility()); diff --git a/Mage.Sets/src/mage/cards/d/DecreeOfAnnihilation.java b/Mage.Sets/src/mage/cards/d/DecreeOfAnnihilation.java index 8d2998961b1..b4df27f0344 100644 --- a/Mage.Sets/src/mage/cards/d/DecreeOfAnnihilation.java +++ b/Mage.Sets/src/mage/cards/d/DecreeOfAnnihilation.java @@ -28,25 +28,25 @@ package mage.cards.d; import mage.abilities.Ability; - import mage.abilities.common.CycleTriggeredAbility; - import mage.abilities.costs.mana.ManaCostsImpl; - import mage.abilities.effects.OneShotEffect; - import mage.abilities.effects.common.DestroyAllEffect; - import mage.abilities.keyword.CyclingAbility; - import mage.cards.Card; - import mage.cards.CardImpl; - import mage.cards.CardSetInfo; - import mage.constants.CardType; - import mage.constants.Outcome; - import mage.filter.FilterPermanent; - import mage.filter.common.FilterLandPermanent; - import mage.filter.predicate.Predicates; - import mage.filter.predicate.mageobject.CardTypePredicate; - import mage.game.Game; - import mage.game.permanent.Permanent; - import mage.players.Player; +import mage.abilities.common.CycleTriggeredAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DestroyAllEffect; +import mage.abilities.keyword.CyclingAbility; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.filter.FilterPermanent; +import mage.filter.StaticFilters; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; - import java.util.UUID; +import java.util.UUID; /** * @@ -64,7 +64,7 @@ public class DecreeOfAnnihilation extends CardImpl { this.addAbility(new CyclingAbility(new ManaCostsImpl("{5}{R}{R}"))); // When you cycle Decree of Annihilation, destroy all lands. - Ability ability = new CycleTriggeredAbility(new DestroyAllEffect(new FilterLandPermanent("lands")), false); + Ability ability = new CycleTriggeredAbility(new DestroyAllEffect(StaticFilters.FILTER_LANDS), false); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DesolationAngel.java b/Mage.Sets/src/mage/cards/d/DesolationAngel.java index 6de8b95a9f6..2e8c6307cb4 100644 --- a/Mage.Sets/src/mage/cards/d/DesolationAngel.java +++ b/Mage.Sets/src/mage/cards/d/DesolationAngel.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.TargetController; +import mage.filter.StaticFilters; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.permanent.ControllerPredicate; @@ -48,7 +49,6 @@ import java.util.UUID; */ public class DesolationAngel extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("lands"); private static final FilterLandPermanent filter2 = new FilterLandPermanent("lands you control"); static { @@ -69,7 +69,7 @@ public class DesolationAngel extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // When Desolation Angel enters the battlefield, destroy all lands you control. If it was kicked, destroy all lands instead. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ConditionalOneShotEffect(new DestroyAllEffect(filter), + this.addAbility(new EntersBattlefieldTriggeredAbility(new ConditionalOneShotEffect(new DestroyAllEffect(StaticFilters.FILTER_LANDS), new DestroyAllEffect(filter2), KickedCondition.instance, "destroy all lands you control. If it was kicked, destroy all lands instead."))); } diff --git a/Mage.Sets/src/mage/cards/f/FoulSpirit.java b/Mage.Sets/src/mage/cards/f/FoulSpirit.java index cf8a297cb27..5deb57ba9b1 100644 --- a/Mage.Sets/src/mage/cards/f/FoulSpirit.java +++ b/Mage.Sets/src/mage/cards/f/FoulSpirit.java @@ -34,7 +34,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import java.util.UUID; @@ -54,7 +54,7 @@ public class FoulSpirit extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // When Foul Spirit enters the battlefield, sacrifice a land. - this.addAbility(new EntersBattlefieldTriggeredAbility(new SacrificeControllerEffect(new FilterLandPermanent(), 1, ""), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new SacrificeControllerEffect(StaticFilters.FILTER_LAND, 1, ""), false)); } public FoulSpirit(final FoulSpirit card) { diff --git a/Mage.Sets/src/mage/cards/g/GiftOfEstates.java b/Mage.Sets/src/mage/cards/g/GiftOfEstates.java index 1d29a6303be..ac340a1789f 100644 --- a/Mage.Sets/src/mage/cards/g/GiftOfEstates.java +++ b/Mage.Sets/src/mage/cards/g/GiftOfEstates.java @@ -35,7 +35,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.filter.FilterCard; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -61,7 +61,7 @@ public class GiftOfEstates extends CardImpl { // If an opponent controls more lands than you, search your library for up to three Plains cards, reveal them, and put them into your hand. Then shuffle your library. this.getSpellAbility().addEffect(new ConditionalOneShotEffect( new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 3, filter), true), - new OpponentControlsMoreCondition(new FilterLandPermanent("lands")))); + new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS))); } public GiftOfEstates(final GiftOfEstates card) { diff --git a/Mage.Sets/src/mage/cards/g/GiltLeafArchdruid.java b/Mage.Sets/src/mage/cards/g/GiltLeafArchdruid.java index 43e8951c60e..95173b41145 100644 --- a/Mage.Sets/src/mage/cards/g/GiltLeafArchdruid.java +++ b/Mage.Sets/src/mage/cards/g/GiltLeafArchdruid.java @@ -39,8 +39,8 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.FilterSpell; +import mage.filter.StaticFilters; import mage.filter.common.FilterControlledCreaturePermanent; -import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -108,7 +108,7 @@ class GainControlAllLandsEffect extends ContinuousEffectImpl { public boolean apply(Game game, Ability source) { Player targetPlayer = game.getPlayer(targetPointer.getFirst(game, source)); if (targetPlayer != null && targetPlayer.isInGame()) { - for (Permanent permanent : game.getBattlefield().getAllActivePermanents(new FilterLandPermanent(), targetPointer.getFirst(game, source), game)) { + for (Permanent permanent : game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_LANDS, targetPointer.getFirst(game, source), game)) { if (permanent != null) { permanent.changeControllerId(source.getControllerId(), game); } diff --git a/Mage.Sets/src/mage/cards/g/GlobalRuin.java b/Mage.Sets/src/mage/cards/g/GlobalRuin.java index 0bc382a9152..94b8942ddb8 100644 --- a/Mage.Sets/src/mage/cards/g/GlobalRuin.java +++ b/Mage.Sets/src/mage/cards/g/GlobalRuin.java @@ -35,8 +35,8 @@ import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.SubType; import mage.constants.SubTypeSet; +import mage.filter.StaticFilters; import mage.filter.common.FilterControlledLandPermanent; -import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; @@ -104,7 +104,7 @@ class GlobalRuinDestroyLandEffect extends OneShotEffect { } } } - for (Permanent permanent : game.getBattlefield().getAllActivePermanents(new FilterLandPermanent(), game)) { + for (Permanent permanent : game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_LAND, game)) { if (!lands.contains(permanent.getId())) { permanent.sacrifice(permanent.getId(), game); } diff --git a/Mage.Sets/src/mage/cards/g/GoblinFirebug.java b/Mage.Sets/src/mage/cards/g/GoblinFirebug.java index 752cc5e2da2..5139a3bb5a3 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinFirebug.java +++ b/Mage.Sets/src/mage/cards/g/GoblinFirebug.java @@ -33,7 +33,7 @@ import mage.abilities.effects.common.SacrificeControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import java.util.UUID; @@ -50,7 +50,7 @@ public class GoblinFirebug extends CardImpl { this.toughness = new MageInt(2); // When Goblin Firebug leaves the battlefield, sacrifice a land. - this.addAbility(new LeavesBattlefieldTriggeredAbility(new SacrificeControllerEffect(new FilterLandPermanent(), 1, ""), false)); + this.addAbility(new LeavesBattlefieldTriggeredAbility(new SacrificeControllerEffect(StaticFilters.FILTER_LAND, 1, ""), false)); } public GoblinFirebug(final GoblinFirebug card) { diff --git a/Mage.Sets/src/mage/cards/g/GulfSquid.java b/Mage.Sets/src/mage/cards/g/GulfSquid.java index 6561bfe9311..16a46aeac43 100644 --- a/Mage.Sets/src/mage/cards/g/GulfSquid.java +++ b/Mage.Sets/src/mage/cards/g/GulfSquid.java @@ -34,7 +34,7 @@ import mage.abilities.effects.common.TapAllTargetPlayerControlsEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.target.TargetPlayer; import java.util.UUID; @@ -53,7 +53,7 @@ public class GulfSquid extends CardImpl { this.toughness = new MageInt(2); // When Gulf Squid enters the battlefield, tap all lands target player controls. - Ability ability = new EntersBattlefieldTriggeredAbility(new TapAllTargetPlayerControlsEffect(new FilterLandPermanent("lands"))); + Ability ability = new EntersBattlefieldTriggeredAbility(new TapAllTargetPlayerControlsEffect(StaticFilters.FILTER_LANDS)); ability.addTarget(new TargetPlayer()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HokoriDustDrinker.java b/Mage.Sets/src/mage/cards/h/HokoriDustDrinker.java index b817e76543e..89c7204d2f2 100644 --- a/Mage.Sets/src/mage/cards/h/HokoriDustDrinker.java +++ b/Mage.Sets/src/mage/cards/h/HokoriDustDrinker.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; +import mage.filter.StaticFilters; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; @@ -60,7 +61,7 @@ public class HokoriDustDrinker extends CardImpl { this.toughness = new MageInt(2); // Lands don't untap during their controllers' untap steps. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, new FilterLandPermanent("Lands")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, StaticFilters.FILTER_LANDS))); // At the beginning of each player's upkeep, that player untaps a land he or she controls. this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new HokoriDustDrinkerUntapEffect(), TargetController.ANY, false)); diff --git a/Mage.Sets/src/mage/cards/i/InspiringVantage.java b/Mage.Sets/src/mage/cards/i/InspiringVantage.java index 32353b18e90..be17134f612 100644 --- a/Mage.Sets/src/mage/cards/i/InspiringVantage.java +++ b/Mage.Sets/src/mage/cards/i/InspiringVantage.java @@ -27,9 +27,6 @@ */ package mage.cards.i; -import java.util.UUID; - -import mage.constants.ComparisonType; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.condition.Condition; import mage.abilities.condition.InvertCondition; @@ -41,19 +38,21 @@ import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterLandPermanent; +import mage.constants.ComparisonType; +import mage.filter.StaticFilters; + +import java.util.UUID; /** - * * @author fireshoes */ public class InspiringVantage extends CardImpl { public InspiringVantage(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.LAND},""); + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); // Inspiring Vantage enters the battlefield tapped unless you control two or fewer other lands. - Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(new FilterLandPermanent(), ComparisonType.FEWER_THAN, 3)); + Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 3)); String abilityText = "tapped unless you control fewer than 3 lands"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); diff --git a/Mage.Sets/src/mage/cards/j/JoinerAdept.java b/Mage.Sets/src/mage/cards/j/JoinerAdept.java index d5751527d0c..0d91b0d6861 100644 --- a/Mage.Sets/src/mage/cards/j/JoinerAdept.java +++ b/Mage.Sets/src/mage/cards/j/JoinerAdept.java @@ -27,18 +27,18 @@ */ package mage.cards.j; -import java.util.UUID; - -import mage.constants.CardType; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.mana.AnyColorManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; + +import java.util.UUID; /** * @@ -53,7 +53,7 @@ public class JoinerAdept extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(1); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(new AnyColorManaAbility(), Duration.WhileOnBattlefield, new FilterLandPermanent(), false))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(new AnyColorManaAbility(), Duration.WhileOnBattlefield, StaticFilters.FILTER_LANDS, false))); } public JoinerAdept(final JoinerAdept card) { diff --git a/Mage.Sets/src/mage/cards/k/KnightOfTheWhiteOrchid.java b/Mage.Sets/src/mage/cards/k/KnightOfTheWhiteOrchid.java index 54ecc742404..369137b4ed0 100644 --- a/Mage.Sets/src/mage/cards/k/KnightOfTheWhiteOrchid.java +++ b/Mage.Sets/src/mage/cards/k/KnightOfTheWhiteOrchid.java @@ -28,8 +28,6 @@ package mage.cards.k; -import java.util.UUID; -import mage.constants.CardType; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.OpponentControlsMoreCondition; @@ -38,11 +36,14 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.CardType; import mage.constants.SubType; +import mage.filter.StaticFilters; import mage.filter.common.FilterBySubtypeCard; -import mage.filter.common.FilterLandPermanent; import mage.target.common.TargetCardInLibrary; +import java.util.UUID; + /** * * @author BetaSteward_at_googlemail.com @@ -63,7 +64,7 @@ public class KnightOfTheWhiteOrchid extends CardImpl { // When Knight of the White Orchid enters the battlefield, if an opponent controls more lands than you, you may search your library for a Plains card, put it onto the battlefield, then shuffle your library. this.addAbility(new ConditionalTriggeredAbility( new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, new FilterBySubtypeCard(SubType.PLAINS)), false), true), - new OpponentControlsMoreCondition(new FilterLandPermanent("lands")), + new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS), "When {this} enters the battlefield, if an opponent controls more lands than you, you may search your library for a Plains card, put it onto the battlefield, then shuffle your library")); } diff --git a/Mage.Sets/src/mage/cards/l/LandEquilibrium.java b/Mage.Sets/src/mage/cards/l/LandEquilibrium.java index 33027bb7815..a7cecfd3bd3 100644 --- a/Mage.Sets/src/mage/cards/l/LandEquilibrium.java +++ b/Mage.Sets/src/mage/cards/l/LandEquilibrium.java @@ -27,19 +27,20 @@ */ package mage.cards.l; -import java.util.UUID; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.common.SacrificeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; import mage.target.targetpointer.FixedTarget; +import java.util.UUID; + /** * * @author spjspj @@ -65,10 +66,8 @@ public class LandEquilibrium extends CardImpl { class LandEquilibriumAbility extends TriggeredAbilityImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("land"); - public LandEquilibriumAbility() { - super(Zone.BATTLEFIELD, new SacrificeEffect(new FilterLandPermanent(), 1, ""), false); + super(Zone.BATTLEFIELD, new SacrificeEffect(StaticFilters.FILTER_LAND, 1, ""), false); } public LandEquilibriumAbility(final LandEquilibriumAbility ability) { @@ -87,8 +86,8 @@ class LandEquilibriumAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { - int numMyLands = game.getBattlefield().countAll(filter, this.getControllerId(), game); - int theirLands = game.getBattlefield().countAll(filter, event.getPlayerId(), game); + int numMyLands = game.getBattlefield().countAll(StaticFilters.FILTER_LAND, this.getControllerId(), game); + int theirLands = game.getBattlefield().countAll(StaticFilters.FILTER_LAND, event.getPlayerId(), game); if (numMyLands < theirLands) { this.getEffects().get(0).setTargetPointer(new FixedTarget(event.getPlayerId())); return true; diff --git a/Mage.Sets/src/mage/cards/l/LandTax.java b/Mage.Sets/src/mage/cards/l/LandTax.java index 2045ad46103..30b0fe99b28 100644 --- a/Mage.Sets/src/mage/cards/l/LandTax.java +++ b/Mage.Sets/src/mage/cards/l/LandTax.java @@ -27,7 +27,6 @@ */ package mage.cards.l; -import java.util.UUID; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.condition.common.OpponentControlsMoreCondition; import mage.abilities.decorator.ConditionalTriggeredAbility; @@ -36,10 +35,12 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.TargetController; +import mage.filter.StaticFilters; import mage.filter.common.FilterBasicLandCard; -import mage.filter.common.FilterLandPermanent; import mage.target.common.TargetCardInLibrary; +import java.util.UUID; + /** * * @author LevelX2 @@ -52,7 +53,7 @@ public class LandTax extends CardImpl { // At the beginning of your upkeep, if an opponent controls more lands than you, you may search your library for up to three basic land cards, reveal them, and put them into your hand. If you do, shuffle your library. this.addAbility(new ConditionalTriggeredAbility( new BeginningOfUpkeepTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 3, new FilterBasicLandCard()), true), TargetController.YOU, true), - new OpponentControlsMoreCondition(new FilterLandPermanent("lands")), + new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS), "At the beginning of your upkeep, if an opponent controls more lands than you, you may search your library for up to three basic land cards, reveal them, and put them into your hand. If you do, shuffle your library" )); diff --git a/Mage.Sets/src/mage/cards/l/LavaballTrap.java b/Mage.Sets/src/mage/cards/l/LavaballTrap.java index b51e94de928..e803d6a55b1 100644 --- a/Mage.Sets/src/mage/cards/l/LavaballTrap.java +++ b/Mage.Sets/src/mage/cards/l/LavaballTrap.java @@ -27,8 +27,6 @@ */ package mage.cards.l; -import java.util.List; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.condition.Condition; import mage.abilities.costs.AlternativeCostSourceAbility; @@ -38,13 +36,16 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; -import mage.filter.common.FilterLandPermanent; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetLandPermanent; import mage.watchers.common.PermanentsEnteredBattlefieldWatcher; +import java.util.List; +import java.util.UUID; + /** * * @author jeffwadsworth @@ -61,7 +62,7 @@ public class LavaballTrap extends CardImpl { // Destroy two target lands. Lavaball Trap deals 4 damage to each creature. this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new DamageAllEffect(4, new FilterCreaturePermanent())); - this.getSpellAbility().addTarget(new TargetLandPermanent(2, 2, new FilterLandPermanent("lands"), false)); + this.getSpellAbility().addTarget(new TargetLandPermanent(2, 2, StaticFilters.FILTER_LANDS, false)); } diff --git a/Mage.Sets/src/mage/cards/l/LiegeOfTheTangle.java b/Mage.Sets/src/mage/cards/l/LiegeOfTheTangle.java index f3063ea85bc..2d6414ab23a 100644 --- a/Mage.Sets/src/mage/cards/l/LiegeOfTheTangle.java +++ b/Mage.Sets/src/mage/cards/l/LiegeOfTheTangle.java @@ -39,7 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.counters.CounterType; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; @@ -82,7 +82,7 @@ class LiegeOfTheTangleTriggeredAbility extends TriggeredAbilityImpl { LiegeOfTheTangleTriggeredAbility() { super(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.AWAKENING.createInstance())); this.addEffect(new LiegeOfTheTangleEffect()); - Target target = new TargetLandPermanent(0, Integer.MAX_VALUE, new FilterLandPermanent(), true); + Target target = new TargetLandPermanent(0, Integer.MAX_VALUE, StaticFilters.FILTER_LANDS, true); this.addTarget(target); } diff --git a/Mage.Sets/src/mage/cards/l/LivingPlane.java b/Mage.Sets/src/mage/cards/l/LivingPlane.java index f1f0d84a0cc..323b413da2a 100644 --- a/Mage.Sets/src/mage/cards/l/LivingPlane.java +++ b/Mage.Sets/src/mage/cards/l/LivingPlane.java @@ -27,7 +27,6 @@ */ package mage.cards.l; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continuous.BecomesCreatureAllEffect; @@ -37,9 +36,11 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SuperType; import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.game.permanent.token.Token; +import java.util.UUID; + /** * * @author fireshoes @@ -51,7 +52,7 @@ public class LivingPlane extends CardImpl { this.addSuperType(SuperType.WORLD); // All lands are 1/1 creatures that are still lands. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesCreatureAllEffect(new LivingPlaneToken(), "lands", new FilterLandPermanent("lands"), Duration.WhileOnBattlefield))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesCreatureAllEffect(new LivingPlaneToken(), "lands", StaticFilters.FILTER_LANDS, Duration.WhileOnBattlefield))); } public LivingPlane(final LivingPlane card) { diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheCandelabra.java b/Mage.Sets/src/mage/cards/m/MagusOfTheCandelabra.java index 02375789276..b221dac8290 100644 --- a/Mage.Sets/src/mage/cards/m/MagusOfTheCandelabra.java +++ b/Mage.Sets/src/mage/cards/m/MagusOfTheCandelabra.java @@ -27,7 +27,6 @@ */ package mage.cards.m; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -39,10 +38,12 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.game.Game; import mage.target.common.TargetLandPermanent; +import java.util.UUID; + /** * @author duncant */ @@ -72,7 +73,7 @@ public class MagusOfTheCandelabra extends CardImpl { if (ability.getOriginalId().equals(originalId)){ int xValue = ability.getManaCostsToPay().getX(); ability.getTargets().clear(); - ability.addTarget(new TargetLandPermanent(xValue, xValue, new FilterLandPermanent(), false)); + ability.addTarget(new TargetLandPermanent(xValue, xValue, StaticFilters.FILTER_LANDS, false)); } } diff --git a/Mage.Sets/src/mage/cards/m/ManaShort.java b/Mage.Sets/src/mage/cards/m/ManaShort.java index 423679897a6..79a2aa5b4a2 100644 --- a/Mage.Sets/src/mage/cards/m/ManaShort.java +++ b/Mage.Sets/src/mage/cards/m/ManaShort.java @@ -27,17 +27,18 @@ */ package mage.cards.m; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.common.TapAllTargetPlayerControlsEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.game.Game; import mage.players.Player; import mage.target.TargetPlayer; +import java.util.UUID; + /** * * @author Quercitron @@ -65,7 +66,7 @@ public class ManaShort extends CardImpl { class ManaShortEffect extends TapAllTargetPlayerControlsEffect { public ManaShortEffect() { - super(new FilterLandPermanent("lands")); + super(StaticFilters.FILTER_LANDS); staticText = "Tap all lands target player controls and empty his or her mana pool"; } diff --git a/Mage.Sets/src/mage/cards/m/ManaVortex.java b/Mage.Sets/src/mage/cards/m/ManaVortex.java index 9ad92bfc4c1..d7ec8b27568 100644 --- a/Mage.Sets/src/mage/cards/m/ManaVortex.java +++ b/Mage.Sets/src/mage/cards/m/ManaVortex.java @@ -27,7 +27,6 @@ */ package mage.cards.m; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.Mode; import mage.abilities.StateTriggeredAbility; @@ -43,8 +42,8 @@ import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.TargetController; import mage.constants.Zone; +import mage.filter.StaticFilters; import mage.filter.common.FilterControlledLandPermanent; -import mage.filter.common.FilterLandPermanent; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.stack.Spell; @@ -52,13 +51,13 @@ import mage.game.stack.StackObject; import mage.players.Player; import mage.target.common.TargetControlledPermanent; +import java.util.UUID; + /** * * @author fireshoes */ public class ManaVortex extends CardImpl { - - static final FilterLandPermanent filter = new FilterLandPermanent(); public ManaVortex(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}{U}"); @@ -67,7 +66,7 @@ public class ManaVortex extends CardImpl { this.addAbility(new CastSourceTriggeredAbility(new CounterSourceEffect())); // At the beginning of each player's upkeep, that player sacrifices a land. - this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SacrificeEffect(new FilterLandPermanent(), 1, "that player"), + this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SacrificeEffect(StaticFilters.FILTER_LAND, 1, "that player"), TargetController.ANY, false)); // When there are no lands on the battlefield, sacrifice Mana Vortex. @@ -151,7 +150,7 @@ class ManaVortexStateTriggeredAbility extends StateTriggeredAbility { @Override public boolean checkTrigger(GameEvent event, Game game) { - return game.getBattlefield().count(ManaVortex.filter, this.getSourceId(), this.getControllerId(), game) == 0; + return game.getBattlefield().count(StaticFilters.FILTER_LANDS, this.getSourceId(), this.getControllerId(), game) == 0; } @Override diff --git a/Mage.Sets/src/mage/cards/m/MishrasHelix.java b/Mage.Sets/src/mage/cards/m/MishrasHelix.java index a05e4e11d11..d8447abb581 100644 --- a/Mage.Sets/src/mage/cards/m/MishrasHelix.java +++ b/Mage.Sets/src/mage/cards/m/MishrasHelix.java @@ -27,7 +27,6 @@ */ package mage.cards.m; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; @@ -38,10 +37,12 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.game.Game; import mage.target.common.TargetLandPermanent; +import java.util.UUID; + /** * * @author fireshoes @@ -66,7 +67,7 @@ public class MishrasHelix extends CardImpl { if (ability.getOriginalId().equals(originalId)){ int xValue = ability.getManaCostsToPay().getX(); ability.getTargets().clear(); - ability.addTarget(new TargetLandPermanent(xValue, xValue, new FilterLandPermanent(), false)); + ability.addTarget(new TargetLandPermanent(xValue, xValue, StaticFilters.FILTER_LANDS, false)); } } diff --git a/Mage.Sets/src/mage/cards/m/MistbindClique.java b/Mage.Sets/src/mage/cards/m/MistbindClique.java index 2b7fc6b56c1..76f3901fb7d 100644 --- a/Mage.Sets/src/mage/cards/m/MistbindClique.java +++ b/Mage.Sets/src/mage/cards/m/MistbindClique.java @@ -27,7 +27,6 @@ */ package mage.cards.m; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.ZoneChangeTriggeredAbility; import mage.abilities.effects.common.TapAllTargetPlayerControlsEffect; @@ -39,12 +38,14 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.target.TargetPlayer; +import java.util.UUID; + /** * * @author LevelX2 @@ -84,7 +85,7 @@ class MistbindCliqueAbility extends ZoneChangeTriggeredAbility { public MistbindCliqueAbility() { // ability has to trigger independant where the source object is now - super(Zone.ALL, Zone.BATTLEFIELD, Zone.EXILED, new TapAllTargetPlayerControlsEffect(new FilterLandPermanent("lands")), "When a Faerie is championed with {this}, ", false); + super(Zone.ALL, Zone.BATTLEFIELD, Zone.EXILED, new TapAllTargetPlayerControlsEffect(StaticFilters.FILTER_LANDS), "When a Faerie is championed with {this}, ", false); this.addTarget(new TargetPlayer()); } diff --git a/Mage.Sets/src/mage/cards/m/MyojinOfInfiniteRage.java b/Mage.Sets/src/mage/cards/m/MyojinOfInfiniteRage.java index 3f39280b9f1..bc3a467830b 100644 --- a/Mage.Sets/src/mage/cards/m/MyojinOfInfiniteRage.java +++ b/Mage.Sets/src/mage/cards/m/MyojinOfInfiniteRage.java @@ -47,7 +47,7 @@ import mage.constants.Duration; import mage.constants.SuperType; import mage.constants.Zone; import mage.counters.CounterType; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.watchers.common.CastFromHandWatcher; import java.util.UUID; @@ -57,8 +57,6 @@ import java.util.UUID; */ public class MyojinOfInfiniteRage extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("lands"); - public MyojinOfInfiniteRage(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{7}{R}{R}{R}"); addSuperType(SuperType.LEGENDARY); @@ -75,7 +73,7 @@ public class MyojinOfInfiniteRage extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield), new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it"))); // Remove a divinity counter from Myojin of Infinite Rage: Destroy all lands. - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyAllEffect(filter), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance()))); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyAllEffect(StaticFilters.FILTER_LANDS), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance()))); } public MyojinOfInfiniteRage(final MyojinOfInfiniteRage card) { diff --git a/Mage.Sets/src/mage/cards/n/NaturesWill.java b/Mage.Sets/src/mage/cards/n/NaturesWill.java index 4ba7e84e89b..c717da3575c 100644 --- a/Mage.Sets/src/mage/cards/n/NaturesWill.java +++ b/Mage.Sets/src/mage/cards/n/NaturesWill.java @@ -36,7 +36,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; @@ -152,8 +152,7 @@ class NaturesWillEffect extends OneShotEffect { return false; } - FilterLandPermanent filter = new FilterLandPermanent(); - List lands = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game); + List lands = game.getBattlefield().getActivePermanents(StaticFilters.FILTER_LAND, source.getControllerId(), source.getSourceId(), game); for (Permanent land : lands) { if (damagedPlayers.contains(land.getControllerId())) { land.tap(game); diff --git a/Mage.Sets/src/mage/cards/n/NissaSageAnimist.java b/Mage.Sets/src/mage/cards/n/NissaSageAnimist.java index 6f5d6854612..0473a381b8b 100644 --- a/Mage.Sets/src/mage/cards/n/NissaSageAnimist.java +++ b/Mage.Sets/src/mage/cards/n/NissaSageAnimist.java @@ -27,7 +27,6 @@ */ package mage.cards.n; -import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; @@ -41,13 +40,15 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.cards.CardsImpl; import mage.constants.*; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.NissaSageAnimistToken; import mage.players.Player; import mage.target.common.TargetLandPermanent; +import java.util.UUID; + /** * * @author emerald000 @@ -71,7 +72,7 @@ public class NissaSageAnimist extends CardImpl { // -7: Untap up to six target lands. They become 6/6 Elemental creatures. They're still lands. Ability ability = new LoyaltyAbility(new UntapTargetEffect(), -7); - ability.addTarget(new TargetLandPermanent(0, 6, new FilterLandPermanent("lands"), false)); + ability.addTarget(new TargetLandPermanent(0, 6, StaticFilters.FILTER_LANDS, false)); ability.addEffect(new NissaSageAnimistMinusSevenEffect()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/n/NumotTheDevastator.java b/Mage.Sets/src/mage/cards/n/NumotTheDevastator.java index f8e74fb52bf..9a1f1e6425c 100644 --- a/Mage.Sets/src/mage/cards/n/NumotTheDevastator.java +++ b/Mage.Sets/src/mage/cards/n/NumotTheDevastator.java @@ -39,7 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SuperType; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.target.common.TargetLandPermanent; import java.util.UUID; @@ -65,7 +65,7 @@ public class NumotTheDevastator extends CardImpl { effect.setText("destroy up to two target lands"); Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility( new DoIfCostPaid(effect, new ManaCostsImpl("{2}{R}")), false); - ability.addTarget(new TargetLandPermanent(0,2, new FilterLandPermanent("lands"), false)); + ability.addTarget(new TargetLandPermanent(0,2, StaticFilters.FILTER_LANDS, false)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PlowUnder.java b/Mage.Sets/src/mage/cards/p/PlowUnder.java index f771fe4a7ac..d5395b91462 100644 --- a/Mage.Sets/src/mage/cards/p/PlowUnder.java +++ b/Mage.Sets/src/mage/cards/p/PlowUnder.java @@ -27,14 +27,15 @@ */ package mage.cards.p; -import java.util.UUID; import mage.abilities.effects.common.PutOnLibraryTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.target.common.TargetLandPermanent; +import java.util.UUID; + /** * * @author Plopman @@ -47,7 +48,7 @@ public class PlowUnder extends CardImpl { // Put two target lands on top of their owners' libraries. this.getSpellAbility().addEffect(new PutOnLibraryTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetLandPermanent(2,2, new FilterLandPermanent("lands"), false)); + this.getSpellAbility().addTarget(new TargetLandPermanent(2,2, StaticFilters.FILTER_LANDS, false)); } public PlowUnder(final PlowUnder card) { diff --git a/Mage.Sets/src/mage/cards/r/RavagesOfWar.java b/Mage.Sets/src/mage/cards/r/RavagesOfWar.java index a154fdacf86..c3789ef99d3 100644 --- a/Mage.Sets/src/mage/cards/r/RavagesOfWar.java +++ b/Mage.Sets/src/mage/cards/r/RavagesOfWar.java @@ -27,12 +27,13 @@ */ package mage.cards.r; -import java.util.UUID; import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; + +import java.util.UUID; /** * @@ -45,7 +46,7 @@ public class RavagesOfWar extends CardImpl { // Destroy all lands. - this.getSpellAbility().addEffect(new DestroyAllEffect(new FilterLandPermanent("lands"))); + this.getSpellAbility().addEffect(new DestroyAllEffect(StaticFilters.FILTER_LANDS)); } public RavagesOfWar(final RavagesOfWar card) { diff --git a/Mage.Sets/src/mage/cards/r/RazorvergeThicket.java b/Mage.Sets/src/mage/cards/r/RazorvergeThicket.java index 810858a04cf..f670b51acfb 100644 --- a/Mage.Sets/src/mage/cards/r/RazorvergeThicket.java +++ b/Mage.Sets/src/mage/cards/r/RazorvergeThicket.java @@ -27,9 +27,6 @@ */ package mage.cards.r; -import java.util.UUID; - -import mage.constants.ComparisonType; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.condition.Condition; import mage.abilities.condition.InvertCondition; @@ -41,7 +38,10 @@ import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterLandPermanent; +import mage.constants.ComparisonType; +import mage.filter.StaticFilters; + +import java.util.UUID; /** * @@ -49,12 +49,10 @@ import mage.filter.common.FilterLandPermanent; */ public class RazorvergeThicket extends CardImpl { - private static FilterLandPermanent filter = new FilterLandPermanent(); - public RazorvergeThicket(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.LAND},null); - Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.FEWER_THAN, 3)); + Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 3)); String abilityText = "tap it unless you control fewer than 3 lands"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); diff --git a/Mage.Sets/src/mage/cards/r/RisingWaters.java b/Mage.Sets/src/mage/cards/r/RisingWaters.java index 133a14497df..b596aa735bd 100644 --- a/Mage.Sets/src/mage/cards/r/RisingWaters.java +++ b/Mage.Sets/src/mage/cards/r/RisingWaters.java @@ -27,7 +27,6 @@ */ package mage.cards.r; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; @@ -35,11 +34,8 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; +import mage.filter.StaticFilters; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; @@ -48,6 +44,8 @@ import mage.players.Player; import mage.target.Target; import mage.target.common.TargetLandPermanent; +import java.util.UUID; + /** * * @author fireshoes @@ -59,7 +57,7 @@ public class RisingWaters extends CardImpl { // Lands don't untap during their controllers' untap steps. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, - new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, new FilterLandPermanent("Lands")))); + new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, StaticFilters.FILTER_LANDS))); // At the beginning of each player's upkeep, that player untaps a land he or she controls. this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new RisingWatersUntapEffect(), TargetController.ANY, false)); diff --git a/Mage.Sets/src/mage/cards/r/Rivalry.java b/Mage.Sets/src/mage/cards/r/Rivalry.java index 900fb4f1ad6..1756bfa7e2e 100644 --- a/Mage.Sets/src/mage/cards/r/Rivalry.java +++ b/Mage.Sets/src/mage/cards/r/Rivalry.java @@ -27,7 +27,6 @@ */ package mage.cards.r; -import java.util.UUID; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetEffect; @@ -35,13 +34,14 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; import mage.target.targetpointer.FixedTarget; +import java.util.UUID; + /** * * @author Plopman @@ -69,10 +69,6 @@ public class Rivalry extends CardImpl { class RivalryTriggeredAbility extends TriggeredAbilityImpl { - private static final FilterPermanent filter = new FilterLandPermanent(); - - - public RivalryTriggeredAbility() { super(Zone.BATTLEFIELD, new DamageTargetEffect(2), false); } @@ -104,10 +100,10 @@ class RivalryTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean checkInterveningIfClause(Game game) { UUID player = game.getActivePlayerId(); - int land = game.getBattlefield().countAll(filter, player, game); + int land = game.getBattlefield().countAll(StaticFilters.FILTER_LAND, player, game); if(player != null){ for(UUID opponent : game.getOpponents(player)){ - if(land <= game.getBattlefield().countAll(filter, opponent, game)){ + if(land <= game.getBattlefield().countAll(StaticFilters.FILTER_LAND, opponent, game)){ return false; } } diff --git a/Mage.Sets/src/mage/cards/r/RuinousMinotaur.java b/Mage.Sets/src/mage/cards/r/RuinousMinotaur.java index fef8cdbb8f8..7a65ae01bb9 100644 --- a/Mage.Sets/src/mage/cards/r/RuinousMinotaur.java +++ b/Mage.Sets/src/mage/cards/r/RuinousMinotaur.java @@ -27,14 +27,15 @@ */ package mage.cards.r; -import java.util.UUID; -import mage.constants.CardType; import mage.MageInt; import mage.abilities.common.DealsDamageToOpponentTriggeredAbility; import mage.abilities.effects.common.SacrificeControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.common.FilterLandPermanent; +import mage.constants.CardType; +import mage.filter.StaticFilters; + +import java.util.UUID; /** * @@ -51,7 +52,7 @@ public class RuinousMinotaur extends CardImpl { this.toughness = new MageInt(2); // Whenever Ruinous Minotaur deals damage to an opponent, sacrifice a land. - this.addAbility(new DealsDamageToOpponentTriggeredAbility(new SacrificeControllerEffect(new FilterLandPermanent(), 1, ""), false, false)); + this.addAbility(new DealsDamageToOpponentTriggeredAbility(new SacrificeControllerEffect(StaticFilters.FILTER_LAND, 1, ""), false, false)); } diff --git a/Mage.Sets/src/mage/cards/s/SeachromeCoast.java b/Mage.Sets/src/mage/cards/s/SeachromeCoast.java index 6402dd3aa77..07685bd2358 100644 --- a/Mage.Sets/src/mage/cards/s/SeachromeCoast.java +++ b/Mage.Sets/src/mage/cards/s/SeachromeCoast.java @@ -27,9 +27,6 @@ */ package mage.cards.s; -import java.util.UUID; - -import mage.constants.ComparisonType; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.condition.Condition; import mage.abilities.condition.InvertCondition; @@ -41,21 +38,21 @@ import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterLandPermanent; +import mage.constants.ComparisonType; +import mage.filter.StaticFilters; + +import java.util.UUID; /** * * @author maurer.it_at_gmail.com */ public class SeachromeCoast extends CardImpl { - - private static FilterLandPermanent filter = new FilterLandPermanent(); - public SeachromeCoast(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.LAND},null); // Seachrome Coast enters the battlefield tapped unless you control two or fewer other lands. - Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.FEWER_THAN, 3)); + Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 3)); String abilityText = "tap it unless you control fewer than 3 lands"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); diff --git a/Mage.Sets/src/mage/cards/s/SeedTheLand.java b/Mage.Sets/src/mage/cards/s/SeedTheLand.java index c1d4b76abc3..a7fa9c555a3 100644 --- a/Mage.Sets/src/mage/cards/s/SeedTheLand.java +++ b/Mage.Sets/src/mage/cards/s/SeedTheLand.java @@ -27,7 +27,6 @@ */ package mage.cards.s; -import java.util.UUID; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.effects.common.CreateTokenTargetEffect; import mage.cards.CardImpl; @@ -35,9 +34,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SetTargetPointer; import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.game.permanent.token.SnakeToken; +import java.util.UUID; + /** * * @author LevelX2 @@ -49,7 +50,7 @@ public class SeedTheLand extends CardImpl { // Whenever a land enters the battlefield, its controller creates a 1/1 green Snake creature token. this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, - new CreateTokenTargetEffect(new SnakeToken()), new FilterLandPermanent(), false, SetTargetPointer.PLAYER, + new CreateTokenTargetEffect(new SnakeToken()), StaticFilters.FILTER_LAND, false, SetTargetPointer.PLAYER, "Whenever a land enters the battlefield, its controller creates a 1/1 green Snake creature token.")); } diff --git a/Mage.Sets/src/mage/cards/s/SerendibDjinn.java b/Mage.Sets/src/mage/cards/s/SerendibDjinn.java index 2def83ab79b..33da13199ab 100644 --- a/Mage.Sets/src/mage/cards/s/SerendibDjinn.java +++ b/Mage.Sets/src/mage/cards/s/SerendibDjinn.java @@ -29,7 +29,6 @@ package mage.cards.s; import mage.MageInt; import mage.abilities.Ability; -import mage.constants.ComparisonType; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.ControlsPermanentsControllerTriggeredAbility; import mage.abilities.effects.OneShotEffect; @@ -38,10 +37,11 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.ComparisonType; import mage.constants.Outcome; import mage.constants.TargetController; +import mage.filter.StaticFilters; import mage.filter.common.FilterControlledLandPermanent; -import mage.filter.common.FilterLandPermanent; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -68,7 +68,7 @@ public class SerendibDjinn extends CardImpl { this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SerendibDjinnEffect(), TargetController.YOU, false)); // When you control no lands, sacrifice Serendib Djinn. this.addAbility(new ControlsPermanentsControllerTriggeredAbility( - new FilterLandPermanent(), ComparisonType.EQUAL_TO, 0, + StaticFilters.FILTER_LANDS, ComparisonType.EQUAL_TO, 0, new SacrificeSourceEffect())); } diff --git a/Mage.Sets/src/mage/cards/s/ShelteredValley.java b/Mage.Sets/src/mage/cards/s/ShelteredValley.java index 36826c540a7..172a4794345 100644 --- a/Mage.Sets/src/mage/cards/s/ShelteredValley.java +++ b/Mage.Sets/src/mage/cards/s/ShelteredValley.java @@ -27,9 +27,7 @@ */ package mage.cards.s; -import java.util.UUID; import mage.abilities.Ability; -import mage.constants.ComparisonType; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.Condition; @@ -43,19 +41,21 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.ComparisonType; import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.FilterPermanent; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.filter.predicate.mageobject.NamePredicate; +import java.util.UUID; + /** * * @author anonymous */ public class ShelteredValley extends CardImpl { - - private static final FilterLandPermanent filter = new FilterLandPermanent(); + private static final FilterPermanent filterShelteredValley = new FilterPermanent("permanent named Sheltered Valley"); static { @@ -72,7 +72,7 @@ public class ShelteredValley extends CardImpl { this.addAbility(ability); // At the beginning of your upkeep, if you control three or fewer lands, you gain 1 life. - Condition controls = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.FEWER_THAN, 4); + Condition controls = new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 4); effect = new ConditionalOneShotEffect(new GainLifeEffect(1), controls); effect.setText("if you control three or fewer lands, you gain 1 life"); ability = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, effect, TargetController.YOU, false); diff --git a/Mage.Sets/src/mage/cards/s/SpirebluffCanal.java b/Mage.Sets/src/mage/cards/s/SpirebluffCanal.java index 68877a6da48..8ed01680673 100644 --- a/Mage.Sets/src/mage/cards/s/SpirebluffCanal.java +++ b/Mage.Sets/src/mage/cards/s/SpirebluffCanal.java @@ -27,9 +27,6 @@ */ package mage.cards.s; -import java.util.UUID; - -import mage.constants.ComparisonType; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.condition.Condition; import mage.abilities.condition.InvertCondition; @@ -41,7 +38,10 @@ import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterLandPermanent; +import mage.constants.ComparisonType; +import mage.filter.StaticFilters; + +import java.util.UUID; /** * @@ -53,7 +53,7 @@ public class SpirebluffCanal extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.LAND},""); // Spirebluff Canal enters the battlefield tapped unless you control two or fewer other lands. - Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(new FilterLandPermanent(), ComparisonType.FEWER_THAN, 3)); + Condition controls = new InvertCondition(new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_LANDS, ComparisonType.FEWER_THAN, 3)); String abilityText = "tapped unless you control fewer than 3 lands"; this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new TapSourceEffect(), controls, abilityText), abilityText)); diff --git a/Mage.Sets/src/mage/cards/s/StoneRain.java b/Mage.Sets/src/mage/cards/s/StoneRain.java index 220d2d4086e..2ed26d90acd 100644 --- a/Mage.Sets/src/mage/cards/s/StoneRain.java +++ b/Mage.Sets/src/mage/cards/s/StoneRain.java @@ -28,14 +28,15 @@ package mage.cards.s; -import java.util.UUID; -import mage.constants.CardType; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.common.FilterLandPermanent; +import mage.constants.CardType; +import mage.filter.StaticFilters; import mage.target.TargetPermanent; +import java.util.UUID; + /** * * @author Loki @@ -45,7 +46,7 @@ public class StoneRain extends CardImpl { public StoneRain (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}"); - this.getSpellAbility().addTarget(new TargetPermanent(new FilterLandPermanent())); + this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_LAND)); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/s/StructuralCollapse.java b/Mage.Sets/src/mage/cards/s/StructuralCollapse.java index 8d5e3367b1b..abe0965dadb 100644 --- a/Mage.Sets/src/mage/cards/s/StructuralCollapse.java +++ b/Mage.Sets/src/mage/cards/s/StructuralCollapse.java @@ -27,16 +27,17 @@ */ package mage.cards.s; -import java.util.UUID; -import mage.constants.CardType; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.SacrificeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.filter.StaticFilters; import mage.filter.common.FilterArtifactPermanent; -import mage.filter.common.FilterLandPermanent; import mage.target.TargetPlayer; +import java.util.UUID; + /** * * @author Plopman @@ -49,7 +50,7 @@ public class StructuralCollapse extends CardImpl { // Target player sacrifices an artifact and a land. Structural Collapse deals 2 damage to that player. this.getSpellAbility().addEffect(new SacrificeEffect(new FilterArtifactPermanent(), 1, "Target player")); - this.getSpellAbility().addEffect(new SacrificeEffect(new FilterLandPermanent(), 1, "Target player")); + this.getSpellAbility().addEffect(new SacrificeEffect(StaticFilters.FILTER_LANDS, 1, "Target player")); this.getSpellAbility().addEffect(new DamageTargetEffect(2)); this.getSpellAbility().addTarget(new TargetPlayer()); } diff --git a/Mage.Sets/src/mage/cards/s/Sunder.java b/Mage.Sets/src/mage/cards/s/Sunder.java index c759c0578bf..f05bfe5a0e2 100644 --- a/Mage.Sets/src/mage/cards/s/Sunder.java +++ b/Mage.Sets/src/mage/cards/s/Sunder.java @@ -27,12 +27,13 @@ */ package mage.cards.s; -import java.util.UUID; import mage.abilities.effects.common.ReturnToHandFromBattlefieldAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; + +import java.util.UUID; /** * @@ -44,7 +45,7 @@ public class Sunder extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{U}{U}"); // Return all lands to their owners' hands. - this.getSpellAbility().addEffect(new ReturnToHandFromBattlefieldAllEffect(new FilterLandPermanent("lands"))); + this.getSpellAbility().addEffect(new ReturnToHandFromBattlefieldAllEffect(StaticFilters.FILTER_LANDS)); } public Sunder(final Sunder card) { diff --git a/Mage.Sets/src/mage/cards/t/TectonicEdge.java b/Mage.Sets/src/mage/cards/t/TectonicEdge.java index 91b7589d698..37c96cb87b9 100644 --- a/Mage.Sets/src/mage/cards/t/TectonicEdge.java +++ b/Mage.Sets/src/mage/cards/t/TectonicEdge.java @@ -28,9 +28,7 @@ package mage.cards.t; -import java.util.UUID; import mage.abilities.Ability; -import mage.constants.ComparisonType; import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.condition.common.OpponentControlsPermanentCondition; import mage.abilities.costs.Cost; @@ -43,11 +41,15 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.ComparisonType; import mage.constants.Zone; +import mage.filter.StaticFilters; import mage.filter.common.FilterLandPermanent; import mage.game.Game; import mage.target.common.TargetNonBasicLandPermanent; +import java.util.UUID; + /** * * @author BetaSteward_at_googlemail.com @@ -87,7 +89,6 @@ public class TectonicEdge extends CardImpl { class TectonicEdgeCost extends CostImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent(); public TectonicEdgeCost() { this.text = "Activate this ability only if an opponent controls four or more lands"; @@ -105,7 +106,7 @@ class TectonicEdgeCost extends CostImpl { @Override public boolean canPay(Ability ability, UUID sourceId, UUID controllerId, Game game) { for (UUID opponentId: game.getOpponents(controllerId)) { - if (game.getBattlefield().countAll(filter, opponentId, game) > 3) { + if (game.getBattlefield().countAll(StaticFilters.FILTER_LANDS, opponentId, game) > 3) { return true; } } diff --git a/Mage.Sets/src/mage/cards/t/TectonicInstability.java b/Mage.Sets/src/mage/cards/t/TectonicInstability.java index 0a392663295..414ad63984c 100644 --- a/Mage.Sets/src/mage/cards/t/TectonicInstability.java +++ b/Mage.Sets/src/mage/cards/t/TectonicInstability.java @@ -27,7 +27,6 @@ */ package mage.cards.t; -import java.util.UUID; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.effects.common.TapAllTargetPlayerControlsEffect; import mage.cards.CardImpl; @@ -35,8 +34,11 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SetTargetPointer; import mage.constants.Zone; +import mage.filter.StaticFilters; import mage.filter.common.FilterLandPermanent; +import java.util.UUID; + /** * * @author LoneFox @@ -49,7 +51,7 @@ public class TectonicInstability extends CardImpl { // Whenever a land enters the battlefield, tap all lands its controller controls. this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, - new TapAllTargetPlayerControlsEffect(new FilterLandPermanent()), new FilterLandPermanent(), + new TapAllTargetPlayerControlsEffect(new FilterLandPermanent()), StaticFilters.FILTER_LANDS, false, SetTargetPointer.PLAYER, "Whenever a land enters the battlefield, tap all lands its controller controls.")); } diff --git a/Mage.Sets/src/mage/cards/t/TreacherousTerrain.java b/Mage.Sets/src/mage/cards/t/TreacherousTerrain.java index 244d06ebdbb..684b1950776 100644 --- a/Mage.Sets/src/mage/cards/t/TreacherousTerrain.java +++ b/Mage.Sets/src/mage/cards/t/TreacherousTerrain.java @@ -27,8 +27,6 @@ */ package mage.cards.t; -import java.util.List; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; @@ -37,11 +35,14 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.List; +import java.util.UUID; + /** * * @author Styxo @@ -81,7 +82,7 @@ class TreacherousTerrainEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - List permanents = game.getBattlefield().getActivePermanents(new FilterLandPermanent(), source.getControllerId(), source.getSourceId(), game); + List permanents = game.getBattlefield().getActivePermanents(StaticFilters.FILTER_LAND, source.getControllerId(), source.getSourceId(), game); for (UUID playerId : game.getOpponents(source.getControllerId())) { Player player = game.getPlayer(playerId); if (player != null) { diff --git a/Mage.Sets/src/mage/cards/w/WeatheredWayfarer.java b/Mage.Sets/src/mage/cards/w/WeatheredWayfarer.java index be81960a1e6..a4241504150 100644 --- a/Mage.Sets/src/mage/cards/w/WeatheredWayfarer.java +++ b/Mage.Sets/src/mage/cards/w/WeatheredWayfarer.java @@ -27,9 +27,6 @@ */ package mage.cards.w; -import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.ActivateIfConditionActivatedAbility; @@ -39,10 +36,14 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Zone; +import mage.filter.StaticFilters; import mage.filter.common.FilterLandCard; -import mage.filter.common.FilterLandPermanent; import mage.target.common.TargetCardInLibrary; +import java.util.UUID; + /** * * @author LevelX2 @@ -63,7 +64,7 @@ public class WeatheredWayfarer extends CardImpl { Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(new FilterLandCard()), true, true), new ManaCostsImpl("{W}"), - new OpponentControlsMoreCondition(new FilterLandPermanent("lands"))); + new OpponentControlsMoreCondition(StaticFilters.FILTER_LANDS)); ability.addCost(new TapSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WoodbornBehemoth.java b/Mage.Sets/src/mage/cards/w/WoodbornBehemoth.java index ef34e9cb648..cff1a964210 100644 --- a/Mage.Sets/src/mage/cards/w/WoodbornBehemoth.java +++ b/Mage.Sets/src/mage/cards/w/WoodbornBehemoth.java @@ -27,10 +27,8 @@ */ package mage.cards.w; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.constants.ComparisonType; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.decorator.ConditionalContinuousEffect; @@ -40,9 +38,12 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.ComparisonType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; +import mage.filter.StaticFilters; + +import java.util.UUID; /** * @@ -58,7 +59,7 @@ public class WoodbornBehemoth extends CardImpl { this.toughness = new MageInt(4); // As long as you control eight or more lands, Woodborn Behemoth gets +4/+4 and has trample. - PermanentsOnTheBattlefieldCondition eightOrMoreLandCondition = new PermanentsOnTheBattlefieldCondition(new FilterLandPermanent(), ComparisonType.MORE_THAN,7); + PermanentsOnTheBattlefieldCondition eightOrMoreLandCondition = new PermanentsOnTheBattlefieldCondition(StaticFilters.FILTER_LANDS, ComparisonType.MORE_THAN,7); ConditionalContinuousEffect effect1 = new ConditionalContinuousEffect( new BoostSourceEffect(4,4, Duration.WhileOnBattlefield), eightOrMoreLandCondition, "As long as you control eight or more lands, {this} gets +4/+4"); diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index c1e483585b9..ff16f24eca8 100644 --- a/Mage/src/main/java/mage/filter/StaticFilters.java +++ b/Mage/src/main/java/mage/filter/StaticFilters.java @@ -38,6 +38,9 @@ public final class StaticFilters { public static final FilterControlledPermanent FILTER_CONTROLLED_A_CREATURE = new FilterControlledCreaturePermanent("a creature you control"); public static final FilterControlledCreaturePermanent FILTER_CONTROLLED_ANOTHER_CREATURE = new FilterControlledCreaturePermanent("another creature"); public static final FilterControlledPermanent FILTER_CONTROLLED_PERMANENT_NON_LAND = new FilterControlledPermanent("nonland permanent"); + public static final FilterLandPermanent FILTER_LAND = new FilterLandPermanent(); + public static final FilterLandPermanent FILTER_LANDS = new FilterLandPermanent("lands"); + public static final FilterLandPermanent FILTER_BASIC_LAND = new FilterLandPermanent(); public static final FilterCreaturePermanent FILTER_PERMANENT_CREATURE = new FilterCreaturePermanent(); public static final FilterCreaturePermanent FILTER_PERMANENT_A_CREATURE = new FilterCreaturePermanent("a creature"); @@ -62,6 +65,8 @@ public final class StaticFilters { static { FILTER_CONTROLLED_PERMANENT_NON_LAND.add( Predicates.not(new CardTypePredicate(CardType.LAND))); + + FILTER_CREATURE_TOKENS.add(new TokenPredicate()); FILTER_ATTACKING_CREATURES.add(new AttackingPredicate());