diff --git a/Mage.Sets/src/mage/cards/a/AbsolverThrull.java b/Mage.Sets/src/mage/cards/a/AbsolverThrull.java index 600c4dbed81..bdc2559b42e 100644 --- a/Mage.Sets/src/mage/cards/a/AbsolverThrull.java +++ b/Mage.Sets/src/mage/cards/a/AbsolverThrull.java @@ -35,9 +35,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.HauntAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.common.FilterEnchantmentPermanent; -import mage.target.Target; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -56,8 +54,7 @@ public class AbsolverThrull extends CardImpl { // Haunt (When this creature dies, exile it haunting target creature.) // When Absolver Thrull enters the battlefield or the creature it haunts dies, destroy target enchantment. Ability ability = new HauntAbility(this, new DestroyTargetEffect()); - Target target = new TargetPermanent(new FilterEnchantmentPermanent()); - ability.addTarget(target); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/ActOfAuthority.java b/Mage.Sets/src/mage/cards/a/ActOfAuthority.java index 83d8ac9f4c2..bb4419754b3 100644 --- a/Mage.Sets/src/mage/cards/a/ActOfAuthority.java +++ b/Mage.Sets/src/mage/cards/a/ActOfAuthority.java @@ -44,9 +44,7 @@ import mage.constants.Layer; import mage.constants.Outcome; import mage.constants.SubLayer; import mage.constants.TargetController; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; @@ -58,22 +56,17 @@ import mage.target.targetpointer.FixedTarget; */ public class ActOfAuthority extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - static { - filter.add(Predicates.or(new CardTypePredicate(CardType.ARTIFACT), new CardTypePredicate(CardType.ENCHANTMENT))); - } - public ActOfAuthority(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}{W}"); // When Act of Authority enters the battlefield, you may exile target artifact or enchantment. Ability ability = new EntersBattlefieldTriggeredAbility(new ExileTargetEffect(), true); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); this.addAbility(ability); // At the beginning of your upkeep, you may exile target artifact or enchantment. If you do, its controller gains control of Act of Authority. ability = new BeginningOfUpkeepTriggeredAbility(new ActOfAuthorityEffect(), TargetController.YOU, true); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AjaniCallerOfThePride.java b/Mage.Sets/src/mage/cards/a/AjaniCallerOfThePride.java index f8a04c565d9..c9b8aa35b1e 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniCallerOfThePride.java +++ b/Mage.Sets/src/mage/cards/a/AjaniCallerOfThePride.java @@ -57,10 +57,6 @@ public class AjaniCallerOfThePride extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{1}{W}{W}"); this.subtype.add("Ajani"); - } - - @Override - public void build() { this.addAbility(new PlanswalkerEntersWithLoyalityCountersAbility(4)); // +1: Put a +1/+1 counter on up to one target creature. Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance()); diff --git a/Mage.Sets/src/mage/cards/a/AkromasMemorial.java b/Mage.Sets/src/mage/cards/a/AkromasMemorial.java index ccf07e61b04..c065d977641 100644 --- a/Mage.Sets/src/mage/cards/a/AkromasMemorial.java +++ b/Mage.Sets/src/mage/cards/a/AkromasMemorial.java @@ -59,10 +59,7 @@ public class AkromasMemorial extends CardImpl { public AkromasMemorial(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{7}"); this.supertype.add("Legendary"); - } - @Override - public void build() { // 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)); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(compoundAbilities, Duration.WhileOnBattlefield, new FilterControlledCreaturePermanent("Creatures")))); diff --git a/Mage.Sets/src/mage/cards/a/Allay.java b/Mage.Sets/src/mage/cards/a/Allay.java index ab1f999ee50..84d4b3dcc9c 100644 --- a/Mage.Sets/src/mage/cards/a/Allay.java +++ b/Mage.Sets/src/mage/cards/a/Allay.java @@ -33,8 +33,7 @@ import mage.abilities.keyword.BuybackAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterEnchantmentPermanent; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -49,7 +48,7 @@ public class Allay extends CardImpl { this.addAbility(new BuybackAbility("{3}")); // Destroy target enchantment. - this.getSpellAbility().addTarget(new TargetPermanent(new FilterEnchantmentPermanent())); + this.getSpellAbility().addTarget(new TargetEnchantmentPermanent()); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/a/AltarsLight.java b/Mage.Sets/src/mage/cards/a/AltarsLight.java index c9836bad113..fa57addaf61 100644 --- a/Mage.Sets/src/mage/cards/a/AltarsLight.java +++ b/Mage.Sets/src/mage/cards/a/AltarsLight.java @@ -32,9 +32,7 @@ import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.target.TargetPermanent; /** @@ -43,20 +41,12 @@ import mage.target.TargetPermanent; */ public class AltarsLight extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - - static { - filter.add(Predicates.or( - new CardTypePredicate(CardType.ARTIFACT), - new CardTypePredicate(CardType.ENCHANTMENT))); - } - public AltarsLight(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}{W}"); // Exile target artifact or enchantment. this.getSpellAbility().addEffect(new ExileTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); } public AltarsLight(final AltarsLight card) { diff --git a/Mage.Sets/src/mage/cards/a/AncientGrudge.java b/Mage.Sets/src/mage/cards/a/AncientGrudge.java index d216bf04ce7..9068dfe957a 100644 --- a/Mage.Sets/src/mage/cards/a/AncientGrudge.java +++ b/Mage.Sets/src/mage/cards/a/AncientGrudge.java @@ -34,8 +34,7 @@ import mage.abilities.keyword.FlashbackAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.TimingRule; -import mage.filter.common.FilterArtifactPermanent; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; import java.util.UUID; @@ -48,7 +47,7 @@ public class AncientGrudge extends CardImpl { // Destroy target artifact. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactPermanent())); + this.getSpellAbility().addTarget(new TargetArtifactPermanent()); // Flashback {G} this.addAbility(new FlashbackAbility(new ManaCostsImpl("{G}"), TimingRule.INSTANT)); diff --git a/Mage.Sets/src/mage/cards/a/ArborElf.java b/Mage.Sets/src/mage/cards/a/ArborElf.java index 4b6c995ced4..5220d7ad9da 100644 --- a/Mage.Sets/src/mage/cards/a/ArborElf.java +++ b/Mage.Sets/src/mage/cards/a/ArborElf.java @@ -39,7 +39,6 @@ import mage.abilities.effects.common.UntapTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetLandPermanent; /** @@ -48,11 +47,7 @@ import mage.target.common.TargetLandPermanent; */ public class ArborElf extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("Forest"); - - static { - filter.add(new SubtypePredicate("Forest")); - } + private static final FilterLandPermanent filter = new FilterLandPermanent("Forest", "Forest"); public ArborElf(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}"); diff --git a/Mage.Sets/src/mage/cards/a/ArtifactMutation.java b/Mage.Sets/src/mage/cards/a/ArtifactMutation.java index 3f5702fa38b..b61d2e88a42 100644 --- a/Mage.Sets/src/mage/cards/a/ArtifactMutation.java +++ b/Mage.Sets/src/mage/cards/a/ArtifactMutation.java @@ -34,9 +34,8 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.common.FilterArtifactPermanent; import mage.game.permanent.token.SaprolingToken; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; /** * @@ -50,7 +49,7 @@ public class ArtifactMutation extends CardImpl { // Destroy target artifact. It can't be regenerated. this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactPermanent())); + this.getSpellAbility().addTarget(new TargetArtifactPermanent()); // create X 1/1 green Saproling creature tokens, where X is that artifact's converted mana cost. this.getSpellAbility().addEffect(new CreateTokenEffect(new SaprolingToken(), new TargetConvertedManaCost())); } diff --git a/Mage.Sets/src/mage/cards/a/AttendedKnight.java b/Mage.Sets/src/mage/cards/a/AttendedKnight.java index b79b3441165..0729a69b5bd 100644 --- a/Mage.Sets/src/mage/cards/a/AttendedKnight.java +++ b/Mage.Sets/src/mage/cards/a/AttendedKnight.java @@ -50,10 +50,7 @@ public class AttendedKnight extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - } - @Override - public void build() { // First strike this.addAbility(FirstStrikeAbility.getInstance()); // When Attended Knight enters the battlefield, create a 1/1 white Soldier creature token. diff --git a/Mage.Sets/src/mage/cards/a/AuraFlux.java b/Mage.Sets/src/mage/cards/a/AuraFlux.java index 0bf9a47c8ec..6e0d0c7265b 100644 --- a/Mage.Sets/src/mage/cards/a/AuraFlux.java +++ b/Mage.Sets/src/mage/cards/a/AuraFlux.java @@ -38,28 +38,20 @@ import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect; import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterEnchantmentPermanent; /** * * @author Plopman */ public class AuraFlux extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantments"); - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public AuraFlux(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}"); - // Other enchantments have "At the beginning of your upkeep, sacrifice this enchantment unless you pay {2}." Ability gainedAbility = new BeginningOfUpkeepTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new GenericManaCost(2)), TargetController.YOU, false); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(gainedAbility, Duration.WhileOnBattlefield, filter, true))); - + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(gainedAbility, Duration.WhileOnBattlefield, new FilterEnchantmentPermanent("enchantments"), true))); } public AuraFlux(final AuraFlux card) { diff --git a/Mage.Sets/src/mage/cards/a/AuraFracture.java b/Mage.Sets/src/mage/cards/a/AuraFracture.java index 71628d13e7d..d47f8172506 100644 --- a/Mage.Sets/src/mage/cards/a/AuraFracture.java +++ b/Mage.Sets/src/mage/cards/a/AuraFracture.java @@ -36,23 +36,15 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledLandPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; import mage.target.common.TargetControlledPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * * @author fireshoes */ public class AuraFracture extends CardImpl { - - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } public AuraFracture(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}"); @@ -62,7 +54,7 @@ public class AuraFracture extends CardImpl { Zone.BATTLEFIELD, new DestroyTargetEffect(), new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent("land")))); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AuraMutation.java b/Mage.Sets/src/mage/cards/a/AuraMutation.java index 5ccd33f9c93..011d9dc6983 100644 --- a/Mage.Sets/src/mage/cards/a/AuraMutation.java +++ b/Mage.Sets/src/mage/cards/a/AuraMutation.java @@ -34,9 +34,8 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.common.FilterEnchantmentPermanent; import mage.game.permanent.token.SaprolingToken; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -50,7 +49,7 @@ public class AuraMutation extends CardImpl { // Destroy target enchantment. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(new FilterEnchantmentPermanent())); + this.getSpellAbility().addTarget(new TargetEnchantmentPermanent()); // create X 1/1 green Saproling creature tokens, where X is that enchantment's converted mana cost. this.getSpellAbility().addEffect(new CreateTokenEffect(new SaprolingToken(), new TargetConvertedManaCost())); } diff --git a/Mage.Sets/src/mage/cards/a/AvenCloudchaser.java b/Mage.Sets/src/mage/cards/a/AvenCloudchaser.java index 0adc9d6dcca..cb06cbb857f 100644 --- a/Mage.Sets/src/mage/cards/a/AvenCloudchaser.java +++ b/Mage.Sets/src/mage/cards/a/AvenCloudchaser.java @@ -36,9 +36,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -46,12 +44,6 @@ import mage.target.TargetPermanent; */ public class AvenCloudchaser extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public AvenCloudchaser(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}"); this.subtype.add("Bird"); @@ -61,7 +53,7 @@ public class AvenCloudchaser extends CardImpl { this.toughness = new MageInt(2); this.addAbility(FlyingAbility.getInstance()); Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AwakenTheAncient.java b/Mage.Sets/src/mage/cards/a/AwakenTheAncient.java index 2af54f6684b..220cce36e69 100644 --- a/Mage.Sets/src/mage/cards/a/AwakenTheAncient.java +++ b/Mage.Sets/src/mage/cards/a/AwakenTheAncient.java @@ -42,7 +42,6 @@ import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.TargetPermanent; import mage.target.common.TargetLandPermanent; @@ -53,11 +52,7 @@ import mage.target.common.TargetLandPermanent; */ public class AwakenTheAncient extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain"); - - static { - filter.add(new SubtypePredicate("Mountain")); - } + private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain", "Mountain"); public AwakenTheAncient(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{R}{R}{R}"); diff --git a/Mage.Sets/src/mage/cards/a/AwakenerDruid.java b/Mage.Sets/src/mage/cards/a/AwakenerDruid.java index 281c7ac256c..93de512dbec 100644 --- a/Mage.Sets/src/mage/cards/a/AwakenerDruid.java +++ b/Mage.Sets/src/mage/cards/a/AwakenerDruid.java @@ -41,7 +41,6 @@ import mage.cards.CardSetInfo; import mage.constants.Layer; import mage.constants.SubLayer; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; @@ -53,11 +52,7 @@ import mage.target.common.TargetLandPermanent; */ public class AwakenerDruid extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("Forest"); - - static { - filter.add(new SubtypePredicate("Forest")); - } + private static final FilterLandPermanent filter = new FilterLandPermanent("Forest", "Forest"); public AwakenerDruid(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}"); diff --git a/Mage.Sets/src/mage/cards/b/BackToBasics.java b/Mage.Sets/src/mage/cards/b/BackToBasics.java index 45ccce6321a..462683bc5f6 100644 --- a/Mage.Sets/src/mage/cards/b/BackToBasics.java +++ b/Mage.Sets/src/mage/cards/b/BackToBasics.java @@ -37,8 +37,6 @@ import mage.constants.Duration; import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -46,18 +44,12 @@ import mage.filter.predicate.mageobject.SupertypePredicate; */ public class BackToBasics extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("Nonbasic lands"); - - static { - filter.add(Predicates.not(new SupertypePredicate("Basic"))); - } - public BackToBasics(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}"); // Nonbasic lands don't untap during their controllers' untap steps. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, filter))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, FilterLandPermanent.nonbasicLands()))); } public BackToBasics(final BackToBasics card) { diff --git a/Mage.Sets/src/mage/cards/b/BackToNature.java b/Mage.Sets/src/mage/cards/b/BackToNature.java index 732b3b4b1e5..c8863dbcc43 100644 --- a/Mage.Sets/src/mage/cards/b/BackToNature.java +++ b/Mage.Sets/src/mage/cards/b/BackToNature.java @@ -33,8 +33,7 @@ import mage.constants.CardType; import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterEnchantmentPermanent; /** * @@ -42,16 +41,10 @@ import mage.filter.predicate.mageobject.CardTypePredicate; */ public class BackToNature extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantments"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public BackToNature(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}"); - this.getSpellAbility().addEffect(new DestroyAllEffect(filter)); + this.getSpellAbility().addEffect(new DestroyAllEffect(new FilterEnchantmentPermanent("enchantments"))); } public BackToNature(final BackToNature card) { diff --git a/Mage.Sets/src/mage/cards/b/BattleflightEagle.java b/Mage.Sets/src/mage/cards/b/BattleflightEagle.java index 96036c00f5a..52e977ba6c5 100644 --- a/Mage.Sets/src/mage/cards/b/BattleflightEagle.java +++ b/Mage.Sets/src/mage/cards/b/BattleflightEagle.java @@ -53,10 +53,7 @@ public class BattleflightEagle extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - } - @Override - public void build() { // Flying this.addAbility(FlyingAbility.getInstance()); // When Battleflight Eagle enters the battlefield, target creature gets +2/+2 and gains flying until end of turn. diff --git a/Mage.Sets/src/mage/cards/b/BubblingBeebles.java b/Mage.Sets/src/mage/cards/b/BubblingBeebles.java index c45d42b280b..859d75ad5ef 100644 --- a/Mage.Sets/src/mage/cards/b/BubblingBeebles.java +++ b/Mage.Sets/src/mage/cards/b/BubblingBeebles.java @@ -38,8 +38,7 @@ import mage.abilities.effects.Effect; import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterEnchantmentPermanent; /** * @@ -47,11 +46,6 @@ import mage.filter.predicate.mageobject.CardTypePredicate; */ public class BubblingBeebles extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent(); - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public BubblingBeebles(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}"); this.subtype.add("Beeble"); @@ -62,7 +56,7 @@ public class BubblingBeebles extends CardImpl { // Bubbling Beebles can't be blocked as long as defending player controls an enchantment. Effect effect = new ConditionalRestrictionEffect( new CantBeBlockedSourceEffect(), - new DefendingPlayerControlsCondition(filter)); + new DefendingPlayerControlsCondition(new FilterEnchantmentPermanent())); effect.setText("{this} can't be blocked as long as defending player controls an enchantment"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/cards/c/Cannibalize.java b/Mage.Sets/src/mage/cards/c/Cannibalize.java index 96259629244..0e5a1fe0997 100644 --- a/Mage.Sets/src/mage/cards/c/Cannibalize.java +++ b/Mage.Sets/src/mage/cards/c/Cannibalize.java @@ -116,7 +116,6 @@ class TargetCreaturePermanentSameController extends TargetCreaturePermanent { public TargetCreaturePermanentSameController(int minNumTargets, int maxNumTargets, FilterCreaturePermanent filter, boolean notTarget) { super(minNumTargets, maxNumTargets, filter, notTarget); - this.targetName = filter.getMessage(); } public TargetCreaturePermanentSameController(final TargetCreaturePermanentSameController target) { diff --git a/Mage.Sets/src/mage/cards/c/CapashenUnicorn.java b/Mage.Sets/src/mage/cards/c/CapashenUnicorn.java index cdfaeb75aae..e5a479197a5 100644 --- a/Mage.Sets/src/mage/cards/c/CapashenUnicorn.java +++ b/Mage.Sets/src/mage/cards/c/CapashenUnicorn.java @@ -39,9 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.target.TargetPermanent; /** @@ -50,12 +48,6 @@ import mage.target.TargetPermanent; */ public class CapashenUnicorn extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - static { - filter.add(Predicates.or(new CardTypePredicate(CardType.ARTIFACT), - new CardTypePredicate(CardType.ENCHANTMENT))); - } - public CapashenUnicorn(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Unicorn"); @@ -66,7 +58,7 @@ public class CapashenUnicorn extends CardImpl { Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{1}{W}")); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CaptainsCall.java b/Mage.Sets/src/mage/cards/c/CaptainsCall.java index 448341fe6f1..6458dc18f38 100644 --- a/Mage.Sets/src/mage/cards/c/CaptainsCall.java +++ b/Mage.Sets/src/mage/cards/c/CaptainsCall.java @@ -43,10 +43,6 @@ public class CaptainsCall extends CardImpl { public CaptainsCall(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}"); - } - - @Override - public void build() { // Create three 1/1 white Soldier creature tokens. this.getSpellAbility().addEffect(new CreateTokenEffect(new SoldierToken(), 3)); } diff --git a/Mage.Sets/src/mage/cards/c/CaribouRange.java b/Mage.Sets/src/mage/cards/c/CaribouRange.java index da0daec4f05..fe9a843a86c 100644 --- a/Mage.Sets/src/mage/cards/c/CaribouRange.java +++ b/Mage.Sets/src/mage/cards/c/CaribouRange.java @@ -54,7 +54,6 @@ import mage.filter.predicate.permanent.TokenPredicate; import mage.game.permanent.token.Token; import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; -import mage.target.common.TargetControlledPermanent; /** * @@ -74,7 +73,7 @@ public class CaribouRange extends CardImpl { this.subtype.add("Aura"); // Enchant land you control - TargetPermanent auraTarget = new TargetControlledPermanent(new FilterControlledLandPermanent("land you control")); + TargetPermanent auraTarget = new TargetPermanent(new FilterControlledLandPermanent()); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); diff --git a/Mage.Sets/src/mage/cards/c/CausticCaterpillar.java b/Mage.Sets/src/mage/cards/c/CausticCaterpillar.java index f27a8131346..d0658e0da4e 100644 --- a/Mage.Sets/src/mage/cards/c/CausticCaterpillar.java +++ b/Mage.Sets/src/mage/cards/c/CausticCaterpillar.java @@ -38,9 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.target.TargetPermanent; /** @@ -49,13 +47,6 @@ import mage.target.TargetPermanent; */ public class CausticCaterpillar extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - - static { - filter.add(Predicates.or(new CardTypePredicate(CardType.ARTIFACT), - new CardTypePredicate(CardType.ENCHANTMENT))); - } - public CausticCaterpillar(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}"); this.subtype.add("Insect"); @@ -65,7 +56,7 @@ public class CausticCaterpillar extends CardImpl { // {1}{G}, Sacrifice Caustic Caterpillar: Destroy target artifact or enchantment. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{1}{G}")); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CausticWasps.java b/Mage.Sets/src/mage/cards/c/CausticWasps.java index a2274f6b7ff..3e96dfd77b1 100644 --- a/Mage.Sets/src/mage/cards/c/CausticWasps.java +++ b/Mage.Sets/src/mage/cards/c/CausticWasps.java @@ -37,7 +37,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.game.Game; @@ -102,8 +101,7 @@ class CausticWaspsTriggeredAbility extends TriggeredAbilityImpl { Player player = game.getPlayer(event.getTargetId()); if (player != null) { FilterPermanent filter = new FilterPermanent("an artifact controlled by " + player.getLogName()); - filter.add(Predicates.or( - new CardTypePredicate(CardType.ARTIFACT))); + filter.add(new CardTypePredicate(CardType.ARTIFACT)); filter.add(new ControllerIdPredicate(event.getTargetId())); this.getTargets().clear(); diff --git a/Mage.Sets/src/mage/cards/c/Chronomaton.java b/Mage.Sets/src/mage/cards/c/Chronomaton.java index 65e067336f5..f45640e7370 100644 --- a/Mage.Sets/src/mage/cards/c/Chronomaton.java +++ b/Mage.Sets/src/mage/cards/c/Chronomaton.java @@ -53,10 +53,7 @@ public class Chronomaton extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - } - @Override - public void build() { // {1}, {tap}: Put a +1/+1 counter on Chronomaton. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new GenericManaCost(1)); ability.addCost(new TapSourceCost()); diff --git a/Mage.Sets/src/mage/cards/c/Cleanfall.java b/Mage.Sets/src/mage/cards/c/Cleanfall.java index 93053f0a2b9..989dc7c28fb 100644 --- a/Mage.Sets/src/mage/cards/c/Cleanfall.java +++ b/Mage.Sets/src/mage/cards/c/Cleanfall.java @@ -34,25 +34,18 @@ import mage.constants.CardType; import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterEnchantmentPermanent; /** * @author Loki */ public class Cleanfall extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantments"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public Cleanfall(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}"); this.subtype.add("Arcane"); - this.getSpellAbility().addEffect(new DestroyAllEffect(filter)); + this.getSpellAbility().addEffect(new DestroyAllEffect(new FilterEnchantmentPermanent("enchantments"))); } public Cleanfall(final Cleanfall card) { diff --git a/Mage.Sets/src/mage/cards/c/Clear.java b/Mage.Sets/src/mage/cards/c/Clear.java index a3dbe469700..296d7dd8d94 100644 --- a/Mage.Sets/src/mage/cards/c/Clear.java +++ b/Mage.Sets/src/mage/cards/c/Clear.java @@ -35,9 +35,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.CyclingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -45,17 +43,11 @@ import mage.target.TargetPermanent; */ public class Clear extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public Clear(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}"); this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetEnchantmentPermanent()); this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}"))); } diff --git a/Mage.Sets/src/mage/cards/c/CloudchaserEagle.java b/Mage.Sets/src/mage/cards/c/CloudchaserEagle.java index bdc827c6d8d..32a2774c640 100644 --- a/Mage.Sets/src/mage/cards/c/CloudchaserEagle.java +++ b/Mage.Sets/src/mage/cards/c/CloudchaserEagle.java @@ -36,9 +36,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -46,12 +44,6 @@ import mage.target.TargetPermanent; */ public class CloudchaserEagle extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public CloudchaserEagle(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}"); this.subtype.add("Bird"); @@ -60,7 +52,7 @@ public class CloudchaserEagle extends CardImpl { this.toughness = new MageInt(2); this.addAbility(FlyingAbility.getInstance()); Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CrusaderOfOdric.java b/Mage.Sets/src/mage/cards/c/CrusaderOfOdric.java index 00b125c63aa..fd01e71db69 100644 --- a/Mage.Sets/src/mage/cards/c/CrusaderOfOdric.java +++ b/Mage.Sets/src/mage/cards/c/CrusaderOfOdric.java @@ -53,10 +53,7 @@ public class CrusaderOfOdric extends CardImpl { this.power = new MageInt(0); this.toughness = new MageInt(0); - } - @Override - public void build() { // Crusader of Odric's power and toughness are each equal to the number of creatures you control. this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(new FilterControlledCreaturePermanent()), Duration.EndOfGame))); } diff --git a/Mage.Sets/src/mage/cards/c/Cursebreak.java b/Mage.Sets/src/mage/cards/c/Cursebreak.java index a7bb90092d9..1bc8286cfe9 100644 --- a/Mage.Sets/src/mage/cards/c/Cursebreak.java +++ b/Mage.Sets/src/mage/cards/c/Cursebreak.java @@ -32,9 +32,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; import java.util.UUID; @@ -43,18 +41,12 @@ import java.util.UUID; */ public class Cursebreak extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public Cursebreak(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}"); // Destroy target enchantment. You gain 2 life. - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetEnchantmentPermanent()); this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new GainLifeEffect(2)); } diff --git a/Mage.Sets/src/mage/cards/d/DawnToDusk.java b/Mage.Sets/src/mage/cards/d/DawnToDusk.java index 407dded47bc..f360ba09a08 100644 --- a/Mage.Sets/src/mage/cards/d/DawnToDusk.java +++ b/Mage.Sets/src/mage/cards/d/DawnToDusk.java @@ -35,10 +35,9 @@ 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.CardTypePredicate; -import mage.target.TargetPermanent; import mage.target.common.TargetCardInYourGraveyard; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -47,10 +46,8 @@ import mage.target.common.TargetCardInYourGraveyard; public class DawnToDusk extends CardImpl { private static final FilterCard filterCard = new FilterCard("enchantment card from your graveyard"); - private static final FilterPermanent filter = new FilterPermanent("enchantment"); static { filterCard.add(new CardTypePredicate(CardType.ENCHANTMENT)); - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } public DawnToDusk(UUID ownerId, CardSetInfo setInfo) { @@ -66,7 +63,7 @@ public class DawnToDusk extends CardImpl { // and/or destroy target enchantment. Mode mode = new Mode(); mode.getEffects().add(new DestroyTargetEffect()); - mode.getTargets().add(new TargetPermanent(filter)); + mode.getTargets().add(new TargetEnchantmentPermanent()); this.getSpellAbility().addMode(mode); } diff --git a/Mage.Sets/src/mage/cards/d/Deglamer.java b/Mage.Sets/src/mage/cards/d/Deglamer.java index d952ffb5200..d56aad440fc 100644 --- a/Mage.Sets/src/mage/cards/d/Deglamer.java +++ b/Mage.Sets/src/mage/cards/d/Deglamer.java @@ -32,9 +32,7 @@ import mage.constants.CardType; import mage.abilities.effects.common.ShuffleIntoLibraryTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.target.TargetPermanent; /** @@ -43,17 +41,12 @@ import mage.target.TargetPermanent; */ public class Deglamer extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - - static { - filter.add(Predicates.or(new CardTypePredicate(CardType.ARTIFACT), new CardTypePredicate(CardType.ENCHANTMENT))); - } public Deglamer(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}"); // Choose target artifact or enchantment. Its owner shuffles it into his or her library. this.getSpellAbility().addEffect(new ShuffleIntoLibraryTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(1, 1, filter, true)); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); } public Deglamer(final Deglamer card) { diff --git a/Mage.Sets/src/mage/cards/d/Demystify.java b/Mage.Sets/src/mage/cards/d/Demystify.java index 50414d144cf..cf7ee225929 100644 --- a/Mage.Sets/src/mage/cards/d/Demystify.java +++ b/Mage.Sets/src/mage/cards/d/Demystify.java @@ -33,9 +33,7 @@ import mage.constants.CardType; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -43,17 +41,11 @@ import mage.target.TargetPermanent; */ public class Demystify extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public Demystify (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}"); this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetEnchantmentPermanent()); } public Demystify (final Demystify card) { @@ -64,5 +56,4 @@ public class Demystify extends CardImpl { public Demystify copy() { return new Demystify(this); } - } diff --git a/Mage.Sets/src/mage/cards/d/DestructiveFlow.java b/Mage.Sets/src/mage/cards/d/DestructiveFlow.java index e1cc008c584..c560638bca4 100644 --- a/Mage.Sets/src/mage/cards/d/DestructiveFlow.java +++ b/Mage.Sets/src/mage/cards/d/DestructiveFlow.java @@ -35,8 +35,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.TargetController; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -44,17 +42,11 @@ import mage.filter.predicate.mageobject.SupertypePredicate; */ public class DestructiveFlow extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic land"); - - static { - filter.add(Predicates.not(new SupertypePredicate("Basic"))); - } - public DestructiveFlow(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}{R}{G}"); // At the beginning of each player's upkeep, that player sacrifices a nonbasic land. - this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SacrificeEffect(filter, 1, "that player"), + this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SacrificeEffect(FilterLandPermanent.nonbasicLand(), 1, "that player"), TargetController.ANY, false)); } diff --git a/Mage.Sets/src/mage/cards/d/DevoutChaplain.java b/Mage.Sets/src/mage/cards/d/DevoutChaplain.java index 0b37dcad39d..03d543b62e6 100644 --- a/Mage.Sets/src/mage/cards/d/DevoutChaplain.java +++ b/Mage.Sets/src/mage/cards/d/DevoutChaplain.java @@ -38,10 +38,9 @@ import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.TappedPredicate; import mage.target.TargetPermanent; @@ -52,15 +51,6 @@ import mage.target.common.TargetControlledPermanent; * @author noxx */ public class DevoutChaplain extends CardImpl { - - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - - static { - filter.add(Predicates.or( - new CardTypePredicate(CardType.ARTIFACT), - new CardTypePredicate(CardType.ENCHANTMENT))); - } - private static final FilterControlledPermanent humanFilter = new FilterControlledPermanent("untapped Human you control"); static { @@ -80,7 +70,7 @@ public class DevoutChaplain extends CardImpl { // {T}, Tap two untapped Humans you control: Exile target artifact or enchantment. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(), new TapSourceCost()); ability.addCost(new TapTargetCost(new TargetControlledPermanent(2, 2, humanFilter, false))); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DruidLyrist.java b/Mage.Sets/src/mage/cards/d/DruidLyrist.java index 6f3f4877e8f..cf4e47b8f53 100644 --- a/Mage.Sets/src/mage/cards/d/DruidLyrist.java +++ b/Mage.Sets/src/mage/cards/d/DruidLyrist.java @@ -39,9 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.common.FilterEnchantmentPermanent; -import mage.target.Target; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -61,8 +59,7 @@ public class DruidLyrist extends CardImpl { Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{G}")); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - Target target = new TargetPermanent(new FilterEnchantmentPermanent()); - ability.addTarget(target); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DryadSophisticate.java b/Mage.Sets/src/mage/cards/d/DryadSophisticate.java index dbfa78599f4..890a9521907 100644 --- a/Mage.Sets/src/mage/cards/d/DryadSophisticate.java +++ b/Mage.Sets/src/mage/cards/d/DryadSophisticate.java @@ -34,8 +34,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -51,7 +49,7 @@ public class DryadSophisticate extends CardImpl { this.toughness = new MageInt(1); // Nonbasic landwalk - this.addAbility(new NonbasicLandwalkAbility()); + this.addAbility(new LandwalkAbility(FilterLandPermanent.nonbasicLand())); } public DryadSophisticate(final DryadSophisticate card) { @@ -63,25 +61,3 @@ public class DryadSophisticate extends CardImpl { return new DryadSophisticate(this); } } - -class NonbasicLandwalkAbility extends LandwalkAbility { - - private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic land"); - - static { - filter.add(Predicates.not(new SupertypePredicate("Basic"))); - } - - public NonbasicLandwalkAbility() { - super(filter); - } - - public NonbasicLandwalkAbility(final NonbasicLandwalkAbility ability) { - super(ability); - } - - @Override - public NonbasicLandwalkAbility copy() { - return new NonbasicLandwalkAbility(this); - } -} diff --git a/Mage.Sets/src/mage/cards/d/DuergarHedgeMage.java b/Mage.Sets/src/mage/cards/d/DuergarHedgeMage.java index 1b53ca1073f..a877b521465 100644 --- a/Mage.Sets/src/mage/cards/d/DuergarHedgeMage.java +++ b/Mage.Sets/src/mage/cards/d/DuergarHedgeMage.java @@ -38,12 +38,10 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; -import mage.target.TargetPermanent; import mage.target.common.TargetArtifactPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -53,15 +51,13 @@ public class DuergarHedgeMage extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("a Mountain"); private static final FilterLandPermanent filter2 = new FilterLandPermanent("a Plains"); - private static final FilterPermanent filter3 = new FilterPermanent("enchantment"); static { filter.add(new SubtypePredicate("Mountain")); filter2.add(new SubtypePredicate("Plains")); - filter3.add(new CardTypePredicate(CardType.ENCHANTMENT)); } - private final String rule1 = "When {this} enters the battlefield, if you control two or more Mountains, you may destroy target artifact."; - private final String rule2 = "When {this} enters the battlefield, if you control two or more Plains, you may destroy target enchantment."; + private static final String rule1 = "When {this} enters the battlefield, if you control two or more Mountains, you may destroy target artifact."; + private static final String rule2 = "When {this} enters the battlefield, if you control two or more Plains, you may destroy target enchantment."; public DuergarHedgeMage(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R/W}"); @@ -78,7 +74,7 @@ public class DuergarHedgeMage extends CardImpl { // When Duergar Hedge-Mage enters the battlefield, if you control two or more Plains, you may destroy target enchantment. Ability ability2 = new ConditionalTriggeredAbility(new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), true), new PermanentsOnTheBattlefieldCondition(filter2, CountType.MORE_THAN, 1), rule2); - ability2.addTarget(new TargetPermanent(filter3)); + ability2.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability2); } diff --git a/Mage.Sets/src/mage/cards/e/EchoingCalm.java b/Mage.Sets/src/mage/cards/e/EchoingCalm.java index cea36a9084e..6c8809362ae 100644 --- a/Mage.Sets/src/mage/cards/e/EchoingCalm.java +++ b/Mage.Sets/src/mage/cards/e/EchoingCalm.java @@ -34,29 +34,22 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @author Loki */ public class EchoingCalm extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } public EchoingCalm(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}"); // Destroy target enchantment and all other enchantments with the same name as that enchantment. - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetEnchantmentPermanent()); this.getSpellAbility().addEffect(new EchoingCalmEffect()); } diff --git a/Mage.Sets/src/mage/cards/e/ElementalUprising.java b/Mage.Sets/src/mage/cards/e/ElementalUprising.java index 43f9f26c80c..926f8ac93e6 100644 --- a/Mage.Sets/src/mage/cards/e/ElementalUprising.java +++ b/Mage.Sets/src/mage/cards/e/ElementalUprising.java @@ -37,11 +37,9 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; -import mage.constants.TargetController; -import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.permanent.ControllerPredicate; +import mage.filter.common.FilterControlledLandPermanent; import mage.game.permanent.token.Token; -import mage.target.common.TargetLandPermanent; +import mage.target.TargetPermanent; /** * @@ -49,18 +47,12 @@ import mage.target.common.TargetLandPermanent; */ public class ElementalUprising extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("land you control"); - - static { - filter.add(new ControllerPredicate(TargetController.YOU)); - } - public ElementalUprising(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}"); // Target land you control becomes a 4/4 Elemental creature with haste until end of turn. It's still a land. It must be blocked this turn if able. getSpellAbility().addEffect(new BecomesCreatureTargetEffect(new ElementalUprisingToken(), false, true, Duration.EndOfTurn)); - getSpellAbility().addTarget(new TargetLandPermanent(filter)); + getSpellAbility().addTarget(new TargetPermanent(new FilterControlledLandPermanent())); Effect effect = new MustBeBlockedByAtLeastOneTargetEffect(Duration.EndOfTurn); effect.setText("It must be blocked this turn if able"); getSpellAbility().addEffect(effect); diff --git a/Mage.Sets/src/mage/cards/e/ElfReplica.java b/Mage.Sets/src/mage/cards/e/ElfReplica.java index 4d31207a85a..87a8ae9c70e 100644 --- a/Mage.Sets/src/mage/cards/e/ElfReplica.java +++ b/Mage.Sets/src/mage/cards/e/ElfReplica.java @@ -39,9 +39,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -49,12 +47,6 @@ import mage.target.TargetPermanent; */ public class ElfReplica extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public ElfReplica(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}"); this.subtype.add("Elf"); @@ -62,7 +54,7 @@ public class ElfReplica extends CardImpl { this.toughness = new MageInt(2); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{1}{G}")); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/ElvishHexhunter.java b/Mage.Sets/src/mage/cards/e/ElvishHexhunter.java index bc7d384b632..afbc477f629 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishHexhunter.java +++ b/Mage.Sets/src/mage/cards/e/ElvishHexhunter.java @@ -39,9 +39,7 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -49,12 +47,6 @@ import mage.target.TargetPermanent; */ public class ElvishHexhunter extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public ElvishHexhunter(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G/W}"); this.subtype.add("Elf"); @@ -67,7 +59,7 @@ public class ElvishHexhunter extends CardImpl { Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{G/W}")); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/ElvishLyrist.java b/Mage.Sets/src/mage/cards/e/ElvishLyrist.java index f183c90bbc4..803c073d637 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishLyrist.java +++ b/Mage.Sets/src/mage/cards/e/ElvishLyrist.java @@ -40,8 +40,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Zone; -import mage.filter.common.FilterEnchantmentPermanent; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -60,7 +59,7 @@ public class ElvishLyrist extends CardImpl { Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{G}")); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetPermanent(new FilterEnchantmentPermanent())); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/ElvishScrapper.java b/Mage.Sets/src/mage/cards/e/ElvishScrapper.java index 6b32ae3737f..9e88fe3dbf8 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishScrapper.java +++ b/Mage.Sets/src/mage/cards/e/ElvishScrapper.java @@ -40,8 +40,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Zone; -import mage.filter.common.FilterArtifactPermanent; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; /** * @@ -60,7 +59,7 @@ public class ElvishScrapper extends CardImpl { Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{G}")); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetPermanent(new FilterArtifactPermanent())); + ability.addTarget(new TargetArtifactPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EmbodimentOfFury.java b/Mage.Sets/src/mage/cards/e/EmbodimentOfFury.java index 99bf3aa1748..b3978962446 100644 --- a/Mage.Sets/src/mage/cards/e/EmbodimentOfFury.java +++ b/Mage.Sets/src/mage/cards/e/EmbodimentOfFury.java @@ -43,10 +43,12 @@ import mage.constants.Duration; import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.permanent.ControllerPredicate; import mage.game.permanent.token.Token; +import mage.target.TargetPermanent; import mage.target.common.TargetLandPermanent; /** @@ -56,13 +58,10 @@ import mage.target.common.TargetLandPermanent; public class EmbodimentOfFury extends CardImpl { private static final FilterPermanent filterLandCreatures = new FilterPermanent("Land creatures"); - private static final FilterLandPermanent filterLand = new FilterLandPermanent("land you control"); static { filterLandCreatures.add(new CardTypePredicate(CardType.LAND)); filterLandCreatures.add(new CardTypePredicate(CardType.CREATURE)); - filterLand.add(new ControllerPredicate(TargetController.YOU)); - } public EmbodimentOfFury(UUID ownerId, CardSetInfo setInfo) { @@ -80,7 +79,7 @@ public class EmbodimentOfFury extends CardImpl { // Landfall - Whenever a land enters the battlefield under your control, you may have target land you control // become a 3/3 Elemental creature with haste until end of turn. It's still a land. Ability ability = new LandfallAbility(new BecomesCreatureTargetEffect(new EmbodimentOfFuryToken(), false, true, Duration.EndOfTurn), true); - ability.addTarget(new TargetLandPermanent(filterLand)); + ability.addTarget(new TargetPermanent(new FilterControlledLandPermanent())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EmbodimentOfInsight.java b/Mage.Sets/src/mage/cards/e/EmbodimentOfInsight.java index 87838066b44..245b29e16dd 100644 --- a/Mage.Sets/src/mage/cards/e/EmbodimentOfInsight.java +++ b/Mage.Sets/src/mage/cards/e/EmbodimentOfInsight.java @@ -40,14 +40,12 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; -import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.FilterPermanent; -import mage.filter.common.FilterLandPermanent; +import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.filter.predicate.permanent.ControllerPredicate; import mage.game.permanent.token.Token; -import mage.target.common.TargetLandPermanent; +import mage.target.TargetPermanent; /** * @@ -56,13 +54,10 @@ import mage.target.common.TargetLandPermanent; public class EmbodimentOfInsight extends CardImpl { private static final FilterPermanent filterLandCreatures = new FilterPermanent("Land creatures"); - private static final FilterLandPermanent filterLand = new FilterLandPermanent("land you control"); static { filterLandCreatures.add(new CardTypePredicate(CardType.LAND)); filterLandCreatures.add(new CardTypePredicate(CardType.CREATURE)); - filterLand.add(new ControllerPredicate(TargetController.YOU)); - } public EmbodimentOfInsight(UUID ownerId, CardSetInfo setInfo) { @@ -80,7 +75,7 @@ public class EmbodimentOfInsight extends CardImpl { // Landfall - Whenever a land enters the battlefield under you control, you may have target land you control // become a 3/3 Elemental creature with haste until end of turn. It's still a land. Ability ability = new LandfallAbility(new BecomesCreatureTargetEffect(new EmbodimentOfInsightToken(), false, true, Duration.EndOfTurn), true); - ability.addTarget(new TargetLandPermanent(filterLand)); + ability.addTarget(new TargetPermanent(new FilterControlledLandPermanent())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/EnlightenedAscetic.java b/Mage.Sets/src/mage/cards/e/EnlightenedAscetic.java index 659f0d2f773..3e349dcfe84 100644 --- a/Mage.Sets/src/mage/cards/e/EnlightenedAscetic.java +++ b/Mage.Sets/src/mage/cards/e/EnlightenedAscetic.java @@ -35,10 +35,10 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterEnchantmentPermanent; import mage.target.Target; import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -46,12 +46,6 @@ import mage.target.TargetPermanent; */ public class EnlightenedAscetic extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public EnlightenedAscetic(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Cat"); @@ -61,8 +55,7 @@ public class EnlightenedAscetic extends CardImpl { // When Enlightened Ascetic enters the battlefield, you may destroy target enchantment. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), true); - Target target = new TargetPermanent(filter); - ability.addTarget(target); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/e/Erase.java b/Mage.Sets/src/mage/cards/e/Erase.java index 6f96f8f18c3..ed905a06fc7 100644 --- a/Mage.Sets/src/mage/cards/e/Erase.java +++ b/Mage.Sets/src/mage/cards/e/Erase.java @@ -32,31 +32,20 @@ import mage.constants.CardType; import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * * @author Loki */ public class Erase extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } public Erase(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}"); - } - - @Override - public void build() { // Exile target enchantment. this.getSpellAbility().addEffect(new ExileTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetEnchantmentPermanent()); } public Erase(final Erase card) { diff --git a/Mage.Sets/src/mage/cards/e/EsperCharm.java b/Mage.Sets/src/mage/cards/e/EsperCharm.java index cb48580e003..3d043ffb540 100644 --- a/Mage.Sets/src/mage/cards/e/EsperCharm.java +++ b/Mage.Sets/src/mage/cards/e/EsperCharm.java @@ -35,10 +35,8 @@ import mage.abilities.effects.common.discard.DiscardTargetEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; import mage.target.TargetPlayer; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -46,19 +44,13 @@ import mage.target.TargetPlayer; */ public class EsperCharm extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public EsperCharm(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}{U}{B}"); // Choose one - Destroy target enchantment; this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetEnchantmentPermanent()); // or draw two cards; Mode mode = new Mode(); mode.getEffects().add(new DrawCardSourceControllerEffect(2)); diff --git a/Mage.Sets/src/mage/cards/e/ExtraplanarLens.java b/Mage.Sets/src/mage/cards/e/ExtraplanarLens.java index 97b5c144c3e..8ee5606259b 100644 --- a/Mage.Sets/src/mage/cards/e/ExtraplanarLens.java +++ b/Mage.Sets/src/mage/cards/e/ExtraplanarLens.java @@ -40,8 +40,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.common.FilterControlledPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterControlledLandPermanent; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.ManaEvent; @@ -80,11 +79,7 @@ public class ExtraplanarLens extends CardImpl { class ExtraplanarLensImprintEffect extends OneShotEffect { - private static final FilterControlledPermanent filter = new FilterControlledPermanent("land you control"); - - static { - filter.add(new CardTypePredicate(CardType.LAND)); - } + private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent(); public ExtraplanarLensImprintEffect() { super(Outcome.Neutral); diff --git a/Mage.Sets/src/mage/cards/f/FadeIntoAntiquity.java b/Mage.Sets/src/mage/cards/f/FadeIntoAntiquity.java index c5b1240d594..8675238f6b5 100644 --- a/Mage.Sets/src/mage/cards/f/FadeIntoAntiquity.java +++ b/Mage.Sets/src/mage/cards/f/FadeIntoAntiquity.java @@ -32,10 +32,7 @@ import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.Target; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.target.TargetPermanent; /** @@ -44,19 +41,13 @@ import mage.target.TargetPermanent; */ public class FadeIntoAntiquity extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - static { - filter.add(Predicates.or(new CardTypePredicate(CardType.ARTIFACT), new CardTypePredicate(CardType.ENCHANTMENT))); - } - public FadeIntoAntiquity(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}"); // Exile target artifact or enchantment. this.getSpellAbility().addEffect(new ExileTargetEffect()); - Target target = new TargetPermanent(filter); - this.getSpellAbility().addTarget(target); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); } public FadeIntoAntiquity(final FadeIntoAntiquity card) { diff --git a/Mage.Sets/src/mage/cards/f/FateForgotten.java b/Mage.Sets/src/mage/cards/f/FateForgotten.java index 39c9d182f76..88fec4d8c57 100644 --- a/Mage.Sets/src/mage/cards/f/FateForgotten.java +++ b/Mage.Sets/src/mage/cards/f/FateForgotten.java @@ -32,9 +32,7 @@ import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.target.TargetPermanent; /** @@ -42,21 +40,13 @@ import mage.target.TargetPermanent; * @author fireshoes */ public class FateForgotten extends CardImpl { - - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - - static { - filter.add(Predicates.or( - new CardTypePredicate(CardType.ARTIFACT), - new CardTypePredicate(CardType.ENCHANTMENT))); - } public FateForgotten(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}"); // Exile target artifact or enchantment. this.getSpellAbility().addEffect(new ExileTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); } public FateForgotten(final FateForgotten card) { diff --git a/Mage.Sets/src/mage/cards/f/FranticPurification.java b/Mage.Sets/src/mage/cards/f/FranticPurification.java index 2d3ce995837..9c540994aeb 100644 --- a/Mage.Sets/src/mage/cards/f/FranticPurification.java +++ b/Mage.Sets/src/mage/cards/f/FranticPurification.java @@ -33,9 +33,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.MadnessAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; import java.util.UUID; @@ -45,19 +43,13 @@ import java.util.UUID; */ public class FranticPurification extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public FranticPurification(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}"); // Destroy target enchantment. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetEnchantmentPermanent()); // Madness {W} this.addAbility(new MadnessAbility(this, new ManaCostsImpl("{W}"))); diff --git a/Mage.Sets/src/mage/cards/f/FromTheAshes.java b/Mage.Sets/src/mage/cards/f/FromTheAshes.java index 8de8919d7f6..61b5f307e12 100644 --- a/Mage.Sets/src/mage/cards/f/FromTheAshes.java +++ b/Mage.Sets/src/mage/cards/f/FromTheAshes.java @@ -40,9 +40,6 @@ import mage.constants.Outcome; import mage.constants.Zone; import mage.filter.common.FilterBasicLandCard; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.filter.predicate.mageobject.SupertypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -74,11 +71,7 @@ public class FromTheAshes extends CardImpl { class FromTheAshesEffect extends OneShotEffect { - private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic lands"); - static { - filter.add(new CardTypePredicate(CardType.LAND)); - filter.add(Predicates.not(new SupertypePredicate("Basic"))); - } + private static final FilterLandPermanent filter = FilterLandPermanent.nonbasicLands(); public FromTheAshesEffect() { super(Outcome.Benefit); diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheCedars.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheCedars.java index 0bc91d2a6a6..1d78a9b295e 100644 --- a/Mage.Sets/src/mage/cards/g/GenjuOfTheCedars.java +++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheCedars.java @@ -45,7 +45,6 @@ import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.TargetPermanent; import mage.target.common.TargetLandPermanent; @@ -56,11 +55,7 @@ import mage.target.common.TargetLandPermanent; */ public class GenjuOfTheCedars extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("Forest"); - - static { - filter.add(new SubtypePredicate("Forest")); - } + private static final FilterLandPermanent filter = new FilterLandPermanent("Forest", "Forest"); public GenjuOfTheCedars(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}"); diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheFalls.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheFalls.java index fea40585fba..f9e9c3be3fb 100644 --- a/Mage.Sets/src/mage/cards/g/GenjuOfTheFalls.java +++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheFalls.java @@ -45,7 +45,6 @@ import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.TargetPermanent; import mage.target.common.TargetLandPermanent; @@ -56,11 +55,7 @@ import mage.target.common.TargetLandPermanent; */ public class GenjuOfTheFalls extends CardImpl { - private static final FilterLandPermanent FILTER = new FilterLandPermanent("Island"); - - static { - FILTER.add(new SubtypePredicate("Island")); - } + private static final FilterLandPermanent FILTER = new FilterLandPermanent("Island", "Island"); public GenjuOfTheFalls(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}"); diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheFens.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheFens.java index 79bc08e1fb5..af0f62f98f2 100644 --- a/Mage.Sets/src/mage/cards/g/GenjuOfTheFens.java +++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheFens.java @@ -46,7 +46,6 @@ import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.TargetPermanent; import mage.target.common.TargetLandPermanent; @@ -57,11 +56,7 @@ import mage.target.common.TargetLandPermanent; */ public class GenjuOfTheFens extends CardImpl { - private static final FilterLandPermanent FILTER = new FilterLandPermanent("Swamp"); - - static { - FILTER.add(new SubtypePredicate("Swamp")); - } + private static final FilterLandPermanent FILTER = new FilterLandPermanent("Swamp", "Swamp"); public GenjuOfTheFens(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{B}"); diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheFields.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheFields.java index a497e87b338..086b5bdee55 100644 --- a/Mage.Sets/src/mage/cards/g/GenjuOfTheFields.java +++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheFields.java @@ -48,7 +48,6 @@ import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.TargetPermanent; import mage.target.common.TargetLandPermanent; @@ -59,11 +58,7 @@ import mage.target.common.TargetLandPermanent; */ public class GenjuOfTheFields extends CardImpl { - private static final FilterLandPermanent FILTER = new FilterLandPermanent("Plains"); - - static { - FILTER.add(new SubtypePredicate("Plains")); - } + private static final FilterLandPermanent FILTER = new FilterLandPermanent("Plains", "Plains"); public GenjuOfTheFields(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}"); diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheRealm.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheRealm.java index afcb9727156..b0a6bf893cb 100644 --- a/Mage.Sets/src/mage/cards/g/GenjuOfTheRealm.java +++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheRealm.java @@ -44,7 +44,6 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; import mage.game.permanent.token.Token; import mage.target.TargetPermanent; import mage.target.common.TargetLandPermanent; @@ -55,15 +54,13 @@ import mage.target.common.TargetLandPermanent; */ public class GenjuOfTheRealm extends CardImpl { - private static final FilterLandPermanent FILTER = new FilterLandPermanent(); - public GenjuOfTheRealm(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{W}{U}{B}{R}{G}"); this.subtype.add("Aura"); this.supertype.add("Legendary"); // Enchant Land - TargetPermanent auraTarget = new TargetLandPermanent(FILTER); + TargetPermanent auraTarget = new TargetLandPermanent(); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.PutCreatureInPlay)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheSpires.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheSpires.java index 9bc825aa70d..a515f077120 100644 --- a/Mage.Sets/src/mage/cards/g/GenjuOfTheSpires.java +++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheSpires.java @@ -44,7 +44,6 @@ import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; import mage.target.TargetPermanent; import mage.target.common.TargetLandPermanent; @@ -55,11 +54,7 @@ import mage.target.common.TargetLandPermanent; */ public class GenjuOfTheSpires extends CardImpl { - private static final FilterLandPermanent FILTER = new FilterLandPermanent("Mountain"); - - static { - FILTER.add(new SubtypePredicate("Mountain")); - } + private static final FilterLandPermanent FILTER = new FilterLandPermanent("Mountain", "Mountain"); public GenjuOfTheSpires(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}"); diff --git a/Mage.Sets/src/mage/cards/g/GoblinArchaeologist.java b/Mage.Sets/src/mage/cards/g/GoblinArchaeologist.java index a6f7c0596f3..9ed3358eedb 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinArchaeologist.java +++ b/Mage.Sets/src/mage/cards/g/GoblinArchaeologist.java @@ -18,11 +18,10 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.common.FilterArtifactPermanent; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; /** * @@ -41,7 +40,7 @@ public class GoblinArchaeologist extends CardImpl { // {R}, {T]: Flip a coin. If you win the flip, destroy target artifact and untap Goblin Archaeologist. If you lose the flip, sacrifice Goblin Archaeologist. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GoblinArchaeologistEffect(),new ManaCostsImpl("{R}")); ability.addCost(new TapSourceCost()); - ability.addTarget(new TargetPermanent(new FilterArtifactPermanent())); + ability.addTarget(new TargetArtifactPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GolgariCharm.java b/Mage.Sets/src/mage/cards/g/GolgariCharm.java index e147121fc13..0221e9aa6cd 100644 --- a/Mage.Sets/src/mage/cards/g/GolgariCharm.java +++ b/Mage.Sets/src/mage/cards/g/GolgariCharm.java @@ -38,8 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; -import mage.filter.common.FilterEnchantmentPermanent; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -57,7 +56,7 @@ public class GolgariCharm extends CardImpl { // or destroy target enchantment; Mode mode = new Mode(); mode.getEffects().add(new DestroyTargetEffect()); - mode.getTargets().add(new TargetPermanent(new FilterEnchantmentPermanent())); + mode.getTargets().add(new TargetEnchantmentPermanent()); this.getSpellAbility().addMode(mode); // or regenerate each creature you control. diff --git a/Mage.Sets/src/mage/cards/g/GriffinProtector.java b/Mage.Sets/src/mage/cards/g/GriffinProtector.java index 631fcc6af95..3f2ddb93cf0 100644 --- a/Mage.Sets/src/mage/cards/g/GriffinProtector.java +++ b/Mage.Sets/src/mage/cards/g/GriffinProtector.java @@ -50,10 +50,7 @@ public class GriffinProtector extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(3); - } - @Override - public void build() { // Flying this.addAbility(FlyingAbility.getInstance()); // Whenever another creature enters the battlefield under your control, Griffin Protector gets +1/+1 until end of turn. diff --git a/Mage.Sets/src/mage/cards/g/GrixisIllusionist.java b/Mage.Sets/src/mage/cards/g/GrixisIllusionist.java index 571e1b7c0e4..cd2829e6638 100644 --- a/Mage.Sets/src/mage/cards/g/GrixisIllusionist.java +++ b/Mage.Sets/src/mage/cards/g/GrixisIllusionist.java @@ -37,12 +37,9 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; -import mage.constants.TargetController; import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.permanent.ControllerPredicate; -import mage.target.Target; -import mage.target.common.TargetLandPermanent; +import mage.filter.common.FilterControlledLandPermanent; +import mage.target.TargetPermanent; /** * @@ -50,12 +47,6 @@ import mage.target.common.TargetLandPermanent; */ public class GrixisIllusionist extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("land you control"); - - static { - filter.add(new ControllerPredicate(TargetController.YOU)); - } - public GrixisIllusionist(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}"); this.subtype.add("Human"); @@ -66,8 +57,7 @@ public class GrixisIllusionist extends CardImpl { // {tap}: Target land you control becomes the basic land type of your choice until end of turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesBasicLandTargetEffect(Duration.EndOfTurn), new TapSourceCost()); - Target target = new TargetLandPermanent(filter); - ability.addTarget(target); + ability.addTarget(new TargetPermanent(new FilterControlledLandPermanent())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HealerOfThePride.java b/Mage.Sets/src/mage/cards/h/HealerOfThePride.java index 1eaa262b314..ac912e08825 100644 --- a/Mage.Sets/src/mage/cards/h/HealerOfThePride.java +++ b/Mage.Sets/src/mage/cards/h/HealerOfThePride.java @@ -48,10 +48,7 @@ public class HealerOfThePride extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(3); - } - @Override - public void build() { // Whenever another creature enters the battlefield under your control, you gain 2 life. this.addAbility(new EntersAnotherCreatureYourControlTriggeredAbility(new GainLifeEffect(2))); } diff --git a/Mage.Sets/src/mage/cards/h/HideSeek.java b/Mage.Sets/src/mage/cards/h/HideSeek.java index 303d59212b5..3815719fca6 100644 --- a/Mage.Sets/src/mage/cards/h/HideSeek.java +++ b/Mage.Sets/src/mage/cards/h/HideSeek.java @@ -38,9 +38,7 @@ import mage.cards.SplitCard; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.game.Game; import mage.players.Player; import mage.target.TargetPermanent; @@ -53,21 +51,13 @@ import mage.target.common.TargetOpponent; */ public class HideSeek extends SplitCard { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - - static { - filter.add(Predicates.or( - new CardTypePredicate(CardType.ARTIFACT), - new CardTypePredicate(CardType.ENCHANTMENT))); - } - public HideSeek(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{R}{W}","{W}{B}",false); - + // Hide // Put target artifact or enchantment on the bottom of its owner's library. getLeftHalfCard().getSpellAbility().addEffect(new PutOnLibraryTargetEffect(false)); - getLeftHalfCard().getSpellAbility().addTarget(new TargetPermanent(filter)); + getLeftHalfCard().getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); // Seek // Search target opponent's library for a card and exile it. You gain life equal to its converted mana cost. Then that player shuffles his or her library.. diff --git a/Mage.Sets/src/mage/cards/h/HotSprings.java b/Mage.Sets/src/mage/cards/h/HotSprings.java index bfac5891a56..c04010e5a77 100644 --- a/Mage.Sets/src/mage/cards/h/HotSprings.java +++ b/Mage.Sets/src/mage/cards/h/HotSprings.java @@ -46,7 +46,6 @@ import mage.constants.Outcome; import mage.constants.Zone; import mage.filter.common.FilterControlledLandPermanent; import mage.target.TargetPermanent; -import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreatureOrPlayer; /** @@ -60,7 +59,7 @@ public class HotSprings extends CardImpl { this.subtype.add("Aura"); // Enchant land you control - TargetPermanent auraTarget = new TargetControlledPermanent(new FilterControlledLandPermanent("land you control")); + TargetPermanent auraTarget = new TargetPermanent(new FilterControlledLandPermanent()); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); diff --git a/Mage.Sets/src/mage/cards/h/HullBreach.java b/Mage.Sets/src/mage/cards/h/HullBreach.java index 87818835d94..756d2d6dbe0 100644 --- a/Mage.Sets/src/mage/cards/h/HullBreach.java +++ b/Mage.Sets/src/mage/cards/h/HullBreach.java @@ -34,9 +34,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterEnchantmentPermanent; import mage.target.Target; -import mage.target.TargetPermanent; import mage.target.common.TargetArtifactPermanent; import mage.target.common.TargetEnchantmentPermanent; @@ -56,7 +54,7 @@ public class HullBreach extends CardImpl { // or destroy target enchantment; Mode mode = new Mode(); mode.getEffects().add(new DestroyTargetEffect()); - target = new TargetPermanent(new FilterEnchantmentPermanent()); + target = new TargetEnchantmentPermanent(); mode.getTargets().add(target); this.getSpellAbility().addMode(mode); // or destroy target artifact and target enchantment. diff --git a/Mage.Sets/src/mage/cards/i/IronwrightsCleansing.java b/Mage.Sets/src/mage/cards/i/IronwrightsCleansing.java index d2edfa5fca9..0f3aaa3771e 100644 --- a/Mage.Sets/src/mage/cards/i/IronwrightsCleansing.java +++ b/Mage.Sets/src/mage/cards/i/IronwrightsCleansing.java @@ -32,9 +32,7 @@ import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.target.TargetPermanent; /** @@ -43,20 +41,12 @@ import mage.target.TargetPermanent; */ public class IronwrightsCleansing extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - - static { - filter.add(Predicates.or( - new CardTypePredicate(CardType.ARTIFACT), - new CardTypePredicate(CardType.ENCHANTMENT))); - } - public IronwrightsCleansing(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}"); // Exile target artifact or enchantment. this.getSpellAbility().addEffect(new ExileTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); } diff --git a/Mage.Sets/src/mage/cards/k/KamiOfAncientLaw.java b/Mage.Sets/src/mage/cards/k/KamiOfAncientLaw.java index 91cd4c3f0dd..20c67a7ff1d 100644 --- a/Mage.Sets/src/mage/cards/k/KamiOfAncientLaw.java +++ b/Mage.Sets/src/mage/cards/k/KamiOfAncientLaw.java @@ -39,20 +39,13 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * * @author Loki */ public class KamiOfAncientLaw extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } public KamiOfAncientLaw (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); @@ -61,7 +54,7 @@ public class KamiOfAncientLaw extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new SacrificeSourceCost()); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KeeningApparition.java b/Mage.Sets/src/mage/cards/k/KeeningApparition.java index 052f6d23b6a..f94e48ade38 100644 --- a/Mage.Sets/src/mage/cards/k/KeeningApparition.java +++ b/Mage.Sets/src/mage/cards/k/KeeningApparition.java @@ -37,21 +37,13 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @author LevelX2 */ public class KeeningApparition extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public KeeningApparition(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Spirit"); @@ -61,7 +53,7 @@ public class KeeningApparition extends CardImpl { // Sacrifice Keening Apparition: Destroy target enchantment. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(),new SacrificeSourceCost()); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KithkinSpellduster.java b/Mage.Sets/src/mage/cards/k/KithkinSpellduster.java index cf5b209a778..7719492eb69 100644 --- a/Mage.Sets/src/mage/cards/k/KithkinSpellduster.java +++ b/Mage.Sets/src/mage/cards/k/KithkinSpellduster.java @@ -41,20 +41,13 @@ import mage.abilities.keyword.PersistAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * * @author Loki */ public class KithkinSpellduster extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } public KithkinSpellduster(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}"); @@ -68,7 +61,7 @@ public class KithkinSpellduster extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // {1}{W}, Sacrifice Kithkin Spellduster: Destroy target enchantment. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{1}{W}")); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetEnchantmentPermanent()); ability.addCost(new SacrificeSourceCost()); this.addAbility(ability); // Persist diff --git a/Mage.Sets/src/mage/cards/k/KothOfTheHammer.java b/Mage.Sets/src/mage/cards/k/KothOfTheHammer.java index 7fa86be1efd..70fe2b0978c 100644 --- a/Mage.Sets/src/mage/cards/k/KothOfTheHammer.java +++ b/Mage.Sets/src/mage/cards/k/KothOfTheHammer.java @@ -68,12 +68,10 @@ import mage.target.common.TargetLandPermanent; */ public class KothOfTheHammer extends CardImpl { - static final FilterLandPermanent filter = new FilterLandPermanent("Mountain"); + static final FilterLandPermanent filter = new FilterLandPermanent("Mountain", "Mountain"); static final FilterLandPermanent filterCount = new FilterLandPermanent("Mountain you control"); static { - filter.add(new SubtypePredicate("Mountain")); - filterCount.add(new SubtypePredicate("Mountain")); filterCount.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/l/LeoninRelicWarder.java b/Mage.Sets/src/mage/cards/l/LeoninRelicWarder.java index 09429803706..73fbfcbb834 100644 --- a/Mage.Sets/src/mage/cards/l/LeoninRelicWarder.java +++ b/Mage.Sets/src/mage/cards/l/LeoninRelicWarder.java @@ -40,10 +40,7 @@ import mage.abilities.effects.common.ReturnFromExileForSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.Target; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.target.TargetPermanent; /** @@ -51,13 +48,6 @@ import mage.target.TargetPermanent; * @author Loki */ public class LeoninRelicWarder extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - - static { - filter.add(Predicates.or( - new CardTypePredicate(CardType.ARTIFACT), - new CardTypePredicate(CardType.ENCHANTMENT))); - } public LeoninRelicWarder (UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{W}"); @@ -68,8 +58,7 @@ public class LeoninRelicWarder extends CardImpl { this.toughness = new MageInt(2); Ability ability = new EntersBattlefieldTriggeredAbility(new ExileTargetForSourceEffect(), true); - Target target = new TargetPermanent(filter); - ability.addTarget(target); + ability.addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); this.addAbility(ability); Ability ability2 = new LeavesBattlefieldTriggeredAbility(new ReturnFromExileForSourceEffect(Zone.BATTLEFIELD), false); diff --git a/Mage.Sets/src/mage/cards/l/LivingTerrain.java b/Mage.Sets/src/mage/cards/l/LivingTerrain.java index 3baa350b83c..4cf5431f838 100644 --- a/Mage.Sets/src/mage/cards/l/LivingTerrain.java +++ b/Mage.Sets/src/mage/cards/l/LivingTerrain.java @@ -56,7 +56,7 @@ public class LivingTerrain extends CardImpl { // Enchant land - TargetPermanent auraTarget = new TargetLandPermanent(new FilterLandPermanent()); + TargetPermanent auraTarget = new TargetLandPermanent(); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.PutCreatureInPlay)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); diff --git a/Mage.Sets/src/mage/cards/l/LoamingShaman.java b/Mage.Sets/src/mage/cards/l/LoamingShaman.java index dad0680e582..8b50e4e2ce1 100644 --- a/Mage.Sets/src/mage/cards/l/LoamingShaman.java +++ b/Mage.Sets/src/mage/cards/l/LoamingShaman.java @@ -112,7 +112,6 @@ class LoamingShamanTargetCardsInGraveyard extends TargetCardInGraveyard { public LoamingShamanTargetCardsInGraveyard(int minNumTargets, int maxNumTargets, FilterCard filter) { super(minNumTargets, maxNumTargets, filter); - this.targetName = filter.getMessage(); } public LoamingShamanTargetCardsInGraveyard(final LoamingShamanTargetCardsInGraveyard target) { diff --git a/Mage.Sets/src/mage/cards/m/ManicVandal.java b/Mage.Sets/src/mage/cards/m/ManicVandal.java index 5ba5888727d..3cbe0d120c1 100644 --- a/Mage.Sets/src/mage/cards/m/ManicVandal.java +++ b/Mage.Sets/src/mage/cards/m/ManicVandal.java @@ -35,9 +35,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.common.FilterArtifactPermanent; -import mage.target.Target; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; /** * @@ -54,8 +52,7 @@ public class ManicVandal extends CardImpl { this.toughness = new MageInt(2); Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false); - Target target = new TargetPermanent(new FilterArtifactPermanent()); - ability.addTarget(target); + ability.addTarget(new TargetArtifactPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MoggSalvage.java b/Mage.Sets/src/mage/cards/m/MoggSalvage.java index f67a58e9e74..70a35c91da5 100644 --- a/Mage.Sets/src/mage/cards/m/MoggSalvage.java +++ b/Mage.Sets/src/mage/cards/m/MoggSalvage.java @@ -38,9 +38,8 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.FilterPermanent; -import mage.filter.common.FilterArtifactPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; /** * @@ -67,7 +66,7 @@ public class MoggSalvage extends CardImpl { // Destroy target artifact. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactPermanent())); + this.getSpellAbility().addTarget(new TargetArtifactPermanent()); } public MoggSalvage(final MoggSalvage card) { diff --git a/Mage.Sets/src/mage/cards/m/MonkRealist.java b/Mage.Sets/src/mage/cards/m/MonkRealist.java index 4b23317a0f2..d74def025ec 100644 --- a/Mage.Sets/src/mage/cards/m/MonkRealist.java +++ b/Mage.Sets/src/mage/cards/m/MonkRealist.java @@ -35,22 +35,13 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.Target; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * * @author fireshoes */ public class MonkRealist extends CardImpl { - - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } public MonkRealist(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); @@ -62,8 +53,7 @@ public class MonkRealist extends CardImpl { // When Monk Realist enters the battlefield, destroy target enchantment. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false); - Target target = new TargetPermanent(filter); - ability.addTarget(target); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MultanisDecree.java b/Mage.Sets/src/mage/cards/m/MultanisDecree.java index 0e5e6a6c924..523f18356bc 100644 --- a/Mage.Sets/src/mage/cards/m/MultanisDecree.java +++ b/Mage.Sets/src/mage/cards/m/MultanisDecree.java @@ -34,8 +34,7 @@ import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterEnchantmentPermanent; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -63,12 +62,8 @@ public class MultanisDecree extends CardImpl { return new MultanisDecree(this); } } -class MultanisDecreeDestroyEffect extends OneShotEffect { - private static final FilterPermanent filter = new FilterPermanent(); - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } +class MultanisDecreeDestroyEffect extends OneShotEffect { public MultanisDecreeDestroyEffect() { super(Outcome.DestroyPermanent); this.staticText = "Destroy all enchantments. You gain 2 life for each enchantment destroyed this way"; @@ -87,7 +82,7 @@ class MultanisDecreeDestroyEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); int enchantmentsDestoyed = 0; - for (Permanent permanent: game.getState().getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) { + for (Permanent permanent: game.getState().getBattlefield().getActivePermanents(new FilterEnchantmentPermanent(), source.getControllerId(), source.getSourceId(), game)) { if (permanent.destroy(source.getSourceId(), game, false)) { enchantmentsDestoyed++; } diff --git a/Mage.Sets/src/mage/cards/m/MysticMight.java b/Mage.Sets/src/mage/cards/m/MysticMight.java index 8cd14d6715e..bbaed1a2d2f 100644 --- a/Mage.Sets/src/mage/cards/m/MysticMight.java +++ b/Mage.Sets/src/mage/cards/m/MysticMight.java @@ -47,7 +47,6 @@ import mage.constants.Outcome; import mage.constants.Zone; import mage.filter.common.FilterControlledLandPermanent; import mage.target.TargetPermanent; -import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; /** @@ -61,7 +60,7 @@ public class MysticMight extends CardImpl { this.subtype.add("Aura"); // Enchant land you control - TargetPermanent auraTarget = new TargetControlledPermanent(new FilterControlledLandPermanent("land you control")); + TargetPermanent auraTarget = new TargetPermanent(new FilterControlledLandPermanent()); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); diff --git a/Mage.Sets/src/mage/cards/n/NantukoVigilante.java b/Mage.Sets/src/mage/cards/n/NantukoVigilante.java index a42e758fd6c..c072f3e01a9 100644 --- a/Mage.Sets/src/mage/cards/n/NantukoVigilante.java +++ b/Mage.Sets/src/mage/cards/n/NantukoVigilante.java @@ -37,9 +37,7 @@ import mage.abilities.keyword.MorphAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.target.TargetPermanent; /** @@ -48,14 +46,6 @@ import mage.target.TargetPermanent; */ public class NantukoVigilante extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - - static { - filter.add(Predicates.or( - new CardTypePredicate(CardType.ARTIFACT), - new CardTypePredicate(CardType.ENCHANTMENT))); - } - public NantukoVigilante(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}"); this.subtype.add("Insect"); @@ -69,7 +59,7 @@ public class NantukoVigilante extends CardImpl { this.addAbility(new MorphAbility(this,new ManaCostsImpl("{1}{G}"))); // When Nantuko Vigilante is turned face up, destroy target artifact or enchantment. Ability ability = new TurnedFaceUpSourceTriggeredAbility(new DestroyTargetEffect()); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/n/NikkoOnna.java b/Mage.Sets/src/mage/cards/n/NikkoOnna.java index 6e779675c21..0cd88b001eb 100644 --- a/Mage.Sets/src/mage/cards/n/NikkoOnna.java +++ b/Mage.Sets/src/mage/cards/n/NikkoOnna.java @@ -37,9 +37,8 @@ import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterEnchantmentPermanent; import mage.filter.common.FilterSpiritOrArcaneCard; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -56,7 +55,7 @@ public class NikkoOnna extends CardImpl { // When Nikko-Onna enters the battlefield, destroy target enchantment. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false); - ability.addTarget(new TargetPermanent(new FilterEnchantmentPermanent())); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); // Whenever you cast a Spirit or Arcane spell, you may return Nikko-Onna to its owner's hand. diff --git a/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java b/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java index 46276cbb93a..22a4d7a10fa 100644 --- a/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java +++ b/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java @@ -43,20 +43,16 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; -import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterBasicLandCard; -import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.mageobject.SubtypePredicate; -import mage.filter.predicate.permanent.ControllerPredicate; +import mage.filter.common.FilterControlledLandPermanent; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; import mage.players.Player; import mage.target.TargetPermanent; import mage.target.common.TargetCardInLibrary; -import mage.target.common.TargetLandPermanent; import mage.target.targetpointer.FixedTarget; /** @@ -65,13 +61,7 @@ import mage.target.targetpointer.FixedTarget; */ public class NissaWorldwaker extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("land you control"); - private static final FilterPermanent filterForest = new FilterPermanent("Forest"); - - static { - filter.add(new ControllerPredicate(TargetController.YOU)); - filterForest.add(new SubtypePredicate("Forest")); - } + private static final FilterPermanent filterForest = new FilterPermanent("Forest", "Forest"); public NissaWorldwaker(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{3}{G}{G}"); @@ -81,7 +71,7 @@ public class NissaWorldwaker extends CardImpl { // +1: Target land you control becomes a 4/4 Elemental creature with trample. It's still a land. LoyaltyAbility ability = new LoyaltyAbility(new BecomesCreatureTargetEffect(new NissaWorldwakerToken(), false, true, Duration.Custom), 1); - ability.addTarget(new TargetLandPermanent(filter)); + ability.addTarget(new TargetPermanent(new FilterControlledLandPermanent())); this.addAbility(ability); // +1: Untap up to four target Forests. diff --git a/Mage.Sets/src/mage/cards/o/Oxidize.java b/Mage.Sets/src/mage/cards/o/Oxidize.java index 9196ba25e42..94c04d1fada 100644 --- a/Mage.Sets/src/mage/cards/o/Oxidize.java +++ b/Mage.Sets/src/mage/cards/o/Oxidize.java @@ -32,8 +32,7 @@ import mage.constants.CardType; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.common.FilterArtifactPermanent; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; /** * @author Loki @@ -44,7 +43,7 @@ public class Oxidize extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}"); this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactPermanent())); + this.getSpellAbility().addTarget(new TargetArtifactPermanent()); } public Oxidize(final Oxidize card) { diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianTribute.java b/Mage.Sets/src/mage/cards/p/PhyrexianTribute.java index 80490dd1c57..c58fc9e1695 100644 --- a/Mage.Sets/src/mage/cards/p/PhyrexianTribute.java +++ b/Mage.Sets/src/mage/cards/p/PhyrexianTribute.java @@ -34,8 +34,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterArtifactPermanent; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; import mage.target.common.TargetControlledCreaturePermanent; /** @@ -51,7 +50,7 @@ public class PhyrexianTribute extends CardImpl { this.getSpellAbility().addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(2))); // Destroy target artifact. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactPermanent())); + this.getSpellAbility().addTarget(new TargetArtifactPermanent()); } public PhyrexianTribute(final PhyrexianTribute card) { diff --git a/Mage.Sets/src/mage/cards/p/PriceOfProgress.java b/Mage.Sets/src/mage/cards/p/PriceOfProgress.java index 2d76a3d0b40..b0a6f02f7ac 100644 --- a/Mage.Sets/src/mage/cards/p/PriceOfProgress.java +++ b/Mage.Sets/src/mage/cards/p/PriceOfProgress.java @@ -35,8 +35,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.SupertypePredicate; import mage.game.Game; import mage.players.Player; @@ -66,11 +64,7 @@ public class PriceOfProgress extends CardImpl { class PriceOfProgressEffect extends OneShotEffect { - private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic lands"); - - static { - filter.add(Predicates.not(new SupertypePredicate("Basic"))); - } + private static final FilterLandPermanent filter = FilterLandPermanent.nonbasicLands(); public PriceOfProgressEffect() { super(Outcome.Benefit); diff --git a/Mage.Sets/src/mage/cards/p/PriestOfIroas.java b/Mage.Sets/src/mage/cards/p/PriestOfIroas.java index ed13498118b..9f47687de28 100644 --- a/Mage.Sets/src/mage/cards/p/PriestOfIroas.java +++ b/Mage.Sets/src/mage/cards/p/PriestOfIroas.java @@ -38,9 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.common.FilterEnchantmentPermanent; -import mage.target.Target; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -59,8 +57,7 @@ public class PriestOfIroas extends CardImpl { // {3}{W}, Sacrifice Priest of Iroas: Destroy target enchantment. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{3}{W}")); ability.addCost(new SacrificeSourceCost()); - Target target = new TargetPermanent(new FilterEnchantmentPermanent()); - ability.addTarget(target); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PrimalOrder.java b/Mage.Sets/src/mage/cards/p/PrimalOrder.java index 5251cd238f6..f3e6454b112 100644 --- a/Mage.Sets/src/mage/cards/p/PrimalOrder.java +++ b/Mage.Sets/src/mage/cards/p/PrimalOrder.java @@ -39,8 +39,6 @@ import mage.constants.Outcome; import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.SupertypePredicate; import mage.game.Game; import mage.players.Player; @@ -69,11 +67,7 @@ public class PrimalOrder extends CardImpl { class PrimalOrderDamageTargetEffect extends OneShotEffect{ - private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic lands"); - - static { - filter.add(Predicates.not(new SupertypePredicate("Basic"))); - } + private static final FilterLandPermanent filter = FilterLandPermanent.nonbasicLands(); public PrimalOrderDamageTargetEffect() { diff --git a/Mage.Sets/src/mage/cards/q/QuagmireDruid.java b/Mage.Sets/src/mage/cards/q/QuagmireDruid.java index 6541c30655e..841e64c69fb 100644 --- a/Mage.Sets/src/mage/cards/q/QuagmireDruid.java +++ b/Mage.Sets/src/mage/cards/q/QuagmireDruid.java @@ -41,10 +41,8 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.ColoredManaSymbol; import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; import mage.target.common.TargetControlledCreaturePermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -52,14 +50,6 @@ import mage.target.common.TargetControlledCreaturePermanent; */ public class QuagmireDruid extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - - - public QuagmireDruid(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}"); this.subtype.add("Zombie"); @@ -72,7 +62,7 @@ public class QuagmireDruid extends CardImpl { Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(false), new ColoredManaCost(ColoredManaSymbol.G)); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent())); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/q/QuietDisrepair.java b/Mage.Sets/src/mage/cards/q/QuietDisrepair.java index 194c434fec3..2616a152ea3 100644 --- a/Mage.Sets/src/mage/cards/q/QuietDisrepair.java +++ b/Mage.Sets/src/mage/cards/q/QuietDisrepair.java @@ -41,9 +41,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.TargetController; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.target.TargetPermanent; /** @@ -52,20 +50,13 @@ import mage.target.TargetPermanent; */ public class QuietDisrepair extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - static { - filter.add(Predicates.or( - new CardTypePredicate(CardType.ARTIFACT), - new CardTypePredicate(CardType.ENCHANTMENT))); - } - public QuietDisrepair(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}"); this.subtype.add("Aura"); // Enchant artifact or enchantment - TargetPermanent auraTarget = new TargetPermanent(filter); + TargetPermanent auraTarget = new TargetPermanent(new FilterArtifactOrEnchantmentPermanent()); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); diff --git a/Mage.Sets/src/mage/cards/q/QuietPurity.java b/Mage.Sets/src/mage/cards/q/QuietPurity.java index 4750f8c2869..c862381e860 100644 --- a/Mage.Sets/src/mage/cards/q/QuietPurity.java +++ b/Mage.Sets/src/mage/cards/q/QuietPurity.java @@ -34,26 +34,18 @@ import mage.constants.CardType; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @author Loki */ public class QuietPurity extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("Enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public QuietPurity(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{W}"); this.subtype.add("Arcane"); - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetEnchantmentPermanent()); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Sets/src/mage/cards/r/RainOfThorns.java b/Mage.Sets/src/mage/cards/r/RainOfThorns.java index f3efb74d5e6..35dc7d3b05a 100644 --- a/Mage.Sets/src/mage/cards/r/RainOfThorns.java +++ b/Mage.Sets/src/mage/cards/r/RainOfThorns.java @@ -32,10 +32,9 @@ import mage.abilities.Mode; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.common.FilterEnchantmentPermanent; -import mage.filter.common.FilterLandPermanent; -import mage.target.TargetPermanent; import mage.target.common.TargetArtifactPermanent; +import mage.target.common.TargetEnchantmentPermanent; +import mage.target.common.TargetLandPermanent; import java.util.UUID; @@ -58,12 +57,12 @@ public class RainOfThorns extends CardImpl { Mode mode1 = new Mode(); mode1.getEffects().add(new DestroyTargetEffect()); - mode1.getTargets().add(new TargetPermanent(new FilterEnchantmentPermanent())); + mode1.getTargets().add(new TargetEnchantmentPermanent()); this.getSpellAbility().addMode(mode1); Mode mode2 = new Mode(); mode2.getEffects().add(new DestroyTargetEffect()); - mode2.getTargets().add(new TargetPermanent(new FilterLandPermanent())); + mode2.getTargets().add(new TargetLandPermanent()); this.getSpellAbility().addMode(mode2); } diff --git a/Mage.Sets/src/mage/cards/r/RavenousSkirge.java b/Mage.Sets/src/mage/cards/r/RavenousSkirge.java index 3ea66754f10..ff1f7a1ef22 100644 --- a/Mage.Sets/src/mage/cards/r/RavenousSkirge.java +++ b/Mage.Sets/src/mage/cards/r/RavenousSkirge.java @@ -50,10 +50,7 @@ public class RavenousSkirge extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - } - @Override - public void build() { // Flying this.addAbility(FlyingAbility.getInstance()); // Whenever Ravenous Skirge attacks, it gets +2/+0 until end of turn. diff --git a/Mage.Sets/src/mage/cards/r/RayOfDissolution.java b/Mage.Sets/src/mage/cards/r/RayOfDissolution.java index 01c025afc89..7a30e93456a 100644 --- a/Mage.Sets/src/mage/cards/r/RayOfDissolution.java +++ b/Mage.Sets/src/mage/cards/r/RayOfDissolution.java @@ -33,9 +33,7 @@ import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterEnchantmentPermanent; -import mage.target.Target; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -49,8 +47,7 @@ public class RayOfDissolution extends CardImpl { // Destroy target enchantment. You gain 3 life. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - Target target = new TargetPermanent(new FilterEnchantmentPermanent()); - this.getSpellAbility().addTarget(target); + this.getSpellAbility().addTarget(new TargetEnchantmentPermanent()); this.getSpellAbility().addEffect(new GainLifeEffect(3)); } diff --git a/Mage.Sets/src/mage/cards/r/RayOfRevelation.java b/Mage.Sets/src/mage/cards/r/RayOfRevelation.java index cdeb3049712..cc707be9a66 100644 --- a/Mage.Sets/src/mage/cards/r/RayOfRevelation.java +++ b/Mage.Sets/src/mage/cards/r/RayOfRevelation.java @@ -35,9 +35,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.FlashbackAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -45,18 +43,12 @@ import mage.target.TargetPermanent; */ public class RayOfRevelation extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public RayOfRevelation(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}"); // Destroy target enchantment. - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetEnchantmentPermanent()); this.getSpellAbility().addEffect(new DestroyTargetEffect()); // Flashback {G} this.addAbility(new FlashbackAbility(new ManaCostsImpl("{G}"), TimingRule.INSTANT)); diff --git a/Mage.Sets/src/mage/cards/r/ReturnToDust.java b/Mage.Sets/src/mage/cards/r/ReturnToDust.java index 5cd0294a30d..76fb7d67f16 100644 --- a/Mage.Sets/src/mage/cards/r/ReturnToDust.java +++ b/Mage.Sets/src/mage/cards/r/ReturnToDust.java @@ -35,9 +35,7 @@ import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.game.Game; import mage.target.TargetPermanent; @@ -46,12 +44,6 @@ import mage.target.TargetPermanent; * @author emerald000 */ public class ReturnToDust extends CardImpl { - - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - static { - filter.add(Predicates.or(new CardTypePredicate(CardType.ARTIFACT), - new CardTypePredicate(CardType.ENCHANTMENT))); - } public ReturnToDust(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}{W}"); @@ -71,10 +63,10 @@ public class ReturnToDust extends CardImpl { public void adjustTargets(Ability ability, Game game) { if (ability instanceof SpellAbility) { if (game.getActivePlayerId().equals(ability.getControllerId()) && game.isMainPhase()) { - ability.addTarget(new TargetPermanent(1, 2, filter, false)); + ability.addTarget(new TargetPermanent(1, 2, new FilterArtifactOrEnchantmentPermanent(), false)); } else { - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); } } } diff --git a/Mage.Sets/src/mage/cards/r/RevokeExistence.java b/Mage.Sets/src/mage/cards/r/RevokeExistence.java index c11347b4690..a3a4ed51e0f 100644 --- a/Mage.Sets/src/mage/cards/r/RevokeExistence.java +++ b/Mage.Sets/src/mage/cards/r/RevokeExistence.java @@ -32,9 +32,7 @@ import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.target.TargetPermanent; /** @@ -43,20 +41,12 @@ import mage.target.TargetPermanent; */ public class RevokeExistence extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - - static { - filter.add(Predicates.or( - new CardTypePredicate(CardType.ARTIFACT), - new CardTypePredicate(CardType.ENCHANTMENT))); - } - public RevokeExistence(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}"); // Exile target artifact or enchantment. this.getSpellAbility().addEffect(new ExileTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); } public RevokeExistence(final RevokeExistence card) { diff --git a/Mage.Sets/src/mage/cards/r/RuinGhost.java b/Mage.Sets/src/mage/cards/r/RuinGhost.java index 17f9a9e0c37..2a99ba6f389 100644 --- a/Mage.Sets/src/mage/cards/r/RuinGhost.java +++ b/Mage.Sets/src/mage/cards/r/RuinGhost.java @@ -40,9 +40,8 @@ import mage.abilities.effects.common.ReturnToBattlefieldUnderYourControlTargetEf import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Zone; -import mage.filter.common.FilterControlledPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.common.TargetControlledPermanent; +import mage.filter.common.FilterControlledLandPermanent; +import mage.target.TargetPermanent; /** * @@ -50,12 +49,6 @@ import mage.target.common.TargetControlledPermanent; */ public class RuinGhost extends CardImpl { - private static final FilterControlledPermanent filter = new FilterControlledPermanent("land you control"); - - static { - filter.add(new CardTypePredicate(CardType.LAND)); - } - public RuinGhost(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Spirit"); @@ -67,7 +60,7 @@ public class RuinGhost extends CardImpl { Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetForSourceEffect(), new ManaCostsImpl("{W")); ability.addCost(new TapSourceCost()); ability.addEffect(new ReturnToBattlefieldUnderYourControlTargetEffect(true)); - ability.addTarget(new TargetControlledPermanent(filter)); + ability.addTarget(new TargetPermanent(new FilterControlledLandPermanent())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/Ruination.java b/Mage.Sets/src/mage/cards/r/Ruination.java index a086eba476f..42ed52bd6c4 100644 --- a/Mage.Sets/src/mage/cards/r/Ruination.java +++ b/Mage.Sets/src/mage/cards/r/Ruination.java @@ -33,9 +33,6 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -43,18 +40,12 @@ import mage.filter.predicate.mageobject.SupertypePredicate; */ public class Ruination extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic lands"); - static { - filter.add(new CardTypePredicate(CardType.LAND)); - filter.add(Predicates.not(new SupertypePredicate("Basic"))); - } - public Ruination(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}"); // Destroy all nonbasic lands. - this.getSpellAbility().addEffect(new DestroyAllEffect(filter)); + this.getSpellAbility().addEffect(new DestroyAllEffect(FilterLandPermanent.nonbasicLands())); } public Ruination(final Ruination card) { diff --git a/Mage.Sets/src/mage/cards/s/Scour.java b/Mage.Sets/src/mage/cards/s/Scour.java index bd517c3ed69..582a874b15c 100644 --- a/Mage.Sets/src/mage/cards/s/Scour.java +++ b/Mage.Sets/src/mage/cards/s/Scour.java @@ -32,20 +32,13 @@ import mage.constants.CardType; import mage.abilities.effects.common.ExileTargetAndSearchGraveyardHandLibraryEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * * @author LevelX2 */ public class Scour extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } public Scour(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}{W}"); @@ -53,7 +46,7 @@ public class Scour extends CardImpl { // Exile target enchantment. // Search its controller's graveyard, hand, and library for all cards with the same name as that enchantment and exile them. Then that player shuffles his or her library. - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetEnchantmentPermanent()); this.getSpellAbility().addEffect(new ExileTargetAndSearchGraveyardHandLibraryEffect(false, "its controller's","all cards with the same name as that enchantment")); } diff --git a/Mage.Sets/src/mage/cards/s/Scrap.java b/Mage.Sets/src/mage/cards/s/Scrap.java index 876b04824e2..38cc5da9172 100644 --- a/Mage.Sets/src/mage/cards/s/Scrap.java +++ b/Mage.Sets/src/mage/cards/s/Scrap.java @@ -34,8 +34,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.CyclingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.common.FilterArtifactPermanent; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; /** * @@ -47,7 +46,7 @@ public class Scrap extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}"); this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactPermanent())); + this.getSpellAbility().addTarget(new TargetArtifactPermanent()); this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}"))); } diff --git a/Mage.Sets/src/mage/cards/s/Scrapheap.java b/Mage.Sets/src/mage/cards/s/Scrapheap.java index 82e4571f526..dc2292e70de 100644 --- a/Mage.Sets/src/mage/cards/s/Scrapheap.java +++ b/Mage.Sets/src/mage/cards/s/Scrapheap.java @@ -34,9 +34,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; @@ -68,14 +66,6 @@ public class Scrapheap extends CardImpl { class ScrapheapTriggeredAbility extends TriggeredAbilityImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - - static { - filter.add(Predicates.or( - new CardTypePredicate(CardType.ARTIFACT), - new CardTypePredicate(CardType.ENCHANTMENT))); - } - @Override public ScrapheapTriggeredAbility copy() { return new ScrapheapTriggeredAbility(this); @@ -96,15 +86,15 @@ class ScrapheapTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { - ZoneChangeEvent zEvent = (ZoneChangeEvent) event; - if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) { - Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD); - if (permanent != null && permanent.getOwnerId().equals(this.getControllerId())) { - if (filter.match(permanent, sourceId, controllerId, game)) { - return true; - } + ZoneChangeEvent zEvent = (ZoneChangeEvent) event; + if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) { + Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD); + if (permanent != null && permanent.getOwnerId().equals(this.getControllerId())) { + if (new FilterArtifactOrEnchantmentPermanent().match(permanent, sourceId, controllerId, game)) { + return true; } } + } return false; } diff --git a/Mage.Sets/src/mage/cards/s/SeaDrake.java b/Mage.Sets/src/mage/cards/s/SeaDrake.java index 668de2e637d..7fddecaec86 100644 --- a/Mage.Sets/src/mage/cards/s/SeaDrake.java +++ b/Mage.Sets/src/mage/cards/s/SeaDrake.java @@ -36,10 +36,8 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.TargetController; -import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.permanent.ControllerPredicate; -import mage.target.common.TargetLandPermanent; +import mage.filter.common.FilterControlledLandPermanent; +import mage.target.TargetPermanent; /** * @@ -48,12 +46,6 @@ import mage.target.common.TargetLandPermanent; */ public class SeaDrake extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("land you control"); - - static { - filter.add(new ControllerPredicate(TargetController.YOU)); - } - public SeaDrake(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}"); this.subtype.add("Drake"); @@ -64,7 +56,7 @@ public class SeaDrake extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // When Sea Drake enters the battlefield, return two target lands you control to their owner's hand. Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), false); - ability.addTarget(new TargetLandPermanent(2, 2, filter, false)); + ability.addTarget(new TargetPermanent(2, 2, new FilterControlledLandPermanent(), false)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/Shatter.java b/Mage.Sets/src/mage/cards/s/Shatter.java index 0aca2e69e35..4ace259d3ed 100644 --- a/Mage.Sets/src/mage/cards/s/Shatter.java +++ b/Mage.Sets/src/mage/cards/s/Shatter.java @@ -32,8 +32,7 @@ import mage.constants.CardType; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.common.FilterArtifactPermanent; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; /** * @@ -45,7 +44,7 @@ public class Shatter extends CardImpl { // Destroy target artifact. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactPermanent())); + this.getSpellAbility().addTarget(new TargetArtifactPermanent()); } public Shatter (final Shatter card) { diff --git a/Mage.Sets/src/mage/cards/s/ShatteringPulse.java b/Mage.Sets/src/mage/cards/s/ShatteringPulse.java index 20447916e14..1714629d1e2 100644 --- a/Mage.Sets/src/mage/cards/s/ShatteringPulse.java +++ b/Mage.Sets/src/mage/cards/s/ShatteringPulse.java @@ -30,11 +30,10 @@ package mage.cards.s; import java.util.UUID; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.BuybackAbility; -import mage.target.TargetPermanent; -import mage.filter.common.FilterArtifactPermanent; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.target.common.TargetArtifactPermanent; /** * @@ -50,7 +49,7 @@ public class ShatteringPulse extends CardImpl { // Destroy target artifact. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactPermanent())); + this.getSpellAbility().addTarget(new TargetArtifactPermanent()); } public ShatteringPulse(final ShatteringPulse card) { diff --git a/Mage.Sets/src/mage/cards/s/ShatteringSpree.java b/Mage.Sets/src/mage/cards/s/ShatteringSpree.java index e88e4aaf592..24cb353f7d3 100644 --- a/Mage.Sets/src/mage/cards/s/ShatteringSpree.java +++ b/Mage.Sets/src/mage/cards/s/ShatteringSpree.java @@ -33,8 +33,7 @@ import mage.abilities.keyword.ReplicateAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterArtifactPermanent; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; /** * @@ -49,7 +48,7 @@ public class ShatteringSpree extends CardImpl { this.addAbility(new ReplicateAbility(this, "{R}")); // Destroy target artifact. this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); - this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactPermanent())); + this.getSpellAbility().addTarget(new TargetArtifactPermanent()); } public ShatteringSpree(final ShatteringSpree card) { diff --git a/Mage.Sets/src/mage/cards/s/Shinewend.java b/Mage.Sets/src/mage/cards/s/Shinewend.java index 24108d22d6f..04f6d5b742f 100644 --- a/Mage.Sets/src/mage/cards/s/Shinewend.java +++ b/Mage.Sets/src/mage/cards/s/Shinewend.java @@ -43,9 +43,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Zone; import mage.counters.CounterType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -53,12 +51,6 @@ import mage.target.TargetPermanent; */ public class Shinewend extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public Shinewend(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Elemental"); @@ -75,7 +67,7 @@ public class Shinewend extends CardImpl { // {1}{W}, Remove a +1/+1 counter from Shinewend: Destroy target enchantment. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{1}{W}")); ability.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance(1))); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SilverchaseFox.java b/Mage.Sets/src/mage/cards/s/SilverchaseFox.java index 5e40082e0f5..98c99355966 100644 --- a/Mage.Sets/src/mage/cards/s/SilverchaseFox.java +++ b/Mage.Sets/src/mage/cards/s/SilverchaseFox.java @@ -37,9 +37,7 @@ import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Zone; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; import java.util.UUID; @@ -48,12 +46,6 @@ import java.util.UUID; */ public class SilverchaseFox extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public SilverchaseFox(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Fox"); @@ -63,7 +55,7 @@ public class SilverchaseFox extends CardImpl { // {1}{W}, Sacrifice Silverchase Fox: Exile target enchantment. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(), new ManaCostsImpl("{1}{W}")); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetEnchantmentPermanent()); ability.addCost(new SacrificeSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SkarrgGuildmage.java b/Mage.Sets/src/mage/cards/s/SkarrgGuildmage.java index 5f7a2abd0f8..c53452f3fb5 100644 --- a/Mage.Sets/src/mage/cards/s/SkarrgGuildmage.java +++ b/Mage.Sets/src/mage/cards/s/SkarrgGuildmage.java @@ -30,7 +30,6 @@ package mage.cards.s; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; -import mage.constants.TargetController; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; @@ -42,10 +41,9 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.filter.common.FilterControlledCreaturePermanent; -import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.permanent.ControllerPredicate; +import mage.filter.common.FilterControlledLandPermanent; import mage.game.permanent.token.Token; -import mage.target.common.TargetLandPermanent; +import mage.target.TargetPermanent; /** * @@ -53,12 +51,6 @@ import mage.target.common.TargetLandPermanent; */ public class SkarrgGuildmage extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("land you control"); - - static { - filter.add(new ControllerPredicate(TargetController.YOU)); - } - public SkarrgGuildmage(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}"); this.subtype.add("Human"); @@ -73,7 +65,7 @@ public class SkarrgGuildmage extends CardImpl { new ManaCostsImpl("{R}{G}"))); // {1}{R}{G}: Target land you control becomes a 4/4 Elemental creature until end of turn. It's still a land. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureTargetEffect(new SkarrgGuildmageToken(), false, true, Duration.EndOfTurn), new ManaCostsImpl("{1}{R}{G}") ); - ability.addTarget(new TargetLandPermanent(filter)); + ability.addTarget(new TargetPermanent(new FilterControlledLandPermanent())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudElite.java b/Mage.Sets/src/mage/cards/s/SkyshroudElite.java index 105a51e5e8d..59179267e79 100644 --- a/Mage.Sets/src/mage/cards/s/SkyshroudElite.java +++ b/Mage.Sets/src/mage/cards/s/SkyshroudElite.java @@ -39,8 +39,6 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -48,12 +46,6 @@ import mage.filter.predicate.mageobject.SupertypePredicate; */ public class SkyshroudElite extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic land"); - - static { - filter.add(Predicates.not(new SupertypePredicate("Basic"))); - } - public SkyshroudElite(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}"); this.subtype.add("Elf"); @@ -63,7 +55,7 @@ public class SkyshroudElite extends CardImpl { // Skyshroud Elite gets +1/+2 as long as an opponent controls a nonbasic land. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( new BoostSourceEffect(1, 2, Duration.WhileOnBattlefield), - new OpponentControlsPermanentCondition(filter), + new OpponentControlsPermanentCondition(FilterLandPermanent.nonbasicLand()), "{this} gets +1/+2 as long as an opponent controls a nonbasic land"))); } diff --git a/Mage.Sets/src/mage/cards/s/Smash.java b/Mage.Sets/src/mage/cards/s/Smash.java index d5fcc6433e3..6b136f2c755 100644 --- a/Mage.Sets/src/mage/cards/s/Smash.java +++ b/Mage.Sets/src/mage/cards/s/Smash.java @@ -33,8 +33,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.common.FilterArtifactPermanent; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; /** * @author Loki @@ -46,7 +45,7 @@ public class Smash extends CardImpl { // Destroy target artifact. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactPermanent())); + this.getSpellAbility().addTarget(new TargetArtifactPermanent()); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); } diff --git a/Mage.Sets/src/mage/cards/s/SpinedFluke.java b/Mage.Sets/src/mage/cards/s/SpinedFluke.java index dc45ee01711..f578861a75d 100644 --- a/Mage.Sets/src/mage/cards/s/SpinedFluke.java +++ b/Mage.Sets/src/mage/cards/s/SpinedFluke.java @@ -55,10 +55,7 @@ public class SpinedFluke extends CardImpl { this.power = new MageInt(5); this.toughness = new MageInt(1); - } - @Override - public void build() { // When Spined Fluke enters the battlefield, sacrifice a creature. this.addAbility(new EntersBattlefieldTriggeredAbility(new SacrificeControllerEffect(new FilterCreaturePermanent("a creature"), 1, ""))); // {B}: Regenerate Spined Fluke. diff --git a/Mage.Sets/src/mage/cards/s/SterlingGrove.java b/Mage.Sets/src/mage/cards/s/SterlingGrove.java index e33f9d31d52..6cf04d4a6fd 100644 --- a/Mage.Sets/src/mage/cards/s/SterlingGrove.java +++ b/Mage.Sets/src/mage/cards/s/SterlingGrove.java @@ -41,9 +41,8 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.filter.FilterCard; -import mage.filter.common.FilterControlledPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterEnchantmentCard; +import mage.filter.common.FilterEnchantmentPermanent; import mage.target.common.TargetCardInLibrary; /** @@ -52,24 +51,14 @@ import mage.target.common.TargetCardInLibrary; */ public class SterlingGrove extends CardImpl { - private static final FilterControlledPermanent filterPermanent = new FilterControlledPermanent("enchantments"); - private static final FilterCard filterCard = new FilterCard("enchantment card"); - static { - filterPermanent.add(new CardTypePredicate(CardType.ENCHANTMENT)); - filterCard.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - - public SterlingGrove(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}{W}"); - // Other enchantments you control have shroud. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(ShroudAbility.getInstance(), Duration.WhileOnBattlefield, filterPermanent, true))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(ShroudAbility.getInstance(), Duration.WhileOnBattlefield, new FilterEnchantmentPermanent("enchantments"), true))); // {1}, Sacrifice Sterling Grove: Search your library for an enchantment card and reveal that card. Shuffle your library, then put the card on top of it. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutOnLibraryEffect(new TargetCardInLibrary(filterCard), true, true), new GenericManaCost(1)); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutOnLibraryEffect(new TargetCardInLibrary(new FilterEnchantmentCard("enchantment card")), true, true), new GenericManaCost(1)); ability.addCost(new SacrificeSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SternProctor.java b/Mage.Sets/src/mage/cards/s/SternProctor.java index c828d9ef329..bb656c269fa 100644 --- a/Mage.Sets/src/mage/cards/s/SternProctor.java +++ b/Mage.Sets/src/mage/cards/s/SternProctor.java @@ -36,9 +36,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.target.TargetPermanent; /** @@ -46,13 +44,6 @@ import mage.target.TargetPermanent; * @author Loki */ public class SternProctor extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - - static { - filter.add(Predicates.or( - new CardTypePredicate(CardType.ARTIFACT), - new CardTypePredicate(CardType.ENCHANTMENT))); - } public SternProctor(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{U}"); @@ -64,7 +55,7 @@ public class SternProctor extends CardImpl { // When Stern Proctor enters the battlefield, return target artifact or enchantment to its owner's hand. Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), false); - TargetPermanent target = new TargetPermanent(filter); + TargetPermanent target = new TargetPermanent(new FilterArtifactOrEnchantmentPermanent()); ability.addTarget(target); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SunderingGrowth.java b/Mage.Sets/src/mage/cards/s/SunderingGrowth.java index d17cf97bbbf..4236e3decc9 100644 --- a/Mage.Sets/src/mage/cards/s/SunderingGrowth.java +++ b/Mage.Sets/src/mage/cards/s/SunderingGrowth.java @@ -33,9 +33,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.PopulateEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.target.TargetPermanent; /** @@ -44,21 +42,13 @@ import mage.target.TargetPermanent; */ public class SunderingGrowth extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - - static { - filter.add(Predicates.or( - new CardTypePredicate(CardType.ARTIFACT), - new CardTypePredicate(CardType.ENCHANTMENT))); - } - public SunderingGrowth(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G/W}{G/W}"); // Destroy target artifact or enchantment, then populate. // (Create a token that's a copy of a creature token you control.) - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new PopulateEffect("then")); } diff --git a/Mage.Sets/src/mage/cards/t/TeferisPuzzleBox.java b/Mage.Sets/src/mage/cards/t/TeferisPuzzleBox.java index 4f09b96117a..b034cb77359 100644 --- a/Mage.Sets/src/mage/cards/t/TeferisPuzzleBox.java +++ b/Mage.Sets/src/mage/cards/t/TeferisPuzzleBox.java @@ -48,10 +48,7 @@ public class TeferisPuzzleBox extends CardImpl { public TeferisPuzzleBox(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}"); - } - @Override - public void build() { // At the beginning of each player's draw step, that player puts the cards in his or her hand on the bottom of his or her library in any order, then draws that many cards. Ability ability = new BeginningOfDrawTriggeredAbility(new TeferisPuzzleBoxEffect(), TargetController.ANY, false); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/t/TempestOfLight.java b/Mage.Sets/src/mage/cards/t/TempestOfLight.java index 731aed8dd4c..ac5c9049176 100644 --- a/Mage.Sets/src/mage/cards/t/TempestOfLight.java +++ b/Mage.Sets/src/mage/cards/t/TempestOfLight.java @@ -56,4 +56,3 @@ public class TempestOfLight extends CardImpl { return new TempestOfLight(this); } } - diff --git a/Mage.Sets/src/mage/cards/t/TradeRoutes.java b/Mage.Sets/src/mage/cards/t/TradeRoutes.java index 4f1b64f8133..45a8bc62b24 100644 --- a/Mage.Sets/src/mage/cards/t/TradeRoutes.java +++ b/Mage.Sets/src/mage/cards/t/TradeRoutes.java @@ -39,14 +39,12 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.TargetController; import mage.constants.Zone; +import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterLandCard; -import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.permanent.ControllerPredicate; import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCardInHand; -import mage.target.common.TargetLandPermanent; /** * @@ -54,19 +52,13 @@ import mage.target.common.TargetLandPermanent; */ public class TradeRoutes extends CardImpl { - private static final FilterLandPermanent landYouControl = new FilterLandPermanent("land you control"); - - static { - landYouControl.add(new ControllerPredicate(TargetController.YOU)); - } - public TradeRoutes(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}"); // {1}: Return target land you control to its owner's hand. Effect returnToHand = new ReturnToHandTargetEffect(); - Target targetLandYouControl = new TargetLandPermanent(landYouControl); + Target targetLandYouControl = new TargetPermanent(new FilterControlledLandPermanent()); Ability returnLandToHand = new SimpleActivatedAbility(Zone.BATTLEFIELD, returnToHand, new GenericManaCost(1)); returnLandToHand.addTarget(targetLandYouControl); this.addAbility(returnLandToHand); diff --git a/Mage.Sets/src/mage/cards/t/TrailblazersBoots.java b/Mage.Sets/src/mage/cards/t/TrailblazersBoots.java index 3c11155460a..43a25f8b6a4 100644 --- a/Mage.Sets/src/mage/cards/t/TrailblazersBoots.java +++ b/Mage.Sets/src/mage/cards/t/TrailblazersBoots.java @@ -40,8 +40,6 @@ import mage.abilities.keyword.LandwalkAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -54,7 +52,7 @@ public class TrailblazersBoots extends CardImpl { this.subtype.add("Equipment"); // Equipped creature has nonbasic landwalk. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new NonbasicLandwalkAbility(), AttachmentType.EQUIPMENT))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new LandwalkAbility(FilterLandPermanent.nonbasicLand()), AttachmentType.EQUIPMENT))); // Equip {2} this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2))); } @@ -68,25 +66,3 @@ public class TrailblazersBoots extends CardImpl { return new TrailblazersBoots(this); } } - -class NonbasicLandwalkAbility extends LandwalkAbility { - - private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic land"); - - static { - filter.add(Predicates.not(new SupertypePredicate("Basic"))); - } - - public NonbasicLandwalkAbility() { - super(filter); - } - - public NonbasicLandwalkAbility(final NonbasicLandwalkAbility ability) { - super(ability); - } - - @Override - public NonbasicLandwalkAbility copy() { - return new NonbasicLandwalkAbility(this); - } -} diff --git a/Mage.Sets/src/mage/cards/t/TranquilPath.java b/Mage.Sets/src/mage/cards/t/TranquilPath.java index 9177794763c..7d0658e7070 100644 --- a/Mage.Sets/src/mage/cards/t/TranquilPath.java +++ b/Mage.Sets/src/mage/cards/t/TranquilPath.java @@ -61,4 +61,3 @@ public class TranquilPath extends CardImpl { return new TranquilPath(this); } } - diff --git a/Mage.Sets/src/mage/cards/u/UnravelTheAether.java b/Mage.Sets/src/mage/cards/u/UnravelTheAether.java index 46f05558ab7..a45c0d13ad8 100644 --- a/Mage.Sets/src/mage/cards/u/UnravelTheAether.java +++ b/Mage.Sets/src/mage/cards/u/UnravelTheAether.java @@ -32,9 +32,7 @@ import mage.abilities.effects.common.ShuffleIntoLibraryTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.target.TargetPermanent; /** @@ -43,18 +41,12 @@ import mage.target.TargetPermanent; */ public class UnravelTheAether extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - - static { - filter.add(Predicates.or(new CardTypePredicate(CardType.ARTIFACT), new CardTypePredicate(CardType.ENCHANTMENT))); - } - public UnravelTheAether(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}"); // Choose target artifact or enchantment. Its owner shuffles it into his or her library. this.getSpellAbility().addEffect(new ShuffleIntoLibraryTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(1, 1, filter, true)); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); } public UnravelTheAether(final UnravelTheAether card) { diff --git a/Mage.Sets/src/mage/cards/v/Verdigris.java b/Mage.Sets/src/mage/cards/v/Verdigris.java index b25d6cad0a7..660e0dc9468 100644 --- a/Mage.Sets/src/mage/cards/v/Verdigris.java +++ b/Mage.Sets/src/mage/cards/v/Verdigris.java @@ -32,8 +32,7 @@ import mage.constants.CardType; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.common.FilterArtifactPermanent; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; /** * @@ -45,7 +44,7 @@ public class Verdigris extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}"); this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactPermanent())); + this.getSpellAbility().addTarget(new TargetArtifactPermanent()); } public Verdigris(final Verdigris card) { diff --git a/Mage.Sets/src/mage/cards/v/ViridianCorrupter.java b/Mage.Sets/src/mage/cards/v/ViridianCorrupter.java index 0e11ffcd95f..60639510b3b 100644 --- a/Mage.Sets/src/mage/cards/v/ViridianCorrupter.java +++ b/Mage.Sets/src/mage/cards/v/ViridianCorrupter.java @@ -36,9 +36,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.InfectAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.common.FilterArtifactPermanent; -import mage.target.Target; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; /** * @@ -57,8 +55,7 @@ public class ViridianCorrupter extends CardImpl { // When Viridian Corrupter enters the battlefield, destroy target artifact. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false); - Target target = new TargetPermanent(new FilterArtifactPermanent()); - ability.addTarget(target); + ability.addTarget(new TargetArtifactPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/v/VithianRenegades.java b/Mage.Sets/src/mage/cards/v/VithianRenegades.java index e2b068957dd..4e5a921d3df 100644 --- a/Mage.Sets/src/mage/cards/v/VithianRenegades.java +++ b/Mage.Sets/src/mage/cards/v/VithianRenegades.java @@ -35,8 +35,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.common.FilterArtifactPermanent; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; /** * @@ -54,7 +53,7 @@ public class VithianRenegades extends CardImpl { // When Vithian Renegades enters the battlefield, destroy target artifact. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect()); - ability.addTarget(new TargetPermanent(new FilterArtifactPermanent())); + ability.addTarget(new TargetArtifactPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/v/VolcanicEruption.java b/Mage.Sets/src/mage/cards/v/VolcanicEruption.java index 10b3e59ad5c..5b45b976af6 100644 --- a/Mage.Sets/src/mage/cards/v/VolcanicEruption.java +++ b/Mage.Sets/src/mage/cards/v/VolcanicEruption.java @@ -39,7 +39,6 @@ import mage.constants.Outcome; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -51,11 +50,7 @@ import mage.target.common.TargetLandPermanent; */ public class VolcanicEruption extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain"); - - static{ - filter.add(new SubtypePredicate(("Mountain"))); - } + private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain", "Mountain"); public VolcanicEruption(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{X}{U}{U}{U}"); diff --git a/Mage.Sets/src/mage/cards/w/WarPriestOfThune.java b/Mage.Sets/src/mage/cards/w/WarPriestOfThune.java index d5c203b82d4..285b0bcecc7 100644 --- a/Mage.Sets/src/mage/cards/w/WarPriestOfThune.java +++ b/Mage.Sets/src/mage/cards/w/WarPriestOfThune.java @@ -36,10 +36,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.Target; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -47,12 +44,6 @@ import mage.target.TargetPermanent; */ public class WarPriestOfThune extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } - public WarPriestOfThune(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add("Human"); @@ -63,8 +54,7 @@ public class WarPriestOfThune extends CardImpl { // When War Priest of Thune enters the battlefield, you may destroy target enchantment. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), true); - Target target = new TargetPermanent(filter); - ability.addTarget(target); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WearTear.java b/Mage.Sets/src/mage/cards/w/WearTear.java index 54b73cbc729..4e7fa9aac17 100644 --- a/Mage.Sets/src/mage/cards/w/WearTear.java +++ b/Mage.Sets/src/mage/cards/w/WearTear.java @@ -32,10 +32,9 @@ import mage.constants.CardType; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardSetInfo; import mage.cards.SplitCard; -import mage.filter.common.FilterEnchantmentPermanent; import mage.target.Target; -import mage.target.TargetPermanent; import mage.target.common.TargetArtifactPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -55,7 +54,7 @@ public class WearTear extends SplitCard { // Tear // Destroy target enchantment. getRightHalfCard().getSpellAbility().addEffect(new DestroyTargetEffect()); - target = new TargetPermanent(new FilterEnchantmentPermanent()); + target = new TargetEnchantmentPermanent(); getRightHalfCard().getSpellAbility().addTarget(target); } diff --git a/Mage.Sets/src/mage/cards/w/WerewolfRansacker.java b/Mage.Sets/src/mage/cards/w/WerewolfRansacker.java index 0885fb0d39a..0d6f76f1f12 100644 --- a/Mage.Sets/src/mage/cards/w/WerewolfRansacker.java +++ b/Mage.Sets/src/mage/cards/w/WerewolfRansacker.java @@ -44,14 +44,12 @@ import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.TargetController; import mage.constants.Zone; -import mage.filter.common.FilterArtifactPermanent; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.players.Player; -import mage.target.Target; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; /** * @@ -95,8 +93,7 @@ class WerewolfRansackerAbility extends TriggeredAbilityImpl { public WerewolfRansackerAbility() { super(Zone.BATTLEFIELD, new WerewolfRansackerEffect(), true); - Target target = new TargetPermanent(new FilterArtifactPermanent()); - this.addTarget(target); + this.addTarget(new TargetArtifactPermanent()); } public WerewolfRansackerAbility(final WerewolfRansackerAbility ability) { diff --git a/Mage.Sets/src/mage/cards/w/WickerboughElder.java b/Mage.Sets/src/mage/cards/w/WickerboughElder.java index 91c406bc439..a37ca0f2f68 100644 --- a/Mage.Sets/src/mage/cards/w/WickerboughElder.java +++ b/Mage.Sets/src/mage/cards/w/WickerboughElder.java @@ -42,9 +42,7 @@ import mage.constants.CardType; import mage.constants.ColoredManaSymbol; import mage.constants.Zone; import mage.counters.CounterType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.Predicates; -import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.target.TargetPermanent; /** @@ -52,14 +50,6 @@ import mage.target.TargetPermanent; */ public class WickerboughElder extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment"); - - static { - filter.add(Predicates.or( - new CardTypePredicate(CardType.ARTIFACT), - new CardTypePredicate(CardType.ENCHANTMENT))); - } - public WickerboughElder(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}"); this.subtype.add("Treefolk"); @@ -73,7 +63,7 @@ public class WickerboughElder extends CardImpl { // {G}, Remove a -1/-1 counter from Wickerbough Elder: Destroy target artifact or enchantment. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ColoredManaCost(ColoredManaSymbol.G)); ability.addCost(new RemoveCountersSourceCost(CounterType.M1M1.createInstance(1))); - ability.addTarget(new TargetPermanent(filter)); + ability.addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent())); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WipeClean.java b/Mage.Sets/src/mage/cards/w/WipeClean.java index eb4e93dd708..7dce6709bd0 100644 --- a/Mage.Sets/src/mage/cards/w/WipeClean.java +++ b/Mage.Sets/src/mage/cards/w/WipeClean.java @@ -34,25 +34,19 @@ import mage.abilities.keyword.CyclingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.FilterPermanent; -import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * * @author markedagain */ public class WipeClean extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("enchantment"); - static { - filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - } public WipeClean(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}"); // Exile target enchantment. - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + this.getSpellAbility().addTarget(new TargetEnchantmentPermanent()); this.getSpellAbility().addEffect(new ExileTargetEffect()); // Cycling {3} this.addAbility(new CyclingAbility(new ManaCostsImpl("{3}"))); diff --git a/Mage.Sets/src/mage/cards/w/Wispmare.java b/Mage.Sets/src/mage/cards/w/Wispmare.java index 1cffcb05de4..6622ef0690f 100644 --- a/Mage.Sets/src/mage/cards/w/Wispmare.java +++ b/Mage.Sets/src/mage/cards/w/Wispmare.java @@ -37,9 +37,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.EvokeAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.filter.common.FilterEnchantmentPermanent; -import mage.target.Target; -import mage.target.TargetPermanent; +import mage.target.common.TargetEnchantmentPermanent; /** * @@ -58,8 +56,7 @@ public class Wispmare extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // When Wispmare enters the battlefield, destroy target enchantment. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect()); - Target target = new TargetPermanent(new FilterEnchantmentPermanent()); - ability.addTarget(target); + ability.addTarget(new TargetEnchantmentPermanent()); this.addAbility(ability); // Evoke {W} this.addAbility(new EvokeAbility(this, "{W}")); diff --git a/Mage.Sets/src/mage/cards/y/YukiOnna.java b/Mage.Sets/src/mage/cards/y/YukiOnna.java index ce3cedb3983..a37ae953dee 100644 --- a/Mage.Sets/src/mage/cards/y/YukiOnna.java +++ b/Mage.Sets/src/mage/cards/y/YukiOnna.java @@ -38,8 +38,7 @@ import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.filter.common.FilterSpiritOrArcaneCard; -import mage.filter.common.FilterArtifactPermanent; -import mage.target.TargetPermanent; +import mage.target.common.TargetArtifactPermanent; /** * @author Loki @@ -55,7 +54,7 @@ public class YukiOnna extends CardImpl { // When Yuki-Onna enters the battlefield, destroy target artifact. Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false); - ability.addTarget(new TargetPermanent(new FilterArtifactPermanent())); + ability.addTarget(new TargetArtifactPermanent()); this.addAbility(ability); // Whenever you cast a Spirit or Arcane spell, you may return Yuki-Onna to its owner's hand. this.addAbility(new SpellCastControllerTriggeredAbility(new ReturnToHandSourceEffect(true), new FilterSpiritOrArcaneCard(), true)); diff --git a/Mage/src/main/java/mage/abilities/keyword/FortifyAbility.java b/Mage/src/main/java/mage/abilities/keyword/FortifyAbility.java index 077296bd2cf..0229e676256 100644 --- a/Mage/src/main/java/mage/abilities/keyword/FortifyAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/FortifyAbility.java @@ -28,15 +28,13 @@ package mage.abilities.keyword; -import mage.constants.TargetController; import mage.constants.TimingRule; import mage.constants.Zone; import mage.abilities.ActivatedAbilityImpl; import mage.abilities.costs.Cost; import mage.abilities.effects.common.AttachEffect; -import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.permanent.ControllerPredicate; -import mage.target.common.TargetLandPermanent; +import mage.filter.common.FilterControlledLandPermanent; +import mage.target.TargetPermanent; /** * @@ -45,16 +43,9 @@ import mage.target.common.TargetLandPermanent; //20091005 - 702.64 public class FortifyAbility extends ActivatedAbilityImpl { - - private static final FilterLandPermanent filter = new FilterLandPermanent("land you control"); - - static { - filter.add(new ControllerPredicate(TargetController.YOU)); - } - public FortifyAbility(Zone zone, AttachEffect effect, Cost cost) { super(zone, effect, cost); - this.addTarget(new TargetLandPermanent(filter)); + this.addTarget(new TargetPermanent(new FilterControlledLandPermanent())); timing = TimingRule.SORCERY; } @@ -66,6 +57,4 @@ public class FortifyAbility extends ActivatedAbilityImpl { public FortifyAbility copy() { return new FortifyAbility(this); } - - } \ No newline at end of file diff --git a/Mage/src/main/java/mage/cards/Card.java b/Mage/src/main/java/mage/cards/Card.java index a5a07f3dfaa..c6546aa53d0 100644 --- a/Mage/src/main/java/mage/cards/Card.java +++ b/Mage/src/main/java/mage/cards/Card.java @@ -147,8 +147,6 @@ public interface Card extends MageObject { List getMana(); - void build(); - /** * * @return true if there exists various art images for this card diff --git a/Mage/src/main/java/mage/cards/CardImpl.java b/Mage/src/main/java/mage/cards/CardImpl.java index b20ea4a28fe..1bbf4b353d0 100644 --- a/Mage/src/main/java/mage/cards/CardImpl.java +++ b/Mage/src/main/java/mage/cards/CardImpl.java @@ -190,7 +190,6 @@ public abstract class CardImpl extends MageObjectImpl implements Card { Constructor con = clazz.getConstructor(UUID.class, CardSetInfo.class); card = (Card) con.newInstance(null, setInfo); } - card.build(); return card; } catch (Exception e) { logger.fatal("Error loading card: " + clazz.getCanonicalName(), e); @@ -597,10 +596,6 @@ public abstract class CardImpl extends MageObjectImpl implements Card { return splitCard; } - @Override - public void build() { - } - @Override public boolean getUsesVariousArt() { return usesVariousArt; diff --git a/Mage/src/main/java/mage/filter/common/FilterArtifactOrEnchantmentPermanent.java b/Mage/src/main/java/mage/filter/common/FilterArtifactOrEnchantmentPermanent.java index 0a7503c2d4f..82f88c6609f 100644 --- a/Mage/src/main/java/mage/filter/common/FilterArtifactOrEnchantmentPermanent.java +++ b/Mage/src/main/java/mage/filter/common/FilterArtifactOrEnchantmentPermanent.java @@ -44,7 +44,7 @@ public class FilterArtifactOrEnchantmentPermanent extends FilterPermanent { public FilterArtifactOrEnchantmentPermanent(String name) { super(name); - this.add(Predicates.or(new CardTypePredicate(CardType.ARTIFACT),new CardTypePredicate(CardType.ENCHANTMENT))); + this.add(Predicates.or(new CardTypePredicate(CardType.ARTIFACT), new CardTypePredicate(CardType.ENCHANTMENT))); } public FilterArtifactOrEnchantmentPermanent(final FilterArtifactOrEnchantmentPermanent filter) { diff --git a/Mage/src/main/java/mage/filter/common/FilterLandPermanent.java b/Mage/src/main/java/mage/filter/common/FilterLandPermanent.java index 1fa06da6f18..3ce9089d11c 100644 --- a/Mage/src/main/java/mage/filter/common/FilterLandPermanent.java +++ b/Mage/src/main/java/mage/filter/common/FilterLandPermanent.java @@ -30,8 +30,10 @@ package mage.filter.common; import mage.constants.CardType; import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -53,6 +55,18 @@ public class FilterLandPermanent extends FilterPermanent { this.add(new CardTypePredicate(CardType.LAND)); this.add(new SubtypePredicate(subtype)); } + + public static FilterLandPermanent nonbasicLand() { + FilterLandPermanent filter = new FilterLandPermanent("nonbasic land"); + filter.add(Predicates.not(new SupertypePredicate("Basic"))); + return filter; + } + + public static FilterLandPermanent nonbasicLands() { + FilterLandPermanent filter = new FilterLandPermanent("nonbasic lands"); + filter.add(Predicates.not(new SupertypePredicate("Basic"))); + return filter; + } public FilterLandPermanent(final FilterLandPermanent filter) { super(filter); diff --git a/Mage/src/main/java/mage/game/stack/Spell.java b/Mage/src/main/java/mage/game/stack/Spell.java index cc9b47a99e3..db9ef64e6c2 100644 --- a/Mage/src/main/java/mage/game/stack/Spell.java +++ b/Mage/src/main/java/mage/game/stack/Spell.java @@ -840,10 +840,6 @@ public class Spell extends StackObjImpl implements Card { return isCopiedSpell(); } - @Override - public void build() { - } - @Override public Counters getCounters(Game game) { return card.getCounters(game); diff --git a/Mage/src/main/java/mage/target/common/TargetArtifactPermanent.java b/Mage/src/main/java/mage/target/common/TargetArtifactPermanent.java index 7fefecb1b5c..3fcf27588d0 100644 --- a/Mage/src/main/java/mage/target/common/TargetArtifactPermanent.java +++ b/Mage/src/main/java/mage/target/common/TargetArtifactPermanent.java @@ -55,7 +55,6 @@ public class TargetArtifactPermanent extends TargetPermanent { public TargetArtifactPermanent(int minNumTargets, int maxNumTargets, FilterArtifactPermanent filter, boolean notTarget) { super(minNumTargets, maxNumTargets, filter, notTarget); - this.targetName = filter.getMessage(); } public TargetArtifactPermanent(final TargetArtifactPermanent target) { diff --git a/Mage/src/main/java/mage/target/common/TargetAttackingCreature.java b/Mage/src/main/java/mage/target/common/TargetAttackingCreature.java index 3bf1b0f528b..bb977716148 100644 --- a/Mage/src/main/java/mage/target/common/TargetAttackingCreature.java +++ b/Mage/src/main/java/mage/target/common/TargetAttackingCreature.java @@ -47,7 +47,6 @@ public class TargetAttackingCreature extends TargetPermanent { public TargetAttackingCreature(int minNumTargets, int maxNumTargets, FilterAttackingCreature filter, boolean notTarget) { super(minNumTargets, maxNumTargets, filter, notTarget); - this.targetName = filter.getMessage(); } public TargetAttackingCreature(final TargetAttackingCreature target) { diff --git a/Mage/src/main/java/mage/target/common/TargetAttackingOrBlockingCreature.java b/Mage/src/main/java/mage/target/common/TargetAttackingOrBlockingCreature.java index 8906311fd5d..c3586364e89 100644 --- a/Mage/src/main/java/mage/target/common/TargetAttackingOrBlockingCreature.java +++ b/Mage/src/main/java/mage/target/common/TargetAttackingOrBlockingCreature.java @@ -47,7 +47,6 @@ public class TargetAttackingOrBlockingCreature extends TargetPermanent { public TargetAttackingOrBlockingCreature(int minNumTargets, int maxNumTargets, FilterAttackingOrBlockingCreature filter, boolean notTarget) { super(minNumTargets, maxNumTargets, filter, notTarget); - this.targetName = filter.getMessage(); } public TargetAttackingOrBlockingCreature(final TargetAttackingOrBlockingCreature target) { diff --git a/Mage/src/main/java/mage/target/common/TargetCardInASingleGraveyard.java b/Mage/src/main/java/mage/target/common/TargetCardInASingleGraveyard.java index eed673cb5a3..6d97c046eb2 100644 --- a/Mage/src/main/java/mage/target/common/TargetCardInASingleGraveyard.java +++ b/Mage/src/main/java/mage/target/common/TargetCardInASingleGraveyard.java @@ -47,7 +47,6 @@ public class TargetCardInASingleGraveyard extends TargetCard { public TargetCardInASingleGraveyard(int minNumTargets, int maxNumTargets, FilterCard filter) { super(minNumTargets, maxNumTargets, Zone.GRAVEYARD, filter); - this.targetName = filter.getMessage(); } public TargetCardInASingleGraveyard(final TargetCardInASingleGraveyard target) { diff --git a/Mage/src/main/java/mage/target/common/TargetCardInExile.java b/Mage/src/main/java/mage/target/common/TargetCardInExile.java index 7b1d4791289..7867f8729c5 100644 --- a/Mage/src/main/java/mage/target/common/TargetCardInExile.java +++ b/Mage/src/main/java/mage/target/common/TargetCardInExile.java @@ -73,7 +73,6 @@ public class TargetCardInExile extends TargetCard { } else { this.allExileZones = allExileZones; } - this.targetName = filter.getMessage(); } public TargetCardInExile(final TargetCardInExile target) { diff --git a/Mage/src/main/java/mage/target/common/TargetCardInGraveyard.java b/Mage/src/main/java/mage/target/common/TargetCardInGraveyard.java index d89d6a708be..9b6ea9694bc 100644 --- a/Mage/src/main/java/mage/target/common/TargetCardInGraveyard.java +++ b/Mage/src/main/java/mage/target/common/TargetCardInGraveyard.java @@ -56,7 +56,6 @@ public class TargetCardInGraveyard extends TargetCard { public TargetCardInGraveyard(int minNumTargets, int maxNumTargets, FilterCard filter) { super(minNumTargets, maxNumTargets, Zone.GRAVEYARD, filter); - this.targetName = filter.getMessage(); } public TargetCardInGraveyard(final TargetCardInGraveyard target) { diff --git a/Mage/src/main/java/mage/target/common/TargetCardInHand.java b/Mage/src/main/java/mage/target/common/TargetCardInHand.java index 4d990b8eb8a..179764de7cc 100644 --- a/Mage/src/main/java/mage/target/common/TargetCardInHand.java +++ b/Mage/src/main/java/mage/target/common/TargetCardInHand.java @@ -60,7 +60,6 @@ public class TargetCardInHand extends TargetCard { public TargetCardInHand(int minNumTargets, int maxNumTargets, FilterCard filter) { super(minNumTargets, maxNumTargets, Zone.HAND, filter); - this.targetName = filter.getMessage(); } public TargetCardInHand(final TargetCardInHand target) { diff --git a/Mage/src/main/java/mage/target/common/TargetCardInOpponentsGraveyard.java b/Mage/src/main/java/mage/target/common/TargetCardInOpponentsGraveyard.java index f1190afb253..7358fa163be 100644 --- a/Mage/src/main/java/mage/target/common/TargetCardInOpponentsGraveyard.java +++ b/Mage/src/main/java/mage/target/common/TargetCardInOpponentsGraveyard.java @@ -26,7 +26,6 @@ public class TargetCardInOpponentsGraveyard extends TargetCard { public TargetCardInOpponentsGraveyard(int minNumTargets, int maxNumTargets, FilterCard filter, boolean allFromOneOpponent) { super(minNumTargets, maxNumTargets, Zone.GRAVEYARD, filter); - this.targetName = filter.getMessage(); this.allFromOneOpponent = allFromOneOpponent; } diff --git a/Mage/src/main/java/mage/target/common/TargetCardInYourGraveyard.java b/Mage/src/main/java/mage/target/common/TargetCardInYourGraveyard.java index de6b3863873..f93b28dff14 100644 --- a/Mage/src/main/java/mage/target/common/TargetCardInYourGraveyard.java +++ b/Mage/src/main/java/mage/target/common/TargetCardInYourGraveyard.java @@ -60,7 +60,6 @@ public class TargetCardInYourGraveyard extends TargetCard { public TargetCardInYourGraveyard(int minNumTargets, int maxNumTargets, FilterCard filter) { super(minNumTargets, maxNumTargets, Zone.GRAVEYARD, filter); - this.targetName = filter.getMessage(); } public TargetCardInYourGraveyard(final TargetCardInYourGraveyard target) { diff --git a/Mage/src/main/java/mage/target/common/TargetControlledCreaturePermanent.java b/Mage/src/main/java/mage/target/common/TargetControlledCreaturePermanent.java index 2883f3e1e19..b061689e510 100644 --- a/Mage/src/main/java/mage/target/common/TargetControlledCreaturePermanent.java +++ b/Mage/src/main/java/mage/target/common/TargetControlledCreaturePermanent.java @@ -53,7 +53,6 @@ public class TargetControlledCreaturePermanent extends TargetControlledPermanent public TargetControlledCreaturePermanent(int minNumTargets, int maxNumTargets, FilterControlledCreaturePermanent filter, boolean notTarget) { super(minNumTargets, maxNumTargets, filter, notTarget); - this.targetName = filter.getMessage(); } public TargetControlledCreaturePermanent(final TargetControlledCreaturePermanent target) { diff --git a/Mage/src/main/java/mage/target/common/TargetControlledPermanent.java b/Mage/src/main/java/mage/target/common/TargetControlledPermanent.java index a7973379eb5..5a21d533193 100644 --- a/Mage/src/main/java/mage/target/common/TargetControlledPermanent.java +++ b/Mage/src/main/java/mage/target/common/TargetControlledPermanent.java @@ -51,7 +51,6 @@ public class TargetControlledPermanent extends TargetPermanent { public TargetControlledPermanent(int minNumTargets, int maxNumTargets, FilterControlledPermanent filter, boolean notTarget) { super(minNumTargets, maxNumTargets, filter, notTarget); - this.targetName = filter.getMessage(); } public TargetControlledPermanent(final TargetControlledPermanent target) { diff --git a/Mage/src/main/java/mage/target/common/TargetCreatureOrPlaneswalker.java b/Mage/src/main/java/mage/target/common/TargetCreatureOrPlaneswalker.java index c075c54d4fa..2dd2ecc89ba 100644 --- a/Mage/src/main/java/mage/target/common/TargetCreatureOrPlaneswalker.java +++ b/Mage/src/main/java/mage/target/common/TargetCreatureOrPlaneswalker.java @@ -46,7 +46,6 @@ public class TargetCreatureOrPlaneswalker extends TargetPermanent { public TargetCreatureOrPlaneswalker(int minNumTargets, int maxNumTargets, FilterCreatureOrPlaneswalkerPermanent filter, boolean notTarget) { super(minNumTargets, maxNumTargets, filter, notTarget); - this.targetName = filter.getMessage(); } public TargetCreatureOrPlaneswalker(final TargetCreatureOrPlaneswalker target) { diff --git a/Mage/src/main/java/mage/target/common/TargetCreaturePermanent.java b/Mage/src/main/java/mage/target/common/TargetCreaturePermanent.java index 46a9753bb9f..c842fdce4dd 100644 --- a/Mage/src/main/java/mage/target/common/TargetCreaturePermanent.java +++ b/Mage/src/main/java/mage/target/common/TargetCreaturePermanent.java @@ -55,7 +55,6 @@ public class TargetCreaturePermanent extends TargetPermanent { public TargetCreaturePermanent(int minNumTargets, int maxNumTargets, FilterCreaturePermanent filter, boolean notTarget) { super(minNumTargets, maxNumTargets, filter, notTarget); - this.targetName = filter.getMessage(); } public TargetCreaturePermanent(final TargetCreaturePermanent target) { diff --git a/Mage/src/main/java/mage/target/common/TargetEnchantmentPermanent.java b/Mage/src/main/java/mage/target/common/TargetEnchantmentPermanent.java index 0f9796f8529..35b70f0b07d 100644 --- a/Mage/src/main/java/mage/target/common/TargetEnchantmentPermanent.java +++ b/Mage/src/main/java/mage/target/common/TargetEnchantmentPermanent.java @@ -51,7 +51,6 @@ public class TargetEnchantmentPermanent extends TargetPermanent { public TargetEnchantmentPermanent(int minNumTargets, int maxNumTargets, FilterEnchantmentPermanent filter, boolean notTarget) { super(minNumTargets, maxNumTargets, filter, notTarget); - this.targetName = filter.getMessage(); } public TargetEnchantmentPermanent(final TargetEnchantmentPermanent target) { diff --git a/Mage/src/main/java/mage/target/common/TargetLandPermanent.java b/Mage/src/main/java/mage/target/common/TargetLandPermanent.java index 0f7231b3b74..6ed2f70fc34 100644 --- a/Mage/src/main/java/mage/target/common/TargetLandPermanent.java +++ b/Mage/src/main/java/mage/target/common/TargetLandPermanent.java @@ -51,7 +51,6 @@ public class TargetLandPermanent extends TargetPermanent { public TargetLandPermanent(int minNumTargets, int maxNumTargets, FilterLandPermanent filter, boolean notTarget) { super(minNumTargets, maxNumTargets, filter, notTarget); - this.targetName = filter.getMessage(); } public TargetLandPermanent(final TargetLandPermanent target) { diff --git a/Mage/src/main/java/mage/target/common/TargetNonlandPermanent.java b/Mage/src/main/java/mage/target/common/TargetNonlandPermanent.java index 2eb77d0c20c..ad9d65372e0 100644 --- a/Mage/src/main/java/mage/target/common/TargetNonlandPermanent.java +++ b/Mage/src/main/java/mage/target/common/TargetNonlandPermanent.java @@ -55,7 +55,6 @@ public class TargetNonlandPermanent extends TargetPermanent { public TargetNonlandPermanent(int minNumTargets, int maxNumTargets, FilterNonlandPermanent filter, boolean notTarget) { super(minNumTargets, maxNumTargets, filter, notTarget); - this.targetName = filter.getMessage(); } public TargetNonlandPermanent(final TargetNonlandPermanent target) { diff --git a/Mage/src/main/java/mage/target/common/TargetOpponentsChoicePermanent.java b/Mage/src/main/java/mage/target/common/TargetOpponentsChoicePermanent.java index 8169667f3b4..b9db4fdccc8 100644 --- a/Mage/src/main/java/mage/target/common/TargetOpponentsChoicePermanent.java +++ b/Mage/src/main/java/mage/target/common/TargetOpponentsChoicePermanent.java @@ -25,12 +25,10 @@ public class TargetOpponentsChoicePermanent extends TargetPermanent { public TargetOpponentsChoicePermanent(FilterPermanent filter) { super(1, 1, filter, false); - this.targetName = filter.getMessage(); } public TargetOpponentsChoicePermanent(int minNumTargets, int maxNumTargets, FilterPermanent filter, boolean notTarget, boolean dontTargetPlayer) { super(minNumTargets, maxNumTargets, filter, notTarget); - this.targetName = filter.getMessage(); this.dontTargetPlayer = dontTargetPlayer; } diff --git a/Mage/src/main/java/mage/target/common/TargetSpellOrPermanent.java b/Mage/src/main/java/mage/target/common/TargetSpellOrPermanent.java index fea01667ebc..cc03cc5a0f0 100644 --- a/Mage/src/main/java/mage/target/common/TargetSpellOrPermanent.java +++ b/Mage/src/main/java/mage/target/common/TargetSpellOrPermanent.java @@ -75,7 +75,6 @@ public class TargetSpellOrPermanent extends TargetImpl { this.minNumberOfTargets = minNumTargets; this.maxNumberOfTargets = maxNumTargets; this.zone = Zone.ALL; - this.targetName = filter.getMessage(); this.notTarget = notTarget; this.filter = filter; this.targetName = filter.getMessage();