[TLA] Implement Pirate Peddlers

This commit is contained in:
theelk801 2025-11-12 10:25:39 -05:00
parent f5ce27f6c8
commit 096795be00
15 changed files with 97 additions and 115 deletions

View file

@ -10,8 +10,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.cards.CardsImpl; import mage.cards.CardsImpl;
import mage.constants.*; import mage.constants.*;
import mage.filter.FilterPermanent; 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;
@ -23,12 +22,6 @@ import java.util.UUID;
*/ */
public final class AmarethTheLustrous extends CardImpl { public final class AmarethTheLustrous extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another permanent");
static {
filter.add(AnotherPredicate.instance);
}
public AmarethTheLustrous(UUID ownerId, CardSetInfo setInfo) { public AmarethTheLustrous(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{W}{U}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{W}{U}");
@ -41,7 +34,9 @@ public final class AmarethTheLustrous extends CardImpl {
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
// Whenever another permanent you control enters, look at the top card of your library. If it shares a card type with that permanent, you may reveal that card and put it into your hand. // Whenever another permanent you control enters, look at the top card of your library. If it shares a card type with that permanent, you may reveal that card and put it into your hand.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new AmarethTheLustrousEffect(), filter)); this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
new AmarethTheLustrousEffect(), StaticFilters.FILTER_ANOTHER_PERMANENT
));
} }
private AmarethTheLustrous(final AmarethTheLustrous card) { private AmarethTheLustrous(final AmarethTheLustrous card) {

View file

@ -9,32 +9,24 @@ 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.predicate.mageobject.AnotherPredicate;
import java.util.UUID; import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class Bloodbriar extends CardImpl { public final class Bloodbriar extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another permanent");
static {
filter.add(AnotherPredicate.instance);
}
public Bloodbriar(UUID ownerId, CardSetInfo setInfo) { public Bloodbriar(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
this.subtype.add(SubType.PLANT, SubType.ELEMENTAL); this.subtype.add(SubType.PLANT, SubType.ELEMENTAL);
this.power = new MageInt(2); this.power = new MageInt(2);
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
// Whenever you sacrifice another permanent, put a +1/+1 counter on Bloodbriar. // Whenever you sacrifice another permanent, put a +1/+1 counter on Bloodbriar.
this.addAbility(new SacrificePermanentTriggeredAbility( this.addAbility(new SacrificePermanentTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter new AddCountersSourceEffect(CounterType.P1P1.createInstance()), StaticFilters.FILTER_ANOTHER_PERMANENT
)); ));
} }

View file

@ -8,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.Duration; import mage.constants.Duration;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.util.functions.CopyApplier; import mage.util.functions.CopyApplier;
@ -22,12 +20,6 @@ import java.util.UUID;
*/ */
public final class CrystallineResonance extends CardImpl { public final class CrystallineResonance extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another permanent");
static {
filter.add(AnotherPredicate.instance);
}
public CrystallineResonance(UUID ownerId, CardSetInfo setInfo) { public CrystallineResonance(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
@ -54,7 +46,7 @@ public final class CrystallineResonance extends CardImpl {
"except it has this ability" "except it has this ability"
), true ), true
); );
ability.addTarget(new TargetPermanent(filter)); ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_PERMANENT));
return ability; return ability;
} }
} }

View file

