New StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL (#10577)

This commit is contained in:
xenohedron 2023-07-07 01:26:11 -04:00 committed by GitHub
parent e50f8b05c1
commit 063429b70a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
40 changed files with 89 additions and 397 deletions

View file

@ -10,8 +10,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
/** /**
* *
@ -19,12 +18,6 @@ import mage.filter.predicate.mageobject.AnotherPredicate;
*/ */
public final class AmbushKrotiq extends CardImpl { public final class AmbushKrotiq extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public AmbushKrotiq(UUID ownerId, CardSetInfo setInfo) { public AmbushKrotiq(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}"); super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}");
this.subtype.add(SubType.INSECT); this.subtype.add(SubType.INSECT);
@ -34,7 +27,7 @@ public final class AmbushKrotiq extends CardImpl {
// Trample // Trample
this.addAbility(TrampleAbility.getInstance()); this.addAbility(TrampleAbility.getInstance());
// When Ambush Krotiq enters the battlefield, return another creature you control to its owner's hand. // When Ambush Krotiq enters the battlefield, return another creature you control to its owner's hand.
this.addAbility(new EntersBattlefieldTriggeredAbility(new ReturnToHandChosenControlledPermanentEffect(filter))); this.addAbility(new EntersBattlefieldTriggeredAbility(new ReturnToHandChosenControlledPermanentEffect(StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL)));
} }

View file

@ -15,10 +15,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import java.util.UUID; import java.util.UUID;
@ -28,12 +25,6 @@ import java.util.UUID;
*/ */
public final class BenevolentHydra extends CardImpl { public final class BenevolentHydra extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public BenevolentHydra(UUID ownerId, CardSetInfo setInfo) { public BenevolentHydra(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{X}{G}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{X}{G}{G}");
@ -47,7 +38,7 @@ public final class BenevolentHydra extends CardImpl {
)); ));
// If one or more +1/+1 counters would be put on another creature you control, that many plus one +1/+1 counters are put on it instead. // If one or more +1/+1 counters would be put on another creature you control, that many plus one +1/+1 counters are put on it instead.
this.addAbility(new SimpleStaticAbility(new ModifyCountersAddedEffect(filter, CounterType.P1P1))); this.addAbility(new SimpleStaticAbility(new ModifyCountersAddedEffect(StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL, CounterType.P1P1)));
// {T}, Remove a +1/+1 counter from Benevolent Hydra: Put a +1/+1 counter on another target creature you control. // {T}, Remove a +1/+1 counter from Benevolent Hydra: Put a +1/+1 counter on another target creature you control.
Ability ability = new SimpleActivatedAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()).setText("Put a +1/+1 counter on another target creature you control"), new TapSourceCost()); Ability ability = new SimpleActivatedAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()).setText("Put a +1/+1 counter on another target creature you control"), new TapSourceCost());

View file

@ -12,9 +12,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetControlledPermanent;
import java.util.UUID; import java.util.UUID;
@ -24,13 +22,6 @@ import java.util.UUID;
*/ */
public final class BiblioplexKraken extends CardImpl { public final class BiblioplexKraken extends CardImpl {
private static final FilterControlledPermanent filter
= new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public BiblioplexKraken(UUID ownerId, CardSetInfo setInfo) { public BiblioplexKraken(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
@ -44,7 +35,7 @@ public final class BiblioplexKraken extends CardImpl {
// Whenever Biblioplex Kraken attacks, you may return another creature you control to its owner's hand. If you do, Biblioplex Kraken can't be blocked this turn. // Whenever Biblioplex Kraken attacks, you may return another creature you control to its owner's hand. If you do, Biblioplex Kraken can't be blocked this turn.
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid( this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(
new CantBeBlockedSourceEffect(Duration.EndOfTurn), new CantBeBlockedSourceEffect(Duration.EndOfTurn),
new ReturnToHandChosenControlledPermanentCost(new TargetControlledPermanent(filter)) new ReturnToHandChosenControlledPermanentCost(new TargetControlledPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL))
))); )));
} }

View file

