diff --git a/Mage.Sets/src/mage/cards/a/AbbeyGargoyles.java b/Mage.Sets/src/mage/cards/a/AbbeyGargoyles.java index 2f36ec97b4..f80410fa38 100644 --- a/Mage.Sets/src/mage/cards/a/AbbeyGargoyles.java +++ b/Mage.Sets/src/mage/cards/a/AbbeyGargoyles.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterObject; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,11 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class AbbeyGargoyles extends CardImpl { - private static final FilterObject filter = new FilterObject("red"); - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public AbbeyGargoyles(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{W}{W}"); this.subtype.add("Gargoyle"); @@ -58,7 +51,7 @@ public class AbbeyGargoyles extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); } public AbbeyGargoyles(final AbbeyGargoyles card) { diff --git a/Mage.Sets/src/mage/cards/a/AbsoluteGrace.java b/Mage.Sets/src/mage/cards/a/AbsoluteGrace.java index dd36cceb88..b88ebeeb7a 100644 --- a/Mage.Sets/src/mage/cards/a/AbsoluteGrace.java +++ b/Mage.Sets/src/mage/cards/a/AbsoluteGrace.java @@ -39,9 +39,7 @@ import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,17 +47,11 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class AbsoluteGrace extends CardImpl { - private static final FilterCard filter = new FilterCard("Black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public AbsoluteGrace(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}"); - Ability ability = new ProtectionAbility(filter); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(ability, Duration.WhileOnBattlefield, new FilterCreaturePermanent(), false))); + Ability ability = ProtectionAbility.from(ObjectColor.BLACK); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(ability, Duration.WhileOnBattlefield, new FilterCreaturePermanent("creatures"), false))); } public AbsoluteGrace(final AbsoluteGrace card) { diff --git a/Mage.Sets/src/mage/cards/a/AbsoluteLaw.java b/Mage.Sets/src/mage/cards/a/AbsoluteLaw.java index 1026ab16a4..7431c972c7 100644 --- a/Mage.Sets/src/mage/cards/a/AbsoluteLaw.java +++ b/Mage.Sets/src/mage/cards/a/AbsoluteLaw.java @@ -39,9 +39,7 @@ import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,17 +47,11 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class AbsoluteLaw extends CardImpl { - private static final FilterCard filter = new FilterCard("Red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public AbsoluteLaw(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}"); - Ability ability = new ProtectionAbility(filter); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(ability, Duration.WhileOnBattlefield, new FilterCreaturePermanent(), false))); + Ability ability = ProtectionAbility.from(ObjectColor.RED); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(ability, Duration.WhileOnBattlefield, new FilterCreaturePermanent("creatures"), false))); } public AbsoluteLaw(final AbsoluteLaw card) { diff --git a/Mage.Sets/src/mage/cards/a/AkkiLavarunner.java b/Mage.Sets/src/mage/cards/a/AkkiLavarunner.java index bda8aea4e0..b8dbef730d 100644 --- a/Mage.Sets/src/mage/cards/a/AkkiLavarunner.java +++ b/Mage.Sets/src/mage/cards/a/AkkiLavarunner.java @@ -17,8 +17,6 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent.EventType; @@ -90,13 +88,6 @@ class AkkiLavarunnerAbility extends TriggeredAbilityImpl { } class TokTokVolcanoBorn extends Token { - - private static final FilterCard filter = new FilterCard("red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - TokTokVolcanoBorn() { super("Tok-Tok, Volcano Born", ""); supertype.add("Legendary"); @@ -106,7 +97,7 @@ class TokTokVolcanoBorn extends Token { subtype.add("Shaman"); power = new MageInt(2); toughness = new MageInt(2); - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new TokTokVolcanoBornEffect())); } } diff --git a/Mage.Sets/src/mage/cards/a/AkromaAngelOfFury.java b/Mage.Sets/src/mage/cards/a/AkromaAngelOfFury.java index c5a4bcbe0f..096a9b8fcd 100644 --- a/Mage.Sets/src/mage/cards/a/AkromaAngelOfFury.java +++ b/Mage.Sets/src/mage/cards/a/AkromaAngelOfFury.java @@ -43,9 +43,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -53,12 +50,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class AkromaAngelOfFury extends CardImpl { - private static final FilterCard protectionFilter = new FilterCard("white and from blue"); - - static { - protectionFilter.add(Predicates.or(new ColorPredicate(ObjectColor.WHITE),new ColorPredicate(ObjectColor.BLUE))); - } - public AkromaAngelOfFury(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{R}{R}{R}"); this.supertype.add("Legendary"); @@ -74,7 +65,7 @@ public class AkromaAngelOfFury extends CardImpl { // Trample this.addAbility(TrampleAbility.getInstance()); // protection from white and from blue - this.addAbility(new ProtectionAbility(protectionFilter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE, ObjectColor.BLUE)); // {R}: Akroma, Angel of Fury gets +1/+0 until end of turn. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1,0, Duration.EndOfTurn), new ManaCostsImpl("{R}"))); // Morph {3}{R}{R}{R} diff --git a/Mage.Sets/src/mage/cards/a/AkromaAngelOfWrath.java b/Mage.Sets/src/mage/cards/a/AkromaAngelOfWrath.java index 6be03b7a1c..6d808c5d69 100644 --- a/Mage.Sets/src/mage/cards/a/AkromaAngelOfWrath.java +++ b/Mage.Sets/src/mage/cards/a/AkromaAngelOfWrath.java @@ -34,9 +34,6 @@ import mage.ObjectColor; import mage.abilities.keyword.*; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +41,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class AkromaAngelOfWrath extends CardImpl { - private static final FilterCard protectionFilter = new FilterCard("black and from red"); - - static { - protectionFilter.add(Predicates.or(new ColorPredicate(ObjectColor.BLACK),new ColorPredicate(ObjectColor.RED))); - } - public AkromaAngelOfWrath(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}{W}{W}"); this.supertype.add("Legendary"); @@ -64,7 +55,7 @@ public class AkromaAngelOfWrath extends CardImpl { this.addAbility(TrampleAbility.getInstance()); this.addAbility(HasteAbility.getInstance()); // protection from black and from red - this.addAbility(new ProtectionAbility(protectionFilter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK, ObjectColor.RED)); } public AkromaAngelOfWrath(final AkromaAngelOfWrath card) { diff --git a/Mage.Sets/src/mage/cards/a/AkromasMemorial.java b/Mage.Sets/src/mage/cards/a/AkromasMemorial.java index c065d97764..d22e8a4c33 100644 --- a/Mage.Sets/src/mage/cards/a/AkromasMemorial.java +++ b/Mage.Sets/src/mage/cards/a/AkromasMemorial.java @@ -37,31 +37,22 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.common.FilterControlledCreaturePermanent; -import mage.filter.predicate.mageobject.ColorPredicate; import java.util.UUID; -import mage.filter.predicate.Predicates; /** * @author Loki, noxx */ public class AkromasMemorial extends CardImpl { - private static final FilterCard protectionFilter = new FilterCard("black and from red"); - - static { - protectionFilter.add(Predicates.or(new ColorPredicate(ObjectColor.BLACK),new ColorPredicate(ObjectColor.RED))); - } - - public AkromasMemorial(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{7}"); this.supertype.add("Legendary"); // Creatures you control have flying, first strike, vigilance, trample, haste, and protection from black and from red. - CompoundAbility compoundAbilities = new CompoundAbility(FlyingAbility.getInstance(), FirstStrikeAbility.getInstance(), VigilanceAbility.getInstance(), TrampleAbility.getInstance(), HasteAbility.getInstance(), new ProtectionAbility(protectionFilter)); + CompoundAbility compoundAbilities = new CompoundAbility(FlyingAbility.getInstance(), FirstStrikeAbility.getInstance(), VigilanceAbility.getInstance(), + TrampleAbility.getInstance(), HasteAbility.getInstance(), ProtectionAbility.from(ObjectColor.BLACK, ObjectColor.RED)); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(compoundAbilities, Duration.WhileOnBattlefield, new FilterControlledCreaturePermanent("Creatures")))); } diff --git a/Mage.Sets/src/mage/cards/a/AnimarSoulOfElements.java b/Mage.Sets/src/mage/cards/a/AnimarSoulOfElements.java index 63cd14374a..d5fa20e12c 100644 --- a/Mage.Sets/src/mage/cards/a/AnimarSoulOfElements.java +++ b/Mage.Sets/src/mage/cards/a/AnimarSoulOfElements.java @@ -47,11 +47,8 @@ import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Zone; import mage.counters.CounterType; -import mage.filter.FilterCard; import mage.filter.FilterSpell; -import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.util.CardUtil; @@ -63,11 +60,7 @@ import mage.util.CardUtil; public class AnimarSoulOfElements extends CardImpl { private static final FilterSpell filterSpell = new FilterSpell("a creature spell"); - private static final FilterCard filter = new FilterCard("white and from black"); static { - filter.add(Predicates.or( - new ColorPredicate(ObjectColor.WHITE), - new ColorPredicate(ObjectColor.BLACK))); filterSpell.add(new CardTypePredicate(CardType.CREATURE)); } @@ -80,7 +73,7 @@ public class AnimarSoulOfElements extends CardImpl { this.toughness = new MageInt(1); // Protection from white and from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE, ObjectColor.BLACK)); // Whenever you cast a creature spell, put a +1/+1 counter on Animar, Soul of Elements. this.addAbility(new SpellCastControllerTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filterSpell, false)); diff --git a/Mage.Sets/src/mage/cards/a/AuriokChampion.java b/Mage.Sets/src/mage/cards/a/AuriokChampion.java index 2950886b5d..e53c00fdc5 100644 --- a/Mage.Sets/src/mage/cards/a/AuriokChampion.java +++ b/Mage.Sets/src/mage/cards/a/AuriokChampion.java @@ -36,9 +36,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -46,12 +43,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class AuriokChampion extends CardImpl { - static final FilterCard filter = new FilterCard("black and from red"); - - static { - filter.add(Predicates.or(new ColorPredicate(ObjectColor.BLACK),new ColorPredicate(ObjectColor.RED))); - } - public AuriokChampion(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}"); this.subtype.add("Human"); @@ -61,7 +52,7 @@ public class AuriokChampion extends CardImpl { this.toughness = new MageInt(1); // Protection from black and from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK, ObjectColor.RED)); // Whenever another creature enters the battlefield, you may gain 1 life. this.addAbility(new AnotherCreatureEntersBattlefieldTriggeredAbility(new GainLifeEffect(1), true)); diff --git a/Mage.Sets/src/mage/cards/a/AvenSmokeweaver.java b/Mage.Sets/src/mage/cards/a/AvenSmokeweaver.java index bde9118c66..b0ce969038 100644 --- a/Mage.Sets/src/mage/cards/a/AvenSmokeweaver.java +++ b/Mage.Sets/src/mage/cards/a/AvenSmokeweaver.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class AvenSmokeweaver extends CardImpl { - static final FilterCard filter = new FilterCard("red"); - - static{ - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public AvenSmokeweaver(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}"); this.subtype.add("Bird"); @@ -61,7 +53,7 @@ public class AvenSmokeweaver extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); } public AvenSmokeweaver(final AvenSmokeweaver card) { diff --git a/Mage.Sets/src/mage/cards/b/BeastsOfBogardan.java b/Mage.Sets/src/mage/cards/b/BeastsOfBogardan.java index b2caa41663..a0325fa9af 100644 --- a/Mage.Sets/src/mage/cards/b/BeastsOfBogardan.java +++ b/Mage.Sets/src/mage/cards/b/BeastsOfBogardan.java @@ -40,7 +40,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.FilterPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; @@ -52,11 +51,9 @@ import mage.filter.predicate.permanent.TokenPredicate; */ public class BeastsOfBogardan extends CardImpl { - private static final FilterCard protectionFilter = new FilterCard("red"); private static final FilterPermanent controlFilter = new FilterPermanent("nontoken white permanent"); static { - protectionFilter.add(new ColorPredicate(ObjectColor.RED)); controlFilter.add(new ColorPredicate(ObjectColor.WHITE)); controlFilter.add(Predicates.not(new TokenPredicate())); } @@ -68,7 +65,7 @@ public class BeastsOfBogardan extends CardImpl { this.toughness = new MageInt(3); // Protection from red - this.addAbility(new ProtectionAbility(protectionFilter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); // Beasts of Bogardan gets +1/+1 as long as an opponent controls a nontoken white permanent. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( new BoostSourceEffect(1, 1, Duration.WhileOnBattlefield), diff --git a/Mage.Sets/src/mage/cards/b/BlackKnight.java b/Mage.Sets/src/mage/cards/b/BlackKnight.java index 2a5214e5fa..b298458de4 100644 --- a/Mage.Sets/src/mage/cards/b/BlackKnight.java +++ b/Mage.Sets/src/mage/cards/b/BlackKnight.java @@ -36,8 +36,6 @@ import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,12 +43,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class BlackKnight extends CardImpl { - private static final FilterCard filter = new FilterCard("White"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public BlackKnight(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}"); this.subtype.add("Human"); @@ -60,7 +52,7 @@ public class BlackKnight extends CardImpl { this.toughness = new MageInt(2); this.addAbility(FirstStrikeAbility.getInstance()); - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); } public BlackKnight(final BlackKnight card) { diff --git a/Mage.Sets/src/mage/cards/b/BloatedToad.java b/Mage.Sets/src/mage/cards/b/BloatedToad.java index 0cc9a1abda..49cb0db178 100644 --- a/Mage.Sets/src/mage/cards/b/BloatedToad.java +++ b/Mage.Sets/src/mage/cards/b/BloatedToad.java @@ -36,8 +36,6 @@ import mage.abilities.keyword.CyclingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,12 +43,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class BloatedToad extends CardImpl { - private static final FilterCard filter = new FilterCard("Blue"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLUE)); - } - public BloatedToad(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}"); this.subtype.add("Frog"); @@ -58,7 +50,7 @@ public class BloatedToad extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLUE)); this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}"))); } diff --git a/Mage.Sets/src/mage/cards/b/BloodBaronOfVizkopa.java b/Mage.Sets/src/mage/cards/b/BloodBaronOfVizkopa.java index 81c5b35a8e..fb8bb55033 100644 --- a/Mage.Sets/src/mage/cards/b/BloodBaronOfVizkopa.java +++ b/Mage.Sets/src/mage/cards/b/BloodBaronOfVizkopa.java @@ -44,23 +44,12 @@ import mage.constants.Layer; import mage.constants.Outcome; import mage.constants.SubLayer; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; public class BloodBaronOfVizkopa extends CardImpl { - private static final FilterCard filter = new FilterCard("white and from black"); - - static { - filter.add(Predicates.or( - new ColorPredicate(ObjectColor.WHITE), - new ColorPredicate(ObjectColor.BLACK))); - } - public BloodBaronOfVizkopa(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{B}"); this.subtype.add("Vampire"); @@ -70,7 +59,7 @@ public class BloodBaronOfVizkopa extends CardImpl { // Lifelink, protection from white and from black. this.addAbility(LifelinkAbility.getInstance()); - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE, ObjectColor.BLACK)); // As long as you have 30 or more life and an opponent has 10 or less life, Blood Baron of Vizkopa gets +6/+6 and has flying. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BloodBaronOfVizkopaEffect())); diff --git a/Mage.Sets/src/mage/cards/b/BloodKnight.java b/Mage.Sets/src/mage/cards/b/BloodKnight.java index 6d908ede99..e13169e2f8 100644 --- a/Mage.Sets/src/mage/cards/b/BloodKnight.java +++ b/Mage.Sets/src/mage/cards/b/BloodKnight.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class BloodKnight extends CardImpl { - private static final FilterCard filter = new FilterCard("white"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public BloodKnight(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{R}"); this.subtype.add("Human"); @@ -61,7 +53,7 @@ public class BloodKnight extends CardImpl { // First strike this.addAbility(FirstStrikeAbility.getInstance()); // protection from white - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); } public BloodKnight(final BloodKnight card) { diff --git a/Mage.Sets/src/mage/cards/b/BogElemental.java b/Mage.Sets/src/mage/cards/b/BogElemental.java index 3ed5eca8f7..7056381852 100644 --- a/Mage.Sets/src/mage/cards/b/BogElemental.java +++ b/Mage.Sets/src/mage/cards/b/BogElemental.java @@ -39,9 +39,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.TargetController; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.common.FilterControlledLandPermanent; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetControlledPermanent; /** @@ -50,12 +48,6 @@ import mage.target.common.TargetControlledPermanent; */ public class BogElemental extends CardImpl { - private static final FilterCard filter = new FilterCard("white"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public BogElemental(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}"); this.subtype.add("Elemental"); @@ -63,7 +55,7 @@ public class BogElemental extends CardImpl { this.toughness = new MageInt(4); // Protection from white - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); // At the beginning of your upkeep, sacrifice Bog Elemental unless you sacrifice a land. this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, diff --git a/Mage.Sets/src/mage/cards/b/BurrentonForgeTender.java b/Mage.Sets/src/mage/cards/b/BurrentonForgeTender.java index 15e8957321..bdb374fd5d 100644 --- a/Mage.Sets/src/mage/cards/b/BurrentonForgeTender.java +++ b/Mage.Sets/src/mage/cards/b/BurrentonForgeTender.java @@ -38,7 +38,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.FilterObject; import mage.filter.predicate.mageobject.ColorPredicate; @@ -48,11 +47,9 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class BurrentonForgeTender extends CardImpl { - private static final FilterCard filter = new FilterCard("Red"); private static final FilterObject filterObject = new FilterObject("a red"); static { - filter.add(new ColorPredicate(ObjectColor.RED)); filterObject.add(new ColorPredicate(ObjectColor.RED)); } @@ -65,7 +62,7 @@ public class BurrentonForgeTender extends CardImpl { this.toughness = new MageInt(1); // Protection from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); // Sacrifice Burrenton Forge-Tender: Prevent all damage a red source of your choice would deal this turn. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PreventDamageBySourceEffect(filterObject), new SacrificeSourceCost())); diff --git a/Mage.Sets/src/mage/cards/c/CemeteryGate.java b/Mage.Sets/src/mage/cards/c/CemeteryGate.java index 229b94a6a4..527154e953 100644 --- a/Mage.Sets/src/mage/cards/c/CemeteryGate.java +++ b/Mage.Sets/src/mage/cards/c/CemeteryGate.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class CemeteryGate extends CardImpl { - private static final FilterCard filter = new FilterCard("Black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public CemeteryGate(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}"); this.subtype.add("Wall"); @@ -60,7 +52,7 @@ public class CemeteryGate extends CardImpl { this.addAbility(DefenderAbility.getInstance()); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); } public CemeteryGate(final CemeteryGate card) { diff --git a/Mage.Sets/src/mage/cards/c/CeruleanWyvern.java b/Mage.Sets/src/mage/cards/c/CeruleanWyvern.java index c7d7738458..1edb7163da 100644 --- a/Mage.Sets/src/mage/cards/c/CeruleanWyvern.java +++ b/Mage.Sets/src/mage/cards/c/CeruleanWyvern.java @@ -44,12 +44,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class CeruleanWyvern extends CardImpl { - private static final FilterCard filter = new FilterCard("green"); - - static { - filter.add(new ColorPredicate(ObjectColor.GREEN)); - } - public CeruleanWyvern(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}"); this.subtype.add("Drake"); @@ -59,7 +53,7 @@ public class CeruleanWyvern extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from green - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.GREEN)); } public CeruleanWyvern(final CeruleanWyvern card) { diff --git a/Mage.Sets/src/mage/cards/c/ChameleonColossus.java b/Mage.Sets/src/mage/cards/c/ChameleonColossus.java index 9778b82686..275e3f3b00 100644 --- a/Mage.Sets/src/mage/cards/c/ChameleonColossus.java +++ b/Mage.Sets/src/mage/cards/c/ChameleonColossus.java @@ -42,8 +42,6 @@ import mage.abilities.keyword.ChangelingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -51,12 +49,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class ChameleonColossus extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public ChameleonColossus(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}"); this.subtype.add("Shapeshifter"); @@ -68,7 +60,7 @@ public class ChameleonColossus extends CardImpl { this.addAbility(ChangelingAbility.getInstance()); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // {2}{G}{G}: Chameleon Colossus gets +X/+X until end of turn, where X is its power. SourcePermanentPowerCount x = new SourcePermanentPowerCount(); diff --git a/Mage.Sets/src/mage/cards/c/ChoArrimLegate.java b/Mage.Sets/src/mage/cards/c/ChoArrimLegate.java index a251dcd2e5..d435b6e655 100644 --- a/Mage.Sets/src/mage/cards/c/ChoArrimLegate.java +++ b/Mage.Sets/src/mage/cards/c/ChoArrimLegate.java @@ -39,9 +39,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; /** @@ -52,12 +50,10 @@ public class ChoArrimLegate extends CardImpl { private static final FilterPermanent filterPlains = new FilterPermanent(); private static final FilterPermanent filterSwamp = new FilterPermanent(); - private static final FilterCard filter = new FilterCard("black"); static { filterPlains.add(new SubtypePredicate(("Plains"))); filterSwamp.add(new SubtypePredicate(("Swamp"))); - filter.add(new ColorPredicate(ObjectColor.BLACK)); } public ChoArrimLegate(UUID ownerId, CardSetInfo setInfo) { @@ -68,7 +64,7 @@ public class ChoArrimLegate extends CardImpl { this.toughness = new MageInt(2); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // If an opponent controls a Swamp and you control a Plains, you may cast Cho-Arrim Legate without paying its mana cost. Condition condition = new CompoundCondition("If an opponent controls a Swamp and you control a Plains", diff --git a/Mage.Sets/src/mage/cards/c/CoastWatcher.java b/Mage.Sets/src/mage/cards/c/CoastWatcher.java index fa233cae30..713fa18c76 100644 --- a/Mage.Sets/src/mage/cards/c/CoastWatcher.java +++ b/Mage.Sets/src/mage/cards/c/CoastWatcher.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class CoastWatcher extends CardImpl { - private static final FilterCard filter = new FilterCard("green"); - - static { - filter.add(new ColorPredicate(ObjectColor.GREEN)); - } - public CoastWatcher(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}"); this.subtype.add("Bird"); @@ -60,7 +52,7 @@ public class CoastWatcher extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from green - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.GREEN)); } public CoastWatcher(final CoastWatcher card) { diff --git a/Mage.Sets/src/mage/cards/c/CrimsonAcolyte.java b/Mage.Sets/src/mage/cards/c/CrimsonAcolyte.java index 0f619d00e3..21904b9926 100644 --- a/Mage.Sets/src/mage/cards/c/CrimsonAcolyte.java +++ b/Mage.Sets/src/mage/cards/c/CrimsonAcolyte.java @@ -40,8 +40,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -50,12 +48,6 @@ import mage.target.common.TargetCreaturePermanent; */ public class CrimsonAcolyte extends CardImpl { - private static final FilterCard protectionFilter = new FilterCard("Red"); - - static { - protectionFilter.add(new ColorPredicate(ObjectColor.RED)); - } - public CrimsonAcolyte(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Human"); @@ -64,11 +56,11 @@ public class CrimsonAcolyte extends CardImpl { this.toughness = new MageInt(1); // Protection from red - this.addAbility(new ProtectionAbility(protectionFilter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); // {W}: Target creature gains protection from red until end of turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, - new GainAbilityTargetEffect(new ProtectionAbility(protectionFilter), Duration.EndOfTurn), + new GainAbilityTargetEffect(ProtectionAbility.from(ObjectColor.RED), Duration.EndOfTurn), new ManaCostsImpl("{W}")); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/c/CrusadingKnight.java b/Mage.Sets/src/mage/cards/c/CrusadingKnight.java index b10bcb2206..8d3924408c 100644 --- a/Mage.Sets/src/mage/cards/c/CrusadingKnight.java +++ b/Mage.Sets/src/mage/cards/c/CrusadingKnight.java @@ -37,9 +37,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; -import mage.filter.FilterCard; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.ControllerPredicate; @@ -49,10 +47,8 @@ import mage.filter.predicate.permanent.ControllerPredicate; */ public class CrusadingKnight extends CardImpl { - private static final FilterCard protectionFilter = new FilterCard("Black"); private static final FilterLandPermanent swampFilter = new FilterLandPermanent("Swamp your opponent controls"); static { - protectionFilter.add(new ColorPredicate(ObjectColor.BLACK)); swampFilter.add(new SubtypePredicate("Swamp")); swampFilter.add(new ControllerPredicate(TargetController.OPPONENT)); } @@ -65,7 +61,7 @@ public class CrusadingKnight extends CardImpl { this.toughness = new MageInt(2); // Protection from black - this.addAbility(new ProtectionAbility(protectionFilter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // Crusading Knight gets +1/+1 for each Swamp your opponents control. PermanentsOnBattlefieldCount amount = new PermanentsOnBattlefieldCount(swampFilter, 1); diff --git a/Mage.Sets/src/mage/cards/c/CryptAngel.java b/Mage.Sets/src/mage/cards/c/CryptAngel.java index 9934d1cc45..f4d87d3a37 100644 --- a/Mage.Sets/src/mage/cards/c/CryptAngel.java +++ b/Mage.Sets/src/mage/cards/c/CryptAngel.java @@ -38,7 +38,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; @@ -47,15 +46,12 @@ import mage.target.common.TargetCardInYourGraveyard; /** * * @author LoneFox - */ public class CryptAngel extends CardImpl { - private static final FilterCard filter = new FilterCard("white"); private static final FilterCreatureCard filter2 = new FilterCreatureCard("blue or red creature card from your graveyard"); static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); filter2.add(Predicates.or(new ColorPredicate(ObjectColor.RED), new ColorPredicate(ObjectColor.BLUE))); } @@ -68,7 +64,7 @@ public class CryptAngel extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from white - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); // When Crypt Angel enters the battlefield, return target blue or red creature card from your graveyard to your hand. Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), false); ability.addTarget(new TargetCardInYourGraveyard(filter2)); diff --git a/Mage.Sets/src/mage/cards/d/DarkwatchElves.java b/Mage.Sets/src/mage/cards/d/DarkwatchElves.java index bf322c6b6c..8ee61358b2 100644 --- a/Mage.Sets/src/mage/cards/d/DarkwatchElves.java +++ b/Mage.Sets/src/mage/cards/d/DarkwatchElves.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.CyclingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import java.util.UUID; @@ -45,12 +43,6 @@ import java.util.UUID; */ public class DarkwatchElves extends CardImpl { - private static final FilterCard filter = new FilterCard("Black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public DarkwatchElves(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}"); this.subtype.add("Elf"); @@ -58,7 +50,7 @@ public class DarkwatchElves extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}"))); } diff --git a/Mage.Sets/src/mage/cards/d/DeathSpeakers.java b/Mage.Sets/src/mage/cards/d/DeathSpeakers.java index 3c88b53d5b..0a98194858 100644 --- a/Mage.Sets/src/mage/cards/d/DeathSpeakers.java +++ b/Mage.Sets/src/mage/cards/d/DeathSpeakers.java @@ -34,8 +34,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -43,12 +41,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class DeathSpeakers extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public DeathSpeakers(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}"); this.subtype.add("Human"); @@ -57,7 +49,7 @@ public class DeathSpeakers extends CardImpl { this.toughness = new MageInt(1); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); } public DeathSpeakers(final DeathSpeakers card) { diff --git a/Mage.Sets/src/mage/cards/d/DefenderOfChaos.java b/Mage.Sets/src/mage/cards/d/DefenderOfChaos.java index ea44852a48..0b69945424 100644 --- a/Mage.Sets/src/mage/cards/d/DefenderOfChaos.java +++ b/Mage.Sets/src/mage/cards/d/DefenderOfChaos.java @@ -34,8 +34,6 @@ import mage.abilities.keyword.FlashAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import java.util.UUID; @@ -44,12 +42,6 @@ import java.util.UUID; */ public class DefenderOfChaos extends CardImpl { - private static final FilterCard filter = new FilterCard("White"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public DefenderOfChaos(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}"); this.subtype.add("Human"); @@ -59,7 +51,7 @@ public class DefenderOfChaos extends CardImpl { this.toughness = new MageInt(1); this.addAbility(FlashAbility.getInstance()); - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); } public DefenderOfChaos(final DefenderOfChaos card) { diff --git a/Mage.Sets/src/mage/cards/d/DefenderOfLaw.java b/Mage.Sets/src/mage/cards/d/DefenderOfLaw.java index 92b8d4df6a..dd49cf79ef 100644 --- a/Mage.Sets/src/mage/cards/d/DefenderOfLaw.java +++ b/Mage.Sets/src/mage/cards/d/DefenderOfLaw.java @@ -34,8 +34,6 @@ import mage.abilities.keyword.FlashAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import java.util.UUID; @@ -44,12 +42,6 @@ import java.util.UUID; */ public class DefenderOfLaw extends CardImpl { - private static final FilterCard filter = new FilterCard("Red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public DefenderOfLaw(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}"); this.subtype.add("Human"); @@ -59,7 +51,7 @@ public class DefenderOfLaw extends CardImpl { this.toughness = new MageInt(1); this.addAbility(FlashAbility.getInstance()); - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); } public DefenderOfLaw(final DefenderOfLaw card) { diff --git a/Mage.Sets/src/mage/cards/d/DevoutLightcaster.java b/Mage.Sets/src/mage/cards/d/DevoutLightcaster.java index 45a6cf948b..6d2519eec4 100644 --- a/Mage.Sets/src/mage/cards/d/DevoutLightcaster.java +++ b/Mage.Sets/src/mage/cards/d/DevoutLightcaster.java @@ -36,7 +36,6 @@ import mage.abilities.effects.common.ExileTargetEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.TargetPermanent; @@ -47,11 +46,9 @@ import mage.target.TargetPermanent; */ public class DevoutLightcaster extends CardImpl { - private static final FilterCard filterProtection = new FilterCard("Black"); private static final FilterPermanent filterTarget = new FilterPermanent("black permanent"); static { - filterProtection.add(new ColorPredicate(ObjectColor.BLACK)); filterTarget.add(new ColorPredicate(ObjectColor.BLACK)); } @@ -63,7 +60,7 @@ public class DevoutLightcaster extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new ProtectionAbility(filterProtection)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new ExileTargetEffect()); ability.addTarget(new TargetPermanent(filterTarget)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/d/DiscipleOfGrace.java b/Mage.Sets/src/mage/cards/d/DiscipleOfGrace.java index 34f0a24844..9e8d3ef346 100644 --- a/Mage.Sets/src/mage/cards/d/DiscipleOfGrace.java +++ b/Mage.Sets/src/mage/cards/d/DiscipleOfGrace.java @@ -36,8 +36,6 @@ import mage.abilities.keyword.CyclingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import java.util.UUID; @@ -46,12 +44,6 @@ import java.util.UUID; */ public class DiscipleOfGrace extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public DiscipleOfGrace(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Human"); @@ -61,7 +53,7 @@ public class DiscipleOfGrace extends CardImpl { this.toughness = new MageInt(2); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // Cycling {2} ({2}, Discard this card: Draw a card.) this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}"))); diff --git a/Mage.Sets/src/mage/cards/d/DiscipleOfLaw.java b/Mage.Sets/src/mage/cards/d/DiscipleOfLaw.java index bab8a14049..e3c41cab05 100644 --- a/Mage.Sets/src/mage/cards/d/DiscipleOfLaw.java +++ b/Mage.Sets/src/mage/cards/d/DiscipleOfLaw.java @@ -37,8 +37,6 @@ import mage.abilities.keyword.CyclingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -46,12 +44,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class DiscipleOfLaw extends CardImpl { - private static final FilterCard filter = new FilterCard("Red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public DiscipleOfLaw(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Human"); @@ -59,9 +51,9 @@ public class DiscipleOfLaw extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(2); - this.addAbility(new ProtectionAbility(filter)); - this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}"))); - } + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); + this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}"))); + } public DiscipleOfLaw(final DiscipleOfLaw card) { super(card); diff --git a/Mage.Sets/src/mage/cards/d/DiscipleOfMalice.java b/Mage.Sets/src/mage/cards/d/DiscipleOfMalice.java index 2780102ae7..76901256f9 100644 --- a/Mage.Sets/src/mage/cards/d/DiscipleOfMalice.java +++ b/Mage.Sets/src/mage/cards/d/DiscipleOfMalice.java @@ -36,8 +36,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,12 +43,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class DiscipleOfMalice extends CardImpl { - private static final FilterCard filter = new FilterCard("White"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public DiscipleOfMalice(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}"); this.subtype.add("Human"); @@ -59,7 +51,7 @@ public class DiscipleOfMalice extends CardImpl { this.toughness = new MageInt(2); // Protection from white - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); // Cycling {2} this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}"))); } diff --git a/Mage.Sets/src/mage/cards/d/DrossHarvester.java b/Mage.Sets/src/mage/cards/d/DrossHarvester.java index 8b23cea050..6385f8caa8 100644 --- a/Mage.Sets/src/mage/cards/d/DrossHarvester.java +++ b/Mage.Sets/src/mage/cards/d/DrossHarvester.java @@ -39,8 +39,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.TargetController; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -48,12 +46,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class DrossHarvester extends CardImpl { - private static final FilterCard filter = new FilterCard("white"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public DrossHarvester(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}"); this.subtype.add("Horror"); @@ -61,7 +53,7 @@ public class DrossHarvester extends CardImpl { this.toughness = new MageInt(4); // Protection from white - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); // At the beginning of your end step, you lose 4 life. this.addAbility(new BeginningOfEndStepTriggeredAbility(new LoseLifeSourceControllerEffect(4), TargetController.YOU, false)); diff --git a/Mage.Sets/src/mage/cards/d/DuneriderOutlaw.java b/Mage.Sets/src/mage/cards/d/DuneriderOutlaw.java index 11807fc727..d7ff5ab626 100644 --- a/Mage.Sets/src/mage/cards/d/DuneriderOutlaw.java +++ b/Mage.Sets/src/mage/cards/d/DuneriderOutlaw.java @@ -40,8 +40,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.counters.CounterType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.events.GameEvent; /** @@ -51,11 +49,6 @@ import mage.game.events.GameEvent; public class DuneriderOutlaw extends CardImpl { private static final String ruleText = "At the beginning of each end step, if {this} dealt damage to an opponent this turn, put a +1/+1 counter on it."; - private static final FilterCard filter = new FilterCard("green"); - - static { - filter.add(new ColorPredicate(ObjectColor.GREEN)); - } public DuneriderOutlaw(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}"); @@ -68,7 +61,7 @@ public class DuneriderOutlaw extends CardImpl { this.toughness = new MageInt(1); // Protection from green - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.GREEN)); // At the beginning of each end step, if Dunerider Outlaw dealt damage to an opponent this turn, put a +1/+1 counter on it. TriggeredAbility triggered = new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_PRE, "beginning of each end step", true, new AddCountersSourceEffect(CounterType.P1P1.createInstance())); this.addAbility(new ConditionalTriggeredAbility(triggered, new DealtDamageToAnOpponent(), ruleText)); diff --git a/Mage.Sets/src/mage/cards/d/DuskriderFalcon.java b/Mage.Sets/src/mage/cards/d/DuskriderFalcon.java index 00e88cc4a6..373edac074 100644 --- a/Mage.Sets/src/mage/cards/d/DuskriderFalcon.java +++ b/Mage.Sets/src/mage/cards/d/DuskriderFalcon.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class DuskriderFalcon extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public DuskriderFalcon(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Bird"); @@ -59,7 +51,7 @@ public class DuskriderFalcon extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); } public DuskriderFalcon(final DuskriderFalcon card) { diff --git a/Mage.Sets/src/mage/cards/d/DuskriderPeregrine.java b/Mage.Sets/src/mage/cards/d/DuskriderPeregrine.java index 240a70dd94..613f1dcd21 100644 --- a/Mage.Sets/src/mage/cards/d/DuskriderPeregrine.java +++ b/Mage.Sets/src/mage/cards/d/DuskriderPeregrine.java @@ -37,8 +37,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.abilities.keyword.SuspendAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -46,11 +44,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class DuskriderPeregrine extends CardImpl { - private static final FilterCard filter = new FilterCard("Black"); - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public DuskriderPeregrine(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{W}"); this.subtype.add("Bird"); @@ -61,7 +54,7 @@ public class DuskriderPeregrine extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // Suspend 3-{1}{W} this.addAbility(new SuspendAbility(3, new ManaCostsImpl("{1}{W}"), this)); diff --git a/Mage.Sets/src/mage/cards/e/EightAndAHalfTails.java b/Mage.Sets/src/mage/cards/e/EightAndAHalfTails.java index 141acae88b..1806dba518 100644 --- a/Mage.Sets/src/mage/cards/e/EightAndAHalfTails.java +++ b/Mage.Sets/src/mage/cards/e/EightAndAHalfTails.java @@ -41,9 +41,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.Filter; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.Target; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetSpellOrPermanent; @@ -54,11 +51,6 @@ import mage.target.common.TargetSpellOrPermanent; */ public class EightAndAHalfTails extends CardImpl { - private static final Filter filter = new FilterCard("white"); - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public EightAndAHalfTails(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}"); this.supertype.add("Legendary"); @@ -69,7 +61,7 @@ public class EightAndAHalfTails extends CardImpl { this.toughness = new MageInt(2); // {1}{W}: Target permanent you control gains protection from white until end of turn. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityTargetEffect(new ProtectionAbility(filter), Duration.EndOfTurn), new ManaCostsImpl("{1}{W}")); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityTargetEffect(ProtectionAbility.from(ObjectColor.WHITE), Duration.EndOfTurn), new ManaCostsImpl("{1}{W}")); Target target = new TargetControlledPermanent(); ability.addTarget(target); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/e/Eviscerator.java b/Mage.Sets/src/mage/cards/e/Eviscerator.java index 9423f9983a..ed0b86733f 100644 --- a/Mage.Sets/src/mage/cards/e/Eviscerator.java +++ b/Mage.Sets/src/mage/cards/e/Eviscerator.java @@ -36,8 +36,6 @@ import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,12 +43,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class Eviscerator extends CardImpl { - private static final FilterCard filter = new FilterCard("white"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public Eviscerator(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}"); this.subtype.add("Horror"); @@ -59,7 +51,7 @@ public class Eviscerator extends CardImpl { this.toughness = new MageInt(5); // Protection from white - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); // When Eviscerator enters the battlefield, you lose 5 life. this.addAbility(new EntersBattlefieldTriggeredAbility(new LoseLifeSourceControllerEffect(5))); } diff --git a/Mage.Sets/src/mage/cards/f/FreewindFalcon.java b/Mage.Sets/src/mage/cards/f/FreewindFalcon.java index 15369c3912..92017c98a7 100644 --- a/Mage.Sets/src/mage/cards/f/FreewindFalcon.java +++ b/Mage.Sets/src/mage/cards/f/FreewindFalcon.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** @@ -45,11 +43,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class FreewindFalcon extends CardImpl { - private static final FilterCard filter = new FilterCard("red"); - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public FreewindFalcon(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Bird"); @@ -60,7 +53,7 @@ public class FreewindFalcon extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); } public FreewindFalcon(final FreewindFalcon card) { diff --git a/Mage.Sets/src/mage/cards/g/GalinasKnight.java b/Mage.Sets/src/mage/cards/g/GalinasKnight.java index d589ae7f72..80f6af3a4a 100644 --- a/Mage.Sets/src/mage/cards/g/GalinasKnight.java +++ b/Mage.Sets/src/mage/cards/g/GalinasKnight.java @@ -34,8 +34,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -43,12 +41,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class GalinasKnight extends CardImpl { - private static final FilterCard protectionFilter = new FilterCard("Red"); - - static { - protectionFilter.add(new ColorPredicate(ObjectColor.RED)); - } - public GalinasKnight(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{U}"); this.subtype.add("Merfolk"); @@ -57,7 +49,7 @@ public class GalinasKnight extends CardImpl { this.toughness = new MageInt(2); // Protection from red - this.addAbility(new ProtectionAbility(protectionFilter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); } public GalinasKnight(final GalinasKnight card) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinOutlander.java b/Mage.Sets/src/mage/cards/g/GoblinOutlander.java index 515ce7829f..823aa4057b 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinOutlander.java +++ b/Mage.Sets/src/mage/cards/g/GoblinOutlander.java @@ -35,29 +35,22 @@ import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author Loki */ public class GoblinOutlander extends CardImpl { - private static final FilterCard filter = new FilterCard("white"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } public GoblinOutlander(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{R}"); - - this.subtype.add("Goblin"); this.subtype.add("Scout"); + this.power = new MageInt(2); - this.toughness = new MageInt(2); - this.addAbility(new ProtectionAbility(filter)); + this.toughness = new MageInt(2); + + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); } public GoblinOutlander(final GoblinOutlander card) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinPiledriver.java b/Mage.Sets/src/mage/cards/g/GoblinPiledriver.java index 74aa1ee773..9b82c30f7d 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinPiledriver.java +++ b/Mage.Sets/src/mage/cards/g/GoblinPiledriver.java @@ -39,9 +39,7 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; import mage.filter.common.FilterAttackingCreature; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; @@ -51,13 +49,11 @@ import mage.filter.predicate.permanent.AnotherPredicate; */ public class GoblinPiledriver extends CardImpl { - private static final FilterCard filter1 = new FilterCard("blue"); - private static final FilterAttackingCreature filter2 = new FilterAttackingCreature("other attacking Goblin"); + private static final FilterAttackingCreature filter = new FilterAttackingCreature("other attacking Goblin"); static { - filter1.add(new ColorPredicate(ObjectColor.BLUE)); - filter2.add(new SubtypePredicate("Goblin")); - filter2.add(new AnotherPredicate()); + filter.add(new SubtypePredicate("Goblin")); + filter.add(new AnotherPredicate()); } public GoblinPiledriver(UUID ownerId, CardSetInfo setInfo) { @@ -69,9 +65,9 @@ public class GoblinPiledriver extends CardImpl { this.toughness = new MageInt(2); // Protection from blue - this.addAbility(new ProtectionAbility(filter1)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLUE)); // Whenever Goblin Piledriver attacks, it gets +2/+0 until end of turn for each other attacking Goblin. - PermanentsOnBattlefieldCount value = new PermanentsOnBattlefieldCount(filter2, 2); + PermanentsOnBattlefieldCount value = new PermanentsOnBattlefieldCount(filter, 2); this.addAbility(new AttacksTriggeredAbility(new BoostSourceEffect(value, new StaticValue(0), Duration.EndOfTurn, true), false)); } diff --git a/Mage.Sets/src/mage/cards/g/GoblinWizard.java b/Mage.Sets/src/mage/cards/g/GoblinWizard.java index e967a53ff0..13a433bf12 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinWizard.java +++ b/Mage.Sets/src/mage/cards/g/GoblinWizard.java @@ -43,10 +43,8 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Rarity; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.FilterPermanent; import mage.filter.common.FilterPermanentCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.Target; import mage.target.TargetPermanent; @@ -58,13 +56,11 @@ import mage.target.TargetPermanent; public class GoblinWizard extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Goblin"); - private static final FilterCard protectionFilter = new FilterCard("white"); private static final FilterPermanent goblinPermanent = new FilterPermanent("Goblin"); static { filter.add(new SubtypePredicate("Goblin")); goblinPermanent.add(new SubtypePredicate("Goblin")); - protectionFilter.add(new ColorPredicate(ObjectColor.WHITE)); } public GoblinWizard(UUID ownerId, CardSetInfo setInfo) { @@ -84,7 +80,7 @@ public class GoblinWizard extends CardImpl { // {R}: Target Goblin gains protection from white until end of turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, - new GainAbilityTargetEffect(new ProtectionAbility(protectionFilter), Duration.EndOfTurn), new ManaCostsImpl("{R}")); + new GainAbilityTargetEffect(ProtectionAbility.from(ObjectColor.WHITE), Duration.EndOfTurn), new ManaCostsImpl("{R}")); Target target = new TargetPermanent(goblinPermanent); ability.addTarget(target); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/g/GreatSableStag.java b/Mage.Sets/src/mage/cards/g/GreatSableStag.java index d2e51ebe43..3045ef9ca1 100644 --- a/Mage.Sets/src/mage/cards/g/GreatSableStag.java +++ b/Mage.Sets/src/mage/cards/g/GreatSableStag.java @@ -38,21 +38,12 @@ import mage.abilities.effects.common.CantBeCounteredSourceEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author BetaSteward_at_googlemail.com */ public class GreatSableStag extends CardImpl { - private static final FilterCard filter1 = new FilterCard("Blue"); - private static final FilterCard filter2 = new FilterCard("Black"); - - static { - filter1.add(new ColorPredicate(ObjectColor.BLUE)); - filter2.add(new ColorPredicate(ObjectColor.BLACK)); - } public GreatSableStag(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{G}"); @@ -61,8 +52,7 @@ public class GreatSableStag extends CardImpl { this.power = new MageInt(3); this.toughness = new MageInt(3); - this.addAbility(new ProtectionAbility(filter1)); - this.addAbility(new ProtectionAbility(filter2)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLUE, ObjectColor.BLACK)); this.addAbility(new SimpleStaticAbility(Zone.STACK, new CantBeCounteredSourceEffect())); } diff --git a/Mage.Sets/src/mage/cards/g/GrotesqueHybrid.java b/Mage.Sets/src/mage/cards/g/GrotesqueHybrid.java index d67429e8f2..d19e45098e 100644 --- a/Mage.Sets/src/mage/cards/g/GrotesqueHybrid.java +++ b/Mage.Sets/src/mage/cards/g/GrotesqueHybrid.java @@ -44,9 +44,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -54,12 +51,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class GrotesqueHybrid extends CardImpl { - private static final FilterCard filter = new FilterCard("green and from white"); - - static { - filter.add(Predicates.or(new ColorPredicate(ObjectColor.GREEN), new ColorPredicate(ObjectColor.WHITE))); - } - public GrotesqueHybrid(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}"); this.subtype.add("Zombie"); @@ -73,7 +64,7 @@ public class GrotesqueHybrid extends CardImpl { Effect effect = new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.EndOfTurn); effect.setText("{this} gains flying"); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new DiscardCardCost()); - effect = new GainAbilitySourceEffect(new ProtectionAbility(filter), Duration.EndOfTurn); + effect = new GainAbilitySourceEffect(ProtectionAbility.from(ObjectColor.GREEN, ObjectColor.WHITE), Duration.EndOfTurn); effect.setText("and protection from green and from white until end of turn"); ability.addEffect(effect); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/g/Guma.java b/Mage.Sets/src/mage/cards/g/Guma.java index 8276705962..aa4a8188dc 100644 --- a/Mage.Sets/src/mage/cards/g/Guma.java +++ b/Mage.Sets/src/mage/cards/g/Guma.java @@ -35,8 +35,6 @@ import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,20 +42,14 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class Guma extends CardImpl { - private static final FilterCard filter = new FilterCard("Blue"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLUE)); - } - public Guma(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}"); this.subtype.add("Cat"); this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new ProtectionAbility(filter)); - } + this.addAbility(ProtectionAbility.from(ObjectColor.BLUE)); + } public Guma(final Guma card) { super(card); diff --git a/Mage.Sets/src/mage/cards/h/HandOfCruelty.java b/Mage.Sets/src/mage/cards/h/HandOfCruelty.java index 87cf0bf900..53160b9085 100644 --- a/Mage.Sets/src/mage/cards/h/HandOfCruelty.java +++ b/Mage.Sets/src/mage/cards/h/HandOfCruelty.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.BushidoAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class HandOfCruelty extends CardImpl { - private static final FilterCard filter = new FilterCard("white"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public HandOfCruelty(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}"); this.subtype.add("Human"); @@ -58,7 +50,7 @@ public class HandOfCruelty extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); // Protection from white - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); this.addAbility(new BushidoAbility(1)); } diff --git a/Mage.Sets/src/mage/cards/h/HandOfHonor.java b/Mage.Sets/src/mage/cards/h/HandOfHonor.java index 07ce3cc541..889381e3e9 100644 --- a/Mage.Sets/src/mage/cards/h/HandOfHonor.java +++ b/Mage.Sets/src/mage/cards/h/HandOfHonor.java @@ -36,20 +36,12 @@ import mage.abilities.keyword.BushidoAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @author anonymous */ public class HandOfHonor extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public HandOfHonor(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}"); this.subtype.add("Human"); @@ -58,7 +50,7 @@ public class HandOfHonor extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); this.addAbility(new BushidoAbility(1)); } diff --git a/Mage.Sets/src/mage/cards/h/HazeriderDrake.java b/Mage.Sets/src/mage/cards/h/HazeriderDrake.java index df7a666c06..936cbddb41 100644 --- a/Mage.Sets/src/mage/cards/h/HazeriderDrake.java +++ b/Mage.Sets/src/mage/cards/h/HazeriderDrake.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class HazeriderDrake extends CardImpl { - private static final FilterCard filter = new FilterCard("red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public HazeriderDrake(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}{U}"); this.subtype.add("Drake"); @@ -59,7 +51,7 @@ public class HazeriderDrake extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); } public HazeriderDrake(final HazeriderDrake card) { diff --git a/Mage.Sets/src/mage/cards/h/HellBentRaider.java b/Mage.Sets/src/mage/cards/h/HellBentRaider.java index 946465aeea..50920a4e70 100644 --- a/Mage.Sets/src/mage/cards/h/HellBentRaider.java +++ b/Mage.Sets/src/mage/cards/h/HellBentRaider.java @@ -39,22 +39,16 @@ import mage.constants.CardType; import mage.abilities.costs.common.DiscardCardCost; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.abilities.common.SimpleActivatedAbility; import mage.constants.Duration; import mage.abilities.keyword.ProtectionAbility; + /** * * @author tomd1990 */ public class HellBentRaider extends CardImpl { - private static final FilterCard protectionFilter = new FilterCard("White"); - - static { - protectionFilter.add(new ColorPredicate(ObjectColor.WHITE)); - } - + public HellBentRaider(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}"); this.subtype.add("Human"); @@ -68,7 +62,7 @@ public class HellBentRaider extends CardImpl { this.addAbility(HasteAbility.getInstance()); // Discard a card at random: Hell-Bent Raider gains protection from white until end of turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, - new GainAbilitySourceEffect( new ProtectionAbility(protectionFilter), Duration.EndOfTurn), + new GainAbilitySourceEffect(ProtectionAbility.from(ObjectColor.WHITE), Duration.EndOfTurn), new DiscardCardCost(true)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HuntedHorror.java b/Mage.Sets/src/mage/cards/h/HuntedHorror.java index d9f9826a63..0e31960fc4 100644 --- a/Mage.Sets/src/mage/cards/h/HuntedHorror.java +++ b/Mage.Sets/src/mage/cards/h/HuntedHorror.java @@ -39,8 +39,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.permanent.token.Token; import mage.target.Target; import mage.target.common.TargetOpponent; @@ -77,13 +75,6 @@ public class HuntedHorror extends CardImpl { } class CentaurToken extends Token { - - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - CentaurToken() { super("Centaur", "3/3 green Centaur creature tokens with protection from black"); cardType.add(CardType.CREATURE); @@ -91,7 +82,7 @@ class CentaurToken extends Token { subtype.add("Centaur"); power = new MageInt(3); toughness = new MageInt(3); - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); } } diff --git a/Mage.Sets/src/mage/cards/i/IhsansShade.java b/Mage.Sets/src/mage/cards/i/IhsansShade.java index b458a87330..14d6eaf59d 100644 --- a/Mage.Sets/src/mage/cards/i/IhsansShade.java +++ b/Mage.Sets/src/mage/cards/i/IhsansShade.java @@ -34,22 +34,13 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author LoneFox - */ public class IhsansShade extends CardImpl { - private static final FilterCard filter = new FilterCard("white"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public IhsansShade(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}{B}"); this.supertype.add("Legendary"); @@ -59,7 +50,7 @@ public class IhsansShade extends CardImpl { this.toughness = new MageInt(5); // Protection from white - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); } public IhsansShade(final IhsansShade card) { diff --git a/Mage.Sets/src/mage/cards/i/IvoryGuardians.java b/Mage.Sets/src/mage/cards/i/IvoryGuardians.java index 86ed875f2c..5d93e0dde1 100644 --- a/Mage.Sets/src/mage/cards/i/IvoryGuardians.java +++ b/Mage.Sets/src/mage/cards/i/IvoryGuardians.java @@ -40,7 +40,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -54,12 +53,10 @@ import mage.filter.predicate.permanent.TokenPredicate; */ public class IvoryGuardians extends CardImpl { - private static final FilterCard protectionFilter = new FilterCard("red"); private static final FilterPermanent controlFilter = new FilterPermanent("nontoken red permanent"); private static final FilterCreaturePermanent boostFilter = new FilterCreaturePermanent(); static { - protectionFilter.add(new ColorPredicate(ObjectColor.RED)); controlFilter.add(new ColorPredicate(ObjectColor.RED)); controlFilter.add(Predicates.not(new TokenPredicate())); boostFilter.add(new NamePredicate("Ivory Guardians")); @@ -73,7 +70,7 @@ public class IvoryGuardians extends CardImpl { this.toughness = new MageInt(3); // Protection from red - this.addAbility(new ProtectionAbility(protectionFilter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); // Creatures named Ivory Guardians get +1/+1 as long as an opponent controls a nontoken red permanent. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, boostFilter, false), diff --git a/Mage.Sets/src/mage/cards/k/KarmicGuide.java b/Mage.Sets/src/mage/cards/k/KarmicGuide.java index 0dad4a7963..ca0f5b9e1d 100644 --- a/Mage.Sets/src/mage/cards/k/KarmicGuide.java +++ b/Mage.Sets/src/mage/cards/k/KarmicGuide.java @@ -39,9 +39,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; import mage.filter.common.FilterCreatureCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCardInYourGraveyard; /** @@ -50,12 +48,6 @@ import mage.target.common.TargetCardInYourGraveyard; */ public class KarmicGuide extends CardImpl { - private static final FilterCard filter = new FilterCard("Black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public KarmicGuide(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}"); this.subtype.add("Angel"); @@ -66,7 +58,7 @@ public class KarmicGuide extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // Echo {3}{W}{W} this.addAbility(new EchoAbility("{3}{W}{W}")); // When Karmic Guide enters the battlefield, return target creature card from your graveyard to the battlefield. diff --git a/Mage.Sets/src/mage/cards/k/KarooMeerkat.java b/Mage.Sets/src/mage/cards/k/KarooMeerkat.java index 4d21c39f21..25007ea947 100644 --- a/Mage.Sets/src/mage/cards/k/KarooMeerkat.java +++ b/Mage.Sets/src/mage/cards/k/KarooMeerkat.java @@ -34,8 +34,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -43,12 +41,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class KarooMeerkat extends CardImpl { - private static final FilterCard filter = new FilterCard("blue"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLUE)); - } - public KarooMeerkat(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}"); this.subtype.add("Mongoose"); @@ -56,7 +48,7 @@ public class KarooMeerkat extends CardImpl { this.toughness = new MageInt(1); // Protection from blue - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLUE)); } public KarooMeerkat(final KarooMeerkat card) { diff --git a/Mage.Sets/src/mage/cards/k/KeeperOfKookus.java b/Mage.Sets/src/mage/cards/k/KeeperOfKookus.java index 050bff01c6..b0409c6f43 100644 --- a/Mage.Sets/src/mage/cards/k/KeeperOfKookus.java +++ b/Mage.Sets/src/mage/cards/k/KeeperOfKookus.java @@ -40,8 +40,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -49,13 +47,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class KeeperOfKookus extends CardImpl { - private static final FilterCard filter = new FilterCard("from red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - - public KeeperOfKookus(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}"); this.subtype.add("Goblin"); @@ -63,8 +54,8 @@ public class KeeperOfKookus extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - // Keeper of Kookus gains protection from red until end of turn. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(new ProtectionAbility(filter), Duration.EndOfTurn),new ManaCostsImpl("{R")); + // {R}: Keeper of Kookus gains protection from red until end of turn. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(ProtectionAbility.from(ObjectColor.RED), Duration.EndOfTurn), new ManaCostsImpl("{R}")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KnightOfGlory.java b/Mage.Sets/src/mage/cards/k/KnightOfGlory.java index a02f7f8b77..d9e4c76493 100644 --- a/Mage.Sets/src/mage/cards/k/KnightOfGlory.java +++ b/Mage.Sets/src/mage/cards/k/KnightOfGlory.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class KnightOfGlory extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public KnightOfGlory(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Human"); @@ -59,7 +51,7 @@ public class KnightOfGlory extends CardImpl { this.toughness = new MageInt(1); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // Exalted this.addAbility(new ExaltedAbility()); diff --git a/Mage.Sets/src/mage/cards/k/KnightOfInfamy.java b/Mage.Sets/src/mage/cards/k/KnightOfInfamy.java index d257fef72b..f465762e5e 100644 --- a/Mage.Sets/src/mage/cards/k/KnightOfInfamy.java +++ b/Mage.Sets/src/mage/cards/k/KnightOfInfamy.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ExaltedAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class KnightOfInfamy extends CardImpl { - private static final FilterCard filter = new FilterCard("white"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public KnightOfInfamy(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}"); this.subtype.add("Human"); @@ -59,7 +51,7 @@ public class KnightOfInfamy extends CardImpl { this.toughness = new MageInt(1); // Protection from white - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); // Exalted this.addAbility(new ExaltedAbility()); } diff --git a/Mage.Sets/src/mage/cards/k/KnightOfStromgald.java b/Mage.Sets/src/mage/cards/k/KnightOfStromgald.java index f84dc6038f..1b0accc649 100644 --- a/Mage.Sets/src/mage/cards/k/KnightOfStromgald.java +++ b/Mage.Sets/src/mage/cards/k/KnightOfStromgald.java @@ -41,8 +41,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -51,12 +49,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class KnightOfStromgald extends CardImpl { - private static final FilterCard filter = new FilterCard("white"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public KnightOfStromgald(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}"); this.subtype.add("Human"); @@ -65,7 +57,7 @@ public class KnightOfStromgald extends CardImpl { this.toughness = new MageInt(1); // Protection from white - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); // {B}: Knight of Stromgald gains first strike until end of turn. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{B}"))); diff --git a/Mage.Sets/src/mage/cards/k/KorFirewalker.java b/Mage.Sets/src/mage/cards/k/KorFirewalker.java index aa6be18311..f8008bc403 100644 --- a/Mage.Sets/src/mage/cards/k/KorFirewalker.java +++ b/Mage.Sets/src/mage/cards/k/KorFirewalker.java @@ -38,8 +38,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; @@ -50,11 +48,6 @@ import mage.game.stack.Spell; * @author Loki */ public class KorFirewalker extends CardImpl { - private static final FilterCard filter = new FilterCard("Red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } public KorFirewalker (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}"); @@ -65,7 +58,7 @@ public class KorFirewalker extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); this.addAbility(new KorFirewalkerAbility()); } diff --git a/Mage.Sets/src/mage/cards/l/LaviniaOfTheTenth.java b/Mage.Sets/src/mage/cards/l/LaviniaOfTheTenth.java index 52b9359ff8..66a544476a 100644 --- a/Mage.Sets/src/mage/cards/l/LaviniaOfTheTenth.java +++ b/Mage.Sets/src/mage/cards/l/LaviniaOfTheTenth.java @@ -40,11 +40,9 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.TargetController; import mage.filter.Filter; -import mage.filter.FilterObject; import mage.filter.FilterPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.filter.predicate.permanent.ControllerPredicate; @@ -52,14 +50,10 @@ import mage.filter.predicate.permanent.ControllerPredicate; * * @author LevelX2 */ - - public class LaviniaOfTheTenth extends CardImpl { - private static final FilterObject filter = new FilterObject("red"); private static final FilterPermanent filterDetain = new FilterPermanent("each nonland permanent your opponents control with converted mana cost 4 or less"); static { - filter.add(new ColorPredicate(ObjectColor.RED)); filterDetain.add(new ControllerPredicate(TargetController.OPPONENT)); filterDetain.add(Predicates.not(new CardTypePredicate(CardType.LAND))); filterDetain.add(new ConvertedManaCostPredicate(Filter.ComparisonType.LessThan, 5)); @@ -76,7 +70,7 @@ public class LaviniaOfTheTenth extends CardImpl { this.toughness = new MageInt(4); // Protection from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); // When Lavinia of the Tenth enters the battlefield, detain each nonland permanent your opponents control with converted mana cost 4 or less. this.addAbility(new EntersBattlefieldTriggeredAbility(new DetainAllEffect(filterDetain))); diff --git a/Mage.Sets/src/mage/cards/l/LlanowarKnight.java b/Mage.Sets/src/mage/cards/l/LlanowarKnight.java index aa215188d2..59f1eee609 100644 --- a/Mage.Sets/src/mage/cards/l/LlanowarKnight.java +++ b/Mage.Sets/src/mage/cards/l/LlanowarKnight.java @@ -34,8 +34,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -43,12 +41,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class LlanowarKnight extends CardImpl { - private static final FilterCard protectionFilter = new FilterCard("Black"); - - static { - protectionFilter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public LlanowarKnight(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}"); this.subtype.add("Elf"); @@ -57,7 +49,7 @@ public class LlanowarKnight extends CardImpl { this.toughness = new MageInt(2); // Protection from black - this.addAbility(new ProtectionAbility(protectionFilter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); } diff --git a/Mage.Sets/src/mage/cards/m/MalakirBloodwitch.java b/Mage.Sets/src/mage/cards/m/MalakirBloodwitch.java index 25f65ece7f..196ca3c7be 100644 --- a/Mage.Sets/src/mage/cards/m/MalakirBloodwitch.java +++ b/Mage.Sets/src/mage/cards/m/MalakirBloodwitch.java @@ -40,9 +40,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; import mage.filter.common.FilterControlledPermanent; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.players.Player; @@ -53,12 +51,6 @@ import mage.players.Player; */ public class MalakirBloodwitch extends CardImpl { - private static final FilterCard filter = new FilterCard("white"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public MalakirBloodwitch(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}"); this.subtype.add("Vampire"); @@ -68,7 +60,7 @@ public class MalakirBloodwitch extends CardImpl { this.toughness = new MageInt(4); this.addAbility(FlyingAbility.getInstance()); - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); this.addAbility(new EntersBattlefieldTriggeredAbility(new MalakirBloodwitchEffect(), false)); } diff --git a/Mage.Sets/src/mage/cards/m/MaraudingKnight.java b/Mage.Sets/src/mage/cards/m/MaraudingKnight.java index 24b9fc0753..4bdc6882f6 100644 --- a/Mage.Sets/src/mage/cards/m/MaraudingKnight.java +++ b/Mage.Sets/src/mage/cards/m/MaraudingKnight.java @@ -37,9 +37,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; -import mage.filter.FilterCard; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.ControllerPredicate; @@ -49,10 +47,8 @@ import mage.filter.predicate.permanent.ControllerPredicate; */ public class MaraudingKnight extends CardImpl { - private static final FilterCard protectionFilter = new FilterCard("White"); private static final FilterLandPermanent plainsFilter = new FilterLandPermanent("Plains your opponent controls"); static { - protectionFilter.add(new ColorPredicate(ObjectColor.WHITE)); plainsFilter.add(new SubtypePredicate("Plains")); plainsFilter.add(new ControllerPredicate(TargetController.OPPONENT)); } @@ -65,7 +61,7 @@ public class MaraudingKnight extends CardImpl { this.toughness = new MageInt(2); // Protection from white - this.addAbility(new ProtectionAbility(protectionFilter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); // Marauding Knight gets +1/+1 for each Plains your opponents control. PermanentsOnBattlefieldCount amount = new PermanentsOnBattlefieldCount(plainsFilter, 1); diff --git a/Mage.Sets/src/mage/cards/m/MaskOfLawAndGrace.java b/Mage.Sets/src/mage/cards/m/MaskOfLawAndGrace.java index 09e97cdf0a..c954428b0b 100644 --- a/Mage.Sets/src/mage/cards/m/MaskOfLawAndGrace.java +++ b/Mage.Sets/src/mage/cards/m/MaskOfLawAndGrace.java @@ -42,9 +42,6 @@ import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -54,12 +51,6 @@ import mage.target.common.TargetCreaturePermanent; */ public class MaskOfLawAndGrace extends CardImpl { - private static final FilterCard filter = new FilterCard("black and from red"); - - static { - filter.add(Predicates.or(new ColorPredicate(ObjectColor.BLACK), new ColorPredicate(ObjectColor.RED))); - } - public MaskOfLawAndGrace(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}"); this.subtype.add("Aura"); @@ -71,7 +62,7 @@ public class MaskOfLawAndGrace extends CardImpl { Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); // Enchanted creature has protection from black and from red. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new ProtectionAbility(filter), + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.BLACK, ObjectColor.RED), AttachmentType.AURA, Duration.WhileOnBattlefield))); } diff --git a/Mage.Sets/src/mage/cards/m/MaskedGorgon.java b/Mage.Sets/src/mage/cards/m/MaskedGorgon.java index 6886233c51..2b6f2ebfd4 100644 --- a/Mage.Sets/src/mage/cards/m/MaskedGorgon.java +++ b/Mage.Sets/src/mage/cards/m/MaskedGorgon.java @@ -57,12 +57,10 @@ public class MaskedGorgon extends CardImpl { private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("green creatures and white creatures"); private static final FilterCard filter2 = new FilterCard("Gorgons"); - private static final FilterCard filter3 = new FilterCard("green and from white"); static { filter1.add(Predicates.or(new ColorPredicate(ObjectColor.GREEN), new ColorPredicate(ObjectColor.WHITE))); filter2.add(new SubtypePredicate("Gorgon")); - filter3.add(Predicates.or(new ColorPredicate(ObjectColor.GREEN), new ColorPredicate(ObjectColor.WHITE))); } public MaskedGorgon(UUID ownerId, CardSetInfo setInfo) { @@ -76,7 +74,7 @@ public class MaskedGorgon extends CardImpl { new ProtectionAbility(filter2), Duration.WhileOnBattlefield, filter1))); // Threshold - Masked Gorgon has protection from green and from white as long as seven or more cards are in your graveyard. Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( - new GainAbilitySourceEffect(new ProtectionAbility(filter3), Duration.WhileOnBattlefield), new CardsInControllerGraveCondition(7), + new GainAbilitySourceEffect(ProtectionAbility.from(ObjectColor.GREEN, ObjectColor.WHITE), Duration.WhileOnBattlefield), new CardsInControllerGraveCondition(7), "{this} has protection from green and from white as long as seven or more cards are in your graveyard")); ability.setAbilityWord(AbilityWord.THRESHOLD); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/m/MasterOfWaves.java b/Mage.Sets/src/mage/cards/m/MasterOfWaves.java index f7e3adabd7..46187f9b93 100644 --- a/Mage.Sets/src/mage/cards/m/MasterOfWaves.java +++ b/Mage.Sets/src/mage/cards/m/MasterOfWaves.java @@ -43,9 +43,7 @@ import mage.constants.CardType; import mage.constants.ColoredManaSymbol; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; @@ -55,10 +53,8 @@ import mage.game.permanent.token.Token; */ public class MasterOfWaves extends CardImpl { - private static final FilterCard filterProtection = new FilterCard("Red"); private static final FilterCreaturePermanent filterBoost = new FilterCreaturePermanent("Elemental creatures"); static { - filterProtection.add(new ColorPredicate(ObjectColor.RED)); filterBoost.add(new SubtypePredicate("Elemental")); } @@ -71,7 +67,7 @@ public class MasterOfWaves extends CardImpl { this.toughness = new MageInt(1); // Protection from red - this.addAbility(new ProtectionAbility(filterProtection)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); // Elemental creatures you control get +1/+1. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filterBoost, false))); // When Master of Waves enters the battlefield, create a number of 1/0 blue Elemental creature tokens equal to your devotion to blue. diff --git a/Mage.Sets/src/mage/cards/m/MelesseSpirit.java b/Mage.Sets/src/mage/cards/m/MelesseSpirit.java index 449f5f3616..c6bc77c8e8 100644 --- a/Mage.Sets/src/mage/cards/m/MelesseSpirit.java +++ b/Mage.Sets/src/mage/cards/m/MelesseSpirit.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class MelesseSpirit extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public MelesseSpirit(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}"); this.subtype.add("Angel"); @@ -60,7 +52,7 @@ public class MelesseSpirit extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); } public MelesseSpirit(final MelesseSpirit card) { diff --git a/Mage.Sets/src/mage/cards/m/MirranCrusader.java b/Mage.Sets/src/mage/cards/m/MirranCrusader.java index ec5c435dae..fb4cd41275 100644 --- a/Mage.Sets/src/mage/cards/m/MirranCrusader.java +++ b/Mage.Sets/src/mage/cards/m/MirranCrusader.java @@ -36,23 +36,14 @@ import mage.abilities.keyword.DoubleStrikeAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author ayratn */ public class MirranCrusader extends CardImpl { - private static final FilterCard filter = new FilterCard("Black"); - private static final FilterCard filter2 = new FilterCard("Green"); - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - filter2.add(new ColorPredicate(ObjectColor.GREEN)); - } - - public MirranCrusader (UUID ownerId, CardSetInfo setInfo) { + public MirranCrusader(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}"); this.subtype.add("Human"); this.subtype.add("Knight"); @@ -60,11 +51,10 @@ public class MirranCrusader extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); this.addAbility(DoubleStrikeAbility.getInstance()); - this.addAbility(new ProtectionAbility(filter)); - this.addAbility(new ProtectionAbility(filter2)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK, ObjectColor.GREEN)); } - public MirranCrusader (final MirranCrusader card) { + public MirranCrusader(final MirranCrusader card) { super(card); } diff --git a/Mage.Sets/src/mage/cards/m/MistcutterHydra.java b/Mage.Sets/src/mage/cards/m/MistcutterHydra.java index ad9082ad0a..0f37b30434 100644 --- a/Mage.Sets/src/mage/cards/m/MistcutterHydra.java +++ b/Mage.Sets/src/mage/cards/m/MistcutterHydra.java @@ -39,8 +39,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.counters.CounterType; -import mage.filter.FilterObject; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -48,12 +46,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class MistcutterHydra extends CardImpl { - private static final FilterObject filter = new FilterObject("from blue"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLUE)); - } - public MistcutterHydra(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{X}{G}"); this.subtype.add("Hydra"); @@ -66,7 +58,7 @@ public class MistcutterHydra extends CardImpl { // Haste this.addAbility(HasteAbility.getInstance()); // protection from blue - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLUE)); // Mistcutter Hydra enters the battlefield with X +1/+1 counters on it. this.addAbility(new EntersBattlefieldAbility(new EntersBattlefieldWithXCountersEffect(CounterType.P1P1.createInstance()))); } diff --git a/Mage.Sets/src/mage/cards/m/MountainYeti.java b/Mage.Sets/src/mage/cards/m/MountainYeti.java index 4bc702413e..514f3401fe 100644 --- a/Mage.Sets/src/mage/cards/m/MountainYeti.java +++ b/Mage.Sets/src/mage/cards/m/MountainYeti.java @@ -35,22 +35,13 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author LoneFox - */ public class MountainYeti extends CardImpl { - private static final FilterCard filter = new FilterCard("White"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public MountainYeti(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}"); this.subtype.add("Yeti"); @@ -60,7 +51,7 @@ public class MountainYeti extends CardImpl { // Mountainwalk this.addAbility(new MountainwalkAbility()); // protection from white - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); } public MountainYeti(final MountainYeti card) { diff --git a/Mage.Sets/src/mage/cards/m/MysticCrusader.java b/Mage.Sets/src/mage/cards/m/MysticCrusader.java index d49e9fed96..8ed576e615 100644 --- a/Mage.Sets/src/mage/cards/m/MysticCrusader.java +++ b/Mage.Sets/src/mage/cards/m/MysticCrusader.java @@ -44,9 +44,6 @@ import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -54,12 +51,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class MysticCrusader extends CardImpl { - static final FilterCard filter = new FilterCard("black and from red"); - - static { - filter.add(Predicates.or(new ColorPredicate(ObjectColor.BLACK),new ColorPredicate(ObjectColor.RED))); - } - public MysticCrusader(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}"); this.subtype.add("Human"); @@ -70,7 +61,7 @@ public class MysticCrusader extends CardImpl { this.toughness = new MageInt(1); // Protection from black and from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK, ObjectColor.RED)); // Threshold - As long as seven or more cards are in your graveyard, Mystic Crusader gets +1/+1 and has flying. Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( new BoostSourceEffect(1, 1, Duration.WhileOnBattlefield), new CardsInControllerGraveCondition(7), diff --git a/Mage.Sets/src/mage/cards/m/MysticEnforcer.java b/Mage.Sets/src/mage/cards/m/MysticEnforcer.java index d13a826bd3..9ad26da1ea 100644 --- a/Mage.Sets/src/mage/cards/m/MysticEnforcer.java +++ b/Mage.Sets/src/mage/cards/m/MysticEnforcer.java @@ -44,8 +44,6 @@ import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -53,12 +51,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class MysticEnforcer extends CardImpl { - private static final FilterCard filter = new FilterCard("Black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public MysticEnforcer(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{W}"); this.subtype.add("Human"); @@ -69,7 +61,7 @@ public class MysticEnforcer extends CardImpl { this.toughness = new MageInt(3); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // Threshold - As long as seven or more cards are in your graveyard, Mystic Enforcer gets +3/+3 and has flying. Ability thresholdAbility = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( new BoostSourceEffect(3, 3, Duration.WhileOnBattlefield), new CardsInControllerGraveCondition(7), diff --git a/Mage.Sets/src/mage/cards/m/MysticFamiliar.java b/Mage.Sets/src/mage/cards/m/MysticFamiliar.java index 7adafee004..bddd96c2f1 100644 --- a/Mage.Sets/src/mage/cards/m/MysticFamiliar.java +++ b/Mage.Sets/src/mage/cards/m/MysticFamiliar.java @@ -44,8 +44,6 @@ import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -53,12 +51,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class MysticFamiliar extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public MysticFamiliar(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Bird"); @@ -71,7 +63,7 @@ public class MysticFamiliar extends CardImpl { Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( new BoostSourceEffect(1, 1, Duration.WhileOnBattlefield), new CardsInControllerGraveCondition(7), "As long as seven or more cards are in your graveyard, {this} gets +1/+1")); - ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(new ProtectionAbility(filter)), + ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(ProtectionAbility.from(ObjectColor.BLACK)), new CardsInControllerGraveCondition(7), "and has protection from black")); ability.setAbilityWord(AbilityWord.THRESHOLD); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/n/NacatlOutlander.java b/Mage.Sets/src/mage/cards/n/NacatlOutlander.java index da5169f89f..372139556a 100644 --- a/Mage.Sets/src/mage/cards/n/NacatlOutlander.java +++ b/Mage.Sets/src/mage/cards/n/NacatlOutlander.java @@ -35,29 +35,21 @@ import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author Loki */ public class NacatlOutlander extends CardImpl { - private static final FilterCard filter = new FilterCard("blue"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLUE)); - } public NacatlOutlander(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}"); - - this.subtype.add("Cat"); this.subtype.add("Scout"); this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new ProtectionAbility(filter)); + + this.addAbility(ProtectionAbility.from(ObjectColor.BLUE)); } public NacatlOutlander(final NacatlOutlander card) { diff --git a/Mage.Sets/src/mage/cards/n/NantukoBlightcutter.java b/Mage.Sets/src/mage/cards/n/NantukoBlightcutter.java index ac458c8715..9130c0f61e 100644 --- a/Mage.Sets/src/mage/cards/n/NantukoBlightcutter.java +++ b/Mage.Sets/src/mage/cards/n/NantukoBlightcutter.java @@ -44,7 +44,6 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.TargetController; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.permanent.ControllerPredicate; @@ -55,13 +54,11 @@ import mage.filter.predicate.permanent.ControllerPredicate; */ public class NantukoBlightcutter extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - private static final FilterPermanent filter2 = new FilterPermanent(); + private static final FilterPermanent filter = new FilterPermanent(); static { filter.add(new ColorPredicate(ObjectColor.BLACK)); - filter2.add(new ColorPredicate(ObjectColor.BLACK)); - filter2.add(new ControllerPredicate(TargetController.OPPONENT)); + filter.add(new ControllerPredicate(TargetController.OPPONENT)); } public NantukoBlightcutter(UUID ownerId, CardSetInfo setInfo) { @@ -72,9 +69,9 @@ public class NantukoBlightcutter extends CardImpl { this.toughness = new MageInt(2); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // Threshold - Nantuko Blightcutter gets +1/+1 for each black permanent your opponents control as long as seven or more cards are in your graveyard. - PermanentsOnBattlefieldCount count = new PermanentsOnBattlefieldCount(filter2); + PermanentsOnBattlefieldCount count = new PermanentsOnBattlefieldCount(filter); Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( new BoostSourceEffect(count, count, Duration.WhileOnBattlefield), new CardsInControllerGraveCondition(7), "{this} gets +1/+1 for each black permanent your opponents control as long as seven or more cards are in your graveyard")); diff --git a/Mage.Sets/src/mage/cards/n/Narwhal.java b/Mage.Sets/src/mage/cards/n/Narwhal.java index d3f50181d9..1d59834510 100644 --- a/Mage.Sets/src/mage/cards/n/Narwhal.java +++ b/Mage.Sets/src/mage/cards/n/Narwhal.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class Narwhal extends CardImpl { - private static final FilterCard filter = new FilterCard("red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public Narwhal(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}"); this.subtype.add("Whale"); @@ -59,7 +51,7 @@ public class Narwhal extends CardImpl { // First strike this.addAbility(FirstStrikeAbility.getInstance()); // protection from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); } public Narwhal(final Narwhal card) { diff --git a/Mage.Sets/src/mage/cards/n/NightwindGlider.java b/Mage.Sets/src/mage/cards/n/NightwindGlider.java index 3fc6bce83f..9a7f1a6c1b 100644 --- a/Mage.Sets/src/mage/cards/n/NightwindGlider.java +++ b/Mage.Sets/src/mage/cards/n/NightwindGlider.java @@ -36,8 +36,6 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,12 +43,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class NightwindGlider extends CardImpl { - private static final FilterCard filter = new FilterCard("Black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public NightwindGlider(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}"); this.subtype.add("Human"); @@ -63,7 +55,7 @@ public class NightwindGlider extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); } public NightwindGlider(final NightwindGlider card) { diff --git a/Mage.Sets/src/mage/cards/o/ObsidianAcolyte.java b/Mage.Sets/src/mage/cards/o/ObsidianAcolyte.java index 5534f2593f..1007a4b31d 100644 --- a/Mage.Sets/src/mage/cards/o/ObsidianAcolyte.java +++ b/Mage.Sets/src/mage/cards/o/ObsidianAcolyte.java @@ -40,23 +40,14 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.common.TargetCreaturePermanent; /** * * @author LoneFox - */ public class ObsidianAcolyte extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public ObsidianAcolyte(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Human"); @@ -65,10 +56,10 @@ public class ObsidianAcolyte extends CardImpl { this.toughness = new MageInt(1); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // {W}: Target creature gains protection from black until end of turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, - new GainAbilityTargetEffect(new ProtectionAbility(filter), Duration.EndOfTurn), new ManaCostsImpl("{W}")); + new GainAbilityTargetEffect(ProtectionAbility.from(ObjectColor.BLACK), Duration.EndOfTurn), new ManaCostsImpl("{W}")); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/o/OpalGuardian.java b/Mage.Sets/src/mage/cards/o/OpalGuardian.java index 083b208063..c8da3a9283 100644 --- a/Mage.Sets/src/mage/cards/o/OpalGuardian.java +++ b/Mage.Sets/src/mage/cards/o/OpalGuardian.java @@ -41,10 +41,8 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; -import mage.filter.FilterCard; import mage.filter.common.FilterCreatureSpell; import mage.filter.common.FilterEnchantmentPermanent; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.permanent.token.Token; /** @@ -75,13 +73,6 @@ public class OpalGuardian extends CardImpl { } class OpalGuardianGargoyle extends Token { - - private static final FilterCard filter = new FilterCard("red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public OpalGuardianGargoyle() { super("Gargoyle", "3/4 Gargoyle creature with flying and protection from red"); cardType.add(CardType.CREATURE); @@ -89,6 +80,6 @@ class OpalGuardianGargoyle extends Token { power = new MageInt(3); toughness = new MageInt(4); this.addAbility(FlyingAbility.getInstance()); - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); } } diff --git a/Mage.Sets/src/mage/cards/o/Oraxid.java b/Mage.Sets/src/mage/cards/o/Oraxid.java index 0cbfcdaa79..98997bfd42 100644 --- a/Mage.Sets/src/mage/cards/o/Oraxid.java +++ b/Mage.Sets/src/mage/cards/o/Oraxid.java @@ -34,8 +34,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -43,12 +41,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class Oraxid extends CardImpl { - private static final FilterCard filter = new FilterCard("red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public Oraxid(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}"); this.subtype.add("Crab"); @@ -57,7 +49,7 @@ public class Oraxid extends CardImpl { this.toughness = new MageInt(3); // Protection from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); } public Oraxid(final Oraxid card) { diff --git a/Mage.Sets/src/mage/cards/o/OrderOfLeitbur.java b/Mage.Sets/src/mage/cards/o/OrderOfLeitbur.java index fc53ff6ec8..d7126f517e 100644 --- a/Mage.Sets/src/mage/cards/o/OrderOfLeitbur.java +++ b/Mage.Sets/src/mage/cards/o/OrderOfLeitbur.java @@ -41,22 +41,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author LoneFox - */ public class OrderOfLeitbur extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public OrderOfLeitbur(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}"); this.subtype.add("Human"); @@ -66,7 +57,7 @@ public class OrderOfLeitbur extends CardImpl { this.toughness = new MageInt(1); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // {W}: Order of Leitbur gains first strike until end of turn. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{W}"))); diff --git a/Mage.Sets/src/mage/cards/o/OrderOfTheEbonHand.java b/Mage.Sets/src/mage/cards/o/OrderOfTheEbonHand.java index 4bed8b7db8..a7a0cd0a3c 100644 --- a/Mage.Sets/src/mage/cards/o/OrderOfTheEbonHand.java +++ b/Mage.Sets/src/mage/cards/o/OrderOfTheEbonHand.java @@ -41,22 +41,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author LoneFox - */ public class OrderOfTheEbonHand extends CardImpl { - private static final FilterCard filter = new FilterCard("white"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public OrderOfTheEbonHand(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}"); this.subtype.add("Cleric"); @@ -65,7 +56,7 @@ public class OrderOfTheEbonHand extends CardImpl { this.toughness = new MageInt(1); // Protection from white - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); // {B}: Order of the Ebon Hand gains first strike until end of turn. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{B}"))); diff --git a/Mage.Sets/src/mage/cards/o/OrderOfTheWhiteShield.java b/Mage.Sets/src/mage/cards/o/OrderOfTheWhiteShield.java index 90fe0c0a3a..724428fc0b 100644 --- a/Mage.Sets/src/mage/cards/o/OrderOfTheWhiteShield.java +++ b/Mage.Sets/src/mage/cards/o/OrderOfTheWhiteShield.java @@ -41,22 +41,13 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author LoneFox - */ public class OrderOfTheWhiteShield extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public OrderOfTheWhiteShield(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}"); this.subtype.add("Human"); @@ -65,7 +56,7 @@ public class OrderOfTheWhiteShield extends CardImpl { this.toughness = new MageInt(1); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // {W}: Order of the White Shield gains first strike until end of turn. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{W}"))); diff --git a/Mage.Sets/src/mage/cards/p/PaladinEnVec.java b/Mage.Sets/src/mage/cards/p/PaladinEnVec.java index fdf76961cb..30f6bda783 100644 --- a/Mage.Sets/src/mage/cards/p/PaladinEnVec.java +++ b/Mage.Sets/src/mage/cards/p/PaladinEnVec.java @@ -35,20 +35,12 @@ import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author Loki */ public class PaladinEnVec extends CardImpl { - private static final FilterCard protectionFilter = new FilterCard("black and from red"); - - static { - protectionFilter.add(Predicates.or(new ColorPredicate(ObjectColor.BLACK),new ColorPredicate(ObjectColor.RED))); - } public PaladinEnVec(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}{W}"); @@ -61,7 +53,7 @@ public class PaladinEnVec extends CardImpl { // First strike this.addAbility(FirstStrikeAbility.getInstance()); // protection from black and from red - this.addAbility(new ProtectionAbility(protectionFilter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK, ObjectColor.RED)); } public PaladinEnVec(final PaladinEnVec card) { diff --git a/Mage.Sets/src/mage/cards/p/PhantomCentaur.java b/Mage.Sets/src/mage/cards/p/PhantomCentaur.java index 682dcd0bbb..924c5e8b20 100644 --- a/Mage.Sets/src/mage/cards/p/PhantomCentaur.java +++ b/Mage.Sets/src/mage/cards/p/PhantomCentaur.java @@ -43,8 +43,6 @@ import mage.constants.Duration; import mage.constants.PhaseStep; import mage.constants.Zone; import mage.counters.CounterType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -56,12 +54,6 @@ import mage.game.turn.Step; */ public class PhantomCentaur extends CardImpl { - private static final FilterCard filter = new FilterCard("Black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public PhantomCentaur(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}"); this.subtype.add("Centaur"); @@ -71,7 +63,7 @@ public class PhantomCentaur extends CardImpl { this.toughness = new MageInt(0); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // Phantom Centaur enters the battlefield with three +1/+1 counters on it. this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)), "with three +1/+1 counters on it")); diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianCrusader.java b/Mage.Sets/src/mage/cards/p/PhyrexianCrusader.java index 35821eb541..2cf8a6cfcf 100644 --- a/Mage.Sets/src/mage/cards/p/PhyrexianCrusader.java +++ b/Mage.Sets/src/mage/cards/p/PhyrexianCrusader.java @@ -37,8 +37,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -46,16 +44,7 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class PhyrexianCrusader extends CardImpl { - private static final FilterCard filter = new FilterCard("Red"); - private static final FilterCard filter2 = new FilterCard("White"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - - filter2.add(new ColorPredicate(ObjectColor.WHITE)); - } - - public PhyrexianCrusader (UUID ownerId, CardSetInfo setInfo) { + public PhyrexianCrusader(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}"); this.subtype.add("Zombie"); this.subtype.add("Knight"); @@ -66,13 +55,12 @@ public class PhyrexianCrusader extends CardImpl { // First strike, this.addAbility(FirstStrikeAbility.getInstance()); // protection from red and from white - this.addAbility(new ProtectionAbility(filter)); - this.addAbility(new ProtectionAbility(filter2)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED, ObjectColor.WHITE)); // Infect this.addAbility(InfectAbility.getInstance()); } - public PhyrexianCrusader (final PhyrexianCrusader card) { + public PhyrexianCrusader(final PhyrexianCrusader card) { super(card); } diff --git a/Mage.Sets/src/mage/cards/p/PilgrimOfJustice.java b/Mage.Sets/src/mage/cards/p/PilgrimOfJustice.java index 6786518163..fc26e34b24 100644 --- a/Mage.Sets/src/mage/cards/p/PilgrimOfJustice.java +++ b/Mage.Sets/src/mage/cards/p/PilgrimOfJustice.java @@ -42,7 +42,6 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.FilterObject; import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; @@ -55,12 +54,6 @@ import mage.target.TargetSource; */ public class PilgrimOfJustice extends CardImpl { - static final FilterCard filter = new FilterCard("red"); - - static{ - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public PilgrimOfJustice(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}"); this.subtype.add("Human"); @@ -70,7 +63,7 @@ public class PilgrimOfJustice extends CardImpl { this.toughness = new MageInt(3); // Protection from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); // {W}, Sacrifice Pilgrim of Justice: The next time a red source of your choice would deal damage this turn, prevent that damage. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PilgrimOfJusticeEffect(), new ManaCostsImpl("{W}")); ability.addCost(new SacrificeSourceCost()); @@ -92,7 +85,7 @@ class PilgrimOfJusticeEffect extends PreventionEffectImpl { private static final FilterObject filter = new FilterObject("red source"); static{ filter.add(new ColorPredicate(ObjectColor.RED)); - } + } private TargetSource target; public PilgrimOfJusticeEffect() { diff --git a/Mage.Sets/src/mage/cards/p/PilgrimOfVirtue.java b/Mage.Sets/src/mage/cards/p/PilgrimOfVirtue.java index 9544bf97ba..7aa40ce598 100644 --- a/Mage.Sets/src/mage/cards/p/PilgrimOfVirtue.java +++ b/Mage.Sets/src/mage/cards/p/PilgrimOfVirtue.java @@ -42,7 +42,6 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.FilterObject; import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; @@ -55,12 +54,6 @@ import mage.target.TargetSource; */ public class PilgrimOfVirtue extends CardImpl { - static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public PilgrimOfVirtue(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}"); this.subtype.add("Human"); @@ -70,7 +63,7 @@ public class PilgrimOfVirtue extends CardImpl { this.toughness = new MageInt(3); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // {W}, Sacrifice Pilgrim of Virtue: The next time a black source of your choice would deal damage this turn, prevent that damage. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PilgrimOfVirtueEffect(), new ManaCostsImpl("{W}")); ability.addCost(new SacrificeSourceCost()); diff --git a/Mage.Sets/src/mage/cards/q/QuestingPhelddagrif.java b/Mage.Sets/src/mage/cards/q/QuestingPhelddagrif.java index c2d9ebf475..9116355241 100644 --- a/Mage.Sets/src/mage/cards/q/QuestingPhelddagrif.java +++ b/Mage.Sets/src/mage/cards/q/QuestingPhelddagrif.java @@ -45,9 +45,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.permanent.token.Token; import mage.target.common.TargetOpponent; @@ -58,12 +55,6 @@ import mage.target.common.TargetOpponent; */ public class QuestingPhelddagrif extends CardImpl { - private static final FilterCard filter = new FilterCard("black and from red"); - - static { - filter.add(Predicates.or(new ColorPredicate(ObjectColor.BLACK), new ColorPredicate(ObjectColor.RED))); - } - public QuestingPhelddagrif(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}{W}{U}"); this.subtype.add("Phelddagrif"); @@ -77,7 +68,7 @@ public class QuestingPhelddagrif extends CardImpl { ability.addTarget(new TargetOpponent()); this.addAbility(ability); // {W}: Questing Phelddagrif gains protection from black and from red until end of turn. Target opponent gains 2 life. - ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(new ProtectionAbility(filter), + ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(ProtectionAbility.from(ObjectColor.BLACK, ObjectColor.RED), Duration.EndOfTurn), new ManaCostsImpl("{W}")); ability.addEffect(new GainLifeTargetEffect(2)); ability.addTarget(new TargetOpponent()); diff --git a/Mage.Sets/src/mage/cards/r/RepentantBlacksmith.java b/Mage.Sets/src/mage/cards/r/RepentantBlacksmith.java index b94ca40789..1a47f0174b 100644 --- a/Mage.Sets/src/mage/cards/r/RepentantBlacksmith.java +++ b/Mage.Sets/src/mage/cards/r/RepentantBlacksmith.java @@ -34,8 +34,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -43,11 +41,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class RepentantBlacksmith extends CardImpl { - private static final FilterCard protectionFilter = new FilterCard("red"); - static { - protectionFilter.add(new ColorPredicate(ObjectColor.RED)); - } - public RepentantBlacksmith(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Human"); @@ -56,7 +49,7 @@ public class RepentantBlacksmith extends CardImpl { this.toughness = new MageInt(2); // Protection from red - this.addAbility(new ProtectionAbility(protectionFilter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); } public RepentantBlacksmith(final RepentantBlacksmith card) { diff --git a/Mage.Sets/src/mage/cards/s/SabertoothNishoba.java b/Mage.Sets/src/mage/cards/s/SabertoothNishoba.java index 64b024412f..95e7daba0c 100644 --- a/Mage.Sets/src/mage/cards/s/SabertoothNishoba.java +++ b/Mage.Sets/src/mage/cards/s/SabertoothNishoba.java @@ -35,23 +35,13 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author LoneFox - */ public class SabertoothNishoba extends CardImpl { - private static final FilterCard filter = new FilterCard("blue and from red"); - - static { - filter.add(Predicates.or(new ColorPredicate(ObjectColor.BLUE), new ColorPredicate(ObjectColor.RED))); - } - public SabertoothNishoba(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}{W}"); this.subtype.add("Cat"); @@ -63,7 +53,7 @@ public class SabertoothNishoba extends CardImpl { // Trample this.addAbility(TrampleAbility.getInstance()); // protection from blue and from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLUE, ObjectColor.RED)); } public SabertoothNishoba(final SabertoothNishoba card) { diff --git a/Mage.Sets/src/mage/cards/s/ScalebanesElite.java b/Mage.Sets/src/mage/cards/s/ScalebanesElite.java index b561213ef2..59c6ef4132 100644 --- a/Mage.Sets/src/mage/cards/s/ScalebanesElite.java +++ b/Mage.Sets/src/mage/cards/s/ScalebanesElite.java @@ -34,8 +34,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -43,11 +41,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class ScalebanesElite extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public ScalebanesElite(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{W}"); this.subtype.add("Human"); @@ -57,7 +50,7 @@ public class ScalebanesElite extends CardImpl { this.toughness = new MageInt(4); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); } public ScalebanesElite(final ScalebanesElite card) { diff --git a/Mage.Sets/src/mage/cards/s/Scragnoth.java b/Mage.Sets/src/mage/cards/s/Scragnoth.java index 46a5bd2e8c..7f800ee0a7 100644 --- a/Mage.Sets/src/mage/cards/s/Scragnoth.java +++ b/Mage.Sets/src/mage/cards/s/Scragnoth.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterObject; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,11 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class Scragnoth extends CardImpl { - private static final FilterObject filter = new FilterObject("from blue"); - static { - filter.add(new ColorPredicate(ObjectColor.BLUE)); - } - public Scragnoth(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}"); this.subtype.add("Beast"); @@ -59,7 +52,7 @@ public class Scragnoth extends CardImpl { // Scragnoth can't be countered. this.addAbility(new CantBeCounteredAbility()); // Protection from blue - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLUE)); } public Scragnoth(final Scragnoth card) { diff --git a/Mage.Sets/src/mage/cards/s/ScrybRanger.java b/Mage.Sets/src/mage/cards/s/ScrybRanger.java index 0750511013..3f76167a46 100644 --- a/Mage.Sets/src/mage/cards/s/ScrybRanger.java +++ b/Mage.Sets/src/mage/cards/s/ScrybRanger.java @@ -41,9 +41,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.common.FilterControlledLandPermanent; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; @@ -54,10 +52,8 @@ import mage.target.common.TargetCreaturePermanent; */ public class ScrybRanger extends CardImpl { - private static final FilterCard filter = new FilterCard("blue"); private static final FilterControlledLandPermanent filterForest = new FilterControlledLandPermanent("Forest"); static { - filter.add(new ColorPredicate(ObjectColor.BLUE)); filterForest.add(new SubtypePredicate("Forest")); } @@ -73,7 +69,7 @@ public class ScrybRanger extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from blue - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLUE)); // Return a Forest you control to its owner's hand: Untap target creature. Activate this ability only once each turn. Ability ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new UntapTargetEffect(), new ReturnToHandChosenControlledPermanentCost(new TargetControlledPermanent(filterForest))); ability.addTarget(new TargetCreaturePermanent(1)); diff --git a/Mage.Sets/src/mage/cards/s/SeaSprite.java b/Mage.Sets/src/mage/cards/s/SeaSprite.java index 77aad77117..97a64fb609 100644 --- a/Mage.Sets/src/mage/cards/s/SeaSprite.java +++ b/Mage.Sets/src/mage/cards/s/SeaSprite.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class SeaSprite extends CardImpl { - private static final FilterCard filter = new FilterCard("red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public SeaSprite(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}"); this.subtype.add("Faerie"); @@ -59,7 +51,7 @@ public class SeaSprite extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); } public SeaSprite(final SeaSprite card) { diff --git a/Mage.Sets/src/mage/cards/s/ShieldOfDutyAndReason.java b/Mage.Sets/src/mage/cards/s/ShieldOfDutyAndReason.java index c5a54fc00a..3e42b0ab57 100644 --- a/Mage.Sets/src/mage/cards/s/ShieldOfDutyAndReason.java +++ b/Mage.Sets/src/mage/cards/s/ShieldOfDutyAndReason.java @@ -42,9 +42,6 @@ import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -54,12 +51,6 @@ import mage.target.common.TargetCreaturePermanent; */ public class ShieldOfDutyAndReason extends CardImpl { - private static final FilterCard filter = new FilterCard("green and from blue"); - - static { - filter.add(Predicates.or(new ColorPredicate(ObjectColor.GREEN), new ColorPredicate(ObjectColor.BLUE))); - } - public ShieldOfDutyAndReason(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}"); this.subtype.add("Aura"); @@ -71,7 +62,7 @@ public class ShieldOfDutyAndReason extends CardImpl { Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); // Enchanted creature has protection from green and from blue. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new ProtectionAbility(filter), + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.GREEN, ObjectColor.BLUE), AttachmentType.AURA, Duration.WhileOnBattlefield))); } diff --git a/Mage.Sets/src/mage/cards/s/ShivanZombie.java b/Mage.Sets/src/mage/cards/s/ShivanZombie.java index 9a63629912..8f5efdf28e 100644 --- a/Mage.Sets/src/mage/cards/s/ShivanZombie.java +++ b/Mage.Sets/src/mage/cards/s/ShivanZombie.java @@ -31,8 +31,6 @@ import java.util.UUID; import mage.MageInt; import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -42,11 +40,7 @@ import mage.constants.CardType; * @author Jgod */ public class ShivanZombie extends CardImpl { - private static final FilterCard protectionFilter = new FilterCard("white"); - static { - protectionFilter.add(new ColorPredicate(ObjectColor.WHITE)); - } - + public ShivanZombie(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{R}"); this.subtype.add("Barbarian"); @@ -55,7 +49,7 @@ public class ShivanZombie extends CardImpl { this.toughness = new MageInt(2); // Protection from white - this.addAbility(new ProtectionAbility(protectionFilter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); } public ShivanZombie(final ShivanZombie card) { diff --git a/Mage.Sets/src/mage/cards/s/SilverKnight.java b/Mage.Sets/src/mage/cards/s/SilverKnight.java index bdf7cbcbb8..2f247dea35 100644 --- a/Mage.Sets/src/mage/cards/s/SilverKnight.java +++ b/Mage.Sets/src/mage/cards/s/SilverKnight.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class SilverKnight extends CardImpl { - private static final FilterCard filter = new FilterCard("red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public SilverKnight(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}"); this.subtype.add("Human"); @@ -61,7 +53,7 @@ public class SilverKnight extends CardImpl { // First strike this.addAbility(FirstStrikeAbility.getInstance()); // protection from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); } public SilverKnight(final SilverKnight card) { diff --git a/Mage.Sets/src/mage/cards/s/SkirkFireMarshal.java b/Mage.Sets/src/mage/cards/s/SkirkFireMarshal.java index df6ccd4bf6..42733cf058 100644 --- a/Mage.Sets/src/mage/cards/s/SkirkFireMarshal.java +++ b/Mage.Sets/src/mage/cards/s/SkirkFireMarshal.java @@ -39,10 +39,8 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.TappedPredicate; import mage.target.common.TargetControlledCreaturePermanent; @@ -53,11 +51,9 @@ import mage.target.common.TargetControlledCreaturePermanent; */ public class SkirkFireMarshal extends CardImpl { - private static final FilterCard filterProtection = new FilterCard("red"); private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Goblins you control"); static { - filterProtection.add(new ColorPredicate(ObjectColor.RED)); filter.add(Predicates.not(new TappedPredicate())); filter.add(new SubtypePredicate("Goblin")); } @@ -70,7 +66,7 @@ public class SkirkFireMarshal extends CardImpl { this.toughness = new MageInt(2); // Protection from red - this.addAbility(new ProtectionAbility(filterProtection)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); // Tap five untapped Goblins you control: Skirk Fire Marshal deals 10 damage to each creature and each player. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, diff --git a/Mage.Sets/src/mage/cards/s/Skylasher.java b/Mage.Sets/src/mage/cards/s/Skylasher.java index 37969d04e0..a46f51e563 100644 --- a/Mage.Sets/src/mage/cards/s/Skylasher.java +++ b/Mage.Sets/src/mage/cards/s/Skylasher.java @@ -38,22 +38,13 @@ import mage.abilities.keyword.ProtectionAbility; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author LevelX2 */ - - public class Skylasher extends CardImpl { - private static final FilterCard filter = new FilterCard("blue"); - static { - filter.add(new ColorPredicate(ObjectColor.BLUE)); - } - public Skylasher (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}"); this.subtype.add("Insect"); @@ -67,7 +58,7 @@ public class Skylasher extends CardImpl { this.addAbility(new CantBeCounteredAbility()); // Reach, protection from blue this.addAbility(ReachAbility.getInstance()); - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLUE)); } diff --git a/Mage.Sets/src/mage/cards/s/SoltariMonk.java b/Mage.Sets/src/mage/cards/s/SoltariMonk.java index 5ae38922ff..0fbaaf6fc3 100644 --- a/Mage.Sets/src/mage/cards/s/SoltariMonk.java +++ b/Mage.Sets/src/mage/cards/s/SoltariMonk.java @@ -35,19 +35,12 @@ import mage.abilities.keyword.ProtectionAbility; import mage.abilities.keyword.ShadowAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author Loki */ public class SoltariMonk extends CardImpl { - private static final FilterCard filter = new FilterCard("Black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } public SoltariMonk(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}"); @@ -59,7 +52,7 @@ public class SoltariMonk extends CardImpl { this.toughness = new MageInt(1); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // Shadow this.addAbility(ShadowAbility.getInstance()); } diff --git a/Mage.Sets/src/mage/cards/s/SoltariPriest.java b/Mage.Sets/src/mage/cards/s/SoltariPriest.java index 2f98b2e800..5472007920 100644 --- a/Mage.Sets/src/mage/cards/s/SoltariPriest.java +++ b/Mage.Sets/src/mage/cards/s/SoltariPriest.java @@ -35,19 +35,12 @@ import mage.abilities.keyword.ProtectionAbility; import mage.abilities.keyword.ShadowAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author Loki */ public class SoltariPriest extends CardImpl { - private static final FilterCard filter = new FilterCard("red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } public SoltariPriest(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}"); @@ -58,7 +51,7 @@ public class SoltariPriest extends CardImpl { this.toughness = new MageInt(1); // Protection from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); // Shadow this.addAbility(ShadowAbility.getInstance()); } diff --git a/Mage.Sets/src/mage/cards/s/SpectralLynx.java b/Mage.Sets/src/mage/cards/s/SpectralLynx.java index 9ce18ed607..e0932a260c 100644 --- a/Mage.Sets/src/mage/cards/s/SpectralLynx.java +++ b/Mage.Sets/src/mage/cards/s/SpectralLynx.java @@ -38,8 +38,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -48,12 +46,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class SpectralLynx extends CardImpl { - private static final FilterCard filter = new FilterCard("green"); - - static { - filter.add(new ColorPredicate(ObjectColor.GREEN)); - } - public SpectralLynx(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Cat"); @@ -62,7 +54,7 @@ public class SpectralLynx extends CardImpl { this.toughness = new MageInt(1); // Protection from green - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.GREEN)); // {B}: Regenerate Spectral Lynx. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{B}"))); } diff --git a/Mage.Sets/src/mage/cards/s/SphinxOfTheSteelWind.java b/Mage.Sets/src/mage/cards/s/SphinxOfTheSteelWind.java index 34c0ffbb72..0cff644886 100644 --- a/Mage.Sets/src/mage/cards/s/SphinxOfTheSteelWind.java +++ b/Mage.Sets/src/mage/cards/s/SphinxOfTheSteelWind.java @@ -35,36 +35,25 @@ import mage.ObjectColor; import mage.abilities.keyword.*; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author Loki */ public class SphinxOfTheSteelWind extends CardImpl { - private static final FilterCard filter = new FilterCard("red and from green"); - - static { - filter.add(Predicates.or( - new ColorPredicate(ObjectColor.RED), - new ColorPredicate(ObjectColor.GREEN))); - } public SphinxOfTheSteelWind (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}{W}{U}{B}"); this.subtype.add("Sphinx"); - - this.power = new MageInt(6); this.toughness = new MageInt(6); + this.addAbility(FlyingAbility.getInstance()); this.addAbility(FirstStrikeAbility.getInstance()); this.addAbility(VigilanceAbility.getInstance()); this.addAbility(LifelinkAbility.getInstance()); - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED, ObjectColor.GREEN)); } public SphinxOfTheSteelWind (final SphinxOfTheSteelWind card) { diff --git a/Mage.Sets/src/mage/cards/s/SpiritOfTheNight.java b/Mage.Sets/src/mage/cards/s/SpiritOfTheNight.java index 1f82261ae6..e39967eb97 100644 --- a/Mage.Sets/src/mage/cards/s/SpiritOfTheNight.java +++ b/Mage.Sets/src/mage/cards/s/SpiritOfTheNight.java @@ -38,25 +38,17 @@ import mage.abilities.keyword.*; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.common.FilterAttackingCreature; -import mage.filter.predicate.mageobject.ColorPredicate; import java.util.UUID; /** * * @author jeffwadsworth - */ public class SpiritOfTheNight extends CardImpl { private static final String rule = "Spirit of the Night has first strike as long as it's attacking"; - private static final FilterCard filter = new FilterCard("Black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } public SpiritOfTheNight(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{B}{B}{B}"); @@ -77,7 +69,7 @@ public class SpiritOfTheNight extends CardImpl { this.addAbility(HasteAbility.getInstance()); // protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // Spirit of the Night has first strike as long as it's attacking. ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance()), new SourceMatchesFilterCondition(new FilterAttackingCreature()), rule); diff --git a/Mage.Sets/src/mage/cards/s/StillmoonCavalier.java b/Mage.Sets/src/mage/cards/s/StillmoonCavalier.java index a3db5f0fd0..d14a14b253 100644 --- a/Mage.Sets/src/mage/cards/s/StillmoonCavalier.java +++ b/Mage.Sets/src/mage/cards/s/StillmoonCavalier.java @@ -42,9 +42,6 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -52,13 +49,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class StillmoonCavalier extends CardImpl { - private static final FilterCard filter = new FilterCard("white and from black"); - static { - filter.add(Predicates.or( - new ColorPredicate(ObjectColor.WHITE), - new ColorPredicate(ObjectColor.BLACK))); - } - public StillmoonCavalier(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W/B}{W/B}"); this.subtype.add("Zombie"); @@ -68,7 +58,7 @@ public class StillmoonCavalier extends CardImpl { this.toughness = new MageInt(1); // Protection from white and from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE, ObjectColor.BLACK)); // {WB}: Stillmoon Cavalier gains flying until end of turn. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{W/B}"))); // {WB}: Stillmoon Cavalier gains first strike until end of turn. diff --git a/Mage.Sets/src/mage/cards/s/StormbreathDragon.java b/Mage.Sets/src/mage/cards/s/StormbreathDragon.java index 69afe684ab..a09cd638a4 100644 --- a/Mage.Sets/src/mage/cards/s/StormbreathDragon.java +++ b/Mage.Sets/src/mage/cards/s/StormbreathDragon.java @@ -41,8 +41,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; -import mage.filter.FilterObject; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.players.Player; @@ -51,11 +49,6 @@ import mage.players.Player; * @author LevelX2 */ public class StormbreathDragon extends CardImpl { - - private static final FilterObject filter = new FilterObject("white"); - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } public StormbreathDragon(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}{R}"); @@ -69,7 +62,7 @@ public class StormbreathDragon extends CardImpl { // Haste this.addAbility(HasteAbility.getInstance()); // protection from white - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); // {5}{R}{R}: Monstrosity 3. this.addAbility(new MonstrosityAbility("{5}{R}{R}",3)); // When Stormbreath Dragon becomes monstrous, it deals damage to each opponent equal to the number of cards in that player's hand. diff --git a/Mage.Sets/src/mage/cards/s/StrengthOfIsolation.java b/Mage.Sets/src/mage/cards/s/StrengthOfIsolation.java index 60d639cf8a..9c9c34e74e 100644 --- a/Mage.Sets/src/mage/cards/s/StrengthOfIsolation.java +++ b/Mage.Sets/src/mage/cards/s/StrengthOfIsolation.java @@ -46,22 +46,15 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; + /** * * @author LoneFox */ public class StrengthOfIsolation extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public StrengthOfIsolation(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}"); this.subtype.add("Aura"); @@ -74,7 +67,7 @@ public class StrengthOfIsolation extends CardImpl { this.addAbility(ability); // Enchanted creature gets +1/+2 and has protection from black. ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 2, Duration.WhileOnBattlefield)); - Effect effect = new GainAbilityAttachedEffect(new ProtectionAbility(filter), AttachmentType.AURA); + Effect effect = new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.BLACK), AttachmentType.AURA); effect.setText("and has protection from black"); ability.addEffect(effect); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/StrengthOfLunacy.java b/Mage.Sets/src/mage/cards/s/StrengthOfLunacy.java index 6fe68b8c7f..77ac3ba02e 100644 --- a/Mage.Sets/src/mage/cards/s/StrengthOfLunacy.java +++ b/Mage.Sets/src/mage/cards/s/StrengthOfLunacy.java @@ -46,8 +46,6 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -57,12 +55,6 @@ import mage.target.common.TargetCreaturePermanent; */ public class StrengthOfLunacy extends CardImpl { - private static final FilterCard filter = new FilterCard("white"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public StrengthOfLunacy(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}"); this.subtype.add("Aura"); @@ -75,7 +67,7 @@ public class StrengthOfLunacy extends CardImpl { this.addAbility(ability); // Enchanted creature gets +2/+1 and has protection from white. ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 1, Duration.WhileOnBattlefield)); - Effect effect = new GainAbilityAttachedEffect(new ProtectionAbility(filter), AttachmentType.AURA); + Effect effect = new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.WHITE), AttachmentType.AURA); effect.setText("and has protection from white"); ability.addEffect(effect); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/StromgaldCrusader.java b/Mage.Sets/src/mage/cards/s/StromgaldCrusader.java index 93393945e2..4e058da7c3 100644 --- a/Mage.Sets/src/mage/cards/s/StromgaldCrusader.java +++ b/Mage.Sets/src/mage/cards/s/StromgaldCrusader.java @@ -41,8 +41,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -50,12 +48,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class StromgaldCrusader extends CardImpl { - private static final FilterCard filter = new FilterCard("White"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public StromgaldCrusader(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}"); this.subtype.add("Zombie"); @@ -65,7 +57,7 @@ public class StromgaldCrusader extends CardImpl { this.toughness = new MageInt(1); // Protection from white - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); // {B}: Stromgald Crusader gains flying until end of turn. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{B}"))); diff --git a/Mage.Sets/src/mage/cards/s/SwordOfBodyAndMind.java b/Mage.Sets/src/mage/cards/s/SwordOfBodyAndMind.java index 3de48e1bdf..2cd7bbca1f 100644 --- a/Mage.Sets/src/mage/cards/s/SwordOfBodyAndMind.java +++ b/Mage.Sets/src/mage/cards/s/SwordOfBodyAndMind.java @@ -47,9 +47,6 @@ import mage.constants.AttachmentType; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; @@ -64,21 +61,13 @@ import mage.target.targetpointer.FixedTarget; */ public class SwordOfBodyAndMind extends CardImpl { - private static final FilterCard filter = new FilterCard("green and from blue"); - - static { - filter.add(Predicates.or( - new ColorPredicate(ObjectColor.GREEN), - new ColorPredicate(ObjectColor.BLUE))); - } - - public SwordOfBodyAndMind (UUID ownerId, CardSetInfo setInfo) { + public SwordOfBodyAndMind(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}"); this.subtype.add("Equipment"); // Equipped creature gets +2/+2 and has protection from green and from blue. Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2)); - Effect effect = new GainAbilityAttachedEffect(new ProtectionAbility(filter), AttachmentType.EQUIPMENT); + Effect effect = new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.GREEN, ObjectColor.BLUE), AttachmentType.EQUIPMENT); effect.setText("and has protection from green and from blue"); ability.addEffect(effect); this.addAbility(ability); @@ -90,7 +79,7 @@ public class SwordOfBodyAndMind extends CardImpl { this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2))); } - public SwordOfBodyAndMind (final SwordOfBodyAndMind card) { + public SwordOfBodyAndMind(final SwordOfBodyAndMind card) { super(card); } diff --git a/Mage.Sets/src/mage/cards/s/SwordOfFeastAndFamine.java b/Mage.Sets/src/mage/cards/s/SwordOfFeastAndFamine.java index 8310518f6f..5543f317a7 100644 --- a/Mage.Sets/src/mage/cards/s/SwordOfFeastAndFamine.java +++ b/Mage.Sets/src/mage/cards/s/SwordOfFeastAndFamine.java @@ -46,9 +46,6 @@ import mage.constants.AttachmentType; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; @@ -61,25 +58,17 @@ import mage.target.targetpointer.FixedTarget; * @author Viserion */ public class SwordOfFeastAndFamine extends CardImpl { - private static final FilterCard filter = new FilterCard("green and from black"); - static { - filter.add(Predicates.or( - new ColorPredicate(ObjectColor.GREEN), - new ColorPredicate(ObjectColor.BLACK))); - } - - - public SwordOfFeastAndFamine (UUID ownerId, CardSetInfo setInfo) { + public SwordOfFeastAndFamine(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}"); this.subtype.add("Equipment"); this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2))); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new ProtectionAbility(filter), AttachmentType.EQUIPMENT))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.GREEN, ObjectColor.BLACK), AttachmentType.EQUIPMENT))); this.addAbility(new SwordOfFeastAndFamineAbility()); } - public SwordOfFeastAndFamine (final SwordOfFeastAndFamine card) { + public SwordOfFeastAndFamine(final SwordOfFeastAndFamine card) { super(card); } diff --git a/Mage.Sets/src/mage/cards/s/SwordOfFireAndIce.java b/Mage.Sets/src/mage/cards/s/SwordOfFireAndIce.java index c4628266a7..c9d7b29ba7 100644 --- a/Mage.Sets/src/mage/cards/s/SwordOfFireAndIce.java +++ b/Mage.Sets/src/mage/cards/s/SwordOfFireAndIce.java @@ -45,9 +45,6 @@ import mage.constants.AttachmentType; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; @@ -60,22 +57,13 @@ import mage.target.common.TargetCreatureOrPlayer; */ public class SwordOfFireAndIce extends CardImpl { - private static final FilterCard filter = new FilterCard("red and from blue"); - - static { - filter.add(Predicates.or( - new ColorPredicate(ObjectColor.RED), - new ColorPredicate(ObjectColor.BLUE))); - } - - public SwordOfFireAndIce(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}"); this.subtype.add("Equipment"); // Equipped creature gets +2/+2 and has protection from red and from blue. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2))); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new ProtectionAbility(filter), AttachmentType.EQUIPMENT))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.RED, ObjectColor.BLUE), AttachmentType.EQUIPMENT))); // Whenever equipped creature deals combat damage to a player, Sword of Fire and Ice deals 2 damage to target creature or player and you draw a card. this.addAbility(new SwordOfFireAndIceAbility()); // Equip diff --git a/Mage.Sets/src/mage/cards/s/SwordOfLightAndShadow.java b/Mage.Sets/src/mage/cards/s/SwordOfLightAndShadow.java index 4b2162611e..c00334b593 100644 --- a/Mage.Sets/src/mage/cards/s/SwordOfLightAndShadow.java +++ b/Mage.Sets/src/mage/cards/s/SwordOfLightAndShadow.java @@ -46,10 +46,7 @@ import mage.constants.AttachmentType; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.common.FilterCreatureCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; @@ -63,21 +60,13 @@ import mage.target.common.TargetCardInYourGraveyard; */ public class SwordOfLightAndShadow extends CardImpl { - private static final FilterCard filter = new FilterCard("white and from black"); - - static { - filter.add(Predicates.or( - new ColorPredicate(ObjectColor.WHITE), - new ColorPredicate(ObjectColor.BLACK))); - } - public SwordOfLightAndShadow(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}"); this.subtype.add("Equipment"); // Equipped creature gets +2/+2 and has protection from white and from black. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2))); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new ProtectionAbility(filter), AttachmentType.EQUIPMENT))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.WHITE, ObjectColor.BLACK), AttachmentType.EQUIPMENT))); // Whenever equipped creature deals combat damage to a player, you gain 3 life and you may return up to one target creature card from your graveyard to your hand. this.addAbility(new SwordOfLightAndShadowAbility()); // Equip {2} diff --git a/Mage.Sets/src/mage/cards/s/SwordOfWarAndPeace.java b/Mage.Sets/src/mage/cards/s/SwordOfWarAndPeace.java index 26818eda55..9bfee43ea4 100644 --- a/Mage.Sets/src/mage/cards/s/SwordOfWarAndPeace.java +++ b/Mage.Sets/src/mage/cards/s/SwordOfWarAndPeace.java @@ -48,9 +48,6 @@ import mage.constants.AttachmentType; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.events.DamagedPlayerEvent; import mage.game.events.GameEvent; @@ -64,13 +61,6 @@ import mage.target.TargetPlayer; * @author Loki */ public class SwordOfWarAndPeace extends CardImpl { - private static final FilterCard filter = new FilterCard("red and from white"); - - static { - filter.add(Predicates.or( - new ColorPredicate(ObjectColor.RED), - new ColorPredicate(ObjectColor.WHITE))); - } public SwordOfWarAndPeace (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}"); @@ -78,7 +68,7 @@ public class SwordOfWarAndPeace extends CardImpl { // Equipped creature gets +2/+2 and has protection from red and from white. Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2)); - Effect effect = new GainAbilityAttachedEffect(new ProtectionAbility(filter), AttachmentType.EQUIPMENT); + Effect effect = new GainAbilityAttachedEffect(ProtectionAbility.from(ObjectColor.RED, ObjectColor.WHITE), AttachmentType.EQUIPMENT); effect.setText("and has protection from red and from white"); ability.addEffect(effect); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/t/TerohsVanguard.java b/Mage.Sets/src/mage/cards/t/TerohsVanguard.java index a3735f9249..cbe9367b02 100644 --- a/Mage.Sets/src/mage/cards/t/TerohsVanguard.java +++ b/Mage.Sets/src/mage/cards/t/TerohsVanguard.java @@ -45,9 +45,7 @@ import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -55,12 +53,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class TerohsVanguard extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public TerohsVanguard(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}"); this.subtype.add("Human"); @@ -73,7 +65,7 @@ public class TerohsVanguard extends CardImpl { // Threshold - As long as seven or more cards are in your graveyard, Teroh's Vanguard has "When Teroh's Vanguard enters the battlefield, creatures you control gain protection from black until end of turn." Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( new GainAbilitySourceEffect(new EntersBattlefieldTriggeredAbility( - new GainAbilityControlledEffect(new ProtectionAbility(filter), Duration.EndOfTurn, new FilterCreaturePermanent()))), + new GainAbilityControlledEffect(ProtectionAbility.from(ObjectColor.BLACK), Duration.EndOfTurn, new FilterCreaturePermanent()))), new CardsInControllerGraveCondition(7), "As long as seven or more cards are in your graveyard, {this} has \"When {this} enters the battlefield, creatures you control gain protection from black until end of turn.\"")); ability.setAbilityWord(AbilityWord.THRESHOLD); diff --git a/Mage.Sets/src/mage/cards/t/ThermalGlider.java b/Mage.Sets/src/mage/cards/t/ThermalGlider.java index ec9036a330..0777418166 100644 --- a/Mage.Sets/src/mage/cards/t/ThermalGlider.java +++ b/Mage.Sets/src/mage/cards/t/ThermalGlider.java @@ -36,8 +36,6 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,12 +43,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class ThermalGlider extends CardImpl { - private static final FilterCard filter = new FilterCard("Red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public ThermalGlider(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}"); this.subtype.add("Human"); @@ -63,7 +55,7 @@ public class ThermalGlider extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Protection from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); } public ThermalGlider(final ThermalGlider card) { diff --git a/Mage.Sets/src/mage/cards/t/TivadarOfThorn.java b/Mage.Sets/src/mage/cards/t/TivadarOfThorn.java index b636071f3c..ced2ba9756 100644 --- a/Mage.Sets/src/mage/cards/t/TivadarOfThorn.java +++ b/Mage.Sets/src/mage/cards/t/TivadarOfThorn.java @@ -38,9 +38,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.Target; import mage.target.TargetPermanent; @@ -51,12 +49,10 @@ import mage.target.TargetPermanent; */ public class TivadarOfThorn extends CardImpl { - private static final FilterCard filter = new FilterCard("Red"); - private static final FilterPermanent filter2 = new FilterPermanent("Goblin"); + private static final FilterPermanent filter = new FilterPermanent("Goblin"); static { - filter.add(new ColorPredicate(ObjectColor.RED)); - filter2.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate("Goblin")); } public TivadarOfThorn(UUID ownerId, CardSetInfo setInfo) { @@ -71,11 +67,11 @@ public class TivadarOfThorn extends CardImpl { this.addAbility(FirstStrikeAbility.getInstance()); // protection from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); // When Tivadar of Thorn enters the battlefield, destroy target Goblin. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(),false); - Target target = new TargetPermanent(filter2); + Target target = new TargetPermanent(filter); ability.addTarget(target); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TreetopSentinel.java b/Mage.Sets/src/mage/cards/t/TreetopSentinel.java index 4fd5c7fe76..b3c1a41188 100644 --- a/Mage.Sets/src/mage/cards/t/TreetopSentinel.java +++ b/Mage.Sets/src/mage/cards/t/TreetopSentinel.java @@ -35,21 +35,13 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author cbt33 */ - public class TreetopSentinel extends CardImpl { - public static final FilterCard filter = new FilterCard("green"); - static { - filter.add(new ColorPredicate(ObjectColor.GREEN)); - } - public TreetopSentinel(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}"); this.subtype.add("Bird"); @@ -62,7 +54,7 @@ public class TreetopSentinel extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // protection from green - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.GREEN)); } public TreetopSentinel(final TreetopSentinel card) { diff --git a/Mage.Sets/src/mage/cards/v/ValeronOutlander.java b/Mage.Sets/src/mage/cards/v/ValeronOutlander.java index e5fc1f5746..0454d80446 100644 --- a/Mage.Sets/src/mage/cards/v/ValeronOutlander.java +++ b/Mage.Sets/src/mage/cards/v/ValeronOutlander.java @@ -35,19 +35,12 @@ import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author Loki */ public class ValeronOutlander extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } public ValeronOutlander(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{W}"); @@ -57,7 +50,7 @@ public class ValeronOutlander extends CardImpl { this.subtype.add("Scout"); this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); } public ValeronOutlander(final ValeronOutlander card) { diff --git a/Mage.Sets/src/mage/cards/v/VedalkenOutlander.java b/Mage.Sets/src/mage/cards/v/VedalkenOutlander.java index a2eb4f3e18..3662995879 100644 --- a/Mage.Sets/src/mage/cards/v/VedalkenOutlander.java +++ b/Mage.Sets/src/mage/cards/v/VedalkenOutlander.java @@ -35,29 +35,21 @@ import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author Loki */ public class VedalkenOutlander extends CardImpl { - private static final FilterCard filter = new FilterCard("red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } public VedalkenOutlander(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{W}{U}"); - - this.subtype.add("Vedalken"); this.subtype.add("Scout"); this.power = new MageInt(2); - this.toughness = new MageInt(2); - this.addAbility(new ProtectionAbility(filter)); + this.toughness = new MageInt(2); + + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); } public VedalkenOutlander(final VedalkenOutlander card) { diff --git a/Mage.Sets/src/mage/cards/v/VodalianZombie.java b/Mage.Sets/src/mage/cards/v/VodalianZombie.java index fd6decefa6..0143dda057 100644 --- a/Mage.Sets/src/mage/cards/v/VodalianZombie.java +++ b/Mage.Sets/src/mage/cards/v/VodalianZombie.java @@ -31,8 +31,6 @@ import java.util.UUID; import mage.MageInt; import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -42,11 +40,7 @@ import mage.constants.CardType; * @author Jgod */ public class VodalianZombie extends CardImpl { - private static final FilterCard protectionFilter = new FilterCard("green"); - static { - protectionFilter.add(new ColorPredicate(ObjectColor.GREEN)); - } - + public VodalianZombie(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}"); this.subtype.add("Merfolk"); @@ -55,7 +49,7 @@ public class VodalianZombie extends CardImpl { this.toughness = new MageInt(2); // Protection from green - this.addAbility(new ProtectionAbility(protectionFilter)); + this.addAbility(ProtectionAbility.from(ObjectColor.GREEN)); } public VodalianZombie(final VodalianZombie card) { diff --git a/Mage.Sets/src/mage/cards/v/VoiceOfDuty.java b/Mage.Sets/src/mage/cards/v/VoiceOfDuty.java index 1be688d6ef..bde6556886 100644 --- a/Mage.Sets/src/mage/cards/v/VoiceOfDuty.java +++ b/Mage.Sets/src/mage/cards/v/VoiceOfDuty.java @@ -35,20 +35,13 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; + /** * * @author LoneFox */ public class VoiceOfDuty extends CardImpl { - private static final FilterCard filter = new FilterCard("green"); - - static { - filter.add(new ColorPredicate(ObjectColor.GREEN)); - } - public VoiceOfDuty(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}"); this.subtype.add("Angel"); @@ -58,7 +51,7 @@ public class VoiceOfDuty extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from green - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.GREEN)); } public VoiceOfDuty(final VoiceOfDuty card) { diff --git a/Mage.Sets/src/mage/cards/v/VoiceOfGrace.java b/Mage.Sets/src/mage/cards/v/VoiceOfGrace.java index e3065e25d5..7869829239 100644 --- a/Mage.Sets/src/mage/cards/v/VoiceOfGrace.java +++ b/Mage.Sets/src/mage/cards/v/VoiceOfGrace.java @@ -37,8 +37,6 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -46,21 +44,15 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class VoiceOfGrace extends CardImpl { - private static final FilterCard filter = new FilterCard("Black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public VoiceOfGrace(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}"); this.subtype.add("Angel"); this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(FlyingAbility.getInstance()); - this.addAbility(new ProtectionAbility(filter)); - } + this.addAbility(FlyingAbility.getInstance()); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); + } public VoiceOfGrace(final VoiceOfGrace card) { super(card); diff --git a/Mage.Sets/src/mage/cards/v/VoiceOfLaw.java b/Mage.Sets/src/mage/cards/v/VoiceOfLaw.java index 72d7b82cca..ef809fda5f 100644 --- a/Mage.Sets/src/mage/cards/v/VoiceOfLaw.java +++ b/Mage.Sets/src/mage/cards/v/VoiceOfLaw.java @@ -36,8 +36,6 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,21 +43,16 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class VoiceOfLaw extends CardImpl { - private static final FilterCard filter = new FilterCard("Red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public VoiceOfLaw(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}"); this.subtype.add("Angel"); this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(FlyingAbility.getInstance()); - this.addAbility(new ProtectionAbility(filter)); - } + + this.addAbility(FlyingAbility.getInstance()); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); + } public VoiceOfLaw(final VoiceOfLaw card) { super(card); diff --git a/Mage.Sets/src/mage/cards/v/VoiceOfReason.java b/Mage.Sets/src/mage/cards/v/VoiceOfReason.java index 52f41c6fdb..d850fd36c8 100644 --- a/Mage.Sets/src/mage/cards/v/VoiceOfReason.java +++ b/Mage.Sets/src/mage/cards/v/VoiceOfReason.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class VoiceOfReason extends CardImpl { - private static final FilterCard filter = new FilterCard("blue"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLUE)); - } - public VoiceOfReason(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}"); this.subtype.add("Angel"); @@ -59,7 +51,7 @@ public class VoiceOfReason extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from blue - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLUE)); } public VoiceOfReason(final VoiceOfReason card) { diff --git a/Mage.Sets/src/mage/cards/v/VoiceOfTruth.java b/Mage.Sets/src/mage/cards/v/VoiceOfTruth.java index 00bb2938d6..f132a76b2e 100644 --- a/Mage.Sets/src/mage/cards/v/VoiceOfTruth.java +++ b/Mage.Sets/src/mage/cards/v/VoiceOfTruth.java @@ -35,20 +35,13 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; + /** * * @author LoneFox */ public class VoiceOfTruth extends CardImpl { - private static final FilterCard filter = new FilterCard("white"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public VoiceOfTruth(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}"); this.subtype.add("Angel"); @@ -58,7 +51,7 @@ public class VoiceOfTruth extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from white - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); } public VoiceOfTruth(final VoiceOfTruth card) { diff --git a/Mage.Sets/src/mage/cards/v/VulshokRefugee.java b/Mage.Sets/src/mage/cards/v/VulshokRefugee.java index 81b913412f..ddc0f14361 100644 --- a/Mage.Sets/src/mage/cards/v/VulshokRefugee.java +++ b/Mage.Sets/src/mage/cards/v/VulshokRefugee.java @@ -34,8 +34,6 @@ import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -43,12 +41,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class VulshokRefugee extends CardImpl { - private static final FilterCard filter = new FilterCard("Red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public VulshokRefugee(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}"); this.subtype.add("Human"); @@ -57,7 +49,7 @@ public class VulshokRefugee extends CardImpl { this.power = new MageInt(3); this.toughness = new MageInt(2); - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); } public VulshokRefugee(final VulshokRefugee card) { diff --git a/Mage.Sets/src/mage/cards/w/WallOfLight.java b/Mage.Sets/src/mage/cards/w/WallOfLight.java index 5f0aa8d712..44aee44805 100644 --- a/Mage.Sets/src/mage/cards/w/WallOfLight.java +++ b/Mage.Sets/src/mage/cards/w/WallOfLight.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class WallOfLight extends CardImpl { - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public WallOfLight(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}"); this.subtype.add("Wall"); @@ -59,7 +51,7 @@ public class WallOfLight extends CardImpl { // Defender this.addAbility(DefenderAbility.getInstance()); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); } public WallOfLight(final WallOfLight card) { diff --git a/Mage.Sets/src/mage/cards/w/WeatherseedFaeries.java b/Mage.Sets/src/mage/cards/w/WeatherseedFaeries.java index fc1319bc36..7eb4208960 100644 --- a/Mage.Sets/src/mage/cards/w/WeatherseedFaeries.java +++ b/Mage.Sets/src/mage/cards/w/WeatherseedFaeries.java @@ -35,8 +35,6 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -44,12 +42,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class WeatherseedFaeries extends CardImpl { - private static final FilterCard filter = new FilterCard("red"); - - static { - filter.add(new ColorPredicate(ObjectColor.RED)); - } - public WeatherseedFaeries(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}"); this.subtype.add("Faerie"); @@ -60,7 +52,7 @@ public class WeatherseedFaeries extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from red - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.RED)); } public WeatherseedFaeries(final WeatherseedFaeries card) { diff --git a/Mage.Sets/src/mage/cards/w/WhirlingDervish.java b/Mage.Sets/src/mage/cards/w/WhirlingDervish.java index b3ded98d20..a7ea70695d 100644 --- a/Mage.Sets/src/mage/cards/w/WhirlingDervish.java +++ b/Mage.Sets/src/mage/cards/w/WhirlingDervish.java @@ -40,8 +40,6 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.counters.CounterType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.events.GameEvent; /** @@ -51,11 +49,6 @@ import mage.game.events.GameEvent; public class WhirlingDervish extends CardImpl { private static final String ruleText = "At the beginning of each end step, if {this} dealt damage to an opponent this turn, put a +1/+1 counter on it."; - private static final FilterCard filter = new FilterCard("black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } public WhirlingDervish(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}{G}"); @@ -67,10 +60,10 @@ public class WhirlingDervish extends CardImpl { this.toughness = new MageInt(1); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // At the beginning of each end step, if Whirling Dervish dealt damage to an opponent this turn, put a +1/+1 counter on it. TriggeredAbility triggered = new OnEventTriggeredAbility(GameEvent.EventType.END_TURN_STEP_PRE, "beginning of each end step", true, new AddCountersSourceEffect(CounterType.P1P1.createInstance())); - this.addAbility(new ConditionalTriggeredAbility(triggered, new DealtDamageToAnOpponent(), ruleText)); + this.addAbility(new ConditionalTriggeredAbility(triggered, new DealtDamageToAnOpponent(), ruleText)); } public WhirlingDervish(final WhirlingDervish card) { diff --git a/Mage.Sets/src/mage/cards/w/WhiteKnight.java b/Mage.Sets/src/mage/cards/w/WhiteKnight.java index bb5ad8517c..d388ebb2b0 100644 --- a/Mage.Sets/src/mage/cards/w/WhiteKnight.java +++ b/Mage.Sets/src/mage/cards/w/WhiteKnight.java @@ -36,8 +36,6 @@ import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -45,12 +43,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class WhiteKnight extends CardImpl { - private static final FilterCard filter = new FilterCard("Black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public WhiteKnight(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}"); this.subtype.add("Human"); @@ -60,7 +52,7 @@ public class WhiteKnight extends CardImpl { this.toughness = new MageInt(2); this.addAbility(FirstStrikeAbility.getInstance()); - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); } public WhiteKnight(final WhiteKnight card) { diff --git a/Mage.Sets/src/mage/cards/w/WhiteShieldCrusader.java b/Mage.Sets/src/mage/cards/w/WhiteShieldCrusader.java index 56a3ed8c50..9e6e7b07ff 100644 --- a/Mage.Sets/src/mage/cards/w/WhiteShieldCrusader.java +++ b/Mage.Sets/src/mage/cards/w/WhiteShieldCrusader.java @@ -41,8 +41,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -51,12 +49,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class WhiteShieldCrusader extends CardImpl { - private static final FilterCard filter = new FilterCard("Black"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLACK)); - } - public WhiteShieldCrusader(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}"); this.subtype.add("Human"); @@ -65,7 +57,7 @@ public class WhiteShieldCrusader extends CardImpl { this.toughness = new MageInt(1); // Protection from black - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); // {W}: White Shield Crusader gains flying until end of turn. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{W}"))); diff --git a/Mage.Sets/src/mage/cards/w/WildfireEmissary.java b/Mage.Sets/src/mage/cards/w/WildfireEmissary.java index 9c7dc8f19f..901ff38ebf 100644 --- a/Mage.Sets/src/mage/cards/w/WildfireEmissary.java +++ b/Mage.Sets/src/mage/cards/w/WildfireEmissary.java @@ -39,8 +39,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * @@ -48,12 +46,6 @@ import mage.filter.predicate.mageobject.ColorPredicate; */ public class WildfireEmissary extends CardImpl { - private static final FilterCard filter = new FilterCard("white"); - - static { - filter.add(new ColorPredicate(ObjectColor.WHITE)); - } - public WildfireEmissary(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}"); this.subtype.add("Efreet"); @@ -61,7 +53,7 @@ public class WildfireEmissary extends CardImpl { this.toughness = new MageInt(4); // Protection from white - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); // {1}{R}: Wildfire Emissary gets +1/+0 until end of turn. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{1}{R}"))); diff --git a/Mage.Sets/src/mage/cards/w/WillowPriestess.java b/Mage.Sets/src/mage/cards/w/WillowPriestess.java index 1fa0bfcd42..060eb65f34 100644 --- a/Mage.Sets/src/mage/cards/w/WillowPriestess.java +++ b/Mage.Sets/src/mage/cards/w/WillowPriestess.java @@ -42,7 +42,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterPermanentCard; import mage.filter.predicate.mageobject.ColorPredicate; @@ -58,12 +57,10 @@ public class WillowPriestess extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Faerie"); private static final FilterCreaturePermanent greenCreature = new FilterCreaturePermanent("green creature"); - private static final FilterCard protectionFilter = new FilterCard("black"); static { filter.add(new SubtypePredicate("Faerie")); greenCreature.add(new ColorPredicate(ObjectColor.GREEN)); - protectionFilter.add(new ColorPredicate(ObjectColor.BLACK)); } public WillowPriestess(UUID ownerId, CardSetInfo setInfo) { @@ -80,7 +77,7 @@ public class WillowPriestess extends CardImpl { // {2}{G}: Target green creature gains protection from black until end of turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, - new GainAbilityTargetEffect(new ProtectionAbility(protectionFilter), Duration.EndOfTurn), new ManaCostsImpl("{2}{G}")); + new GainAbilityTargetEffect(ProtectionAbility.from(ObjectColor.BLACK), Duration.EndOfTurn), new ManaCostsImpl("{2}{G}")); Target target = new TargetPermanent(greenCreature); ability.addTarget(target); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/w/WindreaperFalcon.java b/Mage.Sets/src/mage/cards/w/WindreaperFalcon.java index 48bcf1ffcd..29d247e4cb 100644 --- a/Mage.Sets/src/mage/cards/w/WindreaperFalcon.java +++ b/Mage.Sets/src/mage/cards/w/WindreaperFalcon.java @@ -35,20 +35,13 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; + /** * * @author LoneFox */ public class WindreaperFalcon extends CardImpl { - private static final FilterCard filter = new FilterCard("blue"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLUE)); - } - public WindreaperFalcon(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}"); this.subtype.add("Bird"); @@ -58,7 +51,7 @@ public class WindreaperFalcon extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from blue - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLUE)); } public WindreaperFalcon(final WindreaperFalcon card) { diff --git a/Mage.Sets/src/mage/cards/w/WoodlotCrawler.java b/Mage.Sets/src/mage/cards/w/WoodlotCrawler.java index 12b64c78f7..348ed90550 100644 --- a/Mage.Sets/src/mage/cards/w/WoodlotCrawler.java +++ b/Mage.Sets/src/mage/cards/w/WoodlotCrawler.java @@ -36,22 +36,13 @@ import mage.abilities.keyword.ForestwalkAbility; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterObject; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author LevelX2 */ - - public class WoodlotCrawler extends CardImpl { - private static final FilterObject filter = new FilterObject("green"); - static { - filter.add(new ColorPredicate(ObjectColor.GREEN)); - } - public WoodlotCrawler (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}"); this.subtype.add("Insect"); @@ -62,7 +53,7 @@ public class WoodlotCrawler extends CardImpl { // Forestwalk this.addAbility(new ForestwalkAbility()); // Protection from green - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.GREEN)); } diff --git a/Mage.Sets/src/mage/cards/y/YavimayaBarbarian.java b/Mage.Sets/src/mage/cards/y/YavimayaBarbarian.java index 3f5e374960..508c0d17c6 100644 --- a/Mage.Sets/src/mage/cards/y/YavimayaBarbarian.java +++ b/Mage.Sets/src/mage/cards/y/YavimayaBarbarian.java @@ -34,22 +34,13 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author LoneFox - */ public class YavimayaBarbarian extends CardImpl { - private static final FilterCard filter = new FilterCard("blue"); - - static { - filter.add(new ColorPredicate(ObjectColor.BLUE)); - } - public YavimayaBarbarian(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}"); this.subtype.add("Elf"); @@ -58,7 +49,7 @@ public class YavimayaBarbarian extends CardImpl { this.toughness = new MageInt(2); // Protection from blue - this.addAbility(new ProtectionAbility(filter)); + this.addAbility(ProtectionAbility.from(ObjectColor.BLUE)); } public YavimayaBarbarian(final YavimayaBarbarian card) { diff --git a/Mage.Sets/src/mage/cards/z/ZombieOutlander.java b/Mage.Sets/src/mage/cards/z/ZombieOutlander.java index 92b3258ce6..050af33d35 100644 --- a/Mage.Sets/src/mage/cards/z/ZombieOutlander.java +++ b/Mage.Sets/src/mage/cards/z/ZombieOutlander.java @@ -35,29 +35,21 @@ import mage.ObjectColor; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.ColorPredicate; /** * * @author Loki */ public class ZombieOutlander extends CardImpl { - private static final FilterCard filter = new FilterCard("green"); - - static { - filter.add(new ColorPredicate(ObjectColor.GREEN)); - } public ZombieOutlander(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}"); - - this.subtype.add("Zombie"); this.subtype.add("Scout"); this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new ProtectionAbility(filter)); + + this.addAbility(ProtectionAbility.from(ObjectColor.GREEN)); } public ZombieOutlander(final ZombieOutlander card) { diff --git a/Mage/src/main/java/mage/abilities/keyword/ProtectionAbility.java b/Mage/src/main/java/mage/abilities/keyword/ProtectionAbility.java index ff234e4ae4..b75bacfae7 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ProtectionAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ProtectionAbility.java @@ -29,6 +29,8 @@ package mage.abilities.keyword; import java.util.UUID; import mage.MageObject; +import mage.ObjectColor; +import mage.abilities.Ability; import mage.abilities.StaticAbility; import mage.cards.Card; import mage.constants.CardType; @@ -38,6 +40,8 @@ import mage.filter.FilterCard; import mage.filter.FilterObject; import mage.filter.FilterPermanent; import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.stack.Spell; @@ -67,6 +71,18 @@ public class ProtectionAbility extends StaticAbility { this.auraIdNotToBeRemoved = ability.auraIdNotToBeRemoved; } + public static ProtectionAbility from(ObjectColor color) { + FilterObject filter = new FilterObject(color.getDescription()); + filter.add(new ColorPredicate(color)); + return new ProtectionAbility(filter); + } + + public static ProtectionAbility from(ObjectColor color1, ObjectColor color2) { + FilterObject filter = new FilterObject(color1.getDescription() + " and from " + color2.getDescription()); + filter.add(Predicates.or(new ColorPredicate(color1), new ColorPredicate(color2))); + return new ProtectionAbility(filter); + } + @Override public ProtectionAbility copy() { return new ProtectionAbility(this); @@ -97,8 +113,8 @@ public class ProtectionAbility extends StaticAbility { return !filter.match(source, game); } // Problem here is that for the check if a player can play a Spell, the source - // object is still a card and not a spell yet. So retunr only if the source object can't be a spell - // otherwise the following FilterObject check will be appied + // object is still a card and not a spell yet. So return only if the source object can't be a spell + // otherwise the following FilterObject check will be applied if (source instanceof StackObject || (!source.getCardType().contains(CardType.INSTANT) && !source.getCardType().contains(CardType.SORCERY))) { return true;