@ -10,9 +10,9 @@ 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.FilterPermanent;
import mage.filter.StaticFilters;
import mage.filter.common.FilterEnchantmentCard; import mage.filter.common.FilterEnchantmentCard;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.filter.predicate.permanent.EnchantedPredicate; import mage.filter.predicate.permanent.EnchantedPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
@ -28,11 +28,9 @@ import java.util.UUID;
public final class EstridTheMasked extends CardImpl { public final class EstridTheMasked extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent(); private static final FilterPermanent filter = new FilterPermanent();
private static final FilterPermanent filter2 = new FilterPermanent("another permanent");
static { static {
filter.add(EnchantedPredicate.instance); filter.add(EnchantedPredicate.instance);
filter2.add(AnotherPredicate.instance);
} }
public EstridTheMasked(UUID ownerId, CardSetInfo setInfo) { public EstridTheMasked(UUID ownerId, CardSetInfo setInfo) {
@ -51,7 +49,7 @@ public final class EstridTheMasked extends CardImpl {
Ability ability = new LoyaltyAbility( Ability ability = new LoyaltyAbility(
new EstridTheMaskedTokenEffect(), -1 new EstridTheMaskedTokenEffect(), -1
); );
ability.addTarget(new TargetPermanent(filter2)); ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_PERMANENT));
this.addAbility(ability); this.addAbility(ability);
// -7: Put the top seven cards of your library into your graveyard. Return all non-Aura enchantment cards from your graveyard to the battlefield, then do the same for Aura cards. // -7: Put the top seven cards of your library into your graveyard. Return all non-Aura enchantment cards from your graveyard to the battlefield, then do the same for Aura cards.

View file

@ -8,30 +8,23 @@ import mage.abilities.effects.common.DoIfCostPaid;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.filter.FilterPermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import mage.target.common.TargetAnyTarget; import mage.target.common.TargetAnyTarget;
import java.util.UUID; import java.util.UUID;
/** /**
*
* @author BetaSteward_at_googlemail.com * @author BetaSteward_at_googlemail.com
*/ */
public final class FurnaceCelebration extends CardImpl { public final class FurnaceCelebration extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another permanent");
static {
filter.add(AnotherPredicate.instance);
}
public FurnaceCelebration(UUID ownerId, CardSetInfo setInfo) { public FurnaceCelebration(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}{R}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{R}");
// Whenever you sacrifice another permanent, you may pay {2}. If you do, Furnace Celebration deals 2 damage to any target. // Whenever you sacrifice another permanent, you may pay {2}. If you do, Furnace Celebration deals 2 damage to any target.
Ability ability = new SacrificePermanentTriggeredAbility(new DoIfCostPaid( Ability ability = new SacrificePermanentTriggeredAbility(new DoIfCostPaid(
new DamageTargetEffect(2), new GenericManaCost(2)), filter); new DamageTargetEffect(2), new GenericManaCost(2)
), StaticFilters.FILTER_ANOTHER_PERMANENT);
ability.addTarget(new TargetAnyTarget()); ability.addTarget(new TargetAnyTarget());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -8,8 +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.predicate.mageobject.AnotherPredicate;
import java.util.UUID; import java.util.UUID;
@ -18,12 +17,6 @@ import java.util.UUID;
*/ */
public final class GixianInfiltrator extends CardImpl { public final class GixianInfiltrator extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another permanent");
static {
filter.add(AnotherPredicate.instance);
}
public GixianInfiltrator(UUID ownerId, CardSetInfo setInfo) { public GixianInfiltrator(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
@ -34,7 +27,7 @@ public final class GixianInfiltrator extends CardImpl {
// Whenever you sacrifice another permanent, put a +1/+1 counter on Gixian Infiltrator. // Whenever you sacrifice another permanent, put a +1/+1 counter on Gixian Infiltrator.
this.addAbility(new SacrificePermanentTriggeredAbility( this.addAbility(new SacrificePermanentTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter new AddCountersSourceEffect(CounterType.P1P1.createInstance()), StaticFilters.FILTER_ANOTHER_PERMANENT
)); ));
} }

View file

@ -13,8 +13,7 @@ import mage.abilities.keyword.InspiredAbility;
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.predicate.mageobject.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
@ -26,12 +25,6 @@ import java.util.UUID;
*/ */
public final class ImmovableRod extends CardImpl { public final class ImmovableRod extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another permanent");
static {
filter.add(AnotherPredicate.instance);
}
public ImmovableRod(UUID ownerId, CardSetInfo setInfo) { public ImmovableRod(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{W}"); super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{W}");
@ -46,7 +39,7 @@ public final class ImmovableRod extends CardImpl {
Ability ability = new SimpleActivatedAbility(new ImmovableRodAbilityEffect(), new ManaCostsImpl<>("{3}{W}")); Ability ability = new SimpleActivatedAbility(new ImmovableRodAbilityEffect(), new ManaCostsImpl<>("{3}{W}"));
ability.addEffect(new ImmovableRodAttackBlockTargetEffect()); ability.addEffect(new ImmovableRodAttackBlockTargetEffect());
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addTarget(new TargetPermanent(filter)); ability.addTarget(new TargetPermanent(StaticFilters.FILTER_ANOTHER_PERMANENT));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -14,9 +14,7 @@ import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import java.util.UUID; import java.util.UUID;
@ -25,12 +23,6 @@ import java.util.UUID;
*/ */
public final class KorvoldFaeCursedKing extends CardImpl { public final class KorvoldFaeCursedKing extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another permanent");
static {
filter.add(AnotherPredicate.instance);
}
public KorvoldFaeCursedKing(UUID ownerId, CardSetInfo setInfo) { public KorvoldFaeCursedKing(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{R}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{R}{G}");
@ -45,13 +37,14 @@ public final class KorvoldFaeCursedKing extends CardImpl {
// Whenever Korvold, Fae-Cursed King enters the battlefield or attacks, sacrifice another permanent. // Whenever Korvold, Fae-Cursed King enters the battlefield or attacks, sacrifice another permanent.
this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility( this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(
new SacrificeControllerEffect(filter, 1, "") new SacrificeControllerEffect(StaticFilters.FILTER_ANOTHER_PERMANENT, 1, "")
)); ));
// Whenever you sacrifice a permanent, put a +1/+1 counter on Korvold and draw a card. // Whenever you sacrifice a permanent, put a +1/+1 counter on Korvold and draw a card.
Ability ability = new SacrificePermanentTriggeredAbility( Ability ability = new SacrificePermanentTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new AddCountersSourceEffect(CounterType.P1P1.createInstance()),
StaticFilters.FILTER_PERMANENT); StaticFilters.FILTER_PERMANENT
);
ability.addEffect(new DrawCardSourceControllerEffect(1).concatBy("and")); ability.addEffect(new DrawCardSourceControllerEffect(1).concatBy("and"));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -6,28 +6,22 @@ import mage.abilities.effects.common.counter.AddCountersAllEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.TargetController;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import java.util.UUID; import java.util.UUID;
/** /**
*
* @author fireshoes * @author fireshoes
*/ */
public final class MazirekKraulDeathPriest extends CardImpl { public final class MazirekKraulDeathPriest extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another permanent");
static {
filter.add(AnotherPredicate.instance);
}
public MazirekKraulDeathPriest(UUID ownerId, CardSetInfo setInfo) { public MazirekKraulDeathPriest(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{G}");
this.supertype.add(SuperType.LEGENDARY); this.supertype.add(SuperType.LEGENDARY);
this.subtype.add(SubType.INSECT); this.subtype.add(SubType.INSECT);
this.subtype.add(SubType.SHAMAN); this.subtype.add(SubType.SHAMAN);
@ -38,9 +32,9 @@ public final class MazirekKraulDeathPriest extends CardImpl {
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
// Whenever a player sacrifices another permanent, put a +1/+1 counter on each creature you control. // Whenever a player sacrifices another permanent, put a +1/+1 counter on each creature you control.
this.addAbility(new SacrificePermanentTriggeredAbility(Zone.BATTLEFIELD, this.addAbility(new SacrificePermanentTriggeredAbility(new AddCountersAllEffect(
new AddCountersAllEffect(CounterType.P1P1.createInstance(), StaticFilters.FILTER_CONTROLLED_CREATURE), CounterType.P1P1.createInstance(), StaticFilters.FILTER_CONTROLLED_CREATURE
filter, TargetController.ANY, SetTargetPointer.NONE, false)); ), StaticFilters.FILTER_ANOTHER_PERMANENT, TargetController.ANY));
} }
private MazirekKraulDeathPriest(final MazirekKraulDeathPriest card) { private MazirekKraulDeathPriest(final MazirekKraulDeathPriest card) {

View file

@ -0,0 +1,46 @@
package mage.cards.p;
import mage.MageInt;
import mage.abilities.common.SacrificePermanentTriggeredAbility;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.DeathtouchAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class PiratePeddlers extends CardImpl {
public PiratePeddlers(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.PIRATE);
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// Deathtouch
this.addAbility(DeathtouchAbility.getInstance());
// Whenever you sacrifice another permanent, put a +1/+1 counter on this creature.
this.addAbility(new SacrificePermanentTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), StaticFilters.FILTER_ANOTHER_PERMANENT
));
}
private PiratePeddlers(final PiratePeddlers card) {
super(card);
}
@Override
public PiratePeddlers copy() {
return new PiratePeddlers(this);
}
}

View file

@ -9,8 +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.predicate.mageobject.AnotherPredicate;
import java.util.UUID; import java.util.UUID;
@ -19,12 +18,6 @@ import java.util.UUID;
*/ */
public final class SorcerersBroom extends CardImpl { public final class SorcerersBroom extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another permanent");
static {
filter.add(AnotherPredicate.instance);
}
public SorcerersBroom(UUID ownerId, CardSetInfo setInfo) { public SorcerersBroom(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}"); super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
@ -35,7 +28,7 @@ public final class SorcerersBroom extends CardImpl {
// Whenever you sacrifice another permanent, you may pay {3}. If you do, create a token that's a copy of Sorcerer's Broom. // Whenever you sacrifice another permanent, you may pay {3}. If you do, create a token that's a copy of Sorcerer's Broom.
this.addAbility(new SacrificePermanentTriggeredAbility( this.addAbility(new SacrificePermanentTriggeredAbility(
new DoIfCostPaid(new CreateTokenCopySourceEffect(), new GenericManaCost(3)), new DoIfCostPaid(new CreateTokenCopySourceEffect(), new GenericManaCost(3)),
filter StaticFilters.FILTER_ANOTHER_PERMANENT
)); ));
} }

View file

@ -10,8 +10,7 @@ import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterPermanent; import mage.filter.StaticFilters;
import mage.filter.predicate.mageobject.AnotherPredicate;
import java.util.UUID; import java.util.UUID;
@ -20,12 +19,6 @@ import java.util.UUID;
*/ */
public final class SuperShredder extends CardImpl { public final class SuperShredder extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another permanent");
static {
filter.add(AnotherPredicate.instance);
}
public SuperShredder(UUID ownerId, CardSetInfo setInfo) { public SuperShredder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
@ -41,7 +34,7 @@ public final class SuperShredder extends CardImpl {
// Whenever another permanent leaves the battlefield, put a +1/+1 counter on Super Shredder. // Whenever another permanent leaves the battlefield, put a +1/+1 counter on Super Shredder.
this.addAbility(new LeavesBattlefieldAllTriggeredAbility( this.addAbility(new LeavesBattlefieldAllTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter new AddCountersSourceEffect(CounterType.P1P1.createInstance()), StaticFilters.FILTER_ANOTHER_PERMANENT
)); ));
} }

View file

@ -3,13 +3,18 @@ package mage.cards.v;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SacrificePermanentTriggeredAbility; import mage.abilities.common.SacrificePermanentTriggeredAbility;
import mage.abilities.effects.common.*; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.IfAbilityHasResolvedXTimesEffect;
import mage.abilities.effects.common.LoseLifeOpponentsEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.CardType;
import mage.filter.FilterPermanent; import mage.constants.Outcome;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.StaticFilters;
import mage.game.permanent.token.VampireDemonToken; import mage.game.permanent.token.VampireDemonToken;
import mage.watchers.common.AbilityResolvedWatcher; import mage.watchers.common.AbilityResolvedWatcher;
@ -20,12 +25,6 @@ import java.util.UUID;
*/ */
public final class VitoFanaticOfAclazotz extends CardImpl { public final class VitoFanaticOfAclazotz extends CardImpl {
private static final FilterPermanent filter = new FilterPermanent("another permanent");
static {
filter.add(AnotherPredicate.instance);
}
public VitoFanaticOfAclazotz(UUID ownerId, CardSetInfo setInfo) { public VitoFanaticOfAclazotz(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{B}");
@ -43,7 +42,7 @@ public final class VitoFanaticOfAclazotz extends CardImpl {
new IfAbilityHasResolvedXTimesEffect( new IfAbilityHasResolvedXTimesEffect(
Outcome.GainLife, 1, new GainLifeEffect(2) Outcome.GainLife, 1, new GainLifeEffect(2)
).setText("you gain 2 life if this is the first time this ability has resolved this turn"), ).setText("you gain 2 life if this is the first time this ability has resolved this turn"),
filter StaticFilters.FILTER_ANOTHER_PERMANENT
); );
ability.addEffect( ability.addEffect(
new IfAbilityHasResolvedXTimesEffect( new IfAbilityHasResolvedXTimesEffect(

View file

@ -237,6 +237,7 @@ public final class AvatarTheLastAirbender extends ExpansionSet {
cards.add(new SetCardInfo("Ozai, the Phoenix King", 335, Rarity.MYTHIC, mage.cards.o.OzaiThePhoenixKing.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Ozai, the Phoenix King", 335, Rarity.MYTHIC, mage.cards.o.OzaiThePhoenixKing.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Path to Redemption", 31, Rarity.COMMON, mage.cards.p.PathToRedemption.class)); cards.add(new SetCardInfo("Path to Redemption", 31, Rarity.COMMON, mage.cards.p.PathToRedemption.class));
cards.add(new SetCardInfo("Pillar Launch", 189, Rarity.COMMON, mage.cards.p.PillarLaunch.class)); cards.add(new SetCardInfo("Pillar Launch", 189, Rarity.COMMON, mage.cards.p.PillarLaunch.class));
cards.add(new SetCardInfo("Pirate Peddlers", 115, Rarity.COMMON, mage.cards.p.PiratePeddlers.class));
cards.add(new SetCardInfo("Plains", 282, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Plains", 282, Rarity.LAND, mage.cards.basiclands.Plains.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Plains", 287, Rarity.LAND, mage.cards.basiclands.Plains.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Plains", 287, Rarity.LAND, mage.cards.basiclands.Plains.class, FULL_ART_BFZ_VARIOUS));
cards.add(new SetCardInfo("Plains", 292, Rarity.LAND, mage.cards.basiclands.Plains.class, FULL_ART_BFZ_VARIOUS)); cards.add(new SetCardInfo("Plains", 292, Rarity.LAND, mage.cards.basiclands.Plains.class, FULL_ART_BFZ_VARIOUS));

View file

@ -601,6 +601,13 @@ public final class StaticFilters {
FILTER_OPPONENTS_PERMANENT_ARTIFACT_OR_CREATURE.setLockedFilter(true); FILTER_OPPONENTS_PERMANENT_ARTIFACT_OR_CREATURE.setLockedFilter(true);
} }
public static final FilterPermanent FILTER_ANOTHER_PERMANENT = new FilterPermanent("another permanent");
static {
FILTER_ANOTHER_PERMANENT.add(AnotherPredicate.instance);
FILTER_ANOTHER_PERMANENT.setLockedFilter(true);
}
public static final FilterCreaturePermanent FILTER_ANOTHER_CREATURE = new FilterCreaturePermanent("another creature"); public static final FilterCreaturePermanent FILTER_ANOTHER_CREATURE = new FilterCreaturePermanent("another creature");
static { static {