@ -1,4 +1,3 @@
package mage.cards.c; package mage.cards.c;
import java.util.UUID; import java.util.UUID;
@ -12,9 +11,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController; import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.permanent.token.EldraziScionToken; import mage.game.permanent.token.EldraziScionToken;
/** /**
@ -23,12 +20,6 @@ import mage.game.permanent.token.EldraziScionToken;
*/ */
public final class CatacombSifter extends CardImpl { public final class CatacombSifter extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
filter.add(TargetController.YOU.getControllerPredicate());
}
public CatacombSifter(UUID ownerId, CardSetInfo setInfo) { public CatacombSifter(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{G}"); super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{G}");
this.subtype.add(SubType.ELDRAZI); this.subtype.add(SubType.ELDRAZI);
@ -43,7 +34,7 @@ public final class CatacombSifter extends CardImpl {
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new EldraziScionToken()))); this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new EldraziScionToken())));
// Whenever another creature you control dies, scry 1 // Whenever another creature you control dies, scry 1
this.addAbility(new DiesCreatureTriggeredAbility(new ScryEffect(1), false, filter)); this.addAbility(new DiesCreatureTriggeredAbility(new ScryEffect(1), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL));
} }
private CatacombSifter(final CatacombSifter card) { private CatacombSifter(final CatacombSifter card) {

View file

@ -11,8 +11,7 @@ import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.permanent.TokenPredicate; import mage.filter.predicate.permanent.TokenPredicate;
import java.util.UUID; import java.util.UUID;
@ -22,11 +21,9 @@ import java.util.UUID;
*/ */
public final class EloiseNephaliaSleuth extends CardImpl { public final class EloiseNephaliaSleuth extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another creature you control");
private static final FilterPermanent filter2 = new FilterPermanent("a token"); private static final FilterPermanent filter2 = new FilterPermanent("a token");
static { static {
filter.add(AnotherPredicate.instance);
filter2.add(TokenPredicate.TRUE); filter2.add(TokenPredicate.TRUE);
} }
@ -40,7 +37,7 @@ public final class EloiseNephaliaSleuth extends CardImpl {
this.toughness = new MageInt(4); this.toughness = new MageInt(4);
// Whenever another creature you control dies, investigate. // Whenever another creature you control dies, investigate.
this.addAbility(new DiesCreatureTriggeredAbility(new InvestigateEffect(1), false, filter)); this.addAbility(new DiesCreatureTriggeredAbility(new InvestigateEffect(1), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL));
// Whenever you sacrifice a token, surveil 1. // Whenever you sacrifice a token, surveil 1.
this.addAbility(new SacrificePermanentTriggeredAbility(new SurveilEffect(1), filter2)); this.addAbility(new SacrificePermanentTriggeredAbility(new SurveilEffect(1), filter2));

View file

@ -59,7 +59,7 @@ class EnduringIdealEffect extends OneShotEffect {
boolean applied = false; boolean applied = false;
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
if (controller != null) { if (controller != null) {
TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_ENTCHANTMENT); TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_ENCHANTMENT);
controller.searchLibrary(target, source, game); controller.searchLibrary(target, source, game);
Card targetCard = game.getCard(target.getFirstTarget()); Card targetCard = game.getCard(target.getFirstTarget());
if (targetCard == null) { if (targetCard == null) {

View file

@ -19,10 +19,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetControlledPermanent;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
@ -33,13 +30,6 @@ import java.util.UUID;
*/ */
public final class ErebosBleakHearted extends CardImpl { public final class ErebosBleakHearted extends CardImpl {
private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public ErebosBleakHearted(UUID ownerId, CardSetInfo setInfo) { public ErebosBleakHearted(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{3}{B}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{3}{B}");
@ -58,7 +48,7 @@ public final class ErebosBleakHearted extends CardImpl {
// Whenever another creature you control dies, you may pay 2 life. If you do, draw a card. // Whenever another creature you control dies, you may pay 2 life. If you do, draw a card.
this.addAbility(new DiesCreatureTriggeredAbility(new DoIfCostPaid( this.addAbility(new DiesCreatureTriggeredAbility(new DoIfCostPaid(
new DrawCardSourceControllerEffect(1), new PayLifeCost(2) new DrawCardSourceControllerEffect(1), new PayLifeCost(2)
), false, filter, true)); ), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL, true));
// {1}{B}, Sacrifice another creature: Target creature gets -2/-1 until end of turn. // {1}{B}, Sacrifice another creature: Target creature gets -2/-1 until end of turn.
Ability ability = new SimpleActivatedAbility( Ability ability = new SimpleActivatedAbility(

View file

@ -14,9 +14,7 @@ import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterPermanent; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
@ -62,12 +60,6 @@ public class EvolvingAdaptive extends CardImpl {
class EvolvingAdaptiveTriggeredAbility extends TriggeredAbilityImpl { class EvolvingAdaptiveTriggeredAbility extends TriggeredAbilityImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public EvolvingAdaptiveTriggeredAbility() { public EvolvingAdaptiveTriggeredAbility() {
super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.OIL.createInstance())); super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.OIL.createInstance()));
this.setTriggerPhrase("Whenever another creature enters the battlefield under your " + this.setTriggerPhrase("Whenever another creature enters the battlefield under your " +
@ -91,7 +83,7 @@ class EvolvingAdaptiveTriggeredAbility extends TriggeredAbilityImpl {
@Override @Override
public boolean checkTrigger(GameEvent event, Game game) { public boolean checkTrigger(GameEvent event, Game game) {
Permanent enteringCreature = game.getPermanent(event.getTargetId()); Permanent enteringCreature = game.getPermanent(event.getTargetId());
if (enteringCreature == null || !filter.match(enteringCreature, getControllerId(), this, game)) { if (enteringCreature == null || !StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL.match(enteringCreature, getControllerId(), this, game)) {
return false; return false;
} }
Permanent permanent = getSourcePermanentIfItStillExists(game); Permanent permanent = getSourcePermanentIfItStillExists(game);

View file

@ -11,8 +11,7 @@ import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
@ -52,16 +51,9 @@ public final class FaerieImpostor extends CardImpl {
class FaerieImpostorEffect extends OneShotEffect { class FaerieImpostorEffect extends OneShotEffect {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature you control");
private static final String effectText = "sacrifice it unless you return another creature you control to its owner's hand";
static {
filter.add(AnotherPredicate.instance);
}
FaerieImpostorEffect() { FaerieImpostorEffect() {
super(Outcome.ReturnToHand); super(Outcome.ReturnToHand);
staticText = effectText; staticText = "sacrifice it unless you return another creature you control to its owner's hand";
} }
private FaerieImpostorEffect(FaerieImpostorEffect effect) { private FaerieImpostorEffect(FaerieImpostorEffect effect) {
@ -74,7 +66,7 @@ class FaerieImpostorEffect extends OneShotEffect {
if (controller == null) { if (controller == null) {
return false; return false;
} }
TargetPermanent target = new TargetPermanent(1, 1, filter, true); TargetPermanent target = new TargetPermanent(1, 1, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL, true);
if (target.canChoose(controller.getId(), source, game) if (target.canChoose(controller.getId(), source, game)
&& controller.chooseUse(outcome, "Return another creature you control to its owner's hand?", source, game)) { && controller.chooseUse(outcome, "Return another creature you control to its owner's hand?", source, game)) {
controller.chooseTarget(Outcome.ReturnToHand, target, source, game); controller.chooseTarget(Outcome.ReturnToHand, target, source, game);

View file

@ -8,9 +8,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterPermanent; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import java.util.UUID; import java.util.UUID;
@ -19,13 +17,6 @@ import java.util.UUID;
*/ */
public final class FlamingFistOfficer extends CardImpl { public final class FlamingFistOfficer extends CardImpl {
private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public FlamingFistOfficer(UUID ownerId, CardSetInfo setInfo) { public FlamingFistOfficer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
@ -36,7 +27,7 @@ public final class FlamingFistOfficer extends CardImpl {
// Whenever another creature you control leaves the battlefield, put a +1/+1 counter on Flaming Fist Officer. // Whenever another creature you control leaves the battlefield, put a +1/+1 counter on Flaming Fist Officer.
this.addAbility(new LeavesBattlefieldAllTriggeredAbility( this.addAbility(new LeavesBattlefieldAllTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter new AddCountersSourceEffect(CounterType.P1P1.createInstance()), StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL
)); ));
} }

View file

@ -15,8 +15,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
@ -26,12 +25,6 @@ import mage.game.permanent.Permanent;
*/ */
public final class GarnaBloodfistOfKeld extends CardImpl { public final class GarnaBloodfistOfKeld extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public GarnaBloodfistOfKeld(UUID ownerId, CardSetInfo setInfo) { public GarnaBloodfistOfKeld(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{R}{R}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{R}{R}");
@ -50,7 +43,7 @@ public final class GarnaBloodfistOfKeld extends CardImpl {
"draw a card if it was attacking. Otherwise, {this} deals 1 damage to each opponent" "draw a card if it was attacking. Otherwise, {this} deals 1 damage to each opponent"
), ),
false, false,
filter StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL
)); ));
} }

View file

@ -1,4 +1,3 @@
package mage.cards.g; package mage.cards.g;
import java.util.UUID; import java.util.UUID;
@ -9,23 +8,14 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
/** /**
* *
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com) * @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
*/ */
public final class GavonyUnhallowed extends CardImpl { public final class GavonyUnhallowed extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
filter.add(TargetController.YOU.getControllerPredicate());
}
public GavonyUnhallowed(UUID ownerId, CardSetInfo setInfo) { public GavonyUnhallowed(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}"); super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
@ -34,7 +24,7 @@ public final class GavonyUnhallowed extends CardImpl {
this.toughness = new MageInt(4); this.toughness = new MageInt(4);
// Whenever another creature you control dies, put a +1/+1 counter on Gavony Unhallowed. // Whenever another creature you control dies, put a +1/+1 counter on Gavony Unhallowed.
this.addAbility(new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, filter)); this.addAbility(new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL));
} }
private GavonyUnhallowed(final GavonyUnhallowed card) { private GavonyUnhallowed(final GavonyUnhallowed card) {

View file

@ -20,10 +20,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.watchers.common.AbilityResolvedWatcher; import mage.watchers.common.AbilityResolvedWatcher;
@ -36,12 +33,6 @@ import java.util.UUID;
*/ */
public final class GimliMournfulAvenger extends CardImpl { public final class GimliMournfulAvenger extends CardImpl {
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
private static final Hint hint = new ValueHint( private static final Hint hint = new ValueHint(
"Creatures that died under your control this turn", GimliMournfulAvengerValue.instance "Creatures that died under your control this turn", GimliMournfulAvengerValue.instance
); );
@ -64,7 +55,7 @@ public final class GimliMournfulAvenger extends CardImpl {
// Whenever another creature you control dies, put a +1/+1 counter on Gimli. When this ability resolves for the third time this turn, Gimli fights up to one target creature you don't control. // Whenever another creature you control dies, put a +1/+1 counter on Gimli. When this ability resolves for the third time this turn, Gimli fights up to one target creature you don't control.
Ability ability = new DiesCreatureTriggeredAbility( Ability ability = new DiesCreatureTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, filter new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL
); );
ability.addEffect(new GimliMournfulAvengerEffect()); ability.addEffect(new GimliMournfulAvengerEffect());
this.addAbility(ability, new AbilityResolvedWatcher()); this.addAbility(ability, new AbilityResolvedWatcher());

View file

@ -15,10 +15,8 @@ import mage.constants.Duration;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.FilterObject; import mage.filter.FilterObject;
import mage.filter.FilterPermanent; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.ColorlessPredicate; import mage.filter.predicate.mageobject.ColorlessPredicate;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
@ -30,13 +28,6 @@ import java.util.UUID;
*/ */
public final class GiverOfRunes extends CardImpl { public final class GiverOfRunes extends CardImpl {
private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public GiverOfRunes(UUID ownerId, CardSetInfo setInfo) { public GiverOfRunes(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
@ -47,7 +38,7 @@ public final class GiverOfRunes extends CardImpl {
// {T}: Another target creature you control gains protection from colorless or from the color of your choice until end of turn. // {T}: Another target creature you control gains protection from colorless or from the color of your choice until end of turn.
Ability ability = new SimpleActivatedAbility(new GiverOfRunesEffect(), new TapSourceCost()); Ability ability = new SimpleActivatedAbility(new GiverOfRunesEffect(), new TapSourceCost());
ability.addTarget(new TargetPermanent(filter)); ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -7,8 +7,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import java.util.UUID; import java.util.UUID;
@ -17,12 +16,6 @@ import java.util.UUID;
*/ */
public final class GloryBearers extends CardImpl { public final class GloryBearers extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public GloryBearers(UUID ownerId, CardSetInfo setInfo) { public GloryBearers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{3}{W}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{3}{W}");
@ -35,7 +28,7 @@ public final class GloryBearers extends CardImpl {
this.addAbility(new AttacksCreatureYouControlTriggeredAbility( this.addAbility(new AttacksCreatureYouControlTriggeredAbility(
new BoostTargetEffect(0, 1) new BoostTargetEffect(0, 1)
.setText("it gets +0/+1 until end of turn"), .setText("it gets +0/+1 until end of turn"),
false, filter, true false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL, true
)); ));
} }

View file

@ -82,7 +82,7 @@ class GoblinTutorEffect extends OneShotEffect {
if (amount == 2) { if (amount == 2) {
effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, filter), true); effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, filter), true);
} else if (amount == 3) { } else if (amount == 3) {
effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_ENTCHANTMENT), true); effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_ENCHANTMENT), true);
} else if (amount == 4) { } else if (amount == 4) {
effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_ARTIFACT), true); effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_ARTIFACT), true);
} else if (amount == 5) { } else if (amount == 5) {

View file

@ -9,9 +9,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterPermanent; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import java.util.UUID; import java.util.UUID;
@ -20,13 +18,6 @@ import java.util.UUID;
*/ */
public final class GuardianKirin extends CardImpl { public final class GuardianKirin extends CardImpl {
private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public GuardianKirin(UUID ownerId, CardSetInfo setInfo) { public GuardianKirin(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
@ -39,7 +30,7 @@ public final class GuardianKirin extends CardImpl {
// Whenever another creature you control dies, put a +1/+1 counter on Guardian Kirin. // Whenever another creature you control dies, put a +1/+1 counter on Guardian Kirin.
this.addAbility(new DiesCreatureTriggeredAbility( this.addAbility(new DiesCreatureTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, filter new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL
)); ));
} }

View file

@ -1,4 +1,3 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID; import java.util.UUID;
@ -10,8 +9,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent;
@ -46,12 +44,6 @@ public final class HavengulSkaab extends CardImpl {
class HavengulSkaabAbility extends TriggeredAbilityImpl { class HavengulSkaabAbility extends TriggeredAbilityImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public HavengulSkaabAbility() { public HavengulSkaabAbility() {
super(Zone.BATTLEFIELD, new ReturnToHandTargetEffect()); super(Zone.BATTLEFIELD, new ReturnToHandTargetEffect());
} }
@ -68,7 +60,7 @@ class HavengulSkaabAbility extends TriggeredAbilityImpl {
@Override @Override
public boolean checkTrigger(GameEvent event, Game game) { public boolean checkTrigger(GameEvent event, Game game) {
if (event.getSourceId().equals(this.getSourceId())) { if (event.getSourceId().equals(this.getSourceId())) {
TargetControlledCreaturePermanent target = new TargetControlledCreaturePermanent(1, 1, filter, false); TargetControlledCreaturePermanent target = new TargetControlledCreaturePermanent(1, 1, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL, true);
this.addTarget(target); this.addTarget(target);
return true; return true;
} }

View file

@ -15,9 +15,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
@ -28,14 +26,6 @@ import java.util.UUID;
*/ */
public final class Hexavus extends CardImpl { public final class Hexavus extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature you control");
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("another target creature");
static {
filter.add(AnotherPredicate.instance);
filter2.add(AnotherPredicate.instance);
}
public Hexavus(UUID ownerId, CardSetInfo setInfo) { public Hexavus(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}"); super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}");
this.subtype.add(SubType.CONSTRUCT); this.subtype.add(SubType.CONSTRUCT);
@ -55,14 +45,14 @@ public final class Hexavus extends CardImpl {
new AddCountersTargetEffect(CounterType.FLYING.createInstance()), new GenericManaCost(1) new AddCountersTargetEffect(CounterType.FLYING.createInstance()), new GenericManaCost(1)
); );
ability.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance())); ability.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance()));
ability.addTarget(new TargetCreaturePermanent(filter2)); ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_ANOTHER_TARGET_CREATURE));
this.addAbility(ability); this.addAbility(ability);
// {1}, Remove a counter from another creature you control: Put a +1/+1 counter on Hexavus. // {1}, Remove a counter from another creature you control: Put a +1/+1 counter on Hexavus.
Ability ability2 = new SimpleActivatedAbility( Ability ability2 = new SimpleActivatedAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new GenericManaCost(1) new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new GenericManaCost(1)
); );
ability2.addCost(new RemoveCounterCost(new TargetPermanent(1, 1, filter, true))); ability2.addCost(new RemoveCounterCost(new TargetPermanent(1, 1, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL, true)));
this.addAbility(ability2); this.addAbility(ability2);
} }

View file

@ -1,4 +1,3 @@
package mage.cards.i; package mage.cards.i;
import java.util.UUID; import java.util.UUID;
@ -13,10 +12,8 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController; import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.common.TargetCreaturePermanent;
/** /**
* *
@ -24,13 +21,6 @@ import mage.target.common.TargetCreaturePermanent;
*/ */
public final class ImperialAerosaur extends CardImpl { public final class ImperialAerosaur extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
static {
filter.add(TargetController.YOU.getControllerPredicate());
filter.add(AnotherPredicate.instance);
}
public ImperialAerosaur(UUID ownerId, CardSetInfo setInfo) { public ImperialAerosaur(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
@ -48,7 +38,7 @@ public final class ImperialAerosaur extends CardImpl {
effect = new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn); effect = new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn);
effect.setText("and gains flying until end of turn"); effect.setText("and gains flying until end of turn");
ability.addEffect(effect); ability.addEffect(effect);
ability.addTarget(new TargetCreaturePermanent(filter)); ability.addTarget(new TargetControlledCreaturePermanent(StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -9,9 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import java.util.UUID; import java.util.UUID;
@ -20,13 +18,6 @@ import java.util.UUID;
*/ */
public final class LoyalGryff extends CardImpl { public final class LoyalGryff extends CardImpl {
private static final FilterControlledPermanent filter
= new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public LoyalGryff(UUID ownerId, CardSetInfo setInfo) { public LoyalGryff(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
@ -42,7 +33,7 @@ public final class LoyalGryff extends CardImpl {
// When Loyal Gryff enters the battlefield, you may return another creature you control to its owner's hand. // When Loyal Gryff enters the battlefield, you may return another creature you control to its owner's hand.
this.addAbility(new EntersBattlefieldTriggeredAbility( this.addAbility(new EntersBattlefieldTriggeredAbility(
new ReturnToHandChosenControlledPermanentEffect(filter), true new ReturnToHandChosenControlledPermanentEffect(StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL), true
)); ));
} }

View file

@ -10,9 +10,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.FilterPermanent; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import java.util.UUID; import java.util.UUID;
@ -21,13 +19,6 @@ import java.util.UUID;
*/ */
public final class LuminousPhantom extends CardImpl { public final class LuminousPhantom extends CardImpl {
private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public LuminousPhantom(UUID ownerId, CardSetInfo setInfo) { public LuminousPhantom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, ""); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "");
@ -42,7 +33,7 @@ public final class LuminousPhantom extends CardImpl {
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
// Whenever another creature you control leaves the battlefield, you gain 1 life. // Whenever another creature you control leaves the battlefield, you gain 1 life.
this.addAbility(new LeavesBattlefieldAllTriggeredAbility(new GainLifeEffect(1), filter)); this.addAbility(new LeavesBattlefieldAllTriggeredAbility(new GainLifeEffect(1), StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL));
// If Luminous Phantom would be put into a graveyard from anywhere, exile it instead. // If Luminous Phantom would be put into a graveyard from anywhere, exile it instead.
this.addAbility(new PutIntoGraveFromAnywhereSourceAbility(new ExileSourceEffect().setText("exile it instead"))); this.addAbility(new PutIntoGraveFromAnywhereSourceAbility(new ExileSourceEffect().setText("exile it instead")));

View file

@ -12,10 +12,8 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import java.util.UUID; import java.util.UUID;
@ -24,13 +22,6 @@ import java.util.UUID;
*/ */
public final class MausoleumHarpy extends CardImpl { public final class MausoleumHarpy extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
filter.add(TargetController.YOU.getControllerPredicate());
}
public MausoleumHarpy(UUID ownerId, CardSetInfo setInfo) { public MausoleumHarpy(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
@ -46,7 +37,7 @@ public final class MausoleumHarpy extends CardImpl {
// Whenever another creature you control dies, if you have the city's blessing, put a +1/+1 counter on Mausoleum Harpy. // Whenever another creature you control dies, if you have the city's blessing, put a +1/+1 counter on Mausoleum Harpy.
this.addAbility(new ConditionalInterveningIfTriggeredAbility( this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, filter), new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL),
CitysBlessingCondition.instance, CitysBlessingCondition.instance,
"Whenever another creature you control dies, if you have the city's blessing, put a +1/+1 counter on {this}. ") "Whenever another creature you control dies, if you have the city's blessing, put a +1/+1 counter on {this}. ")
.addHint(CitysBlessingHint.instance)); .addHint(CitysBlessingHint.instance));

View file

@ -12,8 +12,6 @@ import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCardInYourGraveyard;
@ -25,14 +23,6 @@ import java.util.UUID;
*/ */
public final class MerenOfClanNelToth extends CardImpl { public final class MerenOfClanNelToth extends CardImpl {
private static final FilterCreaturePermanent filter
= new FilterCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
filter.add(TargetController.YOU.getControllerPredicate());
}
public MerenOfClanNelToth(UUID ownerId, CardSetInfo setInfo) { public MerenOfClanNelToth(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{G}");
this.supertype.add(SuperType.LEGENDARY); this.supertype.add(SuperType.LEGENDARY);
@ -44,7 +34,7 @@ public final class MerenOfClanNelToth extends CardImpl {
// Whenever another creature you control dies, you get an experience counter. // Whenever another creature you control dies, you get an experience counter.
this.addAbility(new DiesCreatureTriggeredAbility(new AddCountersPlayersEffect( this.addAbility(new DiesCreatureTriggeredAbility(new AddCountersPlayersEffect(
CounterType.EXPERIENCE.createInstance(), TargetController.YOU CounterType.EXPERIENCE.createInstance(), TargetController.YOU
), false, filter)); ), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL));
// At the beginning of your end step, choose target creature card in your graveyard. // At the beginning of your end step, choose target creature card in your graveyard.
// If that card's converted mana cost is less than or equal to the number of experience counters you have, return it to the battlefield. Otherwise, put it into your hand. // If that card's converted mana cost is less than or equal to the number of experience counters you have, return it to the battlefield. Otherwise, put it into your hand.

View file

@ -1,4 +1,3 @@
package mage.cards.n; package mage.cards.n;
import java.util.UUID; import java.util.UUID;
@ -12,9 +11,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
/** /**
* *
@ -22,12 +19,6 @@ import mage.filter.predicate.mageobject.AnotherPredicate;
*/ */
public final class NebulonBFrigate extends CardImpl { public final class NebulonBFrigate extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public NebulonBFrigate(UUID ownerId, CardSetInfo setInfo) { public NebulonBFrigate(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}{W}{W}"); super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}{W}{W}");
this.subtype.add(SubType.STARSHIP); this.subtype.add(SubType.STARSHIP);
@ -38,7 +29,7 @@ public final class NebulonBFrigate extends CardImpl {
this.addAbility(SpaceflightAbility.getInstance()); this.addAbility(SpaceflightAbility.getInstance());
// Whenever Nebulon-B Frigate enters the battlefield, creatures you control gain vigilance until end of turn. // Whenever Nebulon-B Frigate enters the battlefield, creatures you control gain vigilance until end of turn.
this.addAbility(new EntersBattlefieldTriggeredAbility(new GainAbilityControlledEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn, new FilterCreaturePermanent("creatures you control")), false)); this.addAbility(new EntersBattlefieldTriggeredAbility(new GainAbilityControlledEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES_CONTROLLED), false));
} }
private NebulonBFrigate(final NebulonBFrigate card) { private NebulonBFrigate(final NebulonBFrigate card) {

View file

@ -1,4 +1,3 @@
package mage.cards.n; package mage.cards.n;
import java.util.UUID; import java.util.UUID;
@ -9,11 +8,9 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import mage.constants.Zone; import mage.constants.Zone;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
/** /**
* *
@ -21,13 +18,6 @@ import mage.filter.predicate.mageobject.AnotherPredicate;
*/ */
public final class NinthBridgePatrol extends CardImpl { public final class NinthBridgePatrol extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
static {
filter.add(TargetController.YOU.getControllerPredicate());
filter.add(AnotherPredicate.instance);
}
public NinthBridgePatrol(UUID ownerId, CardSetInfo setInfo) { public NinthBridgePatrol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
this.subtype.add(SubType.DWARF); this.subtype.add(SubType.DWARF);
@ -37,7 +27,7 @@ public final class NinthBridgePatrol extends CardImpl {
// Whenever another creature you control leaves the battlefield, put a +1/+1 counter on Ninth Bridge Patrol. // Whenever another creature you control leaves the battlefield, put a +1/+1 counter on Ninth Bridge Patrol.
this.addAbility(new ZoneChangeAllTriggeredAbility(Zone.BATTLEFIELD, Zone.BATTLEFIELD, null, this.addAbility(new ZoneChangeAllTriggeredAbility(Zone.BATTLEFIELD, Zone.BATTLEFIELD, null,
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter, new AddCountersSourceEffect(CounterType.P1P1.createInstance()), StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL,
"Whenever another creature you control leaves the battlefield, ", false)); "Whenever another creature you control leaves the battlefield, ", false));
} }

View file

@ -15,6 +15,7 @@ import mage.constants.Outcome;
import mage.constants.SubType; import mage.constants.SubType;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
@ -30,12 +31,9 @@ public final class OvergrowthElemental extends CardImpl {
private static final FilterPermanent filter private static final FilterPermanent filter
= new FilterControlledCreaturePermanent(SubType.ELEMENTAL, "another target Elemental you control"); = new FilterControlledCreaturePermanent(SubType.ELEMENTAL, "another target Elemental you control");
private static final FilterPermanent filter2
= new FilterControlledCreaturePermanent("another creature you control");
static { static {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
filter2.add(AnotherPredicate.instance);
} }
public OvergrowthElemental(UUID ownerId, CardSetInfo setInfo) { public OvergrowthElemental(UUID ownerId, CardSetInfo setInfo) {
@ -53,7 +51,7 @@ public final class OvergrowthElemental extends CardImpl {
this.addAbility(ability); this.addAbility(ability);
// Whenever another creature you control dies, you gain 1 life. If that creature was an Elemental, put a +1/+1 counter on Overgrowth Elemental. // Whenever another creature you control dies, you gain 1 life. If that creature was an Elemental, put a +1/+1 counter on Overgrowth Elemental.
ability = new DiesCreatureTriggeredAbility(new GainLifeEffect(1), false, filter2, true); ability = new DiesCreatureTriggeredAbility(new GainLifeEffect(1), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL, true);
ability.addEffect(new OvergrowthElementalEffect()); ability.addEffect(new OvergrowthElementalEffect());
this.addAbility(ability); this.addAbility(ability);
} }
@ -92,4 +90,4 @@ class OvergrowthElementalEffect extends OneShotEffect {
} }
return new AddCountersSourceEffect(CounterType.P1P1.createInstance()).apply(game, source); return new AddCountersSourceEffect(CounterType.P1P1.createInstance()).apply(game, source);
} }
} }

View file

@ -1,4 +1,3 @@
package mage.cards.p; package mage.cards.p;
import java.util.UUID; import java.util.UUID;
@ -9,9 +8,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController; import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.permanent.token.TreasureToken; import mage.game.permanent.token.TreasureToken;
/** /**
@ -20,13 +17,6 @@ import mage.game.permanent.token.TreasureToken;
*/ */
public final class PitilessPlunderer extends CardImpl { public final class PitilessPlunderer extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
filter.add(TargetController.YOU.getControllerPredicate());
}
public PitilessPlunderer(UUID ownerId, CardSetInfo setInfo) { public PitilessPlunderer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
@ -36,7 +26,7 @@ public final class PitilessPlunderer extends CardImpl {
this.toughness = new MageInt(4); this.toughness = new MageInt(4);
// Whenever another creature you control dies, create a colorless Treasure artifact token with "{T}, Sacrifice this artifact: Add one mana of any color." // Whenever another creature you control dies, create a colorless Treasure artifact token with "{T}, Sacrifice this artifact: Add one mana of any color."
this.addAbility(new DiesCreatureTriggeredAbility(new CreateTokenEffect(new TreasureToken()), false, filter)); this.addAbility(new DiesCreatureTriggeredAbility(new CreateTokenEffect(new TreasureToken()), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL));
} }
private PitilessPlunderer(final PitilessPlunderer card) { private PitilessPlunderer(final PitilessPlunderer card) {

View file

@ -9,9 +9,7 @@ import mage.abilities.hint.Hint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.filter.FilterPermanent; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.stack.Spell; import mage.game.stack.Spell;
@ -28,13 +26,6 @@ import java.util.UUID;
*/ */
public final class RionyaFireDancer extends CardImpl { public final class RionyaFireDancer extends CardImpl {
private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public RionyaFireDancer(UUID ownerId, CardSetInfo setInfo) { public RionyaFireDancer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{R}");
@ -48,7 +39,7 @@ public final class RionyaFireDancer extends CardImpl {
Ability ability = new BeginningOfCombatTriggeredAbility( Ability ability = new BeginningOfCombatTriggeredAbility(
new RionyaFireDancerEffect(), TargetController.YOU, false new RionyaFireDancerEffect(), TargetController.YOU, false
); );
ability.addTarget(new TargetPermanent(filter)); ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL));
this.addAbility(ability.addHint(RionyaFireDancerHint.instance), new RionyaFireDancerWatcher()); this.addAbility(ability.addHint(RionyaFireDancerHint.instance), new RionyaFireDancerWatcher());
} }

View file

@ -1,4 +1,3 @@
package mage.cards.r; package mage.cards.r;
import java.util.UUID; import java.util.UUID;
@ -9,10 +8,8 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
/** /**
* *
@ -20,13 +17,6 @@ import mage.filter.predicate.mageobject.AnotherPredicate;
*/ */
public final class RotShambler extends CardImpl { public final class RotShambler extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
filter.add(TargetController.YOU.getControllerPredicate());
}
public RotShambler(UUID ownerId, CardSetInfo setInfo) { public RotShambler(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}"); super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}");
this.subtype.add(SubType.FUNGUS); this.subtype.add(SubType.FUNGUS);
@ -34,7 +24,7 @@ public final class RotShambler extends CardImpl {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// Whenever another creature you control dies, put a +1/+1 counter on Rot Shambler. // Whenever another creature you control dies, put a +1/+1 counter on Rot Shambler.
this.addAbility(new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, filter)); this.addAbility(new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL));
} }

View file

@ -9,9 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.FilterPermanent; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.common.TargetAnyTarget; import mage.target.common.TargetAnyTarget;
import java.util.UUID; import java.util.UUID;
@ -21,13 +19,6 @@ import java.util.UUID;
*/ */
public final class SanguinaryPriest extends CardImpl { public final class SanguinaryPriest extends CardImpl {
private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public SanguinaryPriest(UUID ownerId, CardSetInfo setInfo) { public SanguinaryPriest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
@ -40,7 +31,7 @@ public final class SanguinaryPriest extends CardImpl {
this.addAbility(LifelinkAbility.getInstance()); this.addAbility(LifelinkAbility.getInstance());
// Blood Chalice -- Whenever another creature you control dies, Sanguinary Priest deals 1 damage to any target. // Blood Chalice -- Whenever another creature you control dies, Sanguinary Priest deals 1 damage to any target.
Ability ability = new DiesCreatureTriggeredAbility(new DamageTargetEffect(1), false, filter); Ability ability = new DiesCreatureTriggeredAbility(new DamageTargetEffect(1), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL);
ability.addTarget(new TargetAnyTarget()); ability.addTarget(new TargetAnyTarget());
this.addAbility(ability.withFlavorWord("Blood Chalice")); this.addAbility(ability.withFlavorWord("Blood Chalice"));
} }

View file

@ -14,8 +14,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
@ -30,13 +29,6 @@ import java.util.UUID;
*/ */
public final class SilumgarScavenger extends CardImpl { public final class SilumgarScavenger extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
filter.add(TargetController.YOU.getControllerPredicate());
}
public SilumgarScavenger(UUID ownerId, CardSetInfo setInfo) { public SilumgarScavenger(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
@ -52,7 +44,7 @@ public final class SilumgarScavenger extends CardImpl {
this.addAbility(new ExploitAbility()); this.addAbility(new ExploitAbility());
// Whenever another creature you control dies, put a +1/+1 counter on Silumgar Scavenger. It gains haste until end of turn if it exploited that creature. // Whenever another creature you control dies, put a +1/+1 counter on Silumgar Scavenger. It gains haste until end of turn if it exploited that creature.
Ability ability = new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, filter, true); Ability ability = new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL, true);
ability.addEffect(new SilumgarScavengerBoostEffect()); ability.addEffect(new SilumgarScavengerBoostEffect());
//ability.addTarget(new TargetPlayerOrPlaneswalker()); //ability.addTarget(new TargetPlayerOrPlaneswalker());
this.addAbility(ability, new SilumgarScavengerExploitedWatcher()); this.addAbility(ability, new SilumgarScavengerExploitedWatcher());
@ -130,4 +122,4 @@ class SilumgarScavengerBoostEffect extends OneShotEffect {
public SilumgarScavengerBoostEffect copy() { public SilumgarScavengerBoostEffect copy() {
return new SilumgarScavengerBoostEffect(this); return new SilumgarScavengerBoostEffect(this);
} }
} }

View file

@ -15,8 +15,7 @@ import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import java.util.UUID; import java.util.UUID;
@ -26,13 +25,6 @@ import java.util.UUID;
*/ */
public final class SkyriderPatrol extends CardImpl { public final class SkyriderPatrol extends CardImpl {
private static final FilterControlledCreaturePermanent filter
= new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public SkyriderPatrol(UUID ownerId, CardSetInfo setInfo) { public SkyriderPatrol(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{U}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{U}");
@ -51,7 +43,7 @@ public final class SkyriderPatrol extends CardImpl {
"and that creature gains flying until end of turn" "and that creature gains flying until end of turn"
); );
ability.addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn)); ability.addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn));
ability.addTarget(new TargetPermanent(filter)); ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL));
this.addAbility(new BeginningOfCombatTriggeredAbility(new DoWhenCostPaid( this.addAbility(new BeginningOfCombatTriggeredAbility(new DoWhenCostPaid(
ability, new ManaCostsImpl<>("{G}{U}"), "Pay {G}{U}?" ability, new ManaCostsImpl<>("{G}{U}"), "Pay {G}{U}?"
), TargetController.YOU, false)); ), TargetController.YOU, false));

View file

@ -8,8 +8,7 @@ import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.target.common.TargetPlayerOrPlaneswalker; import mage.target.common.TargetPlayerOrPlaneswalker;
@ -21,13 +20,6 @@ import java.util.UUID;
*/ */
public final class StalkingVengeance extends CardImpl { public final class StalkingVengeance extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
static {
filter.add(TargetController.YOU.getControllerPredicate());
filter.add(AnotherPredicate.instance);
}
public StalkingVengeance(UUID ownerId, CardSetInfo setInfo) { public StalkingVengeance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}{R}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{R}{R}");
this.subtype.add(SubType.AVATAR); this.subtype.add(SubType.AVATAR);
@ -39,7 +31,7 @@ public final class StalkingVengeance extends CardImpl {
this.addAbility(HasteAbility.getInstance()); this.addAbility(HasteAbility.getInstance());
// Whenever another creature you control dies, it deals damage equal to its power to target player or planeswalker. // Whenever another creature you control dies, it deals damage equal to its power to target player or planeswalker.
Ability ability = new DiesCreatureTriggeredAbility(new StalkingVengeanceDamageEffect(), false, filter, true); Ability ability = new DiesCreatureTriggeredAbility(new StalkingVengeanceDamageEffect(), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL, true);
ability.addTarget(new TargetPlayerOrPlaneswalker()); ability.addTarget(new TargetPlayerOrPlaneswalker());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -1,4 +1,3 @@
package mage.cards.t; package mage.cards.t;
import java.util.UUID; import java.util.UUID;
@ -16,8 +15,7 @@ import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
@ -53,12 +51,6 @@ public final class TemurSabertooth extends CardImpl {
class TemurSabertoothEffect extends OneShotEffect { class TemurSabertoothEffect extends OneShotEffect {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
public TemurSabertoothEffect() { public TemurSabertoothEffect() {
super(Outcome.Detriment); super(Outcome.Detriment);
this.staticText = "You may return another creature you control to its owner's hand. If you do, {this} gains indestructible until end of turn"; this.staticText = "You may return another creature you control to its owner's hand. If you do, {this} gains indestructible until end of turn";
@ -77,7 +69,7 @@ class TemurSabertoothEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
if (controller != null) { if (controller != null) {
Target target = new TargetPermanent(1, 1, filter, true); Target target = new TargetPermanent(1, 1, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL, true);
if (target.canChoose(controller.getId(), source, game)) { if (target.canChoose(controller.getId(), source, game)) {
if (controller.chooseUse(outcome, "Return another creature to hand?", source, game) if (controller.chooseUse(outcome, "Return another creature to hand?", source, game)
&& controller.chooseTarget(outcome, target, source, game)) { && controller.chooseTarget(outcome, target, source, game)) {

View file

@ -1,4 +1,3 @@
package mage.cards.u; package mage.cards.u;
import java.util.UUID; import java.util.UUID;
@ -9,10 +8,8 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
/** /**
* *
@ -20,13 +17,6 @@ import mage.filter.predicate.mageobject.AnotherPredicate;
*/ */
public final class UnrulyMob extends CardImpl { public final class UnrulyMob extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
filter.add(TargetController.YOU.getControllerPredicate());
}
public UnrulyMob(UUID ownerId, CardSetInfo setInfo) { public UnrulyMob(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}");
this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.HUMAN);
@ -35,7 +25,7 @@ public final class UnrulyMob extends CardImpl {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// Whenever another creature you control dies, put a +1/+1 counter on Unruly Mob. // Whenever another creature you control dies, put a +1/+1 counter on Unruly Mob.
this.addAbility(new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, filter)); this.addAbility(new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL));
} }
private UnrulyMob(final UnrulyMob card) { private UnrulyMob(final UnrulyMob card) {

View file

@ -9,9 +9,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.SubType; import mage.constants.SubType;
import mage.filter.FilterPermanent; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
@ -48,13 +46,6 @@ public final class WickedGuardian extends CardImpl {
class WickedGuardianEffect extends OneShotEffect { class WickedGuardianEffect extends OneShotEffect {
private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
WickedGuardianEffect() { WickedGuardianEffect() {
super(Outcome.Benefit); super(Outcome.Benefit);
staticText = "have it deal 2 damage to another creature you control. If you do, draw a card"; staticText = "have it deal 2 damage to another creature you control. If you do, draw a card";
@ -75,10 +66,10 @@ class WickedGuardianEffect extends OneShotEffect {
if (player == null) { if (player == null) {
return false; return false;
} }
if (game.getBattlefield().count(filter, source.getControllerId(), source, game) == 0) { if (game.getBattlefield().count(StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL, source.getControllerId(), source, game) == 0) {
return false; return false;
} }
TargetPermanent target = new TargetPermanent(0, 1, filter, true); TargetPermanent target = new TargetPermanent(0, 1, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL, true);
if (!player.choose(outcome, target, source, game)) { if (!player.choose(outcome, target, source, game)) {
return false; return false;
} }
@ -89,4 +80,4 @@ class WickedGuardianEffect extends OneShotEffect {
permanent.damage(2, source.getSourceId(), source, game); permanent.damage(2, source.getSourceId(), source, game);
return player.drawCards(1, source, game) > 0; return player.drawCards(1, source, game) > 0;
} }
} }

View file

@ -14,9 +14,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterPermanent; import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
@ -63,13 +61,6 @@ public final class YannikScavengingSentinel extends CardImpl {
class YannikScavengingSentinelEffect extends OneShotEffect { class YannikScavengingSentinelEffect extends OneShotEffect {
private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("another creature you control");
static {
filter.add(AnotherPredicate.instance);
}
YannikScavengingSentinelEffect() { YannikScavengingSentinelEffect() {
super(Outcome.Benefit); super(Outcome.Benefit);
staticText = "exile another creature you control until {this} leaves the battlefield. " + staticText = "exile another creature you control until {this} leaves the battlefield. " +
@ -91,10 +82,10 @@ class YannikScavengingSentinelEffect extends OneShotEffect {
Player player = game.getPlayer(source.getControllerId()); Player player = game.getPlayer(source.getControllerId());
Permanent sourcePermanent = source.getSourcePermanentIfItStillExists(game); Permanent sourcePermanent = source.getSourcePermanentIfItStillExists(game);
if (player == null || sourcePermanent == null if (player == null || sourcePermanent == null
|| game.getBattlefield().count(filter, source.getControllerId(), source, game) < 1) { || game.getBattlefield().count(StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL, source.getControllerId(), source, game) < 1) {
return false; return false;
} }
TargetPermanent target = new TargetPermanent(filter); TargetPermanent target = new TargetPermanent(StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL);
target.setNotTarget(true); target.setNotTarget(true);
player.choose(outcome, target, source, game); player.choose(outcome, target, source, game);
Permanent permanent = game.getPermanent(target.getFirstTarget()); Permanent permanent = game.getPermanent(target.getFirstTarget());

View file

@ -5,8 +5,7 @@ import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
@ -20,17 +19,10 @@ import mage.util.CardUtil;
*/ */
public class ChooseCreatureEffect extends OneShotEffect { public class ChooseCreatureEffect extends OneShotEffect {
private static final FilterPermanent defaultFilter
= new FilterControlledCreaturePermanent("another creature you control");
static {
defaultFilter.add(AnotherPredicate.instance);
}
private final FilterPermanent filter; private final FilterPermanent filter;
public ChooseCreatureEffect() { public ChooseCreatureEffect() {
this(defaultFilter); this(StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL);
} }
public ChooseCreatureEffect(FilterPermanent filter) { public ChooseCreatureEffect(FilterPermanent filter) {

View file

@ -50,10 +50,10 @@ public final class StaticFilters {
FILTER_CARD_CARDS.setLockedFilter(true); FILTER_CARD_CARDS.setLockedFilter(true);
} }
public static final FilterCard FILTER_CARD_ENTCHANTMENT = new FilterEnchantmentCard(); public static final FilterCard FILTER_CARD_ENCHANTMENT = new FilterEnchantmentCard();
static { static {
FILTER_CARD_ENTCHANTMENT.setLockedFilter(true); FILTER_CARD_ENCHANTMENT.setLockedFilter(true);
} }
public static final FilterArtifactCard FILTER_CARD_ARTIFACT = new FilterArtifactCard(); public static final FilterArtifactCard FILTER_CARD_ARTIFACT = new FilterArtifactCard();
@ -634,6 +634,13 @@ public final class StaticFilters {
FILTER_CONTROLLED_ANOTHER_CREATURE.setLockedFilter(true); FILTER_CONTROLLED_ANOTHER_CREATURE.setLockedFilter(true);
} }
public static final FilterControlledCreaturePermanent FILTER_ANOTHER_CREATURE_YOU_CONTROL = new FilterControlledCreaturePermanent("another creature you control");
static {
FILTER_ANOTHER_CREATURE_YOU_CONTROL.add(AnotherPredicate.instance);
FILTER_ANOTHER_CREATURE_YOU_CONTROL.setLockedFilter(true);
}
public static final FilterControlledCreaturePermanent FILTER_CONTROLLED_UNTAPPED_CREATURE = new FilterControlledCreaturePermanent("untapped creature you control"); public static final FilterControlledCreaturePermanent FILTER_CONTROLLED_UNTAPPED_CREATURE = new FilterControlledCreaturePermanent("untapped creature you control");
static { static {