newCosts = new CostsImpl<>();
- newCosts.add(new RemoveCounterCost(new TargetControlledCreaturePermanent(1, 1, new FilterControlledCreaturePermanent(), true)));
+ newCosts.add(new RemoveCounterCost(new TargetControlledCreaturePermanent().withNotTarget(true)));
newCosts.addAll(cardToCheck.getSpellAbility().getCosts());
player.setCastSourceIdWithAlternateMana(
cardToCheck.getId(), cardToCheck.getManaCost(), newCosts,
diff --git a/Mage.Sets/src/mage/cards/f/FamiliarGround.java b/Mage.Sets/src/mage/cards/f/FamiliarGround.java
index 55113b15d32..749958e8e86 100644
--- a/Mage.Sets/src/mage/cards/f/FamiliarGround.java
+++ b/Mage.Sets/src/mage/cards/f/FamiliarGround.java
@@ -8,7 +8,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -21,7 +21,7 @@ public final class FamiliarGround extends CardImpl {
// Each creature you control can't be blocked by more than one creature.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedByMoreThanOneAllEffect(new FilterControlledCreaturePermanent())));
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedByMoreThanOneAllEffect(StaticFilters.FILTER_CONTROLLED_CREATURE)));
}
private FamiliarGround(final FamiliarGround card) {
diff --git a/Mage.Sets/src/mage/cards/f/FeastOfBlood.java b/Mage.Sets/src/mage/cards/f/FeastOfBlood.java
index bc41d9da3c6..482057d215b 100644
--- a/Mage.Sets/src/mage/cards/f/FeastOfBlood.java
+++ b/Mage.Sets/src/mage/cards/f/FeastOfBlood.java
@@ -11,7 +11,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.ComparisonType;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetCreaturePermanent;
/**
@@ -26,7 +26,7 @@ public final class FeastOfBlood extends CardImpl {
// Cast Feast of Blood only if you control two or more Vampires.
this.addAbility(new CastOnlyIfConditionIsTrueAbility(
new PermanentsOnTheBattlefieldCondition(
- new FilterControlledCreaturePermanent(SubType.VAMPIRE, "you control two or more Vampires"),
+ new FilterControlledPermanent(SubType.VAMPIRE, "you control two or more Vampires"),
ComparisonType.MORE_THAN, 1)));
// Destroy target creature. You gain 4 life.
diff --git a/Mage.Sets/src/mage/cards/f/FirefistAdept.java b/Mage.Sets/src/mage/cards/f/FirefistAdept.java
index b83bbec29c8..adc4a804398 100644
--- a/Mage.Sets/src/mage/cards/f/FirefistAdept.java
+++ b/Mage.Sets/src/mage/cards/f/FirefistAdept.java
@@ -1,4 +1,3 @@
-
package mage.cards.f;
import java.util.UUID;
@@ -11,7 +10,7 @@ import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetOpponentsCreaturePermanent;
/**
@@ -20,7 +19,7 @@ import mage.target.common.TargetOpponentsCreaturePermanent;
*/
public final class FirefistAdept extends CardImpl {
- private static final FilterControlledCreaturePermanent filterCount = new FilterControlledCreaturePermanent("Wizards you control");
+ private static final FilterControlledPermanent filterCount = new FilterControlledPermanent("Wizards you control");
static {
filterCount.add(SubType.WIZARD.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/f/FrayingOmnipotence.java b/Mage.Sets/src/mage/cards/f/FrayingOmnipotence.java
index a7f0be4b6ae..4bc66e08ebf 100644
--- a/Mage.Sets/src/mage/cards/f/FrayingOmnipotence.java
+++ b/Mage.Sets/src/mage/cards/f/FrayingOmnipotence.java
@@ -1,20 +1,19 @@
package mage.cards.f;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
-import mage.target.Target;
-import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetSacrifice;
+import java.util.UUID;
+
/**
*
* @author TheElk801
@@ -89,12 +88,11 @@ class FrayingOmnipotenceEffect extends OneShotEffect {
if (player == null) {
continue;
}
- FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
- int creaturesToSacrifice = (int) Math.ceil(game.getBattlefield().count(filter, player.getId(), source, game) / 2.0);
+ int creaturesToSacrifice = (int) Math.ceil(game.getBattlefield().count(StaticFilters.FILTER_CONTROLLED_CREATURE, player.getId(), source, game) / 2.0);
if (creaturesToSacrifice == 0) {
continue;
}
- Target target = new TargetSacrifice(creaturesToSacrifice, filter);
+ TargetSacrifice target = new TargetSacrifice(creaturesToSacrifice, StaticFilters.FILTER_PERMANENT_CREATURE);
target.chooseTarget(Outcome.Sacrifice, playerId, source, game);
for (UUID permanentId : target.getTargets()) {
Permanent permanent = game.getPermanent(permanentId);
diff --git a/Mage.Sets/src/mage/cards/f/FrontlineMedic.java b/Mage.Sets/src/mage/cards/f/FrontlineMedic.java
index f3ef1946b11..43b5ff38997 100644
--- a/Mage.Sets/src/mage/cards/f/FrontlineMedic.java
+++ b/Mage.Sets/src/mage/cards/f/FrontlineMedic.java
@@ -1,4 +1,3 @@
-
package mage.cards.f;
import mage.MageInt;
@@ -18,7 +17,7 @@ import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterSpell;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.VariableManaCostPredicate;
import mage.target.TargetSpell;
@@ -45,8 +44,7 @@ public final class FrontlineMedic extends CardImpl {
this.toughness = new MageInt(3);
// Battalion - Whenever Frontline Medic and at least two other creatures attack, creatures you control gain indestructible until end of turn.
- Effect effect = new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent(), false);
- effect.setText("creatures you control gain indestructible until end of turn");
+ Effect effect = new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURES, false);
this.addAbility(new BattalionAbility(effect));
// Sacrifice Frontline Medic: Counter target spell with {X} in its mana cost unless its controller pays {3}.
diff --git a/Mage.Sets/src/mage/cards/f/FulfillContract.java b/Mage.Sets/src/mage/cards/f/FulfillContract.java
index da690eede5b..b311c455f03 100644
--- a/Mage.Sets/src/mage/cards/f/FulfillContract.java
+++ b/Mage.Sets/src/mage/cards/f/FulfillContract.java
@@ -1,4 +1,3 @@
-
package mage.cards.f;
import java.util.UUID;
@@ -10,13 +9,13 @@ import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetCreaturePermanent;
/**
@@ -26,7 +25,7 @@ import mage.target.common.TargetCreaturePermanent;
public final class FulfillContract extends CardImpl {
private static final FilterCreaturePermanent filterBountyCreature = new FilterCreaturePermanent("creature with a bounty counter on it");
- private static final FilterControlledCreaturePermanent filterRogueOrHunter = new FilterControlledCreaturePermanent("Rogue or Hunter you control");
+ private static final FilterControlledPermanent filterRogueOrHunter = new FilterControlledPermanent("Rogue or Hunter you control");
static {
filterBountyCreature.add(CounterType.BOUNTY.getPredicate());
@@ -39,7 +38,7 @@ public final class FulfillContract extends CardImpl {
// Destroy target creature with a bounty counter on it. If that creature is destroyed this way, you may put a +1/+1 counter on target Rogue or Hunter you control.
this.getSpellAbility().addEffect(new FulfillContractEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filterBountyCreature));
- this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent(filterRogueOrHunter));
+ this.getSpellAbility().addTarget(new TargetControlledPermanent(filterRogueOrHunter));
}
diff --git a/Mage.Sets/src/mage/cards/g/GallifreyStands.java b/Mage.Sets/src/mage/cards/g/GallifreyStands.java
index 7536158d6b1..69d010ff01c 100644
--- a/Mage.Sets/src/mage/cards/g/GallifreyStands.java
+++ b/Mage.Sets/src/mage/cards/g/GallifreyStands.java
@@ -16,7 +16,7 @@ import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.*;
import mage.filter.FilterCard;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.common.FilterCreatureCard;
import mage.game.Game;
import mage.players.Player;
@@ -29,7 +29,7 @@ import java.util.UUID;
public final class GallifreyStands extends CardImpl {
private static final FilterCreatureCard filter = new FilterCreatureCard("a Doctor creature card");
- private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent(SubType.DOCTOR, "Doctors");
+ private static final FilterControlledPermanent filter2 = new FilterControlledPermanent(SubType.DOCTOR, "Doctors");
static {
filter.add(SubType.DOCTOR.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/g/GangrenousGoliath.java b/Mage.Sets/src/mage/cards/g/GangrenousGoliath.java
index f938a316f34..7313417579a 100644
--- a/Mage.Sets/src/mage/cards/g/GangrenousGoliath.java
+++ b/Mage.Sets/src/mage/cards/g/GangrenousGoliath.java
@@ -1,4 +1,3 @@
-
package mage.cards.g;
import java.util.UUID;
@@ -11,8 +10,8 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
+import mage.target.common.TargetControlledPermanent;
/**
*
@@ -20,7 +19,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class GangrenousGoliath extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.CLERIC,"untapped Clerics you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.CLERIC,"untapped Clerics you control");
public GangrenousGoliath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
@@ -33,7 +32,7 @@ public final class GangrenousGoliath extends CardImpl {
this.addAbility(new SimpleActivatedAbility(
Zone.GRAVEYARD,
new ReturnToHandSourceEffect(),
- new TapTargetCost(new TargetControlledCreaturePermanent(3, 3, filter, true))));
+ new TapTargetCost(new TargetControlledPermanent(3, 3, filter, true))));
}
private GangrenousGoliath(final GangrenousGoliath card) {
diff --git a/Mage.Sets/src/mage/cards/g/GarrukPrimalHunter.java b/Mage.Sets/src/mage/cards/g/GarrukPrimalHunter.java
index dc3c05c34b2..3f1e67e7d4f 100644
--- a/Mage.Sets/src/mage/cards/g/GarrukPrimalHunter.java
+++ b/Mage.Sets/src/mage/cards/g/GarrukPrimalHunter.java
@@ -1,4 +1,3 @@
-
package mage.cards.g;
import java.util.UUID;
@@ -13,7 +12,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome;
import mage.constants.SuperType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.game.Game;
@@ -74,7 +73,7 @@ class GarrukPrimalHunterEffect extends OneShotEffect {
Player player = game.getPlayer(source.getControllerId());
if (player != null) {
int amount = 0;
- for (Permanent p : game.getBattlefield().getActivePermanents(new FilterControlledCreaturePermanent(), source.getControllerId(), game)) {
+ for (Permanent p : game.getBattlefield().getActivePermanents(StaticFilters.FILTER_CONTROLLED_CREATURE, source.getControllerId(), game)) {
if (p.getPower().getValue() > amount) {
amount = p.getPower().getValue();
}
diff --git a/Mage.Sets/src/mage/cards/g/GemcutterBuccaneer.java b/Mage.Sets/src/mage/cards/g/GemcutterBuccaneer.java
index 50a1a5e81d8..ab4d88023d8 100644
--- a/Mage.Sets/src/mage/cards/g/GemcutterBuccaneer.java
+++ b/Mage.Sets/src/mage/cards/g/GemcutterBuccaneer.java
@@ -36,7 +36,7 @@ import mage.target.TargetPermanent;
*/
public final class GemcutterBuccaneer extends CardImpl {
- private static final FilterPermanent filter = new FilterControlledCreaturePermanent(SubType.PIRATE, "Pirate");
+ private static final FilterPermanent filter = new FilterControlledPermanent(SubType.PIRATE, "Pirate");
public GemcutterBuccaneer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GhaveGuruOfSpores.java b/Mage.Sets/src/mage/cards/g/GhaveGuruOfSpores.java
index 5ee4e8f6ce2..e883e08fcb1 100644
--- a/Mage.Sets/src/mage/cards/g/GhaveGuruOfSpores.java
+++ b/Mage.Sets/src/mage/cards/g/GhaveGuruOfSpores.java
@@ -20,10 +20,8 @@ import mage.constants.SuperType;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
-import mage.filter.common.FilterControlledCreaturePermanent;
import mage.game.permanent.token.SaprolingToken;
import mage.target.common.TargetControlledCreaturePermanent;
-import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetCreaturePermanent;
/**
@@ -46,7 +44,7 @@ public final class GhaveGuruOfSpores extends CardImpl {
// {1}, Remove a +1/+1 counter from a creature you control: Create a 1/1 green Saproling creature token.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new SaprolingToken()), new GenericManaCost(1));
- ability.addCost(new RemoveCounterCost(new TargetControlledCreaturePermanent(1, 1, new FilterControlledCreaturePermanent(), true), CounterType.P1P1));
+ ability.addCost(new RemoveCounterCost(new TargetControlledCreaturePermanent().withNotTarget(true), CounterType.P1P1));
this.addAbility(ability);
// {1}, Sacrifice a creature: Put a +1/+1 counter on target creature.
diff --git a/Mage.Sets/src/mage/cards/g/GiantsGrasp.java b/Mage.Sets/src/mage/cards/g/GiantsGrasp.java
index a6600e37704..87f1342896a 100644
--- a/Mage.Sets/src/mage/cards/g/GiantsGrasp.java
+++ b/Mage.Sets/src/mage/cards/g/GiantsGrasp.java
@@ -9,7 +9,7 @@ import mage.constants.SubType;
import mage.abilities.Ability;
import mage.abilities.effects.common.AttachEffect;
import mage.constants.Outcome;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.target.TargetPermanent;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
@@ -23,7 +23,7 @@ import mage.target.common.TargetNonlandPermanent;
*/
public final class GiantsGrasp extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.GIANT);
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.GIANT);
public GiantsGrasp(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/g/GideonsPhalanx.java b/Mage.Sets/src/mage/cards/g/GideonsPhalanx.java
index b121d8df007..8210079e24a 100644
--- a/Mage.Sets/src/mage/cards/g/GideonsPhalanx.java
+++ b/Mage.Sets/src/mage/cards/g/GideonsPhalanx.java
@@ -1,4 +1,3 @@
-
package mage.cards.g;
import java.util.UUID;
@@ -13,7 +12,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.game.permanent.token.KnightToken;
/**
@@ -30,7 +29,7 @@ public final class GideonsPhalanx extends CardImpl {
// Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, creatures you control gain indestructible until end of turn.
Effect effect = new ConditionalOneShotEffect(
- new AddContinuousEffectToGame(new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent())),
+ new AddContinuousEffectToGame(new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURES)),
SpellMasteryCondition.instance,
"
Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, creatures you control gain indestructible until end of turn");
this.getSpellAbility().addEffect(effect);
diff --git a/Mage.Sets/src/mage/cards/g/GlaringSpotlight.java b/Mage.Sets/src/mage/cards/g/GlaringSpotlight.java
index 358199a8069..dbebfae7724 100644
--- a/Mage.Sets/src/mage/cards/g/GlaringSpotlight.java
+++ b/Mage.Sets/src/mage/cards/g/GlaringSpotlight.java
@@ -1,4 +1,3 @@
-
package mage.cards.g;
import java.util.UUID;
@@ -15,17 +14,16 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.StaticFilters;
-import mage.filter.common.FilterControlledCreaturePermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
/**
* Gatecrash FAQ 21.01.2013
- *
+ *
* Creatures your opponents control don't actually lose hexproof, although you
* will ignore hexproof for purposes of choosing targets of spells and abilities
* you control.
- *
+ *
* Creatures that come under your control after Glaring Spotlight's last ability
* resolves won't have hexproof but can't be blocked that turn.
*
@@ -41,9 +39,9 @@ public final class GlaringSpotlight extends CardImpl {
// {3}, Sacrifice Glaring Spotlight: Creatures you control gain hexproof until end of turn and can't be blocked this turn.
Ability ability = new SimpleActivatedAbility(
- Zone.BATTLEFIELD, new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false),
+ Zone.BATTLEFIELD, new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false),
new GenericManaCost(3));
- ability.addEffect(new CantBeBlockedAllEffect(new FilterControlledCreaturePermanent(), Duration.EndOfTurn));
+ ability.addEffect(new CantBeBlockedAllEffect(StaticFilters.FILTER_CONTROLLED_CREATURES, Duration.EndOfTurn).setText("and can't be blocked this turn"));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/g/GoblinSledder.java b/Mage.Sets/src/mage/cards/g/GoblinSledder.java
index 556927858e5..1baad15521a 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinSledder.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinSledder.java
@@ -13,8 +13,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.filter.FilterPermanent;
import mage.target.common.TargetCreaturePermanent;
/**
@@ -23,11 +22,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class GoblinSledder extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Goblin");
-
- static {
- filter.add(SubType.GOBLIN.getPredicate());
- }
+ private static final FilterPermanent filter = new FilterPermanent(SubType.GOBLIN, "a Goblin");
public GoblinSledder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinTurncoat.java b/Mage.Sets/src/mage/cards/g/GoblinTurncoat.java
index f995d021be6..9f4cd529d1d 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinTurncoat.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinTurncoat.java
@@ -12,8 +12,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.filter.FilterPermanent;
/**
*
@@ -21,11 +20,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class GoblinTurncoat extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Goblin");
-
- static {
- filter.add(SubType.GOBLIN.getPredicate());
- }
+ private static final FilterPermanent filter = new FilterPermanent(SubType.GOBLIN, "a Goblin");
public GoblinTurncoat(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/g/GoblinWarrens.java b/Mage.Sets/src/mage/cards/g/GoblinWarrens.java
index 5362c0b54da..7152ad16eb5 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinWarrens.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinWarrens.java
@@ -1,4 +1,3 @@
-
package mage.cards.g;
import java.util.UUID;
@@ -12,9 +11,8 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.FilterPermanent;
import mage.game.permanent.token.GoblinToken;
-import mage.target.common.TargetControlledCreaturePermanent;
/**
*
@@ -22,12 +20,11 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class GoblinWarrens extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.GOBLIN, "Goblins");
+ private static final FilterPermanent filter = new FilterPermanent(SubType.GOBLIN, "Goblins");
public GoblinWarrens(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}");
-
// {2}{R}, Sacrifice two Goblins: Create three 1/1 red Goblin creature tokens.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new GoblinToken(), 3), new ManaCostsImpl<>("{2}{R}"));
ability.addCost(new SacrificeTargetCost(2, filter));
diff --git a/Mage.Sets/src/mage/cards/g/GoblinsOfTheFlarg.java b/Mage.Sets/src/mage/cards/g/GoblinsOfTheFlarg.java
index dcb195f5f60..804fa23ea70 100644
--- a/Mage.Sets/src/mage/cards/g/GoblinsOfTheFlarg.java
+++ b/Mage.Sets/src/mage/cards/g/GoblinsOfTheFlarg.java
@@ -1,4 +1,3 @@
-
package mage.cards.g;
import mage.MageInt;
@@ -9,7 +8,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import java.util.UUID;
@@ -18,11 +17,7 @@ import java.util.UUID;
*/
public final class GoblinsOfTheFlarg extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Dwarf");
-
- static {
- filter.add(SubType.DWARF.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.DWARF, "a Dwarf");
public GoblinsOfTheFlarg(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}");
diff --git a/Mage.Sets/src/mage/cards/g/GodEternalRhonas.java b/Mage.Sets/src/mage/cards/g/GodEternalRhonas.java
index 4860b17fb3f..4a60817eeff 100644
--- a/Mage.Sets/src/mage/cards/g/GodEternalRhonas.java
+++ b/Mage.Sets/src/mage/cards/g/GodEternalRhonas.java
@@ -7,18 +7,18 @@ import mage.abilities.common.GodEternalDiesTriggeredAbility;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.DeathtouchAbility;
import mage.abilities.keyword.VigilanceAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.targetpointer.FixedTarget;
import java.util.UUID;
-import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
-import mage.filter.common.FilterControlledCreaturePermanent;
/**
* @author TheElk801
@@ -55,8 +55,6 @@ public final class GodEternalRhonas extends CardImpl {
}
class GodEternalRhonasEffect extends OneShotEffect {
-
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
GodEternalRhonasEffect() {
super(Outcome.Benefit);
@@ -76,7 +74,7 @@ class GodEternalRhonasEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Permanent godEternalRhonas = game.getPermanent(source.getSourceId());
- for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) {
+ for (Permanent permanent : game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_CONTROLLED_CREATURES, source.getControllerId(), game)) {
if (permanent == null
|| godEternalRhonas != null
&& permanent == godEternalRhonas) {
diff --git a/Mage.Sets/src/mage/cards/g/GodoBanditWarlord.java b/Mage.Sets/src/mage/cards/g/GodoBanditWarlord.java
index 214cb25bb6a..32a87282cf2 100644
--- a/Mage.Sets/src/mage/cards/g/GodoBanditWarlord.java
+++ b/Mage.Sets/src/mage/cards/g/GodoBanditWarlord.java
@@ -1,4 +1,3 @@
-
package mage.cards.g;
import java.util.UUID;
@@ -16,7 +15,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.FilterCard;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.common.TargetCardInLibrary;
@@ -27,7 +26,7 @@ import mage.target.common.TargetCardInLibrary;
public final class GodoBanditWarlord extends CardImpl {
private static final FilterCard filter = new FilterCard("an Equipment card");
- private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent(SubType.SAMURAI);
+ private static final FilterControlledPermanent filter2 = new FilterControlledPermanent(SubType.SAMURAI);
static {
filter.add(SubType.EQUIPMENT.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/g/GolgariCharm.java b/Mage.Sets/src/mage/cards/g/GolgariCharm.java
index 5fe0b4f363a..4cd696f2ec4 100644
--- a/Mage.Sets/src/mage/cards/g/GolgariCharm.java
+++ b/Mage.Sets/src/mage/cards/g/GolgariCharm.java
@@ -9,7 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.target.common.TargetEnchantmentPermanent;
/**
@@ -21,7 +21,6 @@ public final class GolgariCharm extends CardImpl {
public GolgariCharm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{B}{G}");
-
// Choose one — All creatures get -1/-1 until end of turn;
this.getSpellAbility().addEffect(new BoostAllEffect(-1, -1, Duration.EndOfTurn));
@@ -31,7 +30,7 @@ public final class GolgariCharm extends CardImpl {
this.getSpellAbility().addMode(mode);
// or regenerate each creature you control.
- mode = new Mode(new RegenerateAllEffect(new FilterControlledCreaturePermanent()));
+ mode = new Mode(new RegenerateAllEffect(StaticFilters.FILTER_CONTROLLED_CREATURE));
this.getSpellAbility().addMode(mode);
}
diff --git a/Mage.Sets/src/mage/cards/g/GrafHarvest.java b/Mage.Sets/src/mage/cards/g/GrafHarvest.java
index 68e4f5fd0d0..2b75e728052 100644
--- a/Mage.Sets/src/mage/cards/g/GrafHarvest.java
+++ b/Mage.Sets/src/mage/cards/g/GrafHarvest.java
@@ -17,7 +17,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.common.FilterCreatureCard;
import mage.game.permanent.token.ZombieToken;
import mage.target.common.TargetCardInYourGraveyard;
@@ -28,7 +28,7 @@ import mage.target.common.TargetCardInYourGraveyard;
*/
public final class GrafHarvest extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Zombies you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("Zombies you control");
static {
filter.add(SubType.ZOMBIE.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/g/GreaterKraytDragon.java b/Mage.Sets/src/mage/cards/g/GreaterKraytDragon.java
index ab5507bc355..f01f52b6f91 100644
--- a/Mage.Sets/src/mage/cards/g/GreaterKraytDragon.java
+++ b/Mage.Sets/src/mage/cards/g/GreaterKraytDragon.java
@@ -13,7 +13,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -34,7 +34,7 @@ public final class GreaterKraytDragon extends CardImpl {
this.addAbility(new MonstrosityAbility("{X}{X}{R}{G}{W}", Integer.MAX_VALUE));
// When Greater Krayt Dragon becomes monstrous, draw a card for each +1/+1 counter on creatures you control.
- this.addAbility(new BecomesMonstrousSourceTriggeredAbility(new DrawCardSourceControllerEffect(new CountersCount(CounterType.P1P1, new FilterControlledCreaturePermanent()))));
+ this.addAbility(new BecomesMonstrousSourceTriggeredAbility(new DrawCardSourceControllerEffect(new CountersCount(CounterType.P1P1, StaticFilters.FILTER_CONTROLLED_CREATURES))));
}
diff --git a/Mage.Sets/src/mage/cards/h/HagraDiabolist.java b/Mage.Sets/src/mage/cards/h/HagraDiabolist.java
index b5e5e9c9191..2e266139cd0 100644
--- a/Mage.Sets/src/mage/cards/h/HagraDiabolist.java
+++ b/Mage.Sets/src/mage/cards/h/HagraDiabolist.java
@@ -9,8 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.constants.TargetController;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.target.TargetPlayer;
import java.util.UUID;
@@ -20,12 +19,7 @@ import java.util.UUID;
*/
public final class HagraDiabolist extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Allies you control");
-
- static {
- filter.add(SubType.ALLY.getPredicate());
- filter.add(TargetController.YOU.getControllerPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.ALLY, "Allies you control");
public HagraDiabolist(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
diff --git a/Mage.Sets/src/mage/cards/h/HamletVanguard.java b/Mage.Sets/src/mage/cards/h/HamletVanguard.java
index 28fc81507f9..140a00b6799 100644
--- a/Mage.Sets/src/mage/cards/h/HamletVanguard.java
+++ b/Mage.Sets/src/mage/cards/h/HamletVanguard.java
@@ -15,7 +15,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.permanent.TokenPredicate;
@@ -26,7 +26,7 @@ import java.util.UUID;
*/
public final class HamletVanguard extends CardImpl {
- private static final FilterPermanent filter = new FilterControlledCreaturePermanent(SubType.HUMAN);
+ private static final FilterPermanent filter = new FilterControlledPermanent(SubType.HUMAN);
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/h/HarabazDruid.java b/Mage.Sets/src/mage/cards/h/HarabazDruid.java
index a85b7fc7165..0aa64ca393f 100644
--- a/Mage.Sets/src/mage/cards/h/HarabazDruid.java
+++ b/Mage.Sets/src/mage/cards/h/HarabazDruid.java
@@ -1,4 +1,3 @@
-
package mage.cards.h;
import java.util.UUID;
@@ -11,18 +10,14 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
/**
* @author Loki
*/
public final class HarabazDruid extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Allies you control");
-
- static {
- filter.add(SubType.ALLY.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.ALLY, "Allies you control");
public HarabazDruid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/h/Heartmender.java b/Mage.Sets/src/mage/cards/h/Heartmender.java
index d86cdc507c4..994126dafc4 100644
--- a/Mage.Sets/src/mage/cards/h/Heartmender.java
+++ b/Mage.Sets/src/mage/cards/h/Heartmender.java
@@ -1,4 +1,3 @@
-
package mage.cards.h;
import java.util.UUID;
@@ -15,7 +14,7 @@ import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.counters.Counter;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
@@ -53,7 +52,7 @@ class HeartmenderEffect extends OneShotEffect {
private final Counter counter;
- public HeartmenderEffect(Counter counter) {
+ HeartmenderEffect(Counter counter) {
super(Outcome.BoostCreature);
this.counter = counter;
staticText = "remove a -1/-1 counter from each creature you control";
@@ -67,11 +66,10 @@ class HeartmenderEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
boolean applied = false;
- FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
- if (game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game).isEmpty()) {
+ if (game.getBattlefield().getActivePermanents(StaticFilters.FILTER_CONTROLLED_CREATURE, source.getControllerId(), game).isEmpty()) {
return true;
}
- for (Permanent creature : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) {
+ for (Permanent creature : game.getBattlefield().getActivePermanents(StaticFilters.FILTER_CONTROLLED_CREATURE, source.getControllerId(), game)) {
if (creature != null
&& creature.getCounters(game).getCount(counter.getName()) >= counter.getCount()) {
creature.removeCounters(counter.getName(), counter.getCount(), source, game);
diff --git a/Mage.Sets/src/mage/cards/h/HolgaRelentlessRager.java b/Mage.Sets/src/mage/cards/h/HolgaRelentlessRager.java
index 1fcd88f006f..f1f2c53089f 100644
--- a/Mage.Sets/src/mage/cards/h/HolgaRelentlessRager.java
+++ b/Mage.Sets/src/mage/cards/h/HolgaRelentlessRager.java
@@ -55,15 +55,16 @@ public final class HolgaRelentlessRager extends CardImpl {
}
}
-class HolgaRelentlessRagerEffect extends OneShotEffect {
- private enum HolgaRelentlessRagerPredicate implements Predicate {
- instance;
+enum HolgaRelentlessRagerPredicate implements Predicate {
+ instance;
- @Override
- public boolean apply(Permanent input, Game game) {
- return game.getPlayer(game.getCombat().getDefenderId(input.getId())) != null;
- }
+ @Override
+ public boolean apply(Permanent input, Game game) {
+ return game.getPlayer(game.getCombat().getDefenderId(input.getId())) != null;
}
+}
+
+class HolgaRelentlessRagerEffect extends OneShotEffect {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent();
diff --git a/Mage.Sets/src/mage/cards/h/HopeAgainstHope.java b/Mage.Sets/src/mage/cards/h/HopeAgainstHope.java
index fcb418eb72a..9bb3891b204 100644
--- a/Mage.Sets/src/mage/cards/h/HopeAgainstHope.java
+++ b/Mage.Sets/src/mage/cards/h/HopeAgainstHope.java
@@ -14,7 +14,7 @@ import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
@@ -35,7 +35,7 @@ public final class HopeAgainstHope extends CardImpl {
this.addAbility(new EnchantAbility(auraTarget));
// Enchanted creature gets +1/+1 for each creature you control.
- PermanentsOnBattlefieldCount amount = new PermanentsOnBattlefieldCount(new FilterControlledCreaturePermanent(), 1);
+ PermanentsOnBattlefieldCount amount = new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_CREATURE, 1);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(amount, amount, Duration.WhileOnBattlefield)));
// As long as enchanted creature is a Human, it has first strike.
diff --git a/Mage.Sets/src/mage/cards/h/HungryLynx.java b/Mage.Sets/src/mage/cards/h/HungryLynx.java
index 2fee319e171..e654581a62d 100644
--- a/Mage.Sets/src/mage/cards/h/HungryLynx.java
+++ b/Mage.Sets/src/mage/cards/h/HungryLynx.java
@@ -1,9 +1,8 @@
-
package mage.cards.h;
-import java.util.UUID;
import mage.MageInt;
-import mage.abilities.Ability;import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
+import mage.abilities.Ability;
+import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.common.DiesCreatureTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.Effect;
@@ -13,39 +12,30 @@ import mage.abilities.effects.common.counter.AddCountersAllEffect;
import mage.abilities.keyword.ProtectionAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.SubType;
-import mage.constants.TargetController;
-import mage.constants.Zone;
+import mage.constants.*;
import mage.counters.CounterType;
import mage.filter.FilterCard;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.FilterPermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.DeathtouchRatToken;
-import mage.target.Target;
import mage.target.common.TargetOpponent;
+import java.util.UUID;
+
/**
*
* @author Saga
*/
public final class HungryLynx extends CardImpl {
- private static final FilterControlledCreaturePermanent filterCat = new FilterControlledCreaturePermanent("Cats");
- static {
- filterCat.add(SubType.CAT.getPredicate());
- }
+ private static final FilterControlledPermanent filterCat = new FilterControlledPermanent(SubType.CAT, "Cats");
private static final FilterCard filterProRat = new FilterCard("Rats");
static {
filterProRat.add(SubType.RAT.getPredicate());
}
- private static final FilterCreaturePermanent filterRat = new FilterCreaturePermanent("a Rat");
- static {
- filterRat.add(SubType.RAT.getPredicate());
- }
+ private static final FilterPermanent filterRat = new FilterPermanent(SubType.RAT, "a Rat");
public HungryLynx(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
@@ -60,8 +50,7 @@ public final class HungryLynx extends CardImpl {
// At the beginning of your end step, target opponent creates a 1/1 black Rat creature token with deathtouch.
Ability ability = new BeginningOfEndStepTriggeredAbility(Zone.BATTLEFIELD, new CreateTokenTargetEffect(new DeathtouchRatToken()), TargetController.YOU, null, false);
- Target target = new TargetOpponent();
- ability.addTarget(target);
+ ability.addTarget(new TargetOpponent());
this.addAbility(ability);
// Whenever a Rat dies, put a +1/+1 counter on each Cat you control.
diff --git a/Mage.Sets/src/mage/cards/i/IizukaTheRuthless.java b/Mage.Sets/src/mage/cards/i/IizukaTheRuthless.java
index 327fadf0a59..2b6da907957 100644
--- a/Mage.Sets/src/mage/cards/i/IizukaTheRuthless.java
+++ b/Mage.Sets/src/mage/cards/i/IizukaTheRuthless.java
@@ -1,4 +1,3 @@
-
package mage.cards.i;
import java.util.UUID;
@@ -13,8 +12,8 @@ import mage.abilities.keyword.DoubleStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
+import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.target.common.TargetControlledCreaturePermanent;
/**
*
@@ -22,13 +21,8 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class IizukaTheRuthless extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Samurai");
- private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("Samurai creatures");
-
- static {
- filter.add(SubType.SAMURAI.getPredicate());
- filter2.add(SubType.SAMURAI.getPredicate());
- }
+ private static final FilterPermanent filter = new FilterPermanent(SubType.SAMURAI, "Samurai");
+ private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent(SubType.SAMURAI, "Samurai creatures");
public IizukaTheRuthless(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/i/Immerwolf.java b/Mage.Sets/src/mage/cards/i/Immerwolf.java
index cc62359f98f..85299c15d76 100644
--- a/Mage.Sets/src/mage/cards/i/Immerwolf.java
+++ b/Mage.Sets/src/mage/cards/i/Immerwolf.java
@@ -12,7 +12,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.game.Game;
@@ -59,13 +59,13 @@ public final class Immerwolf extends CardImpl {
class ImmerwolfEffect extends RestrictionEffect {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.WEREWOLF);
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.WEREWOLF);
static {
filter.add(Predicates.not(SubType.HUMAN.getPredicate()));
}
- public ImmerwolfEffect() {
+ ImmerwolfEffect() {
super(Duration.WhileOnBattlefield);
staticText = "Non-Human Werewolves you control can't transform";
}
diff --git a/Mage.Sets/src/mage/cards/i/InfernalOffering.java b/Mage.Sets/src/mage/cards/i/InfernalOffering.java
index a36f58763e5..82412ed39ed 100644
--- a/Mage.Sets/src/mage/cards/i/InfernalOffering.java
+++ b/Mage.Sets/src/mage/cards/i/InfernalOffering.java
@@ -1,12 +1,5 @@
-
package mage.cards.i;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
@@ -15,15 +8,18 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.filter.common.FilterCreatureCard;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.Target;
import mage.target.common.TargetCardInYourGraveyard;
-import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetOpponent;
+import mage.target.common.TargetSacrifice;
+
+import java.util.*;
+import java.util.Map.Entry;
/**
*
@@ -79,7 +75,7 @@ class InfernalOfferingSacrificeEffect extends OneShotEffect {
Map toSacrifice = new HashMap<>(2);
for (UUID playerId : game.getState().getPlayersInRange(player.getId(), game)) {
if (playerId.equals(player.getId()) || playerId.equals(opponent.getId())) {
- target = new TargetControlledCreaturePermanent(1, 1, new FilterControlledCreaturePermanent(), true);
+ target = new TargetSacrifice(StaticFilters.FILTER_PERMANENT_CREATURE);
if (target.choose(Outcome.Sacrifice, playerId, source.getControllerId(), source, game)) {
toSacrifice.put(playerId, target.getFirstTarget());
}
diff --git a/Mage.Sets/src/mage/cards/i/InspiringRoar.java b/Mage.Sets/src/mage/cards/i/InspiringRoar.java
index 46f80ce73e8..92af485b598 100644
--- a/Mage.Sets/src/mage/cards/i/InspiringRoar.java
+++ b/Mage.Sets/src/mage/cards/i/InspiringRoar.java
@@ -1,4 +1,3 @@
-
package mage.cards.i;
import java.util.UUID;
@@ -7,7 +6,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -19,7 +18,7 @@ public final class InspiringRoar extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}");
// Put a +1/+1 counter on each creature you control.
- getSpellAbility().addEffect(new AddCountersAllEffect(CounterType.P1P1.createInstance(), new FilterControlledCreaturePermanent()));
+ getSpellAbility().addEffect(new AddCountersAllEffect(CounterType.P1P1.createInstance(), StaticFilters.FILTER_CONTROLLED_CREATURE));
}
private InspiringRoar(final InspiringRoar card) {
diff --git a/Mage.Sets/src/mage/cards/i/IntrepidProvisioner.java b/Mage.Sets/src/mage/cards/i/IntrepidProvisioner.java
index 844e2edccc1..d5106556afa 100644
--- a/Mage.Sets/src/mage/cards/i/IntrepidProvisioner.java
+++ b/Mage.Sets/src/mage/cards/i/IntrepidProvisioner.java
@@ -1,4 +1,3 @@
-
package mage.cards.i;
import java.util.UUID;
@@ -12,9 +11,9 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.target.TargetPermanent;
/**
*
@@ -22,7 +21,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class IntrepidProvisioner extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.HUMAN, "another target Human you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.HUMAN, "another target Human you control");
static {
filter.add(AnotherPredicate.instance);
@@ -39,7 +38,7 @@ public final class IntrepidProvisioner extends CardImpl {
this.addAbility(TrampleAbility.getInstance());
// When Intrepid Provisioner enters the battlefield, another target Human you control gets +2/+2 until end of turn.
Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(2, 2, Duration.EndOfTurn), false);
- ability.addTarget(new TargetControlledCreaturePermanent(filter));
+ ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java b/Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java
index 8f3590dea72..63ae68c7143 100644
--- a/Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java
+++ b/Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java
@@ -19,7 +19,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.SpiderToken;
import mage.target.common.TargetOpponent;
@@ -30,11 +30,7 @@ import java.util.UUID;
*/
public final class IshkanahGrafwidow extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Spider you control");
-
- static {
- filter.add(SubType.SPIDER.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.SPIDER, "Spider you control");
public IshkanahGrafwidow(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
diff --git a/Mage.Sets/src/mage/cards/j/JadeBearer.java b/Mage.Sets/src/mage/cards/j/JadeBearer.java
index 98c977b51a2..0ad5ed2a359 100644
--- a/Mage.Sets/src/mage/cards/j/JadeBearer.java
+++ b/Mage.Sets/src/mage/cards/j/JadeBearer.java
@@ -9,7 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.TargetPermanent;
@@ -19,8 +19,8 @@ import mage.target.TargetPermanent;
*/
public final class JadeBearer extends CardImpl {
- private static final FilterControlledCreaturePermanent filter =
- new FilterControlledCreaturePermanent(SubType.MERFOLK, "another target Merfolk you control");
+ private static final FilterControlledPermanent filter =
+ new FilterControlledPermanent(SubType.MERFOLK, "another target Merfolk you control");
static {
filter.add(AnotherPredicate.instance);
}
diff --git a/Mage.Sets/src/mage/cards/j/JadeGuardian.java b/Mage.Sets/src/mage/cards/j/JadeGuardian.java
index 87f1d77a0cd..e0fcdd855c7 100644
--- a/Mage.Sets/src/mage/cards/j/JadeGuardian.java
+++ b/Mage.Sets/src/mage/cards/j/JadeGuardian.java
@@ -1,4 +1,3 @@
-
package mage.cards.j;
import java.util.UUID;
@@ -12,8 +11,8 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
+import mage.target.common.TargetControlledPermanent;
/**
*
@@ -21,6 +20,8 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class JadeGuardian extends CardImpl {
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.MERFOLK, "Merfolk you control");
+
public JadeGuardian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
@@ -34,7 +35,7 @@ public final class JadeGuardian extends CardImpl {
// When Jade Guardian enters the battlefield, put a +1/+1 counter on target Merfolk you control.
Ability ability = new EntersBattlefieldTriggeredAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()));
- ability.addTarget(new TargetControlledCreaturePermanent(new FilterControlledCreaturePermanent(SubType.MERFOLK, "Merfolk you control")));
+ ability.addTarget(new TargetControlledPermanent(filter));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/j/JeskaiCharm.java b/Mage.Sets/src/mage/cards/j/JeskaiCharm.java
index ed4c88c3320..dceac02d82e 100644
--- a/Mage.Sets/src/mage/cards/j/JeskaiCharm.java
+++ b/Mage.Sets/src/mage/cards/j/JeskaiCharm.java
@@ -13,7 +13,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.target.common.TargetCreaturePermanent;
import mage.target.common.TargetOpponentOrPlaneswalker;
@@ -38,7 +38,7 @@ public final class JeskaiCharm extends CardImpl {
Effect effect = new BoostControlledEffect(1, 1, Duration.EndOfTurn);
effect.setText("Creatures you control get +1/+1");
mode = new Mode(effect);
- effect = new GainAbilityControlledEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent());
+ effect = new GainAbilityControlledEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURE);
effect.setText("and gain lifelink until end of turn");
mode.addEffect(effect);
this.getSpellAbility().addMode(mode);
diff --git a/Mage.Sets/src/mage/cards/j/JoragaTreespeaker.java b/Mage.Sets/src/mage/cards/j/JoragaTreespeaker.java
index b5f8b4d9d8d..47e92d67f2d 100644
--- a/Mage.Sets/src/mage/cards/j/JoragaTreespeaker.java
+++ b/Mage.Sets/src/mage/cards/j/JoragaTreespeaker.java
@@ -1,5 +1,3 @@
-
-
package mage.cards.j;
import java.util.UUID;
@@ -21,7 +19,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
/**
@@ -30,7 +28,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*/
public final class JoragaTreespeaker extends LevelerCard {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Elves");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("Elves");
static {
filter.add(SubType.ELF.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/j/JudgeOfCurrents.java b/Mage.Sets/src/mage/cards/j/JudgeOfCurrents.java
index 3cde57a01e0..18fec7867f0 100644
--- a/Mage.Sets/src/mage/cards/j/JudgeOfCurrents.java
+++ b/Mage.Sets/src/mage/cards/j/JudgeOfCurrents.java
@@ -1,4 +1,3 @@
-
package mage.cards.j;
import java.util.UUID;
@@ -9,7 +8,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
/**
*
@@ -17,6 +16,8 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*/
public final class JudgeOfCurrents extends CardImpl {
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.MERFOLK, "a Merfolk you control");
+
public JudgeOfCurrents(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
this.subtype.add(SubType.MERFOLK);
@@ -25,7 +26,7 @@ public final class JudgeOfCurrents extends CardImpl {
this.toughness = new MageInt(1);
// Whenever a Merfolk you control becomes tapped, you may gain 1 life.
- this.addAbility(new BecomesTappedTriggeredAbility(new GainLifeEffect(1), true, new FilterControlledCreaturePermanent(SubType.MERFOLK, "a Merfolk you control")));
+ this.addAbility(new BecomesTappedTriggeredAbility(new GainLifeEffect(1), true, filter));
}
private JudgeOfCurrents(final JudgeOfCurrents card) {
diff --git a/Mage.Sets/src/mage/cards/k/KalitasTraitorOfGhet.java b/Mage.Sets/src/mage/cards/k/KalitasTraitorOfGhet.java
index 82e6575b465..f1aeda522b9 100644
--- a/Mage.Sets/src/mage/cards/k/KalitasTraitorOfGhet.java
+++ b/Mage.Sets/src/mage/cards/k/KalitasTraitorOfGhet.java
@@ -1,7 +1,5 @@
-
package mage.cards.k;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
@@ -16,7 +14,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.FilterPermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game;
@@ -26,14 +24,15 @@ import mage.game.permanent.Permanent;
import mage.game.permanent.PermanentToken;
import mage.game.permanent.token.ZombieToken;
import mage.players.Player;
-import mage.target.common.TargetControlledCreaturePermanent;
+
+import java.util.UUID;
/**
* @author fireshoes
*/
public final class KalitasTraitorOfGhet extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another Vampire or Zombie");
+ private static final FilterPermanent filter = new FilterPermanent("another Vampire or Zombie");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/k/KarganDragonrider.java b/Mage.Sets/src/mage/cards/k/KarganDragonrider.java
index b62060dad09..80849c15163 100644
--- a/Mage.Sets/src/mage/cards/k/KarganDragonrider.java
+++ b/Mage.Sets/src/mage/cards/k/KarganDragonrider.java
@@ -13,7 +13,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
/**
*
@@ -21,7 +21,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*/
public final class KarganDragonrider extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.DRAGON, "a Dragon");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.DRAGON, "a Dragon");
public KarganDragonrider(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
diff --git a/Mage.Sets/src/mage/cards/k/KingOfTheOathbreakers.java b/Mage.Sets/src/mage/cards/k/KingOfTheOathbreakers.java
index 2d675298ab6..66bc1371502 100644
--- a/Mage.Sets/src/mage/cards/k/KingOfTheOathbreakers.java
+++ b/Mage.Sets/src/mage/cards/k/KingOfTheOathbreakers.java
@@ -14,7 +14,7 @@ import mage.constants.SuperType;
import mage.filter.FilterPermanent;
import mage.filter.FilterPermanentThisOrAnother;
import mage.filter.StaticFilters;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.SpiritWhiteToken;
import java.util.UUID;
@@ -26,9 +26,7 @@ import java.util.UUID;
public final class KingOfTheOathbreakers extends CardImpl {
private static final FilterPermanent filter =
- new FilterPermanentThisOrAnother(
- new FilterControlledCreaturePermanent(SubType.SPIRIT),
- true);
+ new FilterPermanentThisOrAnother(new FilterControlledPermanent(SubType.SPIRIT), true);
public KingOfTheOathbreakers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{B}");
diff --git a/Mage.Sets/src/mage/cards/k/KnightCaptainOfEos.java b/Mage.Sets/src/mage/cards/k/KnightCaptainOfEos.java
index c47438420c9..dc8c6dae5fa 100644
--- a/Mage.Sets/src/mage/cards/k/KnightCaptainOfEos.java
+++ b/Mage.Sets/src/mage/cards/k/KnightCaptainOfEos.java
@@ -1,7 +1,5 @@
-
package mage.cards.k;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
@@ -15,9 +13,10 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.FilterPermanent;
import mage.game.permanent.token.SoldierToken;
-import mage.target.common.TargetControlledCreaturePermanent;
+
+import java.util.UUID;
/**
*
@@ -25,11 +24,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class KnightCaptainOfEos extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Soldier");
-
- static {
- filter.add(SubType.SOLDIER.getPredicate());
- }
+ private static final FilterPermanent filter = new FilterPermanent(SubType.SOLDIER, "a Soldier");
public KnightCaptainOfEos(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
@@ -39,7 +34,10 @@ public final class KnightCaptainOfEos extends CardImpl {
this.power = new MageInt(2);
this.toughness = new MageInt(2);
+ // When Knight-Captain of Eos enters the battlefield, create two 1/1 white Soldier creature tokens.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new SoldierToken(), 2), false));
+
+ // {W}, Sacrifice a Soldier: Prevent all combat damage that would be dealt this turn.
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PreventAllDamageByAllPermanentsEffect(Duration.EndOfTurn, true), new ManaCostsImpl<>("{W}"));
ability.addCost(new SacrificeTargetCost(filter));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/l/LavakinBrawler.java b/Mage.Sets/src/mage/cards/l/LavakinBrawler.java
index 76aa965fc46..8ad3bde3edf 100644
--- a/Mage.Sets/src/mage/cards/l/LavakinBrawler.java
+++ b/Mage.Sets/src/mage/cards/l/LavakinBrawler.java
@@ -12,7 +12,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import java.util.UUID;
@@ -21,7 +21,7 @@ import java.util.UUID;
*/
public final class LavakinBrawler extends CardImpl {
- private static final FilterPermanent filter = new FilterControlledCreaturePermanent(SubType.ELEMENTAL);
+ private static final FilterPermanent filter = new FilterControlledPermanent(SubType.ELEMENTAL);
private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter);
public LavakinBrawler(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/l/LightningRunner.java b/Mage.Sets/src/mage/cards/l/LightningRunner.java
index 738cf566133..bbe15e87b4c 100644
--- a/Mage.Sets/src/mage/cards/l/LightningRunner.java
+++ b/Mage.Sets/src/mage/cards/l/LightningRunner.java
@@ -1,4 +1,3 @@
-
package mage.cards.l;
import java.util.UUID;
@@ -19,7 +18,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.players.Player;
@@ -82,7 +81,7 @@ class LightningRunnerEffect extends OneShotEffect {
"Untap all creatures you control and after this phase, there is an additional combat phase.",
"Yes", "No", source, game)
&& cost.pay(source, game, source, source.getControllerId(), true)) {
- new UntapAllControllerEffect(new FilterControlledCreaturePermanent()).apply(game, source);
+ new UntapAllControllerEffect(StaticFilters.FILTER_CONTROLLED_CREATURES).apply(game, source);
new AdditionalCombatPhaseEffect().apply(game, source);
}
}
diff --git a/Mage.Sets/src/mage/cards/l/LordOfTheNazgul.java b/Mage.Sets/src/mage/cards/l/LordOfTheNazgul.java
index 1df8cbecb49..ce07d072a9b 100644
--- a/Mage.Sets/src/mage/cards/l/LordOfTheNazgul.java
+++ b/Mage.Sets/src/mage/cards/l/LordOfTheNazgul.java
@@ -20,7 +20,7 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.permanent.RingBearerPredicate;
import mage.game.permanent.token.WraithToken;
@@ -31,7 +31,7 @@ import java.util.UUID;
*/
public final class LordOfTheNazgul extends CardImpl {
- private static final FilterControlledCreaturePermanent filterWraith = new FilterControlledCreaturePermanent("Wraiths you control");
+ private static final FilterPermanent filterWraith = new FilterControlledPermanent("Wraiths you control");
private static final FilterPermanent filterRingBearer = new FilterPermanent("Ring-bearers");
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filterWraith, ComparisonType.MORE_THAN, 8);
private static final Hint hint = new ValueHint(
diff --git a/Mage.Sets/src/mage/cards/l/LordSkittersBlessing.java b/Mage.Sets/src/mage/cards/l/LordSkittersBlessing.java
index 37962c84b22..7f11e583714 100644
--- a/Mage.Sets/src/mage/cards/l/LordSkittersBlessing.java
+++ b/Mage.Sets/src/mage/cards/l/LordSkittersBlessing.java
@@ -35,7 +35,7 @@ public final class LordSkittersBlessing extends CardImpl {
}
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter);
- private static final Hint hint = new ConditionHint(condition, "You control an enchanted creaeture");
+ private static final Hint hint = new ConditionHint(condition, "You control an enchanted creature");
public LordSkittersBlessing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}");
@@ -53,7 +53,7 @@ public final class LordSkittersBlessing extends CardImpl {
"an enchanted creature, you lose 1 life and you draw an additional card."
);
ability.addEffect(new DrawCardSourceControllerEffect(1));
- this.addAbility(ability);
+ this.addAbility(ability.addHint(hint));
}
private LordSkittersBlessing(final LordSkittersBlessing card) {
diff --git a/Mage.Sets/src/mage/cards/l/LullmageMentor.java b/Mage.Sets/src/mage/cards/l/LullmageMentor.java
index 8bde38976d9..d32a02ca48f 100644
--- a/Mage.Sets/src/mage/cards/l/LullmageMentor.java
+++ b/Mage.Sets/src/mage/cards/l/LullmageMentor.java
@@ -1,4 +1,3 @@
-
package mage.cards.l;
import java.util.UUID;
@@ -14,11 +13,11 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.permanent.token.MerfolkToken;
import mage.target.TargetSpell;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.target.common.TargetControlledPermanent;
/**
*
@@ -26,7 +25,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class LullmageMentor extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Merfolk you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Merfolk you control");
static {
filter.add(SubType.MERFOLK.getPredicate());
@@ -45,7 +44,7 @@ public final class LullmageMentor extends CardImpl {
this.addAbility(new SpellCounteredControllerTriggeredAbility(new CreateTokenEffect(new MerfolkToken()), true));
// Tap seven untapped Merfolk you control: Counter target spell.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(), new TapTargetCost(new TargetControlledCreaturePermanent(7, 7, filter, true)));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(), new TapTargetCost(new TargetControlledPermanent(7, 7, filter, true)));
ability.addTarget(new TargetSpell());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheArena.java b/Mage.Sets/src/mage/cards/m/MagusOfTheArena.java
index 49311ee1c14..d0149959ca0 100644
--- a/Mage.Sets/src/mage/cards/m/MagusOfTheArena.java
+++ b/Mage.Sets/src/mage/cards/m/MagusOfTheArena.java
@@ -13,7 +13,7 @@ import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.common.TargetControlledCreaturePermanent;
@@ -38,7 +38,7 @@ public final class MagusOfTheArena extends CardImpl {
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MagusOfTheArenaEffect(), new GenericManaCost(3));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetControlledCreaturePermanent());
- ability.addTarget(new TargetOpponentsChoicePermanent(1, 1, new FilterControlledCreaturePermanent(), false));
+ ability.addTarget(new TargetOpponentsChoicePermanent(1, 1, StaticFilters.FILTER_CONTROLLED_CREATURE, false));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/m/MajesticMyriarch.java b/Mage.Sets/src/mage/cards/m/MajesticMyriarch.java
index af52c6f5257..d37cd5621a9 100644
--- a/Mage.Sets/src/mage/cards/m/MajesticMyriarch.java
+++ b/Mage.Sets/src/mage/cards/m/MajesticMyriarch.java
@@ -15,6 +15,7 @@ import mage.abilities.keyword.*;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
+import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AbilityPredicate;
import mage.game.Game;
@@ -34,7 +35,7 @@ public final class MajesticMyriarch extends CardImpl {
this.toughness = new MageInt(0);
// Majestic Myriarch's power and toughness are each equal to twice the number of creatures you control.
- DynamicValue xValue = new MultipliedValue(new PermanentsOnBattlefieldCount(new FilterControlledCreaturePermanent()), 2);
+ DynamicValue xValue = new MultipliedValue(new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_CREATURES), 2);
Effect effect = new SetBasePowerToughnessSourceEffect(xValue);
effect.setText("{this}'s power and toughness are each equal to twice the number of creatures you control");
this.addAbility(new SimpleStaticAbility(Zone.ALL, effect));
@@ -163,4 +164,4 @@ class MajesticMyriarchEffect extends OneShotEffect {
}
return true;
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java b/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java
index 59c1dcd3ca3..149c493b4bd 100644
--- a/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java
+++ b/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java
@@ -1,22 +1,16 @@
package mage.cards.m;
-import java.util.UUID;
import mage.MageInt;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.costs.common.TapTargetCost;
-import mage.abilities.effects.Effect;
+import mage.abilities.Ability;
+import mage.abilities.abilityword.CohortAbility;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.AbilityWord;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.predicate.permanent.TappedPredicate;
-import mage.target.common.TargetControlledCreaturePermanent;
+
+import java.util.UUID;
/**
*
@@ -24,13 +18,6 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class MalakirSoothsayer extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Ally you control");
-
- static {
- filter.add(SubType.ALLY.getPredicate());
- filter.add(TappedPredicate.UNTAPPED);
- }
-
public MalakirSoothsayer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
this.subtype.add(SubType.VAMPIRE);
@@ -40,13 +27,8 @@ public final class MalakirSoothsayer extends CardImpl {
this.toughness = new MageInt(4);
// Cohort — {T}, Tap an untapped Ally you control: You draw a card and you lose a life.
- SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new DrawCardSourceControllerEffect(1).setText("you draw a card"),
- new TapSourceCost());
- ability.setAbilityWord(AbilityWord.COHORT);
- ability.addCost(new TapTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, false)));
- Effect effect = new LoseLifeSourceControllerEffect(1).concatBy("and");
- ability.addEffect(effect);
+ Ability ability = new CohortAbility(new DrawCardSourceControllerEffect(1, "you"));
+ ability.addEffect(new LoseLifeSourceControllerEffect(1).concatBy("and"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/m/MarkOfTheOni.java b/Mage.Sets/src/mage/cards/m/MarkOfTheOni.java
index f3dfbc10505..a2a07f0e2d0 100644
--- a/Mage.Sets/src/mage/cards/m/MarkOfTheOni.java
+++ b/Mage.Sets/src/mage/cards/m/MarkOfTheOni.java
@@ -14,7 +14,7 @@ import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
@@ -44,7 +44,7 @@ public final class MarkOfTheOni extends CardImpl {
new SacrificeSourceEffect(),
TargetController.NEXT,
new PermanentsOnTheBattlefieldCondition(
- new FilterControlledCreaturePermanent(SubType.DEMON, "if you control no Demons"),
+ new FilterControlledPermanent(SubType.DEMON, "if you control no Demons"),
ComparisonType.FEWER_THAN, 1),
false));
}
diff --git a/Mage.Sets/src/mage/cards/m/MarkovCrusader.java b/Mage.Sets/src/mage/cards/m/MarkovCrusader.java
index a577b51faf3..ecbdd0e46fe 100644
--- a/Mage.Sets/src/mage/cards/m/MarkovCrusader.java
+++ b/Mage.Sets/src/mage/cards/m/MarkovCrusader.java
@@ -1,4 +1,3 @@
-
package mage.cards.m;
import java.util.UUID;
@@ -15,7 +14,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
/**
@@ -25,7 +24,7 @@ import mage.filter.predicate.mageobject.AnotherPredicate;
public final class MarkovCrusader extends CardImpl {
private static final String rule = "{this} has haste as long as you control another Vampire";
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another Vampire");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Vampire");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/m/MaskwoodNexus.java b/Mage.Sets/src/mage/cards/m/MaskwoodNexus.java
index 5e0feb6a851..57621cbad9c 100644
--- a/Mage.Sets/src/mage/cards/m/MaskwoodNexus.java
+++ b/Mage.Sets/src/mage/cards/m/MaskwoodNexus.java
@@ -11,7 +11,7 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.command.CommandObject;
import mage.game.command.Commander;
@@ -130,7 +130,7 @@ class MaskwoodNexusEffect extends ContinuousEffectImpl {
}
// creatures you control
List creatures = game.getBattlefield().getAllActivePermanents(
- new FilterControlledCreaturePermanent(), source.getControllerId(), game);
+ StaticFilters.FILTER_CONTROLLED_CREATURE, source.getControllerId(), game);
for (Permanent creature : creatures) {
if (creature != null) {
creature.setIsAllCreatureTypes(game, true);
diff --git a/Mage.Sets/src/mage/cards/m/MasterApothecary.java b/Mage.Sets/src/mage/cards/m/MasterApothecary.java
index 89a5c0329c8..1032d7eb069 100644
--- a/Mage.Sets/src/mage/cards/m/MasterApothecary.java
+++ b/Mage.Sets/src/mage/cards/m/MasterApothecary.java
@@ -1,4 +1,3 @@
-
package mage.cards.m;
import java.util.UUID;
@@ -13,10 +12,10 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.permanent.TappedPredicate;
-import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetAnyTarget;
+import mage.target.common.TargetControlledPermanent;
/**
*
@@ -24,7 +23,7 @@ import mage.target.common.TargetAnyTarget;
*/
public final class MasterApothecary extends CardImpl {
- static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("an untapped Cleric you control");
+ static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Cleric you control");
static {
filter.add(SubType.CLERIC.getPredicate());
@@ -41,8 +40,8 @@ public final class MasterApothecary extends CardImpl {
// Tap an untapped Cleric you control: Prevent the next 2 damage that would be dealt to any target this turn.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new PreventDamageToTargetEffect(Duration.EndOfTurn, 2),
- new TapTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, true)));
+ new PreventDamageToTargetEffect(Duration.EndOfTurn, 2),
+ new TapTargetCost(new TargetControlledPermanent(filter)));
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/m/MercurialPretender.java b/Mage.Sets/src/mage/cards/m/MercurialPretender.java
index 561928355c2..f199007e8f0 100644
--- a/Mage.Sets/src/mage/cards/m/MercurialPretender.java
+++ b/Mage.Sets/src/mage/cards/m/MercurialPretender.java
@@ -12,7 +12,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.util.functions.AbilityCopyApplier;
import java.util.UUID;
@@ -34,7 +34,7 @@ public final class MercurialPretender extends CardImpl {
// You may have Mercurial Pretender enter the battlefield as a copy of any creature you control,
// except it has "{2}{U}{U}: Return this creature to its owner's hand."
- Effect effect = new CopyPermanentEffect(new FilterControlledCreaturePermanent(),
+ Effect effect = new CopyPermanentEffect(StaticFilters.FILTER_CONTROLLED_CREATURE,
new AbilityCopyApplier(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandSourceEffect(true), new ManaCostsImpl<>("{2}{U}{U}"))));
effect.setText(effectText);
this.addAbility(new EntersBattlefieldAbility(effect, true));
diff --git a/Mage.Sets/src/mage/cards/m/MesmerizingBenthid.java b/Mage.Sets/src/mage/cards/m/MesmerizingBenthid.java
index 330da204905..7ce23a1f690 100644
--- a/Mage.Sets/src/mage/cards/m/MesmerizingBenthid.java
+++ b/Mage.Sets/src/mage/cards/m/MesmerizingBenthid.java
@@ -13,7 +13,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.MesmerizingBenthidToken;
import java.util.UUID;
@@ -23,7 +23,7 @@ import java.util.UUID;
*/
public final class MesmerizingBenthid extends CardImpl {
- private static final FilterPermanent filter = new FilterControlledCreaturePermanent(SubType.ILLUSION);
+ private static final FilterPermanent filter = new FilterControlledPermanent(SubType.ILLUSION);
public MesmerizingBenthid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/m/MilitiasPride.java b/Mage.Sets/src/mage/cards/m/MilitiasPride.java
index a96fb40d0da..b59a4a23440 100644
--- a/Mage.Sets/src/mage/cards/m/MilitiasPride.java
+++ b/Mage.Sets/src/mage/cards/m/MilitiasPride.java
@@ -1,6 +1,6 @@
package mage.cards.m;
-import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.common.AttacksCreatureYouControlTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.DoIfCostPaid;
@@ -8,12 +8,8 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.permanent.TokenPredicate;
-import mage.game.Game;
-import mage.game.events.GameEvent;
-import mage.game.permanent.Permanent;
import mage.game.permanent.token.KithkinSoldierToken;
import java.util.UUID;
@@ -23,12 +19,21 @@ import java.util.UUID;
*/
public final class MilitiasPride extends CardImpl {
+ private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("nontoken creature you control");
+
+ static {
+ filter.add(TokenPredicate.FALSE);
+ }
+
public MilitiasPride(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.TRIBAL, CardType.ENCHANTMENT}, "{1}{W}");
this.subtype.add(SubType.KITHKIN);
- // Whenever a creature you control attacks, you may pay {W}. If you do create a 1/1 white Kithkin Soldier creature token in play tapped and attacking
- this.addAbility(new MilitiasPrideTriggerAbility());
+ // Whenever a nontoken creature you control attacks, you may pay {W}. If you do, create a 1/1 white Kithkin Soldier creature token that’s tapped and attacking.
+ this.addAbility(new AttacksCreatureYouControlTriggeredAbility(
+ new DoIfCostPaid(new CreateTokenEffect(new KithkinSoldierToken(), 1, true, true), new ManaCostsImpl<>("{W}")),
+ false, filter
+ ));
}
@@ -41,37 +46,3 @@ public final class MilitiasPride extends CardImpl {
return new MilitiasPride(this);
}
}
-
-class MilitiasPrideTriggerAbility extends TriggeredAbilityImpl {
-
- public MilitiasPrideTriggerAbility() {
- super(Zone.BATTLEFIELD, new DoIfCostPaid(new CreateTokenEffect(new KithkinSoldierToken(), 1, true, true), new ManaCostsImpl<>("{W}")));
- }
-
- private MilitiasPrideTriggerAbility(final MilitiasPrideTriggerAbility ability) {
- super(ability);
- }
-
- @Override
- public boolean checkEventType(GameEvent event, Game game) {
- return event.getType() == GameEvent.EventType.ATTACKER_DECLARED;
- }
-
- @Override
- public boolean checkTrigger(GameEvent event, Game game) {
- FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
- filter.add(TokenPredicate.FALSE);
- Permanent permanent = game.getPermanent(event.getSourceId());
- return permanent != null && filter.match(permanent, controllerId, this, game);
- }
-
- @Override
- public String getRule() {
- return "Whenever a nontoken creature you control attacks, you may pay {W}. If you do, create a 1/1 white Kithkin Soldier creature token that's tapped and attacking.";
- }
-
- @Override
- public MilitiasPrideTriggerAbility copy() {
- return new MilitiasPrideTriggerAbility(this);
- }
-}
diff --git a/Mage.Sets/src/mage/cards/m/Mobilize.java b/Mage.Sets/src/mage/cards/m/Mobilize.java
index f1e4032a154..0e0d5c74381 100644
--- a/Mage.Sets/src/mage/cards/m/Mobilize.java
+++ b/Mage.Sets/src/mage/cards/m/Mobilize.java
@@ -1,4 +1,3 @@
-
package mage.cards.m;
import java.util.UUID;
@@ -6,7 +5,7 @@ import mage.abilities.effects.common.UntapAllControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -20,7 +19,7 @@ public final class Mobilize extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{G}");
// Untap all creatures you control.
- this.getSpellAbility().addEffect(new UntapAllControllerEffect(new FilterControlledCreaturePermanent(), rule));
+ this.getSpellAbility().addEffect(new UntapAllControllerEffect(StaticFilters.FILTER_CONTROLLED_CREATURE, rule));
}
private Mobilize(final Mobilize card) {
diff --git a/Mage.Sets/src/mage/cards/m/MundasVanguard.java b/Mage.Sets/src/mage/cards/m/MundasVanguard.java
index e2975f71c72..20cd35d557c 100644
--- a/Mage.Sets/src/mage/cards/m/MundasVanguard.java
+++ b/Mage.Sets/src/mage/cards/m/MundasVanguard.java
@@ -1,24 +1,16 @@
-
package mage.cards.m;
-import java.util.UUID;
import mage.MageInt;
-import mage.abilities.Ability;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.costs.common.TapTargetCost;
+import mage.abilities.abilityword.CohortAbility;
import mage.abilities.effects.common.counter.AddCountersAllEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.AbilityWord;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.constants.Zone;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.common.FilterControlledPermanent;
-import mage.filter.predicate.permanent.TappedPredicate;
-import mage.target.common.TargetControlledPermanent;
+import mage.filter.StaticFilters;
+
+import java.util.UUID;
/**
*
@@ -26,13 +18,6 @@ import mage.target.common.TargetControlledPermanent;
*/
public final class MundasVanguard extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Ally you control");
-
- static {
- filter.add(SubType.ALLY.getPredicate());
- filter.add(TappedPredicate.UNTAPPED);
- }
-
public MundasVanguard(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
this.subtype.add(SubType.KOR);
@@ -42,11 +27,7 @@ public final class MundasVanguard extends CardImpl {
this.toughness = new MageInt(3);
// Cohort — {T}, Tap an untapped Ally you control: Put a +1/+1 counter on each creature you control.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersAllEffect(CounterType.P1P1.createInstance(), new FilterControlledCreaturePermanent()),
- new TapSourceCost());
- ability.addCost(new TapTargetCost(new TargetControlledPermanent(filter)));
- ability.setAbilityWord(AbilityWord.COHORT);
- this.addAbility(ability);
+ this.addAbility(new CohortAbility(new AddCountersAllEffect(CounterType.P1P1.createInstance(), StaticFilters.FILTER_CONTROLLED_CREATURE)));
}
private MundasVanguard(final MundasVanguard card) {
diff --git a/Mage.Sets/src/mage/cards/m/MurasaPyromancer.java b/Mage.Sets/src/mage/cards/m/MurasaPyromancer.java
index 953c54f6b3e..93924c19b79 100644
--- a/Mage.Sets/src/mage/cards/m/MurasaPyromancer.java
+++ b/Mage.Sets/src/mage/cards/m/MurasaPyromancer.java
@@ -1,4 +1,3 @@
-
package mage.cards.m;
import java.util.UUID;
@@ -11,8 +10,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.constants.TargetController;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetCreaturePermanent;
/**
@@ -21,12 +19,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class MurasaPyromancer extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Ally you control");
-
- static {
- filter.add(SubType.ALLY.getPredicate());
- filter.add(TargetController.YOU.getControllerPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.ALLY, "Ally you control");
public MurasaPyromancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}{R}");
diff --git a/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java b/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java
index 3dc111c3488..7986dbf9689 100644
--- a/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java
+++ b/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java
@@ -10,7 +10,7 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.Game;
import mage.game.events.GameEvent;
@@ -95,7 +95,7 @@ class MyrBattlesphereTriggeredAbility extends TriggeredAbilityImpl {
class MyrBattlesphereEffect extends OneShotEffect {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Myr you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Myr you control");
static {
filter.add(TappedPredicate.UNTAPPED);
diff --git a/Mage.Sets/src/mage/cards/n/NameStickerGoblin.java b/Mage.Sets/src/mage/cards/n/NameStickerGoblin.java
index bf7672255bd..db6121a9315 100644
--- a/Mage.Sets/src/mage/cards/n/NameStickerGoblin.java
+++ b/Mage.Sets/src/mage/cards/n/NameStickerGoblin.java
@@ -63,11 +63,14 @@ public final class NameStickerGoblin extends CardImpl {
}
class NameStickerGoblinTriggeredAbility extends TriggeredAbilityImpl {
+
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
static{
filter.add(new NamePredicate("\"Name Sticker\" Goblin"));
}
+
private static final Condition condition = new PermanentsOnTheBattlefieldCondition(filter, ComparisonType.OR_LESS, 9);
+
NameStickerGoblinTriggeredAbility(Effect effect) {
super(Zone.BATTLEFIELD, effect);
setTriggerPhrase("When this creature enters the battlefield from anywhere other than a graveyard or exile, if it's on the battlefield and you control 9 or fewer creatures named \"Name Sticker\" Goblin, ");
diff --git a/Mage.Sets/src/mage/cards/n/Necroduality.java b/Mage.Sets/src/mage/cards/n/Necroduality.java
index 55a0feee072..6a963f7aaa6 100644
--- a/Mage.Sets/src/mage/cards/n/Necroduality.java
+++ b/Mage.Sets/src/mage/cards/n/Necroduality.java
@@ -9,7 +9,7 @@ import mage.constants.SetTargetPointer;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.permanent.TokenPredicate;
import java.util.UUID;
@@ -19,7 +19,7 @@ import java.util.UUID;
*/
public final class Necroduality extends CardImpl {
- private static final FilterPermanent filter = new FilterControlledCreaturePermanent(SubType.ZOMBIE, "a nontoken Zombie");
+ private static final FilterPermanent filter = new FilterControlledPermanent(SubType.ZOMBIE, "a nontoken Zombie");
static {
filter.add(TokenPredicate.FALSE);
diff --git a/Mage.Sets/src/mage/cards/n/NemataPrimevalWarden.java b/Mage.Sets/src/mage/cards/n/NemataPrimevalWarden.java
index 38c4fad173b..bf09226f059 100644
--- a/Mage.Sets/src/mage/cards/n/NemataPrimevalWarden.java
+++ b/Mage.Sets/src/mage/cards/n/NemataPrimevalWarden.java
@@ -16,11 +16,11 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
import mage.game.permanent.token.SaprolingToken;
-import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
@@ -29,8 +29,8 @@ import java.util.UUID;
*/
public final class NemataPrimevalWarden extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Saproling");
- private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("Saprolings");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("Saproling");
+ private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("Saprolings");
static {
filter.add(SubType.SAPROLING.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/n/NissaVoiceOfZendikar.java b/Mage.Sets/src/mage/cards/n/NissaVoiceOfZendikar.java
index c9569b54ff4..9fb529546f6 100644
--- a/Mage.Sets/src/mage/cards/n/NissaVoiceOfZendikar.java
+++ b/Mage.Sets/src/mage/cards/n/NissaVoiceOfZendikar.java
@@ -16,7 +16,7 @@ import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.TargetController;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.filter.common.FilterLandPermanent;
import mage.game.permanent.token.PlantToken;
@@ -43,7 +43,7 @@ public final class NissaVoiceOfZendikar extends CardImpl {
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new PlantToken()), 1));
// -2: Put a +1/+1 counter on each creature you control.
- this.addAbility(new LoyaltyAbility(new AddCountersAllEffect(CounterType.P1P1.createInstance(), new FilterControlledCreaturePermanent()), -2));
+ this.addAbility(new LoyaltyAbility(new AddCountersAllEffect(CounterType.P1P1.createInstance(), StaticFilters.FILTER_CONTROLLED_CREATURE), -2));
// -7: You gain X life and draw X cards, where X is the number of lands you control.
Effect effect = new GainLifeEffect(new PermanentsOnBattlefieldCount(filter));
diff --git a/Mage.Sets/src/mage/cards/n/NobleStand.java b/Mage.Sets/src/mage/cards/n/NobleStand.java
index 4ecb286a742..cc5874fd601 100644
--- a/Mage.Sets/src/mage/cards/n/NobleStand.java
+++ b/Mage.Sets/src/mage/cards/n/NobleStand.java
@@ -1,4 +1,3 @@
-
package mage.cards.n;
import java.util.UUID;
@@ -8,8 +7,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.predicate.permanent.TokenPredicate;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
@@ -39,11 +37,12 @@ public final class NobleStand extends CardImpl {
class NobleStandAbility extends TriggeredAbilityImpl {
- public NobleStandAbility() {
+ NobleStandAbility() {
super(Zone.BATTLEFIELD, new GainLifeEffect(2));
+ setTriggerPhrase("Whenever a creature you control blocks, ");
}
- public NobleStandAbility(final mage.cards.n.NobleStandAbility ability) {
+ private NobleStandAbility(final NobleStandAbility ability) {
super(ability);
}
@@ -54,19 +53,12 @@ class NobleStandAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
- FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
- filter.add(TokenPredicate.FALSE);
Permanent permanent = game.getPermanent(event.getSourceId());
- return permanent != null && filter.match(permanent, controllerId, this, game);
+ return permanent != null && StaticFilters.FILTER_CONTROLLED_CREATURE.match(permanent, controllerId, this, game);
}
@Override
- public String getRule() {
- return "Whenever a creature you control blocks, you gain 2 life.";
- }
-
- @Override
- public mage.cards.n.NobleStandAbility copy() {
- return new mage.cards.n.NobleStandAbility(this);
+ public NobleStandAbility copy() {
+ return new NobleStandAbility(this);
}
}
diff --git a/Mage.Sets/src/mage/cards/n/NomadsAssembly.java b/Mage.Sets/src/mage/cards/n/NomadsAssembly.java
index 5bc78772a53..18a3dd1c86a 100644
--- a/Mage.Sets/src/mage/cards/n/NomadsAssembly.java
+++ b/Mage.Sets/src/mage/cards/n/NomadsAssembly.java
@@ -1,4 +1,3 @@
-
package mage.cards.n;
import java.util.UUID;
@@ -8,7 +7,7 @@ import mage.abilities.keyword.ReboundAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.game.permanent.token.KorSoldierToken;
/**
@@ -17,13 +16,11 @@ import mage.game.permanent.token.KorSoldierToken;
*/
public final class NomadsAssembly extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
-
public NomadsAssembly(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}{W}");
-
- this.getSpellAbility().addEffect(new CreateTokenEffect(new KorSoldierToken(), new PermanentsOnBattlefieldCount(filter)));
+ // Create a 1/1 white Kor Soldier creature token for each creature you control.
+ this.getSpellAbility().addEffect(new CreateTokenEffect(new KorSoldierToken(), new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_CREATURE)));
this.addAbility(new ReboundAbility());
}
diff --git a/Mage.Sets/src/mage/cards/o/OathOfAjani.java b/Mage.Sets/src/mage/cards/o/OathOfAjani.java
index e2ebd47f5f2..820aa6d7c0d 100644
--- a/Mage.Sets/src/mage/cards/o/OathOfAjani.java
+++ b/Mage.Sets/src/mage/cards/o/OathOfAjani.java
@@ -12,7 +12,7 @@ import mage.constants.CardType;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.filter.common.FilterPlaneswalkerCard;
/**
@@ -26,7 +26,7 @@ public final class OathOfAjani extends CardImpl {
this.supertype.add(SuperType.LEGENDARY);
// When Oath of Ajani enters the battlefield, put a +1/+1 counter on each creature you control.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new AddCountersAllEffect(CounterType.P1P1.createInstance(), new FilterControlledCreaturePermanent())));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new AddCountersAllEffect(CounterType.P1P1.createInstance(), StaticFilters.FILTER_CONTROLLED_CREATURE)));
// Planeswalker spells you cast cost {1} less to cast.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellsCostReductionControllerEffect(new FilterPlaneswalkerCard("Planeswalker spells"), 1)));
diff --git a/Mage.Sets/src/mage/cards/o/OgreChitterlord.java b/Mage.Sets/src/mage/cards/o/OgreChitterlord.java
index 89b7cccea8f..46080bab18b 100644
--- a/Mage.Sets/src/mage/cards/o/OgreChitterlord.java
+++ b/Mage.Sets/src/mage/cards/o/OgreChitterlord.java
@@ -48,7 +48,7 @@ public final class OgreChitterlord extends CardImpl {
// Whenever Ogre Chitterlord enters the battlefield or attacks, create two 1/1 black Rat creature tokens with "This creature can't block." Then if you control five or more Rats, each Rat you control gets +2/+0 until end of turn.
Ability ability = new OrTriggeredAbility(
Zone.BATTLEFIELD, new CreateTokenEffect(new RatCantBlockToken(), 2),
- false, "whenever {this} enters the battlefield or attacks, ",
+ false, "Whenever {this} enters the battlefield or attacks, ",
new EntersBattlefieldTriggeredAbility(null),
new AttacksTriggeredAbility(null)
);
diff --git a/Mage.Sets/src/mage/cards/o/OhabiCaleria.java b/Mage.Sets/src/mage/cards/o/OhabiCaleria.java
index 609e14f08eb..927510fb7f5 100644
--- a/Mage.Sets/src/mage/cards/o/OhabiCaleria.java
+++ b/Mage.Sets/src/mage/cards/o/OhabiCaleria.java
@@ -11,7 +11,7 @@ import mage.abilities.keyword.ReachAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import java.util.UUID;
@@ -20,8 +20,8 @@ import java.util.UUID;
*/
public final class OhabiCaleria extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.ARCHER, "Archers you control");
- private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent(SubType.ARCHER, "an Archer you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.ARCHER, "Archers you control");
+ private static final FilterControlledPermanent filter2 = new FilterControlledPermanent(SubType.ARCHER, "an Archer you control");
public OhabiCaleria(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{W}");
diff --git a/Mage.Sets/src/mage/cards/o/OnduCleric.java b/Mage.Sets/src/mage/cards/o/OnduCleric.java
index 9c0069c83d7..d4cd96713ca 100644
--- a/Mage.Sets/src/mage/cards/o/OnduCleric.java
+++ b/Mage.Sets/src/mage/cards/o/OnduCleric.java
@@ -10,8 +10,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.constants.TargetController;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
/**
*
@@ -19,12 +18,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*/
public final class OnduCleric extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Allies you control");
-
- static {
- filter.add(SubType.ALLY.getPredicate());
- filter.add(TargetController.YOU.getControllerPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.ALLY, "Allies you control");
public OnduCleric(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
@@ -35,6 +29,7 @@ public final class OnduCleric extends CardImpl {
this.power = new MageInt(1);
this.toughness = new MageInt(1);
+ // Whenever Ondu Cleric or another Ally enters the battlefield under your control, you may gain life equal to the number of Allies you control.
this.addAbility(new AllyEntersBattlefieldTriggeredAbility(new GainLifeEffect(new PermanentsOnBattlefieldCount(filter)), true).setAbilityWord(null));
}
diff --git a/Mage.Sets/src/mage/cards/o/OnduWarCleric.java b/Mage.Sets/src/mage/cards/o/OnduWarCleric.java
index 216a35f8fef..8d1d2d24c4a 100644
--- a/Mage.Sets/src/mage/cards/o/OnduWarCleric.java
+++ b/Mage.Sets/src/mage/cards/o/OnduWarCleric.java
@@ -1,22 +1,14 @@
-
package mage.cards.o;
-import java.util.UUID;
import mage.MageInt;
-import mage.abilities.Ability;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.costs.common.TapTargetCost;
+import mage.abilities.abilityword.CohortAbility;
import mage.abilities.effects.common.GainLifeEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.AbilityWord;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.constants.Zone;
-import mage.filter.common.FilterControlledPermanent;
-import mage.filter.predicate.permanent.TappedPredicate;
-import mage.target.common.TargetControlledPermanent;
+
+import java.util.UUID;
/**
*
@@ -24,13 +16,6 @@ import mage.target.common.TargetControlledPermanent;
*/
public final class OnduWarCleric extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Ally you control");
-
- static {
- filter.add(SubType.ALLY.getPredicate());
- filter.add(TappedPredicate.UNTAPPED);
- }
-
public OnduWarCleric(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
this.subtype.add(SubType.HUMAN);
@@ -40,10 +25,7 @@ public final class OnduWarCleric extends CardImpl {
this.toughness = new MageInt(2);
// Cohort — {T}, Tap an untapped Ally you control: You gain 2 life.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainLifeEffect(2), new TapSourceCost());
- ability.addCost(new TapTargetCost(new TargetControlledPermanent(filter)));
- ability.setAbilityWord(AbilityWord.COHORT);
- this.addAbility(ability);
+ this.addAbility(new CohortAbility(new GainLifeEffect(2)));
}
private OnduWarCleric(final OnduWarCleric card) {
diff --git a/Mage.Sets/src/mage/cards/o/OtharriSunsGlory.java b/Mage.Sets/src/mage/cards/o/OtharriSunsGlory.java
index c1e988f872c..ad6fd708381 100644
--- a/Mage.Sets/src/mage/cards/o/OtharriSunsGlory.java
+++ b/Mage.Sets/src/mage/cards/o/OtharriSunsGlory.java
@@ -18,7 +18,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.Game;
import mage.game.permanent.token.RebelRedToken;
@@ -32,7 +32,7 @@ import java.util.UUID;
*/
public final class OtharriSunsGlory extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Rebel you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Rebel you control");
static {
filter.add(TappedPredicate.UNTAPPED);
diff --git a/Mage.Sets/src/mage/cards/o/OvergrowthElemental.java b/Mage.Sets/src/mage/cards/o/OvergrowthElemental.java
index 67fe98e559b..d59fe2bb6ea 100644
--- a/Mage.Sets/src/mage/cards/o/OvergrowthElemental.java
+++ b/Mage.Sets/src/mage/cards/o/OvergrowthElemental.java
@@ -16,7 +16,7 @@ import mage.constants.SubType;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
@@ -30,7 +30,7 @@ import java.util.UUID;
public final class OvergrowthElemental extends CardImpl {
private static final FilterPermanent filter
- = new FilterControlledCreaturePermanent(SubType.ELEMENTAL, "another target Elemental you control");
+ = new FilterControlledPermanent(SubType.ELEMENTAL, "another target Elemental you control");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/p/PashalikMons.java b/Mage.Sets/src/mage/cards/p/PashalikMons.java
index b160ba2d6b8..dbf34c9f14d 100644
--- a/Mage.Sets/src/mage/cards/p/PashalikMons.java
+++ b/Mage.Sets/src/mage/cards/p/PashalikMons.java
@@ -14,13 +14,11 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.TargetController;
-import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.permanent.token.GoblinToken;
import mage.target.common.TargetAnyTarget;
-import mage.target.common.TargetControlledPermanent;
import java.util.UUID;
@@ -32,7 +30,7 @@ public final class PashalikMons extends CardImpl {
private static final FilterCreaturePermanent filter
= new FilterCreaturePermanent(SubType.GOBLIN, "Goblin you control");
private static final FilterControlledPermanent filter2
- = new FilterControlledCreaturePermanent(SubType.GOBLIN, "a Goblin");
+ = new FilterControlledPermanent(SubType.GOBLIN, "a Goblin");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheVein.java b/Mage.Sets/src/mage/cards/p/PatronOfTheVein.java
index 73fb8b5eabd..f2b8b1bf455 100644
--- a/Mage.Sets/src/mage/cards/p/PatronOfTheVein.java
+++ b/Mage.Sets/src/mage/cards/p/PatronOfTheVein.java
@@ -20,7 +20,7 @@ import mage.constants.SubType;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
@@ -111,7 +111,7 @@ class PatronOfTheVeinCreatureDiesTriggeredAbility extends TriggeredAbilityImpl {
class PatronOfTheVeinExileCreatureEffect extends OneShotEffect {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent();
static {
filter.add(SubType.VAMPIRE.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/p/PeachGardenOath.java b/Mage.Sets/src/mage/cards/p/PeachGardenOath.java
index 2e276672ec4..88aa0536f22 100644
--- a/Mage.Sets/src/mage/cards/p/PeachGardenOath.java
+++ b/Mage.Sets/src/mage/cards/p/PeachGardenOath.java
@@ -8,7 +8,7 @@ import mage.abilities.effects.common.GainLifeEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -19,9 +19,8 @@ public final class PeachGardenOath extends CardImpl {
public PeachGardenOath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{W}");
-
// You gain 2 life for each creature you control.
- DynamicValue amount = new PermanentsOnBattlefieldCount(new FilterControlledCreaturePermanent(), 2);
+ DynamicValue amount = new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_CREATURE, 2);
this.getSpellAbility().addEffect(new GainLifeEffect(amount));
}
diff --git a/Mage.Sets/src/mage/cards/p/PhalanxLeader.java b/Mage.Sets/src/mage/cards/p/PhalanxLeader.java
index 1aacdb86996..c768c627704 100644
--- a/Mage.Sets/src/mage/cards/p/PhalanxLeader.java
+++ b/Mage.Sets/src/mage/cards/p/PhalanxLeader.java
@@ -10,7 +10,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -27,7 +27,7 @@ public final class PhalanxLeader extends CardImpl {
this.toughness = new MageInt(1);
// Heroic Whenever you cast a spell that targets Phalanx Leader, put a +1/+1 counter on each creature you control.
- this.addAbility(new HeroicAbility(new AddCountersAllEffect(CounterType.P1P1.createInstance(), new FilterControlledCreaturePermanent())));
+ this.addAbility(new HeroicAbility(new AddCountersAllEffect(CounterType.P1P1.createInstance(), StaticFilters.FILTER_CONTROLLED_CREATURE)));
}
private PhalanxLeader(final PhalanxLeader card) {
diff --git a/Mage.Sets/src/mage/cards/p/PineWalker.java b/Mage.Sets/src/mage/cards/p/PineWalker.java
index 1a80aee7bf5..05b3cd664e1 100644
--- a/Mage.Sets/src/mage/cards/p/PineWalker.java
+++ b/Mage.Sets/src/mage/cards/p/PineWalker.java
@@ -1,4 +1,3 @@
-
package mage.cards.p;
import java.util.UUID;
@@ -12,7 +11,8 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.FilterPermanentThisOrAnother;
+import mage.filter.StaticFilters;
/**
*
@@ -20,6 +20,8 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*/
public final class PineWalker extends CardImpl {
+ private static final FilterPermanentThisOrAnother filter = new FilterPermanentThisOrAnother(StaticFilters.FILTER_CONTROLLED_CREATURE, true);
+
public PineWalker(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
this.subtype.add(SubType.ELEMENTAL);
@@ -32,7 +34,7 @@ public final class PineWalker extends CardImpl {
// Whenever Pine Walker or another creature you control is turned face up, untap that creature.
Effect effect = new UntapTargetEffect();
effect.setText("untap that creature");
- this.addAbility(new TurnedFaceUpAllTriggeredAbility(effect, new FilterControlledCreaturePermanent("{this} or another creature you control"), true));
+ this.addAbility(new TurnedFaceUpAllTriggeredAbility(effect, filter, true));
}
diff --git a/Mage.Sets/src/mage/cards/p/Preacher.java b/Mage.Sets/src/mage/cards/p/Preacher.java
index 7cfe53fa1c9..03b109e8d13 100644
--- a/Mage.Sets/src/mage/cards/p/Preacher.java
+++ b/Mage.Sets/src/mage/cards/p/Preacher.java
@@ -12,7 +12,7 @@ import mage.abilities.effects.common.continuous.GainControlTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
@@ -38,7 +38,7 @@ public final class Preacher extends CardImpl {
// {T}: Gain control of target creature of an opponent's choice that they control for as long as Preacher remains tapped.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PreacherEffect(), new TapSourceCost());
- ability.addTarget(new TargetOpponentsChoicePermanent(1, 1, new FilterControlledCreaturePermanent(), false));
+ ability.addTarget(new TargetOpponentsChoicePermanent(1, 1, StaticFilters.FILTER_CONTROLLED_CREATURE, false));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/p/PrestonTheVanisher.java b/Mage.Sets/src/mage/cards/p/PrestonTheVanisher.java
index 3690c5fb798..9789b1a2023 100644
--- a/Mage.Sets/src/mage/cards/p/PrestonTheVanisher.java
+++ b/Mage.Sets/src/mage/cards/p/PrestonTheVanisher.java
@@ -21,7 +21,6 @@ import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.permanent.TokenPredicate;
-import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetNonlandPermanent;
/**
@@ -32,7 +31,7 @@ public final class PrestonTheVanisher extends CardImpl {
private static final FilterControlledCreaturePermanent triggerFilter = new FilterControlledCreaturePermanent(
"another nontoken creature");
- private static final FilterControlledPermanent activeCostFilter = new FilterControlledCreaturePermanent(
+ private static final FilterControlledPermanent activeCostFilter = new FilterControlledPermanent(
SubType.ILLUSION, "Illusions");
static {
diff --git a/Mage.Sets/src/mage/cards/p/PrideSovereign.java b/Mage.Sets/src/mage/cards/p/PrideSovereign.java
index f72b39e8438..0cc53452844 100644
--- a/Mage.Sets/src/mage/cards/p/PrideSovereign.java
+++ b/Mage.Sets/src/mage/cards/p/PrideSovereign.java
@@ -1,4 +1,3 @@
-
package mage.cards.p;
import java.util.UUID;
@@ -19,7 +18,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.permanent.token.CatToken2;
@@ -29,6 +28,11 @@ import mage.game.permanent.token.CatToken2;
*/
public final class PrideSovereign extends CardImpl {
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.CAT, "other Cat you control");
+ static {
+ filter.add(AnotherPredicate.instance);
+ }
+
public PrideSovereign(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
@@ -37,8 +41,6 @@ public final class PrideSovereign extends CardImpl {
this.toughness = new MageInt(2);
// Pride Sovereign gets +1/+1 for each other Cat you control.
- FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.CAT, "other Cat you control");
- filter.add(AnotherPredicate.instance);
DynamicValue otherCats = new PermanentsOnBattlefieldCount(filter);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostSourceEffect(otherCats, otherCats, Duration.WhileOnBattlefield)));
// {W}, {t}, Exert Pride Sovereign: Create two 1/1 white Cat creature tokens with lifelink.
diff --git a/Mage.Sets/src/mage/cards/p/PrintlifterOoze.java b/Mage.Sets/src/mage/cards/p/PrintlifterOoze.java
index fbf5faf0c45..deb1ce691cc 100644
--- a/Mage.Sets/src/mage/cards/p/PrintlifterOoze.java
+++ b/Mage.Sets/src/mage/cards/p/PrintlifterOoze.java
@@ -16,8 +16,8 @@ import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.counters.CounterType;
+import mage.filter.FilterPermanentThisOrAnother;
import mage.filter.StaticFilters;
-import mage.filter.common.FilterControlledCreaturePermanent;
import mage.game.Game;
import mage.game.permanent.token.OozeTrampleToken;
@@ -28,6 +28,8 @@ import java.util.UUID;
*/
public final class PrintlifterOoze extends CardImpl {
+ private static final FilterPermanentThisOrAnother filter = new FilterPermanentThisOrAnother(StaticFilters.FILTER_CONTROLLED_CREATURE, true);
+
public PrintlifterOoze(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
this.subtype.add(SubType.OOZE);
@@ -40,7 +42,7 @@ public final class PrintlifterOoze extends CardImpl {
// Whenever Printlifter Ooze or another creature you control is turned face up, create a 0/0 green Ooze creature token with trample.
// The token enters the battlefield with X +1/+1 counters on it, where X is the number of other creatures you control.
this.addAbility(new TurnedFaceUpAllTriggeredAbility(
- new PrintlifterOozeEffect(), new FilterControlledCreaturePermanent("{this} or another creature you control")
+ new PrintlifterOozeEffect(), filter
));
// Disguise {3}{G}
diff --git a/Mage.Sets/src/mage/cards/p/PsychotropeThallid.java b/Mage.Sets/src/mage/cards/p/PsychotropeThallid.java
index 5f561b3acae..3126a863ce3 100644
--- a/Mage.Sets/src/mage/cards/p/PsychotropeThallid.java
+++ b/Mage.Sets/src/mage/cards/p/PsychotropeThallid.java
@@ -1,4 +1,3 @@
-
package mage.cards.p;
import java.util.UUID;
@@ -19,9 +18,8 @@ import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.SaprolingToken;
-import mage.target.common.TargetControlledCreaturePermanent;
/**
*
@@ -29,10 +27,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class PsychotropeThallid extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Saproling");
- static {
- filter.add(SubType.SAPROLING.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.SAPROLING, "a Saproling");
public PsychotropeThallid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/p/PuppetConjurer.java b/Mage.Sets/src/mage/cards/p/PuppetConjurer.java
index eca9ccfa9ee..47d5d1f2e83 100644
--- a/Mage.Sets/src/mage/cards/p/PuppetConjurer.java
+++ b/Mage.Sets/src/mage/cards/p/PuppetConjurer.java
@@ -16,7 +16,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.HomunculusToken;
/**
@@ -25,11 +25,7 @@ import mage.game.permanent.token.HomunculusToken;
*/
public final class PuppetConjurer extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Homunculus");
-
- static {
- filter.add(SubType.HOMUNCULUS.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.HOMUNCULUS, "Homunculus");
public PuppetConjurer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/q/QuestForRenewal.java b/Mage.Sets/src/mage/cards/q/QuestForRenewal.java
index 2fbf44787b7..293e8c7d997 100644
--- a/Mage.Sets/src/mage/cards/q/QuestForRenewal.java
+++ b/Mage.Sets/src/mage/cards/q/QuestForRenewal.java
@@ -14,7 +14,6 @@ import mage.constants.CardType;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
-import mage.filter.common.FilterControlledCreaturePermanent;
/**
*
@@ -31,7 +30,7 @@ public final class QuestForRenewal extends CardImpl {
// As long as there are four or more quest counters on Quest for Renewal, untap all creatures you control during each other player's untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
- new UntapAllDuringEachOtherPlayersUntapStepEffect(new FilterControlledCreaturePermanent()),
+ new UntapAllDuringEachOtherPlayersUntapStepEffect(StaticFilters.FILTER_CONTROLLED_CREATURES),
new SourceHasCounterCondition(CounterType.QUEST, 4, Integer.MAX_VALUE),
"As long as there are four or more quest counters on {this}, untap all creatures you control during each other player's untap step.")));
}
diff --git a/Mage.Sets/src/mage/cards/q/QuestForTheGoblinLord.java b/Mage.Sets/src/mage/cards/q/QuestForTheGoblinLord.java
index adde018418b..7d007ef1651 100644
--- a/Mage.Sets/src/mage/cards/q/QuestForTheGoblinLord.java
+++ b/Mage.Sets/src/mage/cards/q/QuestForTheGoblinLord.java
@@ -12,8 +12,8 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.StaticFilters;
+import mage.filter.common.FilterControlledPermanent;
/**
*
@@ -22,13 +22,7 @@ import mage.filter.common.FilterCreaturePermanent;
public final class QuestForTheGoblinLord extends CardImpl {
private static final String rule = "As long as {this} has five or more quest counters on it, creatures you control get +2/+0";
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
- private static final FilterPermanent goblinFilter = new FilterControlledCreaturePermanent("a Goblin");
-
- static {
- filter.add(TargetController.YOU.getControllerPredicate());
- goblinFilter.add(SubType.GOBLIN.getPredicate());
- }
+ private static final FilterPermanent goblinFilter = new FilterControlledPermanent(SubType.GOBLIN, "a Goblin");
public QuestForTheGoblinLord(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{R}");
@@ -37,7 +31,9 @@ public final class QuestForTheGoblinLord extends CardImpl {
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.QUEST.createInstance()), goblinFilter, true));
// As long as Quest for the Goblin Lord has five or more quest counters on it, creatures you control get +2/+0.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new BoostAllEffect(2, 0, Duration.WhileOnBattlefield, filter, false), new SourceHasCounterCondition(CounterType.QUEST, 5, Integer.MAX_VALUE), rule)));
+ this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
+ new BoostAllEffect(2, 0, Duration.WhileOnBattlefield, StaticFilters.FILTER_CONTROLLED_CREATURES, false),
+ new SourceHasCounterCondition(CounterType.QUEST, 5, Integer.MAX_VALUE), rule)));
}
private QuestForTheGoblinLord(final QuestForTheGoblinLord card) {
diff --git a/Mage.Sets/src/mage/cards/r/RaidingParty.java b/Mage.Sets/src/mage/cards/r/RaidingParty.java
index 52fa45cd59f..177e814d2b0 100644
--- a/Mage.Sets/src/mage/cards/r/RaidingParty.java
+++ b/Mage.Sets/src/mage/cards/r/RaidingParty.java
@@ -18,10 +18,10 @@ import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.FilterObject;
import mage.filter.FilterStackObject;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.Game;
@@ -37,12 +37,11 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class RaidingParty extends CardImpl {
- private static final FilterObject filterWhite = new FilterStackObject("white spells or abilities from white sources");
- private static final FilterControlledCreaturePermanent filterOrc = new FilterControlledCreaturePermanent("an Orc");
+ private static final FilterStackObject filterWhite = new FilterStackObject("white spells or abilities from white sources");
+ private static final FilterControlledPermanent filterOrc = new FilterControlledPermanent(SubType.ORC, "an Orc");
static {
filterWhite.add(new ColorPredicate(ObjectColor.WHITE));
- filterOrc.add(SubType.ORC.getPredicate());
}
public RaidingParty(UUID ownerId, CardSetInfo setInfo) {
diff --git a/Mage.Sets/src/mage/cards/r/RaisedByWolves.java b/Mage.Sets/src/mage/cards/r/RaisedByWolves.java
index 18f02082dac..ea427308603 100644
--- a/Mage.Sets/src/mage/cards/r/RaisedByWolves.java
+++ b/Mage.Sets/src/mage/cards/r/RaisedByWolves.java
@@ -1,4 +1,3 @@
-
package mage.cards.r;
import java.util.UUID;
@@ -14,7 +13,7 @@ import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.WolfToken;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
@@ -25,11 +24,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class RaisedByWolves extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Wolf you control");
-
- static {
- filter.add(SubType.WOLF.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.WOLF, "Wolf you control");
public RaisedByWolves(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RallyingRoar.java b/Mage.Sets/src/mage/cards/r/RallyingRoar.java
index 05cb501aa47..6b6c0847a69 100644
--- a/Mage.Sets/src/mage/cards/r/RallyingRoar.java
+++ b/Mage.Sets/src/mage/cards/r/RallyingRoar.java
@@ -1,4 +1,3 @@
-
package mage.cards.r;
import java.util.UUID;
@@ -8,7 +7,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -21,7 +20,7 @@ public final class RallyingRoar extends CardImpl {
// Creatures you control get +1/+1 until end of turn. Untap them.
this.getSpellAbility().addEffect(new BoostControlledEffect(1, 1, Duration.EndOfTurn));
- this.getSpellAbility().addEffect(new UntapAllControllerEffect(new FilterControlledCreaturePermanent(), "Untap them."));
+ this.getSpellAbility().addEffect(new UntapAllControllerEffect(StaticFilters.FILTER_CONTROLLED_CREATURES, "Untap them."));
}
private RallyingRoar(final RallyingRoar card) {
diff --git a/Mage.Sets/src/mage/cards/r/RatColony.java b/Mage.Sets/src/mage/cards/r/RatColony.java
index 54246520805..619c6a21391 100644
--- a/Mage.Sets/src/mage/cards/r/RatColony.java
+++ b/Mage.Sets/src/mage/cards/r/RatColony.java
@@ -14,7 +14,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
/**
@@ -23,7 +23,7 @@ import mage.filter.predicate.mageobject.AnotherPredicate;
*/
public final class RatColony extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other Rat you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("other Rat you control");
static {
filter.add(SubType.RAT.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/r/RavenousBaloth.java b/Mage.Sets/src/mage/cards/r/RavenousBaloth.java
index e970faafd9b..71bfccd8872 100644
--- a/Mage.Sets/src/mage/cards/r/RavenousBaloth.java
+++ b/Mage.Sets/src/mage/cards/r/RavenousBaloth.java
@@ -11,8 +11,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
/**
*
@@ -20,10 +19,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class RavenousBaloth extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Beast");
- static {
- filter.add(SubType.BEAST.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.BEAST, "a Beast");
public RavenousBaloth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/r/RecklessCohort.java b/Mage.Sets/src/mage/cards/r/RecklessCohort.java
index b2bddd03183..fbec66db691 100644
--- a/Mage.Sets/src/mage/cards/r/RecklessCohort.java
+++ b/Mage.Sets/src/mage/cards/r/RecklessCohort.java
@@ -1,4 +1,3 @@
-
package mage.cards.r;
import java.util.UUID;
@@ -11,7 +10,7 @@ import mage.abilities.effects.common.combat.AttacksIfAbleSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
/**
@@ -20,7 +19,7 @@ import mage.filter.predicate.mageobject.AnotherPredicate;
*/
public final class RecklessCohort extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another Ally");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Ally");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/r/RinAndSeriInseparable.java b/Mage.Sets/src/mage/cards/r/RinAndSeriInseparable.java
index e74384272f8..140d344230d 100644
--- a/Mage.Sets/src/mage/cards/r/RinAndSeriInseparable.java
+++ b/Mage.Sets/src/mage/cards/r/RinAndSeriInseparable.java
@@ -20,7 +20,7 @@ import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.FilterPermanent;
import mage.filter.FilterSpell;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.GreenCatToken;
import mage.game.permanent.token.WhiteDogToken;
import mage.target.common.TargetAnyTarget;
@@ -35,8 +35,8 @@ public final class RinAndSeriInseparable extends CardImpl {
private static final FilterSpell dogSpellFilter = new FilterSpell("a Dog spell");
private static final FilterSpell catSpellFilter = new FilterSpell("a Cat spell");
- private static final FilterPermanent dogPermanentFilter = new FilterControlledCreaturePermanent("Dogs you control");
- private static final FilterPermanent catPermanentFilter = new FilterControlledCreaturePermanent("Cats you control");
+ private static final FilterPermanent dogPermanentFilter = new FilterControlledPermanent("Dogs you control");
+ private static final FilterPermanent catPermanentFilter = new FilterControlledPermanent("Cats you control");
static {
dogSpellFilter.add(SubType.DOG.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/r/RiptideDirector.java b/Mage.Sets/src/mage/cards/r/RiptideDirector.java
index 78d83596bb8..d382e00e5c0 100644
--- a/Mage.Sets/src/mage/cards/r/RiptideDirector.java
+++ b/Mage.Sets/src/mage/cards/r/RiptideDirector.java
@@ -14,7 +14,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterControlledPermanent;
/**
@@ -23,11 +22,7 @@ import mage.filter.common.FilterControlledPermanent;
*/
public final class RiptideDirector extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledCreaturePermanent("Wizard you control");
-
- static {
- filter.add(SubType.WIZARD.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.WIZARD, "Wizard you control");
public RiptideDirector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/r/RiskyMove.java b/Mage.Sets/src/mage/cards/r/RiskyMove.java
index 4bfcb489fdc..641e989da14 100644
--- a/Mage.Sets/src/mage/cards/r/RiskyMove.java
+++ b/Mage.Sets/src/mage/cards/r/RiskyMove.java
@@ -11,7 +11,6 @@ import mage.abilities.effects.common.continuous.GainControlTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
-import mage.filter.common.FilterControlledCreaturePermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
@@ -144,7 +143,7 @@ class RiskyMoveFlipCoinEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
- Target target1 = new TargetControlledCreaturePermanent(1, 1, new FilterControlledCreaturePermanent(), true);
+ Target target1 = new TargetControlledCreaturePermanent().withNotTarget(true);
Target target2 = new TargetOpponent(true);
if (target1.canChoose(controller.getId(), source, game)) {
diff --git a/Mage.Sets/src/mage/cards/r/RoarOfTheKha.java b/Mage.Sets/src/mage/cards/r/RoarOfTheKha.java
index f512408c691..9283ea78f91 100644
--- a/Mage.Sets/src/mage/cards/r/RoarOfTheKha.java
+++ b/Mage.Sets/src/mage/cards/r/RoarOfTheKha.java
@@ -1,4 +1,3 @@
-
package mage.cards.r;
import java.util.UUID;
@@ -10,7 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -27,7 +26,7 @@ public final class RoarOfTheKha extends CardImpl {
this.getSpellAbility().addEffect(new BoostControlledEffect(1, 1, Duration.EndOfTurn));
// or untap all creatures you control.
- Mode mode = new Mode(new UntapAllControllerEffect(new FilterControlledCreaturePermanent(), rule));
+ Mode mode = new Mode(new UntapAllControllerEffect(StaticFilters.FILTER_CONTROLLED_CREATURES, rule));
this.getSpellAbility().getModes().addMode(mode);
// Entwine {1}{W}
diff --git a/Mage.Sets/src/mage/cards/r/RoaringPrimadox.java b/Mage.Sets/src/mage/cards/r/RoaringPrimadox.java
index 792c177ab2b..48cadc0c2e3 100644
--- a/Mage.Sets/src/mage/cards/r/RoaringPrimadox.java
+++ b/Mage.Sets/src/mage/cards/r/RoaringPrimadox.java
@@ -1,4 +1,3 @@
-
package mage.cards.r;
import java.util.UUID;
@@ -9,7 +8,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.game.events.GameEvent.EventType;
/**
@@ -26,7 +25,7 @@ public final class RoaringPrimadox extends CardImpl {
this.toughness = new MageInt(4);
// At the beginning of your upkeep, return a creature you control to its owner's hand.
- this.addAbility(new OnEventTriggeredAbility(EventType.UPKEEP_STEP_PRE, "beginning of your upkeep", new ReturnToHandChosenControlledPermanentEffect(new FilterControlledCreaturePermanent())));
+ this.addAbility(new OnEventTriggeredAbility(EventType.UPKEEP_STEP_PRE, "beginning of your upkeep", new ReturnToHandChosenControlledPermanentEffect(StaticFilters.FILTER_CONTROLLED_CREATURE)));
}
private RoaringPrimadox(final RoaringPrimadox card) {
diff --git a/Mage.Sets/src/mage/cards/r/RushOfBattle.java b/Mage.Sets/src/mage/cards/r/RushOfBattle.java
index 0210ecb7d7a..149a5850b7f 100644
--- a/Mage.Sets/src/mage/cards/r/RushOfBattle.java
+++ b/Mage.Sets/src/mage/cards/r/RushOfBattle.java
@@ -1,4 +1,3 @@
-
package mage.cards.r;
import java.util.UUID;
@@ -19,19 +18,14 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*/
public final class RushOfBattle extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
- static {
- filter.add(SubType.WARRIOR.getPredicate());
- }
+ private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.WARRIOR, "Warrior creatures you control");
public RushOfBattle(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}");
-
// Creatures you control get +2/+1 until end of turn. Warrior creatures you control gain lifelink until end of turn.
this.getSpellAbility().addEffect(new BoostControlledEffect(2, 1, Duration.EndOfTurn));
Effect effect = new GainAbilityControlledEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn, filter);
- effect.setText("Warrior creatures you control gain lifelink until end of turn");
this.getSpellAbility().addEffect(effect);
}
diff --git a/Mage.Sets/src/mage/cards/s/SaltRoadAmbushers.java b/Mage.Sets/src/mage/cards/s/SaltRoadAmbushers.java
index 44332a5de6d..07b33a5dadd 100644
--- a/Mage.Sets/src/mage/cards/s/SaltRoadAmbushers.java
+++ b/Mage.Sets/src/mage/cards/s/SaltRoadAmbushers.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -12,7 +11,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
/**
@@ -48,13 +47,13 @@ public final class SaltRoadAmbushers extends CardImpl {
class SaltRoadAmbushersTriggeredAbility extends TurnedFaceUpAllTriggeredAbility {
-private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another permanent you control");
+private static final FilterControlledPermanent filter = new FilterControlledPermanent("another permanent you control");
static {
filter.add(AnotherPredicate.instance);
}
- public SaltRoadAmbushersTriggeredAbility() {
+ SaltRoadAmbushersTriggeredAbility() {
super(new AddCountersTargetEffect(CounterType.P1P1.createInstance(2)), filter, true);
}
@@ -71,4 +70,4 @@ private static final FilterControlledCreaturePermanent filter = new FilterContro
public String getRule() {
return "Whenever another permanent you control is turned face up, if it's a creature, put two +1/+1 counters on it.";
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/s/SamiteElder.java b/Mage.Sets/src/mage/cards/s/SamiteElder.java
index af5098f2442..bc291e0b931 100644
--- a/Mage.Sets/src/mage/cards/s/SamiteElder.java
+++ b/Mage.Sets/src/mage/cards/s/SamiteElder.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -18,7 +17,7 @@ import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.filter.FilterCard;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
@@ -70,12 +69,12 @@ class SamiteElderEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Permanent target = game.getPermanent(source.getFirstTarget());
- if(target != null) {
- for(ObjectColor color : target.getColor(game).getColors()) {
+ if (target != null) {
+ for (ObjectColor color : target.getColor(game).getColors()) {
FilterCard filter = new FilterCard(color.getDescription());
filter.add(new ColorPredicate(color));
game.addEffect(new GainAbilityControlledEffect(new ProtectionAbility(filter),
- Duration.EndOfTurn, new FilterControlledCreaturePermanent()), source);
+ Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURES), source);
}
return true;
}
diff --git a/Mage.Sets/src/mage/cards/s/SarkhansRage.java b/Mage.Sets/src/mage/cards/s/SarkhansRage.java
index 1bb54faf47d..be1c511dbc4 100644
--- a/Mage.Sets/src/mage/cards/s/SarkhansRage.java
+++ b/Mage.Sets/src/mage/cards/s/SarkhansRage.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -11,7 +10,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.ComparisonType;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetAnyTarget;
/**
@@ -27,7 +26,7 @@ public final class SarkhansRage extends CardImpl {
this.getSpellAbility().addEffect(new DamageTargetEffect(5));
this.getSpellAbility().addTarget(new TargetAnyTarget());
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DamageControllerEffect(2),
- new PermanentsOnTheBattlefieldCondition(new FilterControlledCreaturePermanent(SubType.DRAGON,"you control no Dragons"), ComparisonType.EQUAL_TO, 0)
+ new PermanentsOnTheBattlefieldCondition(new FilterControlledPermanent(SubType.DRAGON,"you control no Dragons"), ComparisonType.EQUAL_TO, 0)
));
}
diff --git a/Mage.Sets/src/mage/cards/s/SavageThallid.java b/Mage.Sets/src/mage/cards/s/SavageThallid.java
index a74071d99b3..6ec0efb5c06 100644
--- a/Mage.Sets/src/mage/cards/s/SavageThallid.java
+++ b/Mage.Sets/src/mage/cards/s/SavageThallid.java
@@ -19,10 +19,9 @@ import mage.constants.TargetController;
import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.SaprolingToken;
import mage.target.TargetPermanent;
-import mage.target.common.TargetControlledCreaturePermanent;
/**
*
@@ -36,11 +35,7 @@ public final class SavageThallid extends CardImpl {
filter.add(SubType.FUNGUS.getPredicate());
}
- private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("Saproling");
-
- static {
- filter2.add(SubType.SAPROLING.getPredicate());
- }
+ private static final FilterControlledPermanent filter2 = new FilterControlledPermanent(SubType.SAPROLING, "Saproling");
public SavageThallid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/ScamperingScorcher.java b/Mage.Sets/src/mage/cards/s/ScamperingScorcher.java
index 9561b437f8a..ad62a54162a 100644
--- a/Mage.Sets/src/mage/cards/s/ScamperingScorcher.java
+++ b/Mage.Sets/src/mage/cards/s/ScamperingScorcher.java
@@ -12,7 +12,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.RedElementalToken;
import java.util.UUID;
@@ -23,7 +23,7 @@ import java.util.UUID;
public final class ScamperingScorcher extends CardImpl {
private static final FilterPermanent filter
- = new FilterControlledCreaturePermanent(SubType.ELEMENTAL, "Elementals");
+ = new FilterControlledPermanent(SubType.ELEMENTAL, "Elementals");
public ScamperingScorcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/Scarecrone.java b/Mage.Sets/src/mage/cards/s/Scarecrone.java
index 7cd461b4c74..96be5665410 100644
--- a/Mage.Sets/src/mage/cards/s/Scarecrone.java
+++ b/Mage.Sets/src/mage/cards/s/Scarecrone.java
@@ -16,9 +16,8 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterCard;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetCardInYourGraveyard;
-import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author Loki
@@ -26,7 +25,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
public final class Scarecrone extends CardImpl {
private static final FilterCard filter = new FilterCard("artifact creature card from your graveyard");
- private static final FilterControlledCreaturePermanent filterScarecrow = new FilterControlledCreaturePermanent("Scarecrow");
+ private static final FilterControlledPermanent filterScarecrow = new FilterControlledPermanent("Scarecrow");
static {
filter.add(CardType.ARTIFACT.getPredicate());
filter.add(CardType.CREATURE.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/s/SeaGateLoremaster.java b/Mage.Sets/src/mage/cards/s/SeaGateLoremaster.java
index f1bd30dbdd1..da1c02460cd 100644
--- a/Mage.Sets/src/mage/cards/s/SeaGateLoremaster.java
+++ b/Mage.Sets/src/mage/cards/s/SeaGateLoremaster.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -12,7 +11,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
/**
*
@@ -20,11 +19,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*/
public final class SeaGateLoremaster extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Ally you control");
-
- static {
- filter.add(SubType.ALLY.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.ALLY, "Ally you control");
public SeaGateLoremaster(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}");
diff --git a/Mage.Sets/src/mage/cards/s/SekkiSeasonsGuide.java b/Mage.Sets/src/mage/cards/s/SekkiSeasonsGuide.java
index ed2bce8e7ab..1b7b3b1476c 100644
--- a/Mage.Sets/src/mage/cards/s/SekkiSeasonsGuide.java
+++ b/Mage.Sets/src/mage/cards/s/SekkiSeasonsGuide.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -16,12 +15,11 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.SpiritToken;
-import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetSacrifice;
/**
@@ -30,11 +28,7 @@ import mage.target.common.TargetSacrifice;
*/
public final class SekkiSeasonsGuide extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Spirits");
-
- static {
- filter.add(SubType.SPIRIT.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.SPIRIT, "Spirits");
public SekkiSeasonsGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/s/SetonKrosanProtector.java b/Mage.Sets/src/mage/cards/s/SetonKrosanProtector.java
index 4a64671bd98..94a1bc453f6 100644
--- a/Mage.Sets/src/mage/cards/s/SetonKrosanProtector.java
+++ b/Mage.Sets/src/mage/cards/s/SetonKrosanProtector.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.ArrayList;
@@ -17,16 +16,21 @@ import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.Game;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.target.common.TargetControlledPermanent;
/**
*
* @author cbt33
*/
public final class SetonKrosanProtector extends CardImpl {
+
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.DRUID, "untapped Druid you control");
+ static {
+ filter.add(TappedPredicate.UNTAPPED);
+ }
public SetonKrosanProtector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}{G}");
@@ -38,13 +42,10 @@ public final class SetonKrosanProtector extends CardImpl {
this.toughness = new MageInt(2);
// Tap an untapped Druid you control: Add {G}.
- FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Druid you control");
- filter.add(TappedPredicate.UNTAPPED);
- filter.add(SubType.DRUID.getPredicate());
this.addAbility(new SimpleManaAbility(
Zone.BATTLEFIELD,
new SetonKrosanProtectorManaEffect(filter),
- new TapTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, true))));
+ new TapTargetCost(new TargetControlledPermanent(1, 1, filter, true))));
}
private SetonKrosanProtector(final SetonKrosanProtector card) {
@@ -61,7 +62,7 @@ class SetonKrosanProtectorManaEffect extends BasicManaEffect {
private final FilterPermanent filter;
- public SetonKrosanProtectorManaEffect(FilterPermanent filter) {
+ SetonKrosanProtectorManaEffect(FilterPermanent filter) {
super(Mana.GreenMana(1));
this.filter = filter;
}
diff --git a/Mage.Sets/src/mage/cards/s/ShriekingDrake.java b/Mage.Sets/src/mage/cards/s/ShriekingDrake.java
index e10d621b561..d67495df19d 100644
--- a/Mage.Sets/src/mage/cards/s/ShriekingDrake.java
+++ b/Mage.Sets/src/mage/cards/s/ShriekingDrake.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -10,7 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -28,7 +27,7 @@ public final class ShriekingDrake extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
// When Shrieking Drake enters the battlefield, return a creature you control to its owner's hand.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new ReturnToHandChosenControlledPermanentEffect(new FilterControlledCreaturePermanent())));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new ReturnToHandChosenControlledPermanentEffect(StaticFilters.FILTER_CONTROLLED_CREATURE)));
}
private ShriekingDrake(final ShriekingDrake card) {
diff --git a/Mage.Sets/src/mage/cards/s/SigilOfTheNayanGods.java b/Mage.Sets/src/mage/cards/s/SigilOfTheNayanGods.java
index 40b2c52af97..1f94b4192fa 100644
--- a/Mage.Sets/src/mage/cards/s/SigilOfTheNayanGods.java
+++ b/Mage.Sets/src/mage/cards/s/SigilOfTheNayanGods.java
@@ -16,7 +16,7 @@ import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
@@ -26,8 +26,6 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class SigilOfTheNayanGods extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
-
public SigilOfTheNayanGods(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}{W}");
this.subtype.add(SubType.AURA);
@@ -39,7 +37,7 @@ public final class SigilOfTheNayanGods extends CardImpl {
this.addAbility(new EnchantAbility(auraTarget));
// Enchanted creature gets +1/+1 for each creature you control.
- PermanentsOnBattlefieldCount amount = new PermanentsOnBattlefieldCount(filter, 1);
+ PermanentsOnBattlefieldCount amount = new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_CREATURE, 1);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(amount, amount, Duration.WhileOnBattlefield)));
// Cycling {G/W}
diff --git a/Mage.Sets/src/mage/cards/s/SkeletalVampire.java b/Mage.Sets/src/mage/cards/s/SkeletalVampire.java
index 10a0b7fd00e..32986991c66 100644
--- a/Mage.Sets/src/mage/cards/s/SkeletalVampire.java
+++ b/Mage.Sets/src/mage/cards/s/SkeletalVampire.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -16,9 +15,8 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.BatToken;
-import mage.target.common.TargetControlledCreaturePermanent;
/**
*
@@ -26,11 +24,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class SkeletalVampire extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Bat");
-
- static {
- filter.add(SubType.BAT.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.BAT, "a Bat");
public SkeletalVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SkirkFireMarshal.java b/Mage.Sets/src/mage/cards/s/SkirkFireMarshal.java
index 1b79152605a..ccaf09a9c6d 100644
--- a/Mage.Sets/src/mage/cards/s/SkirkFireMarshal.java
+++ b/Mage.Sets/src/mage/cards/s/SkirkFireMarshal.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -14,9 +13,9 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.permanent.TappedPredicate;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.target.common.TargetControlledPermanent;
/**
*
@@ -24,7 +23,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class SkirkFireMarshal extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Goblins you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Goblins you control");
static {
filter.add(TappedPredicate.UNTAPPED);
@@ -44,7 +43,7 @@ public final class SkirkFireMarshal extends CardImpl {
// Tap five untapped Goblins you control: Skirk Fire Marshal deals 10 damage to each creature and each player.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new DamageEverythingEffect(10),
- new TapTargetCost(new TargetControlledCreaturePermanent(5,5, filter, true)));
+ new TapTargetCost(new TargetControlledPermanent(5,5, filter, true)));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/s/SkirkProspector.java b/Mage.Sets/src/mage/cards/s/SkirkProspector.java
index b4b2a3f0405..f1fa1e9bae7 100644
--- a/Mage.Sets/src/mage/cards/s/SkirkProspector.java
+++ b/Mage.Sets/src/mage/cards/s/SkirkProspector.java
@@ -12,8 +12,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
/**
*
@@ -21,11 +20,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class SkirkProspector extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Goblin");
-
- static {
- filter.add(SubType.GOBLIN.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.GOBLIN, "a Goblin");
public SkirkProspector(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}");
diff --git a/Mage.Sets/src/mage/cards/s/SkirsdagFlayer.java b/Mage.Sets/src/mage/cards/s/SkirsdagFlayer.java
index 599c7b5bb76..3002830eccb 100644
--- a/Mage.Sets/src/mage/cards/s/SkirsdagFlayer.java
+++ b/Mage.Sets/src/mage/cards/s/SkirsdagFlayer.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -14,8 +13,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.target.common.TargetControlledPermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetCreaturePermanent;
/**
@@ -24,11 +22,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class SkirsdagFlayer extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Human");
-
- static {
- filter.add(SubType.HUMAN.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.HUMAN, "Human");
public SkirsdagFlayer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/Smallpox.java b/Mage.Sets/src/mage/cards/s/Smallpox.java
index 79a4ea0ed4c..3d2d9b495b4 100644
--- a/Mage.Sets/src/mage/cards/s/Smallpox.java
+++ b/Mage.Sets/src/mage/cards/s/Smallpox.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -9,9 +8,7 @@ import mage.abilities.effects.common.discard.DiscardEachPlayerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.common.FilterControlledLandPermanent;
-import mage.filter.common.FilterControlledPermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -19,22 +16,18 @@ import mage.filter.common.FilterControlledPermanent;
*/
public final class Smallpox extends CardImpl {
- private static final FilterControlledPermanent filterCreature = new FilterControlledCreaturePermanent();
- private static final FilterControlledPermanent filterLand = new FilterControlledLandPermanent();
-
public Smallpox(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{B}{B}");
-
// Each player loses 1 life, discards a card, sacrifices a creature, then sacrifices a land.
this.getSpellAbility().addEffect(new LoseLifeAllPlayersEffect(1));
Effect effect = new DiscardEachPlayerEffect();
effect.setText(", discards a card");
this.getSpellAbility().addEffect(effect);
- effect = new SacrificeAllEffect(1, filterCreature);
+ effect = new SacrificeAllEffect(1, StaticFilters.FILTER_CONTROLLED_CREATURE);
effect.setText(", sacrifices a creature");
this.getSpellAbility().addEffect(effect);
- effect = new SacrificeAllEffect(1, filterLand);
+ effect = new SacrificeAllEffect(1, StaticFilters.FILTER_CONTROLLED_PERMANENT_LAND);
effect.setText(", then sacrifices a land");
this.getSpellAbility().addEffect(effect);
}
diff --git a/Mage.Sets/src/mage/cards/s/Smoke.java b/Mage.Sets/src/mage/cards/s/Smoke.java
index 9b948afb07a..0a2784f7d8e 100644
--- a/Mage.Sets/src/mage/cards/s/Smoke.java
+++ b/Mage.Sets/src/mage/cards/s/Smoke.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -10,8 +9,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.common.FilterControlledPermanent;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.players.Player;
@@ -25,7 +23,6 @@ public final class Smoke extends CardImpl {
public Smoke(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}{R}");
-
// Players can't untap more than one creature during their untap steps.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SmokeEffect()));
}
@@ -42,10 +39,8 @@ public final class Smoke extends CardImpl {
class SmokeEffect extends RestrictionUntapNotMoreThanEffect {
- private static final FilterControlledPermanent filter = new FilterControlledCreaturePermanent();
-
- public SmokeEffect() {
- super(Duration.WhileOnBattlefield, 1, filter);
+ SmokeEffect() {
+ super(Duration.WhileOnBattlefield, 1, StaticFilters.FILTER_CONTROLLED_CREATURE);
staticText = "Players can't untap more than one creature during their untap steps";
}
diff --git a/Mage.Sets/src/mage/cards/s/SophiaDoggedDetective.java b/Mage.Sets/src/mage/cards/s/SophiaDoggedDetective.java
index 34f8b02e8f1..bacaa547a29 100644
--- a/Mage.Sets/src/mage/cards/s/SophiaDoggedDetective.java
+++ b/Mage.Sets/src/mage/cards/s/SophiaDoggedDetective.java
@@ -18,7 +18,7 @@ import mage.constants.SubType;
import mage.constants.SuperType;
import mage.counters.CounterType;
import mage.filter.common.FilterArtifactPermanent;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.permanent.token.FoodToken;
import mage.game.permanent.token.TinyToken;
@@ -30,7 +30,7 @@ import java.util.UUID;
*/
public final class SophiaDoggedDetective extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.DOG, "Dog you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.DOG, "Dog you control");
private static final FilterArtifactPermanent filter2 = new FilterArtifactPermanent("artifact token");
static {
diff --git a/Mage.Sets/src/mage/cards/s/SpawnbinderMage.java b/Mage.Sets/src/mage/cards/s/SpawnbinderMage.java
index ab4528c0115..6cb7d40d02f 100644
--- a/Mage.Sets/src/mage/cards/s/SpawnbinderMage.java
+++ b/Mage.Sets/src/mage/cards/s/SpawnbinderMage.java
@@ -1,37 +1,23 @@
-
package mage.cards.s;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.costs.common.TapTargetCost;
+import mage.abilities.abilityword.CohortAbility;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.AbilityWord;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.constants.Zone;
-import mage.filter.common.FilterControlledPermanent;
-import mage.filter.predicate.permanent.TappedPredicate;
-import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetCreaturePermanent;
+import java.util.UUID;
+
/**
*
* @author fireshoes
*/
public final class SpawnbinderMage extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Ally you control");
-
- static {
- filter.add(SubType.ALLY.getPredicate());
- filter.add(TappedPredicate.UNTAPPED);
- }
-
public SpawnbinderMage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
this.subtype.add(SubType.HUMAN);
@@ -41,10 +27,8 @@ public final class SpawnbinderMage extends CardImpl {
this.toughness = new MageInt(4);
// Cohort — {T}, Tap an untapped Ally you control: Tap target creature.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new TapTargetEffect(), new TapSourceCost());
- ability.addCost(new TapTargetCost(new TargetControlledPermanent(filter)));
+ Ability ability = new CohortAbility(new TapTargetEffect());
ability.addTarget(new TargetCreaturePermanent());
- ability.setAbilityWord(AbilityWord.COHORT);
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/s/SpeciesGorger.java b/Mage.Sets/src/mage/cards/s/SpeciesGorger.java
index 0bcb9d96c9c..cd5008b3072 100644
--- a/Mage.Sets/src/mage/cards/s/SpeciesGorger.java
+++ b/Mage.Sets/src/mage/cards/s/SpeciesGorger.java
@@ -8,7 +8,7 @@ import mage.abilities.effects.common.ReturnToHandChosenControlledPermanentEffect
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -25,7 +25,7 @@ public final class SpeciesGorger extends CardImpl {
this.toughness = new MageInt(6);
// At the beginning of your upkeep, return a creature you control to its owner's hand.
- this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new ReturnToHandChosenControlledPermanentEffect(new FilterControlledCreaturePermanent()), TargetController.YOU, false));
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new ReturnToHandChosenControlledPermanentEffect(StaticFilters.FILTER_CONTROLLED_CREATURE), TargetController.YOU, false));
}
@@ -38,4 +38,3 @@ public final class SpeciesGorger extends CardImpl {
return new SpeciesGorger(this);
}
}
-
diff --git a/Mage.Sets/src/mage/cards/s/SplinteringWind.java b/Mage.Sets/src/mage/cards/s/SplinteringWind.java
index b227718670b..e9bc5fccd87 100644
--- a/Mage.Sets/src/mage/cards/s/SplinteringWind.java
+++ b/Mage.Sets/src/mage/cards/s/SplinteringWind.java
@@ -15,7 +15,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
@@ -86,11 +86,11 @@ class SplinteringWindCreateTokenEffect extends OneShotEffect {
class SplinteringWindDelayedTriggeredAbility extends DelayedTriggeredAbility {
- private UUID tokenId;
+ private final UUID tokenId;
SplinteringWindDelayedTriggeredAbility(UUID tokenId) {
super(new DamageControllerEffect(1), Duration.OneUse);
- this.addEffect(new DamageAllEffect(1, new FilterControlledCreaturePermanent()));
+ this.addEffect(new DamageAllEffect(1, StaticFilters.FILTER_CONTROLLED_CREATURE));
this.tokenId = tokenId;
}
diff --git a/Mage.Sets/src/mage/cards/s/SpringjackPasture.java b/Mage.Sets/src/mage/cards/s/SpringjackPasture.java
index e4c9280aca8..27f896bb520 100644
--- a/Mage.Sets/src/mage/cards/s/SpringjackPasture.java
+++ b/Mage.Sets/src/mage/cards/s/SpringjackPasture.java
@@ -16,7 +16,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.GoatToken;
import java.util.UUID;
@@ -26,11 +26,7 @@ import java.util.UUID;
*/
public final class SpringjackPasture extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Goats");
-
- static {
- filter.add(SubType.GOAT.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.GOAT, "Goats");
public SpringjackPasture(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
diff --git a/Mage.Sets/src/mage/cards/s/StampedingHorncrest.java b/Mage.Sets/src/mage/cards/s/StampedingHorncrest.java
index 158c169ac96..80b0a0c3e62 100644
--- a/Mage.Sets/src/mage/cards/s/StampedingHorncrest.java
+++ b/Mage.Sets/src/mage/cards/s/StampedingHorncrest.java
@@ -14,7 +14,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
/**
@@ -23,7 +23,7 @@ import mage.filter.predicate.mageobject.AnotherPredicate;
*/
public final class StampedingHorncrest extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another Dinosaur");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Dinosaur");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/s/StensiaBanquet.java b/Mage.Sets/src/mage/cards/s/StensiaBanquet.java
index 85de9d43797..4b59c00f0e3 100644
--- a/Mage.Sets/src/mage/cards/s/StensiaBanquet.java
+++ b/Mage.Sets/src/mage/cards/s/StensiaBanquet.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -10,7 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetOpponentOrPlaneswalker;
/**
@@ -19,11 +18,7 @@ import mage.target.common.TargetOpponentOrPlaneswalker;
*/
public final class StensiaBanquet extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Vampires you control");
-
- static {
- filter.add(SubType.VAMPIRE.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.VAMPIRE, "Vampires you control");
public StensiaBanquet(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
diff --git a/Mage.Sets/src/mage/cards/s/StinkdrinkerBandit.java b/Mage.Sets/src/mage/cards/s/StinkdrinkerBandit.java
index 1a213fca9f0..62e8b552c20 100644
--- a/Mage.Sets/src/mage/cards/s/StinkdrinkerBandit.java
+++ b/Mage.Sets/src/mage/cards/s/StinkdrinkerBandit.java
@@ -10,7 +10,6 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
@@ -24,12 +23,6 @@ import java.util.UUID;
*/
public final class StinkdrinkerBandit extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Rogue");
-
- static {
- filter.add(SubType.ROGUE.getPredicate());
- }
-
public StinkdrinkerBandit(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
this.subtype.add(SubType.GOBLIN);
diff --git a/Mage.Sets/src/mage/cards/s/StoicAngel.java b/Mage.Sets/src/mage/cards/s/StoicAngel.java
index 6d9d8df0a5a..8f07538efa1 100644
--- a/Mage.Sets/src/mage/cards/s/StoicAngel.java
+++ b/Mage.Sets/src/mage/cards/s/StoicAngel.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -14,8 +13,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.common.FilterControlledPermanent;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.players.Player;
@@ -52,10 +50,8 @@ public final class StoicAngel extends CardImpl {
class StoicAngelEffect extends RestrictionUntapNotMoreThanEffect {
- private static final FilterControlledPermanent filter = new FilterControlledCreaturePermanent();
-
- public StoicAngelEffect() {
- super(Duration.WhileOnBattlefield, 1, filter);
+ StoicAngelEffect() {
+ super(Duration.WhileOnBattlefield, 1, StaticFilters.FILTER_CONTROLLED_CREATURE);
staticText = "Players can't untap more than one creature during their untap steps";
}
diff --git a/Mage.Sets/src/mage/cards/s/Stonecloaker.java b/Mage.Sets/src/mage/cards/s/Stonecloaker.java
index e6adafafbb6..97f46386645 100644
--- a/Mage.Sets/src/mage/cards/s/Stonecloaker.java
+++ b/Mage.Sets/src/mage/cards/s/Stonecloaker.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -13,7 +12,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.target.common.TargetCardInGraveyard;
/**
@@ -34,7 +33,7 @@ public final class Stonecloaker extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
// When Stonecloaker enters the battlefield, return a creature you control to its owner's hand.
- Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandChosenControlledPermanentEffect(new FilterControlledCreaturePermanent()), false);
+ Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandChosenControlledPermanentEffect(StaticFilters.FILTER_CONTROLLED_CREATURE), false);
this.addAbility(ability);
// When Stonecloaker enters the battlefield, exile target card from a graveyard.
diff --git a/Mage.Sets/src/mage/cards/s/StoneforgeAcolyte.java b/Mage.Sets/src/mage/cards/s/StoneforgeAcolyte.java
index 4077566f2b6..bea6e937265 100644
--- a/Mage.Sets/src/mage/cards/s/StoneforgeAcolyte.java
+++ b/Mage.Sets/src/mage/cards/s/StoneforgeAcolyte.java
@@ -1,23 +1,16 @@
-
package mage.cards.s;
-import java.util.UUID;
import mage.MageInt;
-import mage.abilities.Ability;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.costs.common.TapTargetCost;
+import mage.abilities.abilityword.CohortAbility;
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.AbilityWord;
import mage.constants.CardType;
import mage.constants.PutCards;
import mage.constants.SubType;
import mage.filter.FilterCard;
-import mage.filter.common.FilterControlledPermanent;
-import mage.filter.predicate.permanent.TappedPredicate;
-import mage.target.common.TargetControlledPermanent;
+
+import java.util.UUID;
/**
*
@@ -25,12 +18,9 @@ import mage.target.common.TargetControlledPermanent;
*/
public final class StoneforgeAcolyte extends CardImpl {
- private static final FilterControlledPermanent filterAlly = new FilterControlledPermanent("an untapped Ally you control");
private static final FilterCard filterEquipment = new FilterCard("an Equipment card");
static {
- filterAlly.add(SubType.ALLY.getPredicate());
- filterAlly.add(TappedPredicate.UNTAPPED);
filterEquipment.add(SubType.EQUIPMENT.getPredicate());
}
@@ -44,12 +34,9 @@ public final class StoneforgeAcolyte extends CardImpl {
// Cohort — {T}, Tap an untapped Ally you control: Look at the top four cards of your library.
// You may reveal an Equipment card from among them and put it into your hand. Put the rest on the bottom of your library in any order.
- Ability ability = new SimpleActivatedAbility(
- new LookLibraryAndPickControllerEffect(4, 1, filterEquipment, PutCards.HAND, PutCards.BOTTOM_ANY),
- new TapSourceCost());
- ability.addCost(new TapTargetCost(new TargetControlledPermanent(filterAlly)));
- ability.setAbilityWord(AbilityWord.COHORT);
- this.addAbility(ability);
+ this.addAbility(new CohortAbility(new LookLibraryAndPickControllerEffect(
+ 4, 1, filterEquipment, PutCards.HAND, PutCards.BOTTOM_ANY
+ )));
}
private StoneforgeAcolyte(final StoneforgeAcolyte card) {
diff --git a/Mage.Sets/src/mage/cards/s/StormSculptor.java b/Mage.Sets/src/mage/cards/s/StormSculptor.java
index 70a180b3249..66eb5be3b27 100644
--- a/Mage.Sets/src/mage/cards/s/StormSculptor.java
+++ b/Mage.Sets/src/mage/cards/s/StormSculptor.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -10,7 +9,7 @@ import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -30,7 +29,7 @@ public final class StormSculptor extends CardImpl {
this.addAbility(new CantBeBlockedSourceAbility());
// When Storm Sculptor enters the battlefield, return a creature you control to its owner's hand.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new ReturnToHandChosenControlledPermanentEffect(new FilterControlledCreaturePermanent())));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new ReturnToHandChosenControlledPermanentEffect(StaticFilters.FILTER_CONTROLLED_CREATURE)));
}
private StormSculptor(final StormSculptor card) {
diff --git a/Mage.Sets/src/mage/cards/s/StrengthOfThePack.java b/Mage.Sets/src/mage/cards/s/StrengthOfThePack.java
index a47c7ba6c1f..6dd049b5d83 100644
--- a/Mage.Sets/src/mage/cards/s/StrengthOfThePack.java
+++ b/Mage.Sets/src/mage/cards/s/StrengthOfThePack.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -7,7 +6,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -19,7 +18,7 @@ public final class StrengthOfThePack extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{G}{G}");
// Put two +1/+1 counters on each creature you control.
- this.getSpellAbility().addEffect(new AddCountersAllEffect(CounterType.P1P1.createInstance(2), new FilterControlledCreaturePermanent()));
+ this.getSpellAbility().addEffect(new AddCountersAllEffect(CounterType.P1P1.createInstance(2), StaticFilters.FILTER_CONTROLLED_CREATURE));
}
private StrengthOfThePack(final StrengthOfThePack card) {
@@ -30,4 +29,4 @@ public final class StrengthOfThePack extends CardImpl {
public StrengthOfThePack copy() {
return new StrengthOfThePack(this);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/s/SunCrestedPterodon.java b/Mage.Sets/src/mage/cards/s/SunCrestedPterodon.java
index 6b485352234..1da9c7472ba 100644
--- a/Mage.Sets/src/mage/cards/s/SunCrestedPterodon.java
+++ b/Mage.Sets/src/mage/cards/s/SunCrestedPterodon.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -18,7 +17,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
/**
@@ -26,7 +25,7 @@ import mage.filter.predicate.mageobject.AnotherPredicate;
*/
public final class SunCrestedPterodon extends CardImpl {
- private static final FilterControlledCreaturePermanent filterAnotherDino = new FilterControlledCreaturePermanent();
+ private static final FilterControlledPermanent filterAnotherDino = new FilterControlledPermanent();
static {
filterAnotherDino.add(AnotherPredicate.instance);
filterAnotherDino.add(SubType.DINOSAUR.getPredicate());
@@ -60,4 +59,4 @@ public final class SunCrestedPterodon extends CardImpl {
public SunCrestedPterodon copy() {
return new SunCrestedPterodon(this);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/s/SunkenHope.java b/Mage.Sets/src/mage/cards/s/SunkenHope.java
index afff233a8bc..d0b88ed6ed0 100644
--- a/Mage.Sets/src/mage/cards/s/SunkenHope.java
+++ b/Mage.Sets/src/mage/cards/s/SunkenHope.java
@@ -10,12 +10,11 @@ import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.Target;
-import mage.target.common.TargetControlledPermanent;
+import mage.target.common.TargetControlledCreaturePermanent;
/**
*
@@ -65,7 +64,7 @@ class SunkenHopeReturnToHandEffect extends OneShotEffect {
return false;
}
- Target target = new TargetControlledPermanent(1, 1, new FilterControlledCreaturePermanent(), true);
+ Target target = new TargetControlledCreaturePermanent().withNotTarget(true);
if (target.canChoose(player.getId(), source, game)) {
while (player.canRespond() && !target.isChosen()
&& target.canChoose(player.getId(), source, game)) {
diff --git a/Mage.Sets/src/mage/cards/s/SwarmOfRats.java b/Mage.Sets/src/mage/cards/s/SwarmOfRats.java
index c50b65612f6..0e79c67a5e0 100644
--- a/Mage.Sets/src/mage/cards/s/SwarmOfRats.java
+++ b/Mage.Sets/src/mage/cards/s/SwarmOfRats.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -11,7 +10,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
/**
*
@@ -19,11 +18,7 @@ import mage.filter.common.FilterControlledCreaturePermanent;
*/
public final class SwarmOfRats extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Rats you control");
-
- static{
- filter.add(SubType.RAT.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.RAT, "Rats you control");
public SwarmOfRats(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
diff --git a/Mage.Sets/src/mage/cards/s/SyggRiverGuide.java b/Mage.Sets/src/mage/cards/s/SyggRiverGuide.java
index 697f502b183..cf3651929ec 100644
--- a/Mage.Sets/src/mage/cards/s/SyggRiverGuide.java
+++ b/Mage.Sets/src/mage/cards/s/SyggRiverGuide.java
@@ -1,4 +1,3 @@
-
package mage.cards.s;
import java.util.UUID;
@@ -11,9 +10,8 @@ import mage.abilities.keyword.IslandwalkAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.target.Target;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
+import mage.target.common.TargetControlledPermanent;
/**
*
@@ -21,11 +19,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class SyggRiverGuide extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Merfolk you control");
-
- static {
- filter.add(SubType.MERFOLK.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.MERFOLK, "Merfolk you control");
public SyggRiverGuide(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}");
@@ -40,8 +34,7 @@ public final class SyggRiverGuide extends CardImpl {
this.addAbility(new IslandwalkAbility());
// {1}{W}: Target Merfolk you control gains protection from the color of your choice until end of turn.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainProtectionFromColorTargetEffect(Duration.EndOfTurn), new ManaCostsImpl<>("{1}{W}"));
- Target target = new TargetControlledCreaturePermanent(1,1,filter, false);
- ability.addTarget(target);
+ ability.addTarget(new TargetControlledPermanent(filter));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/t/TakenoSamuraiGeneral.java b/Mage.Sets/src/mage/cards/t/TakenoSamuraiGeneral.java
index 9aadee1ce13..bec07c36b24 100644
--- a/Mage.Sets/src/mage/cards/t/TakenoSamuraiGeneral.java
+++ b/Mage.Sets/src/mage/cards/t/TakenoSamuraiGeneral.java
@@ -1,5 +1,3 @@
-
-
package mage.cards.t;
import java.util.Iterator;
@@ -47,13 +45,14 @@ public final class TakenoSamuraiGeneral extends CardImpl {
}
class TakenoSamuraiGeneralEffect extends ContinuousEffectImpl {
+
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
static {
filter.add(SubType.SAMURAI.getPredicate());
}
- public TakenoSamuraiGeneralEffect() {
+ TakenoSamuraiGeneralEffect() {
super(Duration.WhileOnBattlefield, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.BoostCreature);
staticText = "Each other Samurai creature you control gets +1/+1 for each point of bushido it has";
}
diff --git a/Mage.Sets/src/mage/cards/t/TarPitcher.java b/Mage.Sets/src/mage/cards/t/TarPitcher.java
index d48bf240c71..c2404286e2a 100644
--- a/Mage.Sets/src/mage/cards/t/TarPitcher.java
+++ b/Mage.Sets/src/mage/cards/t/TarPitcher.java
@@ -1,4 +1,3 @@
-
package mage.cards.t;
import java.util.UUID;
@@ -13,8 +12,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetAnyTarget;
/**
@@ -23,11 +21,7 @@ import mage.target.common.TargetAnyTarget;
*/
public final class TarPitcher extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Goblin");
-
- static {
- filter.add(SubType.GOBLIN.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.GOBLIN, "Goblin");
public TarPitcher(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
diff --git a/Mage.Sets/src/mage/cards/t/TasteOfDeath.java b/Mage.Sets/src/mage/cards/t/TasteOfDeath.java
index 21cb865cc0f..001c7214a83 100644
--- a/Mage.Sets/src/mage/cards/t/TasteOfDeath.java
+++ b/Mage.Sets/src/mage/cards/t/TasteOfDeath.java
@@ -5,8 +5,7 @@ import mage.abilities.effects.common.SacrificeAllEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.common.FilterControlledPermanent;
+import mage.filter.StaticFilters;
import mage.game.permanent.token.FoodToken;
import java.util.UUID;
@@ -16,13 +15,11 @@ import java.util.UUID;
*/
public final class TasteOfDeath extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledCreaturePermanent("creatures");
-
public TasteOfDeath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{B}{B}");
// Each player sacrifices three creatures. You create three Food tokens.
- this.getSpellAbility().addEffect(new SacrificeAllEffect(3, filter));
+ this.getSpellAbility().addEffect(new SacrificeAllEffect(3, StaticFilters.FILTER_PERMANENT_CREATURES));
this.getSpellAbility().addEffect(new CreateTokenEffect(new FoodToken(), 3).concatBy("You"));
}
diff --git a/Mage.Sets/src/mage/cards/t/Tenacity.java b/Mage.Sets/src/mage/cards/t/Tenacity.java
index 13cd203e867..cf517daa8e3 100644
--- a/Mage.Sets/src/mage/cards/t/Tenacity.java
+++ b/Mage.Sets/src/mage/cards/t/Tenacity.java
@@ -1,4 +1,3 @@
-
package mage.cards.t;
import java.util.UUID;
@@ -12,7 +11,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.filter.StaticFilters;
-import mage.filter.common.FilterControlledCreaturePermanent;
/**
*
@@ -27,7 +25,7 @@ public final class Tenacity extends CardImpl {
Effect boost = new BoostControlledEffect(1, 1, Duration.EndOfTurn);
boost.setText("Creatures you control get +1/+1");
this.getSpellAbility().addEffect(boost);
- this.getSpellAbility().addEffect(new GainAbilityAllEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent(), " and gain lifelink until end of turn"));
+ this.getSpellAbility().addEffect(new GainAbilityAllEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURES, " and gain lifelink until end of turn"));
this.getSpellAbility().addEffect(new UntapAllControllerEffect(StaticFilters.FILTER_PERMANENT_CREATURE, "Untap those creatures"));
}
diff --git a/Mage.Sets/src/mage/cards/t/ThallidDevourer.java b/Mage.Sets/src/mage/cards/t/ThallidDevourer.java
index 0f727aa27b4..74c848cfb7d 100644
--- a/Mage.Sets/src/mage/cards/t/ThallidDevourer.java
+++ b/Mage.Sets/src/mage/cards/t/ThallidDevourer.java
@@ -14,9 +14,8 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.SaprolingToken;
-import mage.target.common.TargetControlledCreaturePermanent;
/**
*
@@ -24,10 +23,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class ThallidDevourer extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Saproling");
- static {
- filter.add(SubType.SAPROLING.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.SAPROLING, "Saproling");
public ThallidDevourer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/ThallidGerminator.java b/Mage.Sets/src/mage/cards/t/ThallidGerminator.java
index 6e19f3d1a5f..d4cdcd42b43 100644
--- a/Mage.Sets/src/mage/cards/t/ThallidGerminator.java
+++ b/Mage.Sets/src/mage/cards/t/ThallidGerminator.java
@@ -15,9 +15,8 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.SaprolingToken;
-import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetCreaturePermanent;
/**
@@ -26,10 +25,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class ThallidGerminator extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Saproling");
- static {
- filter.add(SubType.SAPROLING.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.SAPROLING, "Saproling");
public ThallidGerminator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
diff --git a/Mage.Sets/src/mage/cards/t/TheBattleOfEndor.java b/Mage.Sets/src/mage/cards/t/TheBattleOfEndor.java
index b37834b4724..a297e52f374 100644
--- a/Mage.Sets/src/mage/cards/t/TheBattleOfEndor.java
+++ b/Mage.Sets/src/mage/cards/t/TheBattleOfEndor.java
@@ -1,4 +1,3 @@
-
package mage.cards.t;
import java.util.UUID;
@@ -16,6 +15,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.counters.CounterType;
+import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
@@ -38,10 +38,10 @@ public final class TheBattleOfEndor extends CardImpl {
this.getSpellAbility().addEffect(new TheBattleOfEndorEffect());
// Creatures you control gain trample and haste until end of turn.
- Effect effect = new GainAbilityAllEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent());
+ Effect effect = new GainAbilityAllEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURES);
effect.setText("Creatures you control gain trample");
this.getSpellAbility().addEffect(effect);
- effect = new GainAbilityAllEffect(HasteAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent());
+ effect = new GainAbilityAllEffect(HasteAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURES);
effect.setText("and haste until end of turn");
this.getSpellAbility().addEffect(effect);
diff --git a/Mage.Sets/src/mage/cards/t/TheScarabGod.java b/Mage.Sets/src/mage/cards/t/TheScarabGod.java
index 5f86b7d719a..424d2b2dd6c 100644
--- a/Mage.Sets/src/mage/cards/t/TheScarabGod.java
+++ b/Mage.Sets/src/mage/cards/t/TheScarabGod.java
@@ -1,7 +1,5 @@
-
package mage.cards.t;
-import java.util.UUID;
import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.Ability;
@@ -22,27 +20,23 @@ import mage.abilities.hint.ValueHint;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.CardType;
-import mage.constants.Outcome;
-import mage.constants.SubType;
-import mage.constants.SuperType;
-import mage.constants.TargetController;
-import mage.constants.Zone;
+import mage.constants.*;
import mage.filter.StaticFilters;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.common.FilterCreatureCard;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.Game;
import mage.players.Player;
import mage.target.common.TargetCardInGraveyard;
import mage.target.targetpointer.FixedTarget;
+import java.util.UUID;
+
/**
*
* @author spjspj
*/
public final class TheScarabGod extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.ZOMBIE, "Zombies you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.ZOMBIE, "Zombies you control");
private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter, null);
private static final Hint hint = new ValueHint(
"Number of Zombies you control", xValue
diff --git a/Mage.Sets/src/mage/cards/t/ThopterSquadron.java b/Mage.Sets/src/mage/cards/t/ThopterSquadron.java
index 1a5934274b9..5aa1af6ac9c 100644
--- a/Mage.Sets/src/mage/cards/t/ThopterSquadron.java
+++ b/Mage.Sets/src/mage/cards/t/ThopterSquadron.java
@@ -19,10 +19,9 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.permanent.token.ThopterColorlessToken;
-import mage.target.common.TargetControlledPermanent;
/**
*
@@ -30,7 +29,7 @@ import mage.target.common.TargetControlledPermanent;
*/
public final class ThopterSquadron extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another Thopter");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Thopter");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/t/ThrashOfRaptors.java b/Mage.Sets/src/mage/cards/t/ThrashOfRaptors.java
index ae96a235cf3..7f17f17e714 100644
--- a/Mage.Sets/src/mage/cards/t/ThrashOfRaptors.java
+++ b/Mage.Sets/src/mage/cards/t/ThrashOfRaptors.java
@@ -16,7 +16,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
/**
@@ -25,7 +25,7 @@ import mage.filter.predicate.mageobject.AnotherPredicate;
*/
public final class ThrashOfRaptors extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another Dinosaur");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Dinosaur");
static {
filter.add(SubType.DINOSAUR.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/t/ThunderfootBaloth.java b/Mage.Sets/src/mage/cards/t/ThunderfootBaloth.java
index 0afc08566ff..e14ba8b37cd 100644
--- a/Mage.Sets/src/mage/cards/t/ThunderfootBaloth.java
+++ b/Mage.Sets/src/mage/cards/t/ThunderfootBaloth.java
@@ -14,7 +14,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -37,7 +37,7 @@ public final class ThunderfootBaloth extends CardImpl {
Effect effect = new BoostControlledEffect(2, 2, Duration.WhileOnBattlefield, true);
effect.setText("and other creatures you control get +2/+2");
effects.add(effect);
- effect = new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield, new FilterControlledCreaturePermanent(), true);
+ effect = new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_CONTROLLED_CREATURES, true);
effect.setText("and have trample");
effects.add(effect);
this.addAbility(new LieutenantAbility(effects));
diff --git a/Mage.Sets/src/mage/cards/t/ToArms.java b/Mage.Sets/src/mage/cards/t/ToArms.java
index c7d6ec43556..5a7d7e996c0 100644
--- a/Mage.Sets/src/mage/cards/t/ToArms.java
+++ b/Mage.Sets/src/mage/cards/t/ToArms.java
@@ -8,7 +8,7 @@ import mage.abilities.effects.common.UntapAllControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -23,7 +23,7 @@ public final class ToArms extends CardImpl {
// Untap all creatures you control.
- Effect effect = new UntapAllControllerEffect(new FilterControlledCreaturePermanent(), rule);
+ Effect effect = new UntapAllControllerEffect(StaticFilters.FILTER_CONTROLLED_CREATURES, rule);
this.getSpellAbility().addEffect(effect);
// Draw a card.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
"));
diff --git a/Mage.Sets/src/mage/cards/t/TourachsGate.java b/Mage.Sets/src/mage/cards/t/TourachsGate.java
index 1978b0f5519..25230a8a1e6 100644
--- a/Mage.Sets/src/mage/cards/t/TourachsGate.java
+++ b/Mage.Sets/src/mage/cards/t/TourachsGate.java
@@ -1,4 +1,3 @@
-
package mage.cards.t;
import java.util.UUID;
@@ -26,14 +25,12 @@ import mage.constants.Zone;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent;
-import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.AttackingPredicate;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.TargetPermanent;
-import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetControlledPermanent;
/**
@@ -58,10 +55,7 @@ public final class TourachsGate extends CardImpl {
filterAttackingCreatures.add(TargetController.YOU.getControllerPredicate());
}
- private static final FilterControlledCreaturePermanent filterThrull = new FilterControlledCreaturePermanent("a Thrull");
- static {
- filterThrull.add(SubType.THRULL.getPredicate());
- }
+ private static final FilterControlledPermanent filterThrull = new FilterControlledPermanent(SubType.THRULL, "a Thrull");
public TourachsGate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}{B}");
diff --git a/Mage.Sets/src/mage/cards/t/TrailOfMystery.java b/Mage.Sets/src/mage/cards/t/TrailOfMystery.java
index 84a751c47b2..2aaa9a498a7 100644
--- a/Mage.Sets/src/mage/cards/t/TrailOfMystery.java
+++ b/Mage.Sets/src/mage/cards/t/TrailOfMystery.java
@@ -1,4 +1,3 @@
-
package mage.cards.t;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
@@ -52,7 +51,7 @@ public final class TrailOfMystery extends CardImpl {
class TrailOfMysteryTriggeredAbility extends TurnedFaceUpAllTriggeredAbility {
- public TrailOfMysteryTriggeredAbility() {
+ TrailOfMysteryTriggeredAbility() {
super(new BoostTargetEffect(2, 2, Duration.EndOfTurn), new FilterControlledCreaturePermanent(), true);
}
diff --git a/Mage.Sets/src/mage/cards/u/UrtetRemnantOfMemnarch.java b/Mage.Sets/src/mage/cards/u/UrtetRemnantOfMemnarch.java
index 7f27c3958ed..ae8c8df9f6a 100644
--- a/Mage.Sets/src/mage/cards/u/UrtetRemnantOfMemnarch.java
+++ b/Mage.Sets/src/mage/cards/u/UrtetRemnantOfMemnarch.java
@@ -17,7 +17,7 @@ import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
import mage.filter.FilterSpell;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.MyrToken;
import java.util.UUID;
@@ -28,7 +28,7 @@ import java.util.UUID;
public final class UrtetRemnantOfMemnarch extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a Myr spell");
- private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent(SubType.MYR);
+ private static final FilterControlledPermanent filter2 = new FilterControlledPermanent(SubType.MYR);
static {
filter.add(SubType.MYR.getPredicate());
diff --git a/Mage.Sets/src/mage/cards/u/UtopiaMycon.java b/Mage.Sets/src/mage/cards/u/UtopiaMycon.java
index 57e5e5efacb..f5a7c3d2184 100644
--- a/Mage.Sets/src/mage/cards/u/UtopiaMycon.java
+++ b/Mage.Sets/src/mage/cards/u/UtopiaMycon.java
@@ -16,9 +16,8 @@ import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.SaprolingToken;
-import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
@@ -28,11 +27,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
*/
public final class UtopiaMycon extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Saproling");
-
- static {
- filter.add(SubType.SAPROLING.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.SAPROLING, "Saproling");
public UtopiaMycon(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VillageReavers.java b/Mage.Sets/src/mage/cards/v/VillageReavers.java
index ccdf2918732..632bcfddb62 100644
--- a/Mage.Sets/src/mage/cards/v/VillageReavers.java
+++ b/Mage.Sets/src/mage/cards/v/VillageReavers.java
@@ -11,7 +11,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.Predicates;
import java.util.UUID;
@@ -21,7 +21,7 @@ import java.util.UUID;
*/
public final class VillageReavers extends CardImpl {
- private static final FilterPermanent filter = new FilterControlledCreaturePermanent("Wolves and Werewolves");
+ private static final FilterPermanent filter = new FilterControlledPermanent("Wolves and Werewolves");
static {
filter.add(Predicates.or(
diff --git a/Mage.Sets/src/mage/cards/v/VitasporeThallid.java b/Mage.Sets/src/mage/cards/v/VitasporeThallid.java
index 2b382dfe69d..829a62c7c47 100644
--- a/Mage.Sets/src/mage/cards/v/VitasporeThallid.java
+++ b/Mage.Sets/src/mage/cards/v/VitasporeThallid.java
@@ -16,9 +16,8 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.SaprolingToken;
-import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetCreaturePermanent;
/**
@@ -27,10 +26,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public final class VitasporeThallid extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Saproling");
- static {
- filter.add(SubType.SAPROLING.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.SAPROLING, "Saproling");
public VitasporeThallid(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
diff --git a/Mage.Sets/src/mage/cards/v/VodalianWarMachine.java b/Mage.Sets/src/mage/cards/v/VodalianWarMachine.java
index f0264399c5f..fe4ab8aad6e 100644
--- a/Mage.Sets/src/mage/cards/v/VodalianWarMachine.java
+++ b/Mage.Sets/src/mage/cards/v/VodalianWarMachine.java
@@ -1,4 +1,3 @@
-
package mage.cards.v;
import mage.MageInt;
@@ -15,14 +14,14 @@ import mage.abilities.keyword.DefenderAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.FilterPermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.game.stack.StackAbility;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.target.common.TargetControlledPermanent;
import mage.watchers.Watcher;
import java.util.*;
@@ -32,7 +31,7 @@ import java.util.*;
*/
public final class VodalianWarMachine extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Merfolk you control");
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Merfolk you control");
static {
filter.add(TappedPredicate.UNTAPPED);
@@ -49,11 +48,11 @@ public final class VodalianWarMachine extends CardImpl {
this.addAbility(DefenderAbility.getInstance());
// Tap an untapped Merfolk you control: Vodalian War Machine can attack this turn as though it didn't have defender.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CanAttackAsThoughItDidntHaveDefenderSourceEffect(Duration.EndOfTurn), new TapTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, true)));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CanAttackAsThoughItDidntHaveDefenderSourceEffect(Duration.EndOfTurn), new TapTargetCost(new TargetControlledPermanent(1, 1, filter, true)));
this.addAbility(ability);
// Tap an untapped Merfolk you control: Vodalian War Machine gets +2/+1 until end of turn.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 1, Duration.EndOfTurn), new TapTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, true))));
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 1, Duration.EndOfTurn), new TapTargetCost(new TargetControlledPermanent(1, 1, filter, true))));
// When Vodalian War Machine dies, destroy all Merfolk tapped this turn to pay for its abilities.
this.addAbility(new DiesSourceTriggeredAbility(new VodalianWarMachineEffect()), new VodalianWarMachineWatcher());
@@ -71,13 +70,13 @@ public final class VodalianWarMachine extends CardImpl {
class VodalianWarMachineEffect extends OneShotEffect {
- private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Merfolk tapped this turn to pay for its abilities");
+ private static final FilterPermanent filter = new FilterPermanent("Merfolk tapped this turn to pay for its abilities");
static {
filter.add(SubType.MERFOLK.getPredicate());
}
- public VodalianWarMachineEffect() {
+ VodalianWarMachineEffect() {
super(Outcome.Detriment);
staticText = "destroy all " + filter.getMessage();
}
@@ -112,13 +111,13 @@ class VodalianWarMachineEffect extends OneShotEffect {
class VodalianWarMachineWatcher extends Watcher {
- private Map> tappedMerfolkIds = new HashMap<>();
+ private final Map> tappedMerfolkIds = new HashMap<>();
- public VodalianWarMachineWatcher() {
+ VodalianWarMachineWatcher() {
super(WatcherScope.GAME);
}
- public Set getTappedMerfolkIds(Permanent permanent, Game game) {
+ Set getTappedMerfolkIds(Permanent permanent, Game game) {
return tappedMerfolkIds.get(new MageObjectReference(permanent, game));
}
diff --git a/Mage.Sets/src/mage/cards/v/VoidmageProdigy.java b/Mage.Sets/src/mage/cards/v/VoidmageProdigy.java
index 8dc6f028a0c..72fa850bba4 100644
--- a/Mage.Sets/src/mage/cards/v/VoidmageProdigy.java
+++ b/Mage.Sets/src/mage/cards/v/VoidmageProdigy.java
@@ -1,4 +1,3 @@
-
package mage.cards.v;
import java.util.UUID;
@@ -14,10 +13,9 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.target.Target;
import mage.target.TargetSpell;
-import mage.target.common.TargetControlledCreaturePermanent;
/**
*
@@ -25,11 +23,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class VoidmageProdigy extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Wizard");
-
- static {
- filter.add(SubType.WIZARD.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.WIZARD, "a Wizard");
public VoidmageProdigy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{U}");
diff --git a/Mage.Sets/src/mage/cards/v/VoraciousVampire.java b/Mage.Sets/src/mage/cards/v/VoraciousVampire.java
index d680395895a..30b2e887ba3 100644
--- a/Mage.Sets/src/mage/cards/v/VoraciousVampire.java
+++ b/Mage.Sets/src/mage/cards/v/VoraciousVampire.java
@@ -1,7 +1,5 @@
-
package mage.cards.v;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@@ -14,8 +12,10 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
+import mage.target.TargetPermanent;
+
+import java.util.UUID;
/**
*
@@ -23,6 +23,8 @@ import mage.target.common.TargetControlledCreaturePermanent;
*/
public final class VoraciousVampire extends CardImpl {
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.VAMPIRE, "Vampire you control");
+
public VoraciousVampire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
@@ -40,7 +42,7 @@ public final class VoraciousVampire extends CardImpl {
Effect effect = new GainAbilityTargetEffect(new MenaceAbility(), Duration.EndOfTurn);
effect.setText("and gains menace until end of turn.");
ability.addEffect(effect);
- ability.addTarget(new TargetControlledCreaturePermanent(new FilterControlledCreaturePermanent(SubType.VAMPIRE, "Vampire you control")));
+ ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/w/WailOfTheNim.java b/Mage.Sets/src/mage/cards/w/WailOfTheNim.java
index 9fab248aff3..2e701630794 100644
--- a/Mage.Sets/src/mage/cards/w/WailOfTheNim.java
+++ b/Mage.Sets/src/mage/cards/w/WailOfTheNim.java
@@ -1,4 +1,3 @@
-
package mage.cards.w;
import java.util.UUID;
@@ -9,7 +8,7 @@ import mage.abilities.keyword.EntwineAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -21,7 +20,7 @@ public final class WailOfTheNim extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{B}");
// Choose one - Regenerate each creature you control;
- this.getSpellAbility().addEffect(new RegenerateAllEffect(new FilterControlledCreaturePermanent()));
+ this.getSpellAbility().addEffect(new RegenerateAllEffect(StaticFilters.FILTER_CONTROLLED_CREATURE));
// or Wail of the Nim deals 1 damage to each creature and each player.
Mode mode = new Mode(new DamageEverythingEffect(1));
diff --git a/Mage.Sets/src/mage/cards/w/WalkerOfSecretWays.java b/Mage.Sets/src/mage/cards/w/WalkerOfSecretWays.java
index 8a333832269..64e85962af2 100644
--- a/Mage.Sets/src/mage/cards/w/WalkerOfSecretWays.java
+++ b/Mage.Sets/src/mage/cards/w/WalkerOfSecretWays.java
@@ -16,10 +16,10 @@ import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.Game;
import mage.players.Player;
-import mage.target.common.TargetControlledCreaturePermanent;
+import mage.target.common.TargetControlledPermanent;
import java.util.UUID;
@@ -28,11 +28,7 @@ import java.util.UUID;
*/
public final class WalkerOfSecretWays extends CardImpl {
- private static final FilterControlledCreaturePermanent filterCreature = new FilterControlledCreaturePermanent("Ninja you control");
-
- static {
- filterCreature.add((SubType.NINJA.getPredicate()));
- }
+ private static final FilterControlledPermanent filterCreature = new FilterControlledPermanent(SubType.NINJA, "Ninja you control");
public WalkerOfSecretWays(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
@@ -50,7 +46,7 @@ public final class WalkerOfSecretWays extends CardImpl {
// {1}{U}: Return target Ninja you control to its owner's hand. Activate this ability only during your turn.
Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandTargetEffect(), new ManaCostsImpl<>("{1}{U}"), MyTurnCondition.instance);
- ability.addTarget(new TargetControlledCreaturePermanent(1, 1, filterCreature, false));
+ ability.addTarget(new TargetControlledPermanent(filterCreature));
ability.addHint(MyTurnHint.instance);
this.addAbility(ability);
@@ -92,4 +88,4 @@ class WalkerOfSecretWaysEffect extends OneShotEffect {
return new WalkerOfSecretWaysEffect(this);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/cards/w/WhitemaneLion.java b/Mage.Sets/src/mage/cards/w/WhitemaneLion.java
index 31e50eafa14..3e112357faa 100644
--- a/Mage.Sets/src/mage/cards/w/WhitemaneLion.java
+++ b/Mage.Sets/src/mage/cards/w/WhitemaneLion.java
@@ -10,7 +10,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -28,7 +28,7 @@ public final class WhitemaneLion extends CardImpl {
// Flash
this.addAbility(FlashAbility.getInstance());
// When Whitemane Lion enters the battlefield, return a creature you control to its owner's hand.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new ReturnToHandChosenControlledPermanentEffect(new FilterControlledCreaturePermanent())));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new ReturnToHandChosenControlledPermanentEffect(StaticFilters.FILTER_CONTROLLED_CREATURE)));
}
diff --git a/Mage.Sets/src/mage/cards/w/WrapInVigor.java b/Mage.Sets/src/mage/cards/w/WrapInVigor.java
index 5bc7cbd5778..7d9ad11fe8d 100644
--- a/Mage.Sets/src/mage/cards/w/WrapInVigor.java
+++ b/Mage.Sets/src/mage/cards/w/WrapInVigor.java
@@ -1,4 +1,3 @@
-
package mage.cards.w;
import java.util.UUID;
@@ -6,7 +5,7 @@ import mage.abilities.effects.common.RegenerateAllEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.StaticFilters;
/**
*
@@ -18,7 +17,7 @@ public final class WrapInVigor extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
// Regenerate each creature you control.
- this.getSpellAbility().addEffect(new RegenerateAllEffect(new FilterControlledCreaturePermanent()));
+ this.getSpellAbility().addEffect(new RegenerateAllEffect(StaticFilters.FILTER_CONTROLLED_CREATURE));
}
private WrapInVigor(final WrapInVigor card) {
diff --git a/Mage.Sets/src/mage/cards/z/ZadasCommando.java b/Mage.Sets/src/mage/cards/z/ZadasCommando.java
index 9b287129bc2..4b0b6183d7f 100644
--- a/Mage.Sets/src/mage/cards/z/ZadasCommando.java
+++ b/Mage.Sets/src/mage/cards/z/ZadasCommando.java
@@ -1,55 +1,36 @@
-
package mage.cards.z;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.costs.common.TapTargetCost;
+import mage.abilities.abilityword.CohortAbility;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.AbilityWord;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.constants.Zone;
-import mage.filter.common.FilterControlledPermanent;
-import mage.filter.predicate.permanent.TappedPredicate;
-import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetOpponentOrPlaneswalker;
+import java.util.UUID;
+
/**
*
* @author fireshoes
*/
public final class ZadasCommando extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Ally you control");
-
- static {
- filter.add(SubType.ALLY.getPredicate());
- filter.add(TappedPredicate.UNTAPPED);
- }
-
public ZadasCommando(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
this.subtype.add(SubType.GOBLIN, SubType.ARCHER, SubType.ALLY);
- //this.subtype.add(SubType.GOBLIN);
- //this.subtype.add(SubType.ARCHER);
- //this.subtype.add(SubType.ALLY);
this.power = new MageInt(2);
this.toughness = new MageInt(1);
- // First Strike
+ // First strike
this.addAbility(FirstStrikeAbility.getInstance());
// Cohort — {T}, Tap an untapped Ally you control: Zada's Commando deals 1 damage to target opponent.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost());
- ability.addCost(new TapTargetCost(new TargetControlledPermanent(filter)));
+ Ability ability = new CohortAbility(new DamageTargetEffect(1));
ability.addTarget(new TargetOpponentOrPlaneswalker());
- ability.setAbilityWord(AbilityWord.COHORT);
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/z/ZhalfirinLancer.java b/Mage.Sets/src/mage/cards/z/ZhalfirinLancer.java
index 2ad4681db46..b78a77b953a 100644
--- a/Mage.Sets/src/mage/cards/z/ZhalfirinLancer.java
+++ b/Mage.Sets/src/mage/cards/z/ZhalfirinLancer.java
@@ -12,7 +12,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.filter.FilterPermanent;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import java.util.UUID;
@@ -22,7 +22,7 @@ import java.util.UUID;
*/
public final class ZhalfirinLancer extends CardImpl {
- private static final FilterPermanent filter = new FilterControlledCreaturePermanent(SubType.KNIGHT, "another Knight");
+ private static final FilterPermanent filter = new FilterControlledPermanent(SubType.KNIGHT, "another Knight");
static {
filter.add(AnotherPredicate.instance);
diff --git a/Mage.Sets/src/mage/cards/z/ZopandrelHungerDominus.java b/Mage.Sets/src/mage/cards/z/ZopandrelHungerDominus.java
index 89b9f26897d..cb161239f8f 100644
--- a/Mage.Sets/src/mage/cards/z/ZopandrelHungerDominus.java
+++ b/Mage.Sets/src/mage/cards/z/ZopandrelHungerDominus.java
@@ -15,12 +15,11 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.counters.CounterType;
+import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
-import mage.target.common.TargetControlledPermanent;
-import mage.target.common.TargetSacrifice;
import mage.target.targetpointer.FixedTarget;
import java.util.UUID;
@@ -71,9 +70,7 @@ public final class ZopandrelHungerDominus extends CardImpl {
class ZopandrelHungerDominusEffect extends OneShotEffect {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
-
- public ZopandrelHungerDominusEffect() {
+ ZopandrelHungerDominusEffect() {
super(Outcome.BoostCreature);
staticText = "double the power and toughness of each creature you control until end of turn";
}
@@ -89,7 +86,7 @@ class ZopandrelHungerDominusEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) {
+ for (Permanent permanent : game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_CONTROLLED_CREATURE, source.getControllerId(), game)) {
ContinuousEffect effect = new BoostTargetEffect(permanent.getPower().getValue(), permanent.getToughness().getValue());
effect.setTargetPointer(new FixedTarget(permanent, game));
game.addEffect(effect, source);
diff --git a/Mage.Sets/src/mage/cards/z/ZulaportChainmage.java b/Mage.Sets/src/mage/cards/z/ZulaportChainmage.java
index 624f3c75e66..1b2582ac161 100644
--- a/Mage.Sets/src/mage/cards/z/ZulaportChainmage.java
+++ b/Mage.Sets/src/mage/cards/z/ZulaportChainmage.java
@@ -1,36 +1,23 @@
-
package mage.cards.z;
-import java.util.UUID;
import mage.MageInt;
-import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.costs.common.TapTargetCost;
+import mage.abilities.Ability;
+import mage.abilities.abilityword.CohortAbility;
import mage.abilities.effects.common.LoseLifeTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.AbilityWord;
import mage.constants.CardType;
import mage.constants.SubType;
-import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
-import mage.filter.predicate.permanent.TappedPredicate;
-import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetOpponent;
+import java.util.UUID;
+
/**
*
* @author LevelX2
*/
public final class ZulaportChainmage extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Ally you control");
-
- static {
- filter.add(SubType.ALLY.getPredicate());
- filter.add(TappedPredicate.UNTAPPED);
- }
-
public ZulaportChainmage(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
this.subtype.add(SubType.HUMAN, SubType.SHAMAN, SubType.ALLY);
@@ -38,11 +25,7 @@ public final class ZulaportChainmage extends CardImpl {
this.toughness = new MageInt(2);
// Cohort — {T}, Tap an untapped Ally you control: Target opponent loses 2 life.
- SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
- new LoseLifeTargetEffect(2),
- new TapSourceCost());
- ability.setAbilityWord(AbilityWord.COHORT);
- ability.addCost(new TapTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, false)));
+ Ability ability = new CohortAbility(new LoseLifeTargetEffect(2));
ability.addTarget(new TargetOpponent());
this.addAbility(ability);
}
diff --git a/Mage/src/main/java/mage/abilities/abilityword/CohortAbility.java b/Mage/src/main/java/mage/abilities/abilityword/CohortAbility.java
new file mode 100644
index 00000000000..d7da3354aef
--- /dev/null
+++ b/Mage/src/main/java/mage/abilities/abilityword/CohortAbility.java
@@ -0,0 +1,40 @@
+package mage.abilities.abilityword;
+
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.common.TapTargetCost;
+import mage.abilities.effects.Effect;
+import mage.constants.AbilityWord;
+import mage.constants.SubType;
+import mage.constants.Zone;
+import mage.filter.common.FilterControlledPermanent;
+import mage.filter.predicate.permanent.TappedPredicate;
+import mage.target.common.TargetControlledPermanent;
+
+/**
+ * @author xenohedron
+ */
+
+public class CohortAbility extends SimpleActivatedAbility {
+
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.ALLY, "an untapped Ally you control");
+
+ static {
+ filter.add(TappedPredicate.UNTAPPED);
+ }
+
+ public CohortAbility(Effect effect) {
+ super(Zone.BATTLEFIELD, effect, new TapSourceCost());
+ this.addCost(new TapTargetCost(new TargetControlledPermanent(filter)));
+ this.setAbilityWord(AbilityWord.COHORT);
+ }
+
+ protected CohortAbility(final CohortAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public CohortAbility copy() {
+ return new CohortAbility(this);
+ }
+}
diff --git a/Mage/src/main/java/mage/game/command/emblems/LilianaTheLastHopeEmblem.java b/Mage/src/main/java/mage/game/command/emblems/LilianaTheLastHopeEmblem.java
index d181d83719d..b968fee6d4c 100644
--- a/Mage/src/main/java/mage/game/command/emblems/LilianaTheLastHopeEmblem.java
+++ b/Mage/src/main/java/mage/game/command/emblems/LilianaTheLastHopeEmblem.java
@@ -8,7 +8,7 @@ import mage.abilities.effects.common.CreateTokenEffect;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.common.FilterControlledPermanent;
import mage.game.Game;
import mage.game.command.Emblem;
import mage.game.permanent.token.ZombieToken;
@@ -21,7 +21,7 @@ public final class LilianaTheLastHopeEmblem extends Emblem {
// "At the beginning of your end step, create X 2/2 black Zombie creature tokens, where X is two plus the number of Zombies you control."
public LilianaTheLastHopeEmblem() {
super("Emblem Liliana");
- Ability ability = new BeginningOfEndStepTriggeredAbility(Zone.COMMAND, new CreateTokenEffect(new ZombieToken(), new LilianaZombiesCount()),
+ Ability ability = new BeginningOfEndStepTriggeredAbility(Zone.COMMAND, new CreateTokenEffect(new ZombieToken(), LilianaZombiesCount.instance),
TargetController.YOU, null, false);
this.getAbilities().add(ability);
}
@@ -36,23 +36,19 @@ public final class LilianaTheLastHopeEmblem extends Emblem {
}
}
-class LilianaZombiesCount implements DynamicValue {
+enum LilianaZombiesCount implements DynamicValue {
+ instance;
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
-
- static {
- filter.add(SubType.ZOMBIE.getPredicate());
- }
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent(SubType.ZOMBIE);
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
- int amount = game.getBattlefield().countAll(filter, sourceAbility.getControllerId(), game) + 2;
- return amount;
+ return game.getBattlefield().countAll(filter, sourceAbility.getControllerId(), game) + 2;
}
@Override
public LilianaZombiesCount copy() {
- return new LilianaZombiesCount();
+ return this;
}
@Override