diff --git a/Mage.Sets/src/mage/cards/a/AerialModification.java b/Mage.Sets/src/mage/cards/a/AerialModification.java
index 2aced485449..e52857453ab 100644
--- a/Mage.Sets/src/mage/cards/a/AerialModification.java
+++ b/Mage.Sets/src/mage/cards/a/AerialModification.java
@@ -1,10 +1,7 @@
-
package mage.cards.a;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureIfVehicleEffect;
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
@@ -13,46 +10,39 @@ import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.*;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.constants.AttachmentType;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.SubType;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
+import java.util.UUID;
+
/**
- *
* @author Styxo
*/
public final class AerialModification extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()));
- }
-
public AerialModification(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{W}");
this.subtype.add(SubType.AURA);
// Enchant creature or Vehicle
- TargetPermanent auraTarget = new TargetPermanent(filter);
+ TargetPermanent auraTarget = new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Benefit));
- Ability ability = new EnchantAbility(auraTarget);
- this.addAbility(ability);
+ this.addAbility(new EnchantAbility(auraTarget));
// As long as enchanted permanent is a Vehicle, it's a creature in addition to its other types.
this.addAbility(new SimpleStaticAbility(new BecomesCreatureIfVehicleEffect()));
// Enchanted creature gets +2/+2 and has flying.
- Effect effect = new BoostEnchantedEffect(2, 2);
- effect.setText("Enchanted creature gets +2/+2");
- ability = new SimpleStaticAbility(effect);
- effect = new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA);
- effect.setText(" and has flying");
- ability.addEffect(effect);
+ Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(2, 2));
+ ability.addEffect(new GainAbilityAttachedEffect(
+ FlyingAbility.getInstance(), AttachmentType.AURA
+ ).setText(" and has flying"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/a/AetherMeltdown.java b/Mage.Sets/src/mage/cards/a/AetherMeltdown.java
index 5a86fd7e514..08c55a99674 100644
--- a/Mage.Sets/src/mage/cards/a/AetherMeltdown.java
+++ b/Mage.Sets/src/mage/cards/a/AetherMeltdown.java
@@ -1,11 +1,8 @@
package mage.cards.a;
-import java.util.UUID;
-import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect;
@@ -13,41 +10,37 @@ import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.FlashAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.*;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.SubType;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
+import java.util.UUID;
+
/**
- *
* @author LevelX2
*/
public final class AetherMeltdown extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(CardType.CREATURE.getPredicate(), SubType.VEHICLE.getPredicate()));
- }
-
public AetherMeltdown(UUID ownerId, CardSetInfo setInfo) {
- super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
this.subtype.add(SubType.AURA);
// Flash
this.addAbility(FlashAbility.getInstance());
+
// Enchant creature or vehicle.
- TargetPermanent auraTarget = new TargetPermanent(filter);
+ TargetPermanent auraTarget = new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
- Ability ability = new EnchantAbility(auraTarget);
- this.addAbility(ability);
+ this.addAbility(new EnchantAbility(auraTarget));
// When Aether Meltdown enters the battlefield, you get {E}{E}.
this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(2)));
+
// Enchanted permanent gets -4/-0.
- Effect effect = new BoostEnchantedEffect(-4, 0, Duration.WhileOnBattlefield);
- this.addAbility(new SimpleStaticAbility(effect));
+ this.addAbility(new SimpleStaticAbility(new BoostEnchantedEffect(-4, 0).setText("enchanted permanent gets -4/-0")));
}
private AetherMeltdown(final AetherMeltdown card) {
diff --git a/Mage.Sets/src/mage/cards/a/AgonasaurRex.java b/Mage.Sets/src/mage/cards/a/AgonasaurRex.java
index 93cc878db87..6d49b3de283 100644
--- a/Mage.Sets/src/mage/cards/a/AgonasaurRex.java
+++ b/Mage.Sets/src/mage/cards/a/AgonasaurRex.java
@@ -14,8 +14,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.counters.CounterType;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import java.util.UUID;
@@ -25,15 +24,6 @@ import java.util.UUID;
*/
public final class AgonasaurRex extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(
- CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()
- ));
- }
-
public AgonasaurRex(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
@@ -51,7 +41,7 @@ public final class AgonasaurRex extends CardImpl {
Ability ability = new CycleTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance(2)));
ability.addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance()).setText("it gains trample"));
ability.addEffect(new GainAbilityTargetEffect(IndestructibleAbility.getInstance()).setText("and indestructible until end of turn"));
- ability.addTarget(new TargetPermanent(0, 1, filter));
+ ability.addTarget(new TargetPermanent(0, 1, StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/b/BounceOff.java b/Mage.Sets/src/mage/cards/b/BounceOff.java
index cd831b8ff8d..141e4023aa3 100644
--- a/Mage.Sets/src/mage/cards/b/BounceOff.java
+++ b/Mage.Sets/src/mage/cards/b/BounceOff.java
@@ -4,9 +4,7 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import java.util.UUID;
@@ -16,21 +14,12 @@ import java.util.UUID;
*/
public final class BounceOff extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(
- CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()
- ));
- }
-
public BounceOff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{U}");
// Return target creature or Vehicle to its owner's hand.
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
- this.getSpellAbility().addTarget(new TargetPermanent(filter));
+ this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE));
}
private BounceOff(final BounceOff card) {
diff --git a/Mage.Sets/src/mage/cards/d/DaringDemolition.java b/Mage.Sets/src/mage/cards/d/DaringDemolition.java
index c122b858cd4..3b1164303d6 100644
--- a/Mage.Sets/src/mage/cards/d/DaringDemolition.java
+++ b/Mage.Sets/src/mage/cards/d/DaringDemolition.java
@@ -1,34 +1,25 @@
-
package mage.cards.d;
-import java.util.UUID;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
+import java.util.UUID;
+
/**
- *
* @author LevelX2
*/
public final class DaringDemolition extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(CardType.CREATURE.getPredicate(), SubType.VEHICLE.getPredicate()));
- }
-
public DaringDemolition(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}{B}");
// Destroy target creature or Vehicle.
- getSpellAbility().addEffect(new DestroyTargetEffect());
- getSpellAbility().addTarget(new TargetPermanent(filter));
+ this.getSpellAbility().addEffect(new DestroyTargetEffect());
+ this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE));
}
private DaringDemolition(final DaringDemolition card) {
diff --git a/Mage.Sets/src/mage/cards/f/FloodTheEngine.java b/Mage.Sets/src/mage/cards/f/FloodTheEngine.java
index 8b6fbd0c822..9a84b3133fd 100644
--- a/Mage.Sets/src/mage/cards/f/FloodTheEngine.java
+++ b/Mage.Sets/src/mage/cards/f/FloodTheEngine.java
@@ -14,8 +14,7 @@ import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import java.util.UUID;
@@ -25,22 +24,13 @@ import java.util.UUID;
*/
public final class FloodTheEngine extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(
- CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()
- ));
- }
-
public FloodTheEngine(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
this.subtype.add(SubType.AURA);
// Enchant creature or Vehicle
- TargetPermanent auraTarget = new TargetPermanent(filter);
+ TargetPermanent auraTarget = new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
this.addAbility(new EnchantAbility(auraTarget));
diff --git a/Mage.Sets/src/mage/cards/g/GastalBlockbuster.java b/Mage.Sets/src/mage/cards/g/GastalBlockbuster.java
index 782b0bcf1f3..1031d61291e 100644
--- a/Mage.Sets/src/mage/cards/g/GastalBlockbuster.java
+++ b/Mage.Sets/src/mage/cards/g/GastalBlockbuster.java
@@ -10,9 +10,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
-import mage.filter.predicate.Predicates;
import mage.target.TargetPermanent;
import java.util.UUID;
@@ -22,15 +20,6 @@ import java.util.UUID;
*/
public final class GastalBlockbuster extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(
- CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()
- ));
- }
-
public GastalBlockbuster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
@@ -43,7 +32,8 @@ public final class GastalBlockbuster extends CardImpl {
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(new DestroyTargetEffect(), false);
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_ARTIFACT));
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoWhenCostPaid(
- ability, new SacrificeTargetCost(filter), "sacrifice a creature or Vehicle"
+ ability, new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE),
+ "sacrifice a creature or Vehicle"
)));
}
diff --git a/Mage.Sets/src/mage/cards/k/KariZevsExpertise.java b/Mage.Sets/src/mage/cards/k/KariZevsExpertise.java
index a92b7571acf..9ca6330645e 100644
--- a/Mage.Sets/src/mage/cards/k/KariZevsExpertise.java
+++ b/Mage.Sets/src/mage/cards/k/KariZevsExpertise.java
@@ -11,10 +11,8 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.ComparisonType;
import mage.constants.Duration;
-import mage.constants.SubType;
import mage.filter.FilterCard;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.ManaValuePredicate;
import mage.target.TargetPermanent;
@@ -25,22 +23,17 @@ import java.util.UUID;
*/
public final class KariZevsExpertise extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
- private static final FilterCard filter2 = new FilterCard("a spell with mana value 2 or less");
+ private static final FilterCard filter = new FilterCard("a spell with mana value 2 or less");
static {
- filter.add(Predicates.or(
- CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()
- ));
- filter2.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 3));
+ filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 3));
}
public KariZevsExpertise(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{R}{R}");
// Gain control of target creature or Vehicle until end of turn. Untap it. It gains haste until end of turn.
- this.getSpellAbility().addTarget(new TargetPermanent(filter));
+ this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE));
this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.EndOfTurn));
this.getSpellAbility().addEffect(new UntapTargetEffect().setText("Untap it"));
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(
@@ -48,7 +41,7 @@ public final class KariZevsExpertise extends CardImpl {
).setText("It gains haste until end of turn"));
// You may cast a card with converted mana cost 2 or less from your hand without paying its mana cost.
- this.getSpellAbility().addEffect(new CastFromHandForFreeEffect(filter2).concatBy("
"));
+ this.getSpellAbility().addEffect(new CastFromHandForFreeEffect(filter).concatBy("
"));
}
private KariZevsExpertise(final KariZevsExpertise card) {
diff --git a/Mage.Sets/src/mage/cards/l/LightTheWay.java b/Mage.Sets/src/mage/cards/l/LightTheWay.java
index 1e1e9174df2..d6ff92ae901 100644
--- a/Mage.Sets/src/mage/cards/l/LightTheWay.java
+++ b/Mage.Sets/src/mage/cards/l/LightTheWay.java
@@ -1,7 +1,5 @@
package mage.cards.l;
-import java.util.UUID;
-
import mage.abilities.Mode;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.effects.common.UntapTargetEffect;
@@ -9,25 +7,18 @@ import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.counters.CounterType;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import mage.target.common.TargetControlledPermanent;
+import java.util.UUID;
+
/**
- *
* @author weirddan455
*/
public final class LightTheWay extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(CardType.CREATURE.getPredicate(), SubType.VEHICLE.getPredicate()));
- }
-
public LightTheWay(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
@@ -35,7 +26,7 @@ public final class LightTheWay extends CardImpl {
// • Put a +1/+1 counter on target creature or Vehicle. Untap it.
this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance()));
this.getSpellAbility().addEffect(new UntapTargetEffect().setText("Untap it"));
- this.getSpellAbility().addTarget(new TargetPermanent(filter));
+ this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE));
// • Return target permanent you control to its owner's hand.
Mode mode = new Mode(new ReturnToHandTargetEffect());
diff --git a/Mage.Sets/src/mage/cards/l/LightwheelEnhancements.java b/Mage.Sets/src/mage/cards/l/LightwheelEnhancements.java
new file mode 100644
index 00000000000..ea06d10fd44
--- /dev/null
+++ b/Mage.Sets/src/mage/cards/l/LightwheelEnhancements.java
@@ -0,0 +1,63 @@
+package mage.cards.l;
+
+import mage.abilities.Ability;
+import mage.abilities.common.MaxSpeedAbility;
+import mage.abilities.common.MayCastFromGraveyardSourceAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.common.AttachEffect;
+import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
+import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
+import mage.abilities.keyword.EnchantAbility;
+import mage.abilities.keyword.StartYourEnginesAbility;
+import mage.abilities.keyword.VigilanceAbility;
+import mage.cards.CardImpl;
+import mage.cards.CardSetInfo;
+import mage.constants.AttachmentType;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.SubType;
+import mage.filter.StaticFilters;
+import mage.target.TargetPermanent;
+
+import java.util.UUID;
+
+/**
+ * @author TheElk801
+ */
+public final class LightwheelEnhancements extends CardImpl {
+
+ public LightwheelEnhancements(UUID ownerId, CardSetInfo setInfo) {
+ super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
+
+ this.subtype.add(SubType.AURA);
+
+ // Enchant creature or Vehicle
+ TargetPermanent auraTarget = new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE);
+ this.getSpellAbility().addTarget(auraTarget);
+ this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
+ this.addAbility(new EnchantAbility(auraTarget));
+
+ // Start your engines!
+ this.addAbility(new StartYourEnginesAbility());
+
+ // Enchanted permanent gets +1/+1 and has vigilance.
+ Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(1, 1)
+ .setText("enchanted permanent gets +1/+1"));
+ ability.addEffect(new GainAbilityAttachedEffect(
+ VigilanceAbility.getInstance(), AttachmentType.AURA
+ ).setText("and has vigilance"));
+ this.addAbility(ability);
+
+ // Max speed -- You may cast this card from your graveyard.
+ this.addAbility(new MaxSpeedAbility(new MayCastFromGraveyardSourceAbility()));
+ }
+
+ private LightwheelEnhancements(final LightwheelEnhancements card) {
+ super(card);
+ }
+
+ @Override
+ public LightwheelEnhancements copy() {
+ return new LightwheelEnhancements(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/cards/l/LotusguardDisciple.java b/Mage.Sets/src/mage/cards/l/LotusguardDisciple.java
index fe9b8705209..e22bd55b00b 100644
--- a/Mage.Sets/src/mage/cards/l/LotusguardDisciple.java
+++ b/Mage.Sets/src/mage/cards/l/LotusguardDisciple.java
@@ -11,8 +11,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import java.util.UUID;
@@ -22,15 +21,6 @@ import java.util.UUID;
*/
public final class LotusguardDisciple extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(
- CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()
- ));
- }
-
public LotusguardDisciple(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
@@ -47,7 +37,7 @@ public final class LotusguardDisciple extends CardImpl {
.setText("target creature or Vehicle gains lifelink"));
ability.addEffect(new GainAbilityTargetEffect(IndestructibleAbility.getInstance())
.setText("and indestructible until end of turn"));
- ability.addTarget(new TargetPermanent(filter));
+ ability.addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/m/MistsOfLittjara.java b/Mage.Sets/src/mage/cards/m/MistsOfLittjara.java
index 2a1c70c564c..9888d7904a5 100644
--- a/Mage.Sets/src/mage/cards/m/MistsOfLittjara.java
+++ b/Mage.Sets/src/mage/cards/m/MistsOfLittjara.java
@@ -1,6 +1,5 @@
package mage.cards.m;
-import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
@@ -11,8 +10,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import java.util.UUID;
@@ -22,15 +20,6 @@ import java.util.UUID;
*/
public final class MistsOfLittjara extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(
- CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()
- ));
- }
-
public MistsOfLittjara(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
@@ -40,11 +29,10 @@ public final class MistsOfLittjara extends CardImpl {
this.addAbility(FlashAbility.getInstance());
// Enchant creature or Vehicle
- TargetPermanent auraTarget = new TargetPermanent(filter);
+ TargetPermanent auraTarget = new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
- Ability ability = new EnchantAbility(auraTarget);
- this.addAbility(ability);
+ this.addAbility(new EnchantAbility(auraTarget));
// Enchanted creature gets -3/-0
this.addAbility(new SimpleStaticAbility(new BoostEnchantedEffect(-3, 0)));
diff --git a/Mage.Sets/src/mage/cards/r/RidesEnd.java b/Mage.Sets/src/mage/cards/r/RidesEnd.java
index f47ffe711b7..2f4721e3c20 100644
--- a/Mage.Sets/src/mage/cards/r/RidesEnd.java
+++ b/Mage.Sets/src/mage/cards/r/RidesEnd.java
@@ -8,11 +8,10 @@ import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
+import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
-import mage.filter.predicate.Predicates;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.target.TargetPermanent;
@@ -23,15 +22,10 @@ import java.util.UUID;
*/
public final class RidesEnd extends CardImpl {
- private static final FilterPermanent filter = new FilterCreaturePermanent("a tapped creature");
- private static final FilterPermanent filter2 = new FilterPermanent("creature or Vehicle");
+ private static final FilterPermanent filter = new FilterCreaturePermanent("a tapped permanent");
static {
filter.add(TappedPredicate.TAPPED);
- filter2.add(Predicates.or(
- CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()
- ));
}
private static final Condition condition = new SourceTargetsPermanentCondition(filter);
@@ -46,7 +40,7 @@ public final class RidesEnd extends CardImpl {
// Exile target creature or Vehicle.
this.getSpellAbility().addEffect(new ExileTargetEffect());
- this.getSpellAbility().addTarget(new TargetPermanent(filter2));
+ this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE));
}
private RidesEnd(final RidesEnd card) {
diff --git a/Mage.Sets/src/mage/cards/r/RoadsideAssistance.java b/Mage.Sets/src/mage/cards/r/RoadsideAssistance.java
index 1f28f26c923..b9556ce79e9 100644
--- a/Mage.Sets/src/mage/cards/r/RoadsideAssistance.java
+++ b/Mage.Sets/src/mage/cards/r/RoadsideAssistance.java
@@ -15,8 +15,7 @@ import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.filter.StaticFilters;
import mage.game.permanent.token.PilotSaddleCrewToken;
import mage.target.TargetPermanent;
@@ -27,22 +26,13 @@ import java.util.UUID;
*/
public final class RoadsideAssistance extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(
- CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()
- ));
- }
-
public RoadsideAssistance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
this.subtype.add(SubType.AURA);
// Enchant creature or Vehicle
- TargetPermanent auraTarget = new TargetPermanent(filter);
+ TargetPermanent auraTarget = new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
this.addAbility(new EnchantAbility(auraTarget));
diff --git a/Mage.Sets/src/mage/cards/s/SiegeModification.java b/Mage.Sets/src/mage/cards/s/SiegeModification.java
index 484f5a87b8e..b455c62ee52 100644
--- a/Mage.Sets/src/mage/cards/s/SiegeModification.java
+++ b/Mage.Sets/src/mage/cards/s/SiegeModification.java
@@ -1,10 +1,8 @@
package mage.cards.s;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureIfVehicleEffect;
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
@@ -13,45 +11,39 @@ import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.*;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.constants.AttachmentType;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.SubType;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
+import java.util.UUID;
+
/**
* @author JRHerlehy
*/
public final class SiegeModification extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()));
- }
-
public SiegeModification(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{R}");
this.subtype.add(SubType.AURA);
// Enchant creature or Vehicle
- TargetPermanent auraTarget = new TargetPermanent(filter);
+ TargetPermanent auraTarget = new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Benefit));
- Ability ability = new EnchantAbility(auraTarget);
- this.addAbility(ability);
+ this.addAbility(new EnchantAbility(auraTarget));
// As long as enchanted permanent is a Vehicle, it's a creature in addition to its other types.
this.addAbility(new SimpleStaticAbility(new BecomesCreatureIfVehicleEffect()));
// Enchanted creature gets +3/+0 and has first strike.
- Effect effect = new BoostEnchantedEffect(3, 0);
- effect.setText("Enchanted creature gets +3/+0");
- ability = new SimpleStaticAbility(effect);
- effect = new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.AURA);
- effect.setText(" and has first strike");
- ability.addEffect(effect);
+ Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(3, 0));
+ ability.addEffect(new GainAbilityAttachedEffect(
+ FirstStrikeAbility.getInstance(), AttachmentType.AURA
+ ).setText(" and has first strike"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/s/SilkenStrength.java b/Mage.Sets/src/mage/cards/s/SilkenStrength.java
index 617f66d152a..09c97459173 100644
--- a/Mage.Sets/src/mage/cards/s/SilkenStrength.java
+++ b/Mage.Sets/src/mage/cards/s/SilkenStrength.java
@@ -16,8 +16,7 @@ import mage.constants.AttachmentType;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import java.util.UUID;
@@ -27,15 +26,6 @@ import java.util.UUID;
*/
public final class SilkenStrength extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(
- CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()
- ));
- }
-
public SilkenStrength(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
@@ -45,7 +35,7 @@ public final class SilkenStrength extends CardImpl {
this.addAbility(FlashAbility.getInstance());
// Enchant creature or Vehicle
- TargetPermanent auraTarget = new TargetPermanent(filter);
+ TargetPermanent auraTarget = new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
this.addAbility(new EnchantAbility(auraTarget));
@@ -57,7 +47,7 @@ public final class SilkenStrength extends CardImpl {
// Enchanted permanent gets +1/+2 and has reach.
Ability ability = new SimpleStaticAbility(new BoostEnchantedEffect(1, 2)
- .setText("enchanted permanent has +1/+2"));
+ .setText("enchanted permanent gets +1/+2"));
ability.addEffect(new GainAbilityAttachedEffect(
ReachAbility.getInstance(), AttachmentType.AURA
).setText("and has reach"));
diff --git a/Mage.Sets/src/mage/cards/s/SongOfStupefaction.java b/Mage.Sets/src/mage/cards/s/SongOfStupefaction.java
index 13779edd11b..afb7cf4a0d3 100644
--- a/Mage.Sets/src/mage/cards/s/SongOfStupefaction.java
+++ b/Mage.Sets/src/mage/cards/s/SongOfStupefaction.java
@@ -16,9 +16,7 @@ import mage.constants.AbilityWord;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
-import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
-import mage.filter.predicate.Predicates;
import mage.target.TargetPermanent;
import java.util.UUID;
@@ -28,15 +26,6 @@ import java.util.UUID;
*/
public final class SongOfStupefaction extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(
- CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()
- ));
- }
-
private static final DynamicValue xValue = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_PERMANENT, -1);
public SongOfStupefaction(UUID ownerId, CardSetInfo setInfo) {
@@ -45,7 +34,7 @@ public final class SongOfStupefaction extends CardImpl {
this.subtype.add(SubType.AURA);
// Enchant creature or Vehicle
- TargetPermanent auraTarget = new TargetPermanent(filter);
+ TargetPermanent auraTarget = new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
this.addAbility(new EnchantAbility(auraTarget));
diff --git a/Mage.Sets/src/mage/cards/s/SpinOut.java b/Mage.Sets/src/mage/cards/s/SpinOut.java
index 11350583803..a2381336389 100644
--- a/Mage.Sets/src/mage/cards/s/SpinOut.java
+++ b/Mage.Sets/src/mage/cards/s/SpinOut.java
@@ -4,9 +4,7 @@ import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import java.util.UUID;
@@ -16,21 +14,12 @@ import java.util.UUID;
*/
public final class SpinOut extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(
- CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()
- ));
- }
-
public SpinOut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}{B}");
// Destroy target creature or Vehicle.
this.getSpellAbility().addEffect(new DestroyTargetEffect());
- this.getSpellAbility().addTarget(new TargetPermanent(filter));
+ this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE));
}
private SpinOut(final SpinOut card) {
diff --git a/Mage.Sets/src/mage/cards/s/StallOut.java b/Mage.Sets/src/mage/cards/s/StallOut.java
index 6ee66860036..bb99762dbd0 100644
--- a/Mage.Sets/src/mage/cards/s/StallOut.java
+++ b/Mage.Sets/src/mage/cards/s/StallOut.java
@@ -7,10 +7,8 @@ import mage.abilities.keyword.CyclingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.counters.CounterType;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import java.util.UUID;
@@ -20,15 +18,6 @@ import java.util.UUID;
*/
public final class StallOut extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(
- CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()
- ));
- }
-
public StallOut(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}");
@@ -36,7 +25,7 @@ public final class StallOut extends CardImpl {
this.getSpellAbility().addEffect(new TapTargetEffect());
this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.STUN.createInstance(3))
.setText(", then put three stun counters on it"));
- this.getSpellAbility().addTarget(new TargetPermanent(filter));
+ this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE));
// Cycling {2}
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}")));
diff --git a/Mage.Sets/src/mage/cards/s/SuitUp.java b/Mage.Sets/src/mage/cards/s/SuitUp.java
index f9a805969b4..1730816d360 100644
--- a/Mage.Sets/src/mage/cards/s/SuitUp.java
+++ b/Mage.Sets/src/mage/cards/s/SuitUp.java
@@ -7,9 +7,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.constants.SubType;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import java.util.UUID;
@@ -19,15 +17,6 @@ import java.util.UUID;
*/
public final class SuitUp extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(
- CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()
- ));
- }
-
public SuitUp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
@@ -38,7 +27,7 @@ public final class SuitUp extends CardImpl {
this.getSpellAbility().addEffect(new SetBasePowerToughnessTargetEffect(
4, 5, Duration.EndOfTurn
).setText("with base power and toughness 4/5"));
- this.getSpellAbility().addTarget(new TargetPermanent(filter));
+ this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE));
// Draw a card.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
"));
diff --git a/Mage.Sets/src/mage/cards/s/SwiftReconfiguration.java b/Mage.Sets/src/mage/cards/s/SwiftReconfiguration.java
index 1791aaaf9c6..c54818a1bfc 100644
--- a/Mage.Sets/src/mage/cards/s/SwiftReconfiguration.java
+++ b/Mage.Sets/src/mage/cards/s/SwiftReconfiguration.java
@@ -10,8 +10,7 @@ import mage.abilities.keyword.FlashAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
-import mage.filter.FilterPermanent;
-import mage.filter.predicate.Predicates;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.TargetPermanent;
@@ -23,15 +22,6 @@ import java.util.UUID;
*/
public final class SwiftReconfiguration extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("creature or Vehicle");
-
- static {
- filter.add(Predicates.or(
- CardType.CREATURE.getPredicate(),
- SubType.VEHICLE.getPredicate()
- ));
- }
-
public SwiftReconfiguration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{W}");
@@ -41,7 +31,7 @@ public final class SwiftReconfiguration extends CardImpl {
this.addAbility(FlashAbility.getInstance());
// Enchant creature or Vehicle
- TargetPermanent auraTarget = new TargetPermanent(filter);
+ TargetPermanent auraTarget = new TargetPermanent(StaticFilters.FILTER_PERMANENT_CREATURE_OR_VEHICLE);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
this.addAbility(new EnchantAbility(auraTarget));
diff --git a/Mage.Sets/src/mage/sets/Aetherdrift.java b/Mage.Sets/src/mage/sets/Aetherdrift.java
index 63c40e199dd..469a57c90a1 100644
--- a/Mage.Sets/src/mage/sets/Aetherdrift.java
+++ b/Mage.Sets/src/mage/sets/Aetherdrift.java
@@ -118,6 +118,7 @@ public final class Aetherdrift extends ExpansionSet {
cards.add(new SetCardInfo("Leonin Surveyor", 18, Rarity.COMMON, mage.cards.l.LeoninSurveyor.class));
cards.add(new SetCardInfo("Lightning Strike", 136, Rarity.COMMON, mage.cards.l.LightningStrike.class));
cards.add(new SetCardInfo("Lightshield Parry", 19, Rarity.COMMON, mage.cards.l.LightshieldParry.class));
+ cards.add(new SetCardInfo("Lightwheel Enhancements", 20, Rarity.COMMON, mage.cards.l.LightwheelEnhancements.class));
cards.add(new SetCardInfo("Locust Spray", 95, Rarity.UNCOMMON, mage.cards.l.LocustSpray.class));
cards.add(new SetCardInfo("Lotusguard Disciple", 21, Rarity.COMMON, mage.cards.l.LotusguardDisciple.class));
cards.add(new SetCardInfo("Loxodon Surveyor", 167, Rarity.COMMON, mage.cards.l.LoxodonSurveyor.class));
diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java
index 57a18bb9a08..f441286c5fa 100644
--- a/Mage/src/main/java/mage/filter/StaticFilters.java
+++ b/Mage/src/main/java/mage/filter/StaticFilters.java
@@ -754,6 +754,17 @@ public final class StaticFilters {
FILTER_PERMANENT_CREATURE_OR_LAND.setLockedFilter(true);
}
+ public static final FilterPermanent FILTER_PERMANENT_CREATURE_OR_VEHICLE = new FilterPermanent("creature or Vehicle");
+
+ static {
+ FILTER_PERMANENT_CREATURE_OR_VEHICLE.add(
+ Predicates.or(
+ CardType.CREATURE.getPredicate(),
+ SubType.VEHICLE.getPredicate()
+ ));
+ FILTER_PERMANENT_CREATURE_OR_VEHICLE.setLockedFilter(true);
+ }
+
public static final FilterCreaturePermanent FILTER_PERMANENT_A_CREATURE = new FilterCreaturePermanent("a creature");
static {