From 91d320eed2756a4e0cb4c27c1204f87b32c2492f Mon Sep 17 00:00:00 2001 From: North Date: Wed, 11 Jul 2012 00:17:10 +0300 Subject: [PATCH] [filters] Replaced Supertype condition with Predicate --- .../sets/alarareborn/FieldmistBorderpost.java | 6 ++--- .../sets/alarareborn/FirewildBorderpost.java | 6 ++--- .../sets/alarareborn/MistveinBorderpost.java | 4 ++-- .../sets/alarareborn/VeinfireBorderpost.java | 6 ++--- .../sets/alarareborn/WildfieldBorderpost.java | 6 ++--- .../betrayersofkamigawa/DayOfDestiny.java | 5 ++-- .../sets/betrayersofkamigawa/HerosDemise.java | 5 ++-- .../championsofkamigawa/BlindWithAnger.java | 7 +++--- .../championsofkamigawa/EiganjoCastle.java | 5 ++-- .../championsofkamigawa/HonorWornShaku.java | 5 ++-- .../championsofkamigawa/KitsuneHealer.java | 5 ++-- .../championsofkamigawa/KondasBanner.java | 5 ++-- .../championsofkamigawa/KondasHatamoto.java | 4 ++-- .../MinamoSchoolAtWatersEdge.java | 5 ++-- .../OkinaTempleToTheGrandfathers.java | 5 ++-- .../ShinkaTheBloodsoakedKeep.java | 5 ++-- .../ShizoDeathsStorehouse.java | 5 ++-- .../championsofkamigawa/TenzaGodosMaul.java | 4 ++-- .../sets/championsofkamigawa/TimeOfNeed.java | 6 ++--- .../championsofkamigawa/ZoZuThePunisher.java | 5 ++-- .../mage/sets/innistrad/GallowsWarden.java | 2 -- .../mage/sets/magic2010/GoblinChieftain.java | 2 -- .../sets/newphyrexia/SurgicalExtraction.java | 5 ++-- .../saviorsofkamigawa/KashiTribeElite.java | 4 ++-- .../RekiTheHistoryOfKamigawa.java | 5 ++-- .../mage/sets/shardsofalara/BantPanorama.java | 3 ++- .../sets/shardsofalara/EsperPanorama.java | 3 ++- .../sets/shardsofalara/GrixisPanorama.java | 3 ++- .../mage/sets/shardsofalara/JundPanorama.java | 3 ++- .../mage/sets/shardsofalara/NayaPanorama.java | 3 ++- .../src/mage/sets/tempest/Earthcraft.java | 4 ++-- .../src/mage/sets/tempest/Wasteland.java | 8 +++---- .../src/mage/sets/worldwake/HammerOfRuin.java | 1 - .../src/mage/sets/worldwake/PilgrimsEye.java | 3 ++- .../mage/sets/zendikar/TrailblazersBoots.java | 4 +++- Mage/src/mage/filter/FilterObject.java | 23 ------------------- .../filter/common/FilterBasicLandCard.java | 4 ++-- .../common/FilterLegendaryPermanent.java | 3 ++- ...Supertype.java => SupertypePredicate.java} | 4 ++-- .../target/common/TargetBasicLandCard.java | 4 ++-- 40 files changed, 81 insertions(+), 114 deletions(-) rename Mage/src/mage/filter/predicate/mageobject/{Supertype.java => SupertypePredicate.java} (91%) diff --git a/Mage.Sets/src/mage/sets/alarareborn/FieldmistBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/FieldmistBorderpost.java index 54f26811072..cd8ac7fe055 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/FieldmistBorderpost.java +++ b/Mage.Sets/src/mage/sets/alarareborn/FieldmistBorderpost.java @@ -42,6 +42,7 @@ import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -49,14 +50,13 @@ import mage.target.common.TargetControlledPermanent; * @author Loki */ public class FieldmistBorderpost extends CardImpl { - private static FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); private static final String COST_DESCRIPTION = "pay {1} and return a basic land you control to its owner's hand"; private static final String ALTERNATIVE_COST_DESCRIPTION = "You may pay {1} and return a basic land you control to its owner's hand rather than pay Fieldmist Borderpost's mana cost"; static { - filter.getSupertype().add("Basic"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Basic")); filter.getCardType().add(CardType.LAND); filter.setScopeCardType(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/FirewildBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/FirewildBorderpost.java index b54542044e1..d085096ece3 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/FirewildBorderpost.java +++ b/Mage.Sets/src/mage/sets/alarareborn/FirewildBorderpost.java @@ -42,6 +42,7 @@ import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -49,14 +50,13 @@ import mage.target.common.TargetControlledPermanent; * @author Loki */ public class FirewildBorderpost extends CardImpl { - private static FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); private static final String COST_DESCRIPTION = "pay {1} and return a basic land you control to its owner's hand"; private static final String ALTERNATIVE_COST_DESCRIPTION = "You may pay {1} and return a basic land you control to its owner's hand rather than pay Firewild Borderpost's mana cost"; static { - filter.getSupertype().add("Basic"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Basic")); filter.getCardType().add(CardType.LAND); filter.setScopeCardType(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/MistveinBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/MistveinBorderpost.java index c61d66fa0e1..898cd607a97 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/MistveinBorderpost.java +++ b/Mage.Sets/src/mage/sets/alarareborn/MistveinBorderpost.java @@ -42,6 +42,7 @@ import mage.abilities.mana.BlueManaAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -55,8 +56,7 @@ public class MistveinBorderpost extends CardImpl { private static final String ALTERNATIVE_COST_DESCRIPTION = "You may pay {1} and return a basic land you control to its owner's hand rather than pay Mistvein Borderpos's mana cost"; static { - filter.getSupertype().add("Basic"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Basic")); filter.getCardType().add(CardType.LAND); filter.setScopeCardType(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/VeinfireBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/VeinfireBorderpost.java index f5c6737bb04..bc69e67a289 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/VeinfireBorderpost.java +++ b/Mage.Sets/src/mage/sets/alarareborn/VeinfireBorderpost.java @@ -42,6 +42,7 @@ import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -49,14 +50,13 @@ import mage.target.common.TargetControlledPermanent; * @author Loki */ public class VeinfireBorderpost extends CardImpl { - private static FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); private static final String COST_DESCRIPTION = "pay {1} and return a basic land you control to its owner's hand"; private static final String ALTERNATIVE_COST_DESCRIPTION = "You may pay {1} and return a basic land you control to its owner's hand rather than pay Veinfire Borderpost's mana cost"; static { - filter.getSupertype().add("Basic"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Basic")); filter.getCardType().add(CardType.LAND); filter.setScopeCardType(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/alarareborn/WildfieldBorderpost.java b/Mage.Sets/src/mage/sets/alarareborn/WildfieldBorderpost.java index 1e346044c33..63f25220689 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/WildfieldBorderpost.java +++ b/Mage.Sets/src/mage/sets/alarareborn/WildfieldBorderpost.java @@ -42,6 +42,7 @@ import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -49,14 +50,13 @@ import mage.target.common.TargetControlledPermanent; * @author Loki */ public class WildfieldBorderpost extends CardImpl { - private static FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); + private static final FilterControlledPermanent filter = new FilterControlledPermanent("basic land"); private static final String COST_DESCRIPTION = "pay {1} and return a basic land you control to its owner's hand"; private static final String ALTERNATIVE_COST_DESCRIPTION = "You may pay {1} and return a basic land you control to its owner's hand rather than pay Wildfield Borderpost's mana cost"; static { - filter.getSupertype().add("Basic"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Basic")); filter.getCardType().add(CardType.LAND); filter.setScopeCardType(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/DayOfDestiny.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/DayOfDestiny.java index 79dfe6ae2f1..1d6b364f8b9 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/DayOfDestiny.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/DayOfDestiny.java @@ -35,8 +35,8 @@ import mage.Constants.Rarity; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -47,8 +47,7 @@ public class DayOfDestiny extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Legendary creatures"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public DayOfDestiny(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/HerosDemise.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/HerosDemise.java index dc10152e9b7..2e200daf6d8 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/HerosDemise.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/HerosDemise.java @@ -32,8 +32,8 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCreaturePermanent; /** @@ -45,8 +45,7 @@ public class HerosDemise extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public HerosDemise(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/BlindWithAnger.java b/Mage.Sets/src/mage/sets/championsofkamigawa/BlindWithAnger.java index d0a614f4091..eb2c20f1baf 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/BlindWithAnger.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/BlindWithAnger.java @@ -38,8 +38,9 @@ import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.effects.common.continious.GainControlTargetEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.Target; import mage.target.common.TargetCreaturePermanent; @@ -51,9 +52,7 @@ public class BlindWithAnger extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("nonlegendary creature"); static { - filter.getSupertype().add("Legendary"); - filter.setNotSupertype(true); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(Predicates.not(new SupertypePredicate("Legendary"))); } public BlindWithAnger(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/EiganjoCastle.java b/Mage.Sets/src/mage/sets/championsofkamigawa/EiganjoCastle.java index ebc20852722..df597363293 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/EiganjoCastle.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/EiganjoCastle.java @@ -40,8 +40,8 @@ import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.PreventDamageTargetEffect; import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.TargetPermanent; /** @@ -52,8 +52,7 @@ public class EiganjoCastle extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public EiganjoCastle(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/HonorWornShaku.java b/Mage.Sets/src/mage/sets/championsofkamigawa/HonorWornShaku.java index 0c66b2b8ca8..69331e6c29e 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/HonorWornShaku.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/HonorWornShaku.java @@ -39,8 +39,8 @@ import mage.abilities.costs.common.TapTargetCost; import mage.abilities.effects.common.UntapSourceEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledPermanent; /** @@ -53,8 +53,7 @@ public class HonorWornShaku extends CardImpl { static { filter.setTapped(false); filter.setUseTapped(true); - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public HonorWornShaku(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/KitsuneHealer.java b/Mage.Sets/src/mage/sets/championsofkamigawa/KitsuneHealer.java index 6050fb5dccb..caad94420ed 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/KitsuneHealer.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/KitsuneHealer.java @@ -40,8 +40,8 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.PreventionEffectImpl; import mage.abilities.effects.common.PreventDamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.target.common.TargetCreatureOrPlayer; @@ -55,8 +55,7 @@ public class KitsuneHealer extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public KitsuneHealer(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/KondasBanner.java b/Mage.Sets/src/mage/sets/championsofkamigawa/KondasBanner.java index da3aaff0fcf..bad325b3333 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/KondasBanner.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/KondasBanner.java @@ -40,9 +40,9 @@ import mage.abilities.effects.common.continious.BoostAllEffect; import mage.abilities.keyword.ChangelingAbility; import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.common.TargetControlledCreaturePermanent; @@ -58,8 +58,7 @@ public class KondasBanner extends CardImpl { private final static FilterControlledCreaturePermanent legendaryFilter = new FilterControlledCreaturePermanent("Legendary creatures"); static { - legendaryFilter.getSupertype().add("Legendary"); - legendaryFilter.setScopeSupertype(Filter.ComparisonScope.Any); + legendaryFilter.add(new SupertypePredicate("Legendary")); } public KondasBanner(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/KondasHatamoto.java b/Mage.Sets/src/mage/sets/championsofkamigawa/KondasHatamoto.java index a70459e9980..156b05d871e 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/KondasHatamoto.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/KondasHatamoto.java @@ -43,6 +43,7 @@ import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -55,8 +56,7 @@ public class KondasHatamoto extends CardImpl{ private static final String rule2 = "As long as you control a legendary Samurai, {this} has vigilance"; static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); filter.getSubtype().add("Samurai"); filter.setScopeSubtype(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/MinamoSchoolAtWatersEdge.java b/Mage.Sets/src/mage/sets/championsofkamigawa/MinamoSchoolAtWatersEdge.java index 592522e99b4..6370fd16ae2 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/MinamoSchoolAtWatersEdge.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/MinamoSchoolAtWatersEdge.java @@ -40,8 +40,8 @@ import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.mana.BlueManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.TargetPermanent; /** @@ -53,8 +53,7 @@ public class MinamoSchoolAtWatersEdge extends CardImpl private final static FilterPermanent filter = new FilterPermanent("legendary permanent"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/OkinaTempleToTheGrandfathers.java b/Mage.Sets/src/mage/sets/championsofkamigawa/OkinaTempleToTheGrandfathers.java index 9e1c1dfb737..3b187152655 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/OkinaTempleToTheGrandfathers.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/OkinaTempleToTheGrandfathers.java @@ -40,8 +40,8 @@ import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.continious.BoostTargetEffect; import mage.abilities.mana.GreenManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.TargetPermanent; /** @@ -52,8 +52,7 @@ public class OkinaTempleToTheGrandfathers extends CardImpl private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public ShinkaTheBloodsoakedKeep(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/ShizoDeathsStorehouse.java b/Mage.Sets/src/mage/sets/championsofkamigawa/ShizoDeathsStorehouse.java index 0ebb4681ef0..4adceae0c12 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/ShizoDeathsStorehouse.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/ShizoDeathsStorehouse.java @@ -41,8 +41,8 @@ import mage.abilities.effects.common.continious.GainAbilityTargetEffect; import mage.abilities.keyword.FearAbility; import mage.abilities.mana.BlackManaAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.TargetPermanent; /** @@ -53,8 +53,7 @@ public class ShizoDeathsStorehouse extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("legendary creature"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public ShizoDeathsStorehouse(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/TenzaGodosMaul.java b/Mage.Sets/src/mage/sets/championsofkamigawa/TenzaGodosMaul.java index 54fb7c589cd..9ed66d7f53d 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/TenzaGodosMaul.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/TenzaGodosMaul.java @@ -46,6 +46,7 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledCreaturePermanent; /** @@ -62,8 +63,7 @@ public class TenzaGodosMaul extends CardImpl { private final static FilterCreaturePermanent redFilter = new FilterCreaturePermanent("red"); static { - legendaryFilter.getSupertype().add("Legendary"); - legendaryFilter.setScopeSupertype(Filter.ComparisonScope.Any); + legendaryFilter.add(new SupertypePredicate("Legendary")); redFilter.getColor().setRed(true); redFilter.setUseColor(true); redFilter.setScopeColor(Filter.ComparisonScope.Any); diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/TimeOfNeed.java b/Mage.Sets/src/mage/sets/championsofkamigawa/TimeOfNeed.java index a5de20ec183..ce02a0e2b38 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/TimeOfNeed.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/TimeOfNeed.java @@ -34,8 +34,8 @@ import mage.Constants.CardType; import mage.Constants.Rarity; import mage.abilities.effects.common.search.SearchLibraryRevealPutInHandEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -47,9 +47,7 @@ public class TimeOfNeed extends CardImpl { static { filter.getCardType().add(CardType.CREATURE); - filter.getSupertype().add("Legendary"); - filter.setScopeCardType(Filter.ComparisonScope.Any); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public TimeOfNeed(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/ZoZuThePunisher.java b/Mage.Sets/src/mage/sets/championsofkamigawa/ZoZuThePunisher.java index bbfd32ad3b2..268b0a95ed6 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/ZoZuThePunisher.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/ZoZuThePunisher.java @@ -37,8 +37,8 @@ import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; @@ -55,8 +55,7 @@ public class ZoZuThePunisher extends CardImpl { private final static FilterCard filter = new FilterCard("legendary spell"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public ZoZuThePunisher(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/innistrad/GallowsWarden.java b/Mage.Sets/src/mage/sets/innistrad/GallowsWarden.java index 5e8d989ea0b..08ce6d5641f 100644 --- a/Mage.Sets/src/mage/sets/innistrad/GallowsWarden.java +++ b/Mage.Sets/src/mage/sets/innistrad/GallowsWarden.java @@ -35,7 +35,6 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; import java.util.UUID; @@ -49,7 +48,6 @@ public class GallowsWarden extends CardImpl { static { filter.getSubtype().add("Spirit"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); } public GallowsWarden(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/GoblinChieftain.java b/Mage.Sets/src/mage/sets/magic2010/GoblinChieftain.java index c7d07e536cf..d5beb5f1d9f 100644 --- a/Mage.Sets/src/mage/sets/magic2010/GoblinChieftain.java +++ b/Mage.Sets/src/mage/sets/magic2010/GoblinChieftain.java @@ -39,7 +39,6 @@ import mage.abilities.effects.common.continious.BoostControlledEffect; import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; /** @@ -52,7 +51,6 @@ public class GoblinChieftain extends CardImpl { static { filter.getSubtype().add("Goblin"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); } public GoblinChieftain(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/SurgicalExtraction.java b/Mage.Sets/src/mage/sets/newphyrexia/SurgicalExtraction.java index 43f5ebd262a..b285f874d4a 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/SurgicalExtraction.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/SurgicalExtraction.java @@ -40,7 +40,9 @@ import mage.cards.CardImpl; import mage.cards.Cards; import mage.cards.CardsImpl; import mage.filter.FilterCard; +import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.NamePredicate; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetCardInGraveyard; @@ -56,8 +58,7 @@ public class SurgicalExtraction extends CardImpl { private static final FilterCard filter = new FilterCard("card in a graveyard other than a basic land card"); static { - filter.getSupertype().add("Basic"); - filter.setNotSupertype(true); + filter.add(Predicates.not(new SupertypePredicate("Basic"))); } public SurgicalExtraction(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/KashiTribeElite.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/KashiTribeElite.java index 6b5a0b9607e..db31a3a8e64 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/KashiTribeElite.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/KashiTribeElite.java @@ -42,6 +42,7 @@ import mage.abilities.keyword.ShroudAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -52,8 +53,7 @@ public class KashiTribeElite extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Legendary Snakes"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); filter.getSubtype().add("Snake"); filter.setScopeSubtype(Filter.ComparisonScope.Any); } diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/RekiTheHistoryOfKamigawa.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/RekiTheHistoryOfKamigawa.java index 8293e91eeb9..1c46b17f230 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/RekiTheHistoryOfKamigawa.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/RekiTheHistoryOfKamigawa.java @@ -34,8 +34,8 @@ import mage.MageInt; import mage.abilities.common.SpellCastTriggeredAbility; import mage.abilities.effects.common.DrawCardControllerEffect; import mage.cards.CardImpl; -import mage.filter.Filter; import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -46,8 +46,7 @@ public class RekiTheHistoryOfKamigawa extends CardImpl private final static FilterSpell filter = new FilterSpell("legendary spell"); static { - filter.getSupertype().add("Legendary"); - filter.setScopeSupertype(Filter.ComparisonScope.Any); + filter.add(new SupertypePredicate("Legendary")); } public RekiTheHistoryOfKamigawa(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/shardsofalara/BantPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/BantPanorama.java index 185a5bbb79e..fd05a5c92ec 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/BantPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/BantPanorama.java @@ -42,6 +42,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -54,7 +55,7 @@ public class BantPanorama extends CardImpl { static { filter.getCardType().add(CardType.LAND); - filter.getSupertype().add("Basic"); + filter.add(new SupertypePredicate("Basic")); filter.getSubtype().add("Forest"); filter.getSubtype().add("Plains"); filter.getSubtype().add("Island"); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/EsperPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/EsperPanorama.java index c39a4165db6..6a5e55cb789 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/EsperPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/EsperPanorama.java @@ -42,6 +42,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -54,7 +55,7 @@ public class EsperPanorama extends CardImpl { static { filter.getCardType().add(CardType.LAND); - filter.getSupertype().add("Basic"); + filter.add(new SupertypePredicate("Basic")); filter.getSubtype().add("Plains"); filter.getSubtype().add("Island"); filter.getSubtype().add("Swamp"); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/GrixisPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/GrixisPanorama.java index 66d92e307d0..918869453af 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/GrixisPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/GrixisPanorama.java @@ -42,6 +42,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -54,7 +55,7 @@ public class GrixisPanorama extends CardImpl { static { filter.getCardType().add(CardType.LAND); - filter.getSupertype().add("Basic"); + filter.add(new SupertypePredicate("Basic")); filter.getSubtype().add("Island"); filter.getSubtype().add("Swamp"); filter.getSubtype().add("Mountain"); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java index fd869f74648..2f705be1fa6 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/JundPanorama.java @@ -43,6 +43,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -55,7 +56,7 @@ public class JundPanorama extends CardImpl { static { filter.getCardType().add(CardType.LAND); - filter.getSupertype().add("Basic"); + filter.add(new SupertypePredicate("Basic")); filter.getSubtype().add("Swamp"); filter.getSubtype().add("Mountain"); filter.getSubtype().add("Forest"); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/NayaPanorama.java b/Mage.Sets/src/mage/sets/shardsofalara/NayaPanorama.java index dfaa5f94210..265ff508e26 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/NayaPanorama.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/NayaPanorama.java @@ -42,6 +42,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonScope; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetCardInLibrary; /** @@ -54,7 +55,7 @@ public class NayaPanorama extends CardImpl { static { filter.getCardType().add(CardType.LAND); - filter.getSupertype().add("Basic"); + filter.add(new SupertypePredicate("Basic")); filter.getSubtype().add("Mountain"); filter.getSubtype().add("Forest"); filter.getSubtype().add("Plains"); diff --git a/Mage.Sets/src/mage/sets/tempest/Earthcraft.java b/Mage.Sets/src/mage/sets/tempest/Earthcraft.java index ac9438bf5d3..fb4a9cedeb1 100644 --- a/Mage.Sets/src/mage/sets/tempest/Earthcraft.java +++ b/Mage.Sets/src/mage/sets/tempest/Earthcraft.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledPermanent; @@ -58,8 +59,7 @@ public class Earthcraft extends CardImpl { filterCreature.setScopeSubtype(Filter.ComparisonScope.Any); filterLand.getCardType().add(CardType.LAND); filterLand.setScopeCardType(Filter.ComparisonScope.Any); - filterLand.getSupertype().add("Basic"); - filterLand.setScopeSupertype(Filter.ComparisonScope.Any); + filterLand.add(new SupertypePredicate("Basic")); } public Earthcraft(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tempest/Wasteland.java b/Mage.Sets/src/mage/sets/tempest/Wasteland.java index 2ef2d6da8f1..6bbadf590cb 100644 --- a/Mage.Sets/src/mage/sets/tempest/Wasteland.java +++ b/Mage.Sets/src/mage/sets/tempest/Wasteland.java @@ -39,8 +39,9 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; -import mage.filter.common.FilterLandCard; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.common.TargetLandPermanent; /** @@ -48,11 +49,10 @@ import mage.target.common.TargetLandPermanent; * @author Loki */ public class Wasteland extends CardImpl { - private static FilterLandPermanent filter = new FilterLandPermanent("nonbasic land"); + private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic land"); static { - filter.getSupertype().add("Basic"); - filter.setNotSupertype(true); + filter.add(Predicates.not(new SupertypePredicate("Basic"))); } public Wasteland(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/worldwake/HammerOfRuin.java b/Mage.Sets/src/mage/sets/worldwake/HammerOfRuin.java index 6fd97282b9d..29c00495cf9 100644 --- a/Mage.Sets/src/mage/sets/worldwake/HammerOfRuin.java +++ b/Mage.Sets/src/mage/sets/worldwake/HammerOfRuin.java @@ -80,7 +80,6 @@ class HammerOfRuinTriggeredAbility extends TriggeredAbilityImpl { private static final FilterCard filter = new FilterCard("basic land card"); static { - filter.getSupertype().add("Basic"); + filter.add(new SupertypePredicate("Basic")); filter.getCardType().add(CardType.LAND); } diff --git a/Mage.Sets/src/mage/sets/zendikar/TrailblazersBoots.java b/Mage.Sets/src/mage/sets/zendikar/TrailblazersBoots.java index 0a0f88375e6..089a7cae6c6 100644 --- a/Mage.Sets/src/mage/sets/zendikar/TrailblazersBoots.java +++ b/Mage.Sets/src/mage/sets/zendikar/TrailblazersBoots.java @@ -40,6 +40,8 @@ import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.LandwalkAbility; import mage.cards.CardImpl; import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -73,7 +75,7 @@ class NonbasicLandwalkAbility extends LandwalkAbility { private static final FilterLandPermanent filter = new FilterLandPermanent("nonbasic land"); static { - filter.getSupertype().add("Basic"); + filter.add(Predicates.not(new SupertypePredicate("Basic"))); } public NonbasicLandwalkAbility() { diff --git a/Mage/src/mage/filter/FilterObject.java b/Mage/src/mage/filter/FilterObject.java index df5b7990fad..21042647773 100644 --- a/Mage/src/mage/filter/FilterObject.java +++ b/Mage/src/mage/filter/FilterObject.java @@ -61,9 +61,6 @@ public class FilterObject> ex protected List subtype = new ArrayList(); protected ComparisonScope scopeSubtype = ComparisonScope.All; protected boolean notSubtype; - protected List supertype = new ArrayList(); - protected ComparisonScope scopeSupertype = ComparisonScope.Any; - protected boolean notSupertype; /** * Indicates that filter shouldn't match the source. @@ -98,9 +95,6 @@ public class FilterObject> ex this.subtype.addAll(filter.subtype); this.scopeSubtype = filter.scopeSubtype; this.notSubtype = filter.notSubtype; - this.supertype.addAll(filter.supertype); - this.scopeSupertype = filter.scopeSupertype; - this.notSupertype = filter.notSupertype; this.another = filter.another; } @@ -148,11 +142,6 @@ public class FilterObject> ex } } - if (supertype.size() > 0) { - if (!compString.compare(supertype, object.getSupertype(), scopeSupertype, notSupertype)) - return notFilter; - } - if (abilities.size() > 0) { List test = new ArrayList(abilities); for (Ability ability: object.getAbilities()) { @@ -222,18 +211,6 @@ public class FilterObject> ex this.notSubtype = notSubtype; } - public List getSupertype() { - return this.supertype; - } - - public void setScopeSupertype(ComparisonScope scopeSupertype) { - this.scopeSupertype = scopeSupertype; - } - - public void setNotSupertype(boolean notSupertype) { - this.notSupertype = notSupertype; - } - public void setUseColor(boolean useColor) { this.useColor = useColor; } diff --git a/Mage/src/mage/filter/common/FilterBasicLandCard.java b/Mage/src/mage/filter/common/FilterBasicLandCard.java index afa7efa9abe..9a7d3884280 100644 --- a/Mage/src/mage/filter/common/FilterBasicLandCard.java +++ b/Mage/src/mage/filter/common/FilterBasicLandCard.java @@ -30,6 +30,7 @@ package mage.filter.common; import mage.Constants.CardType; import mage.filter.FilterCard; +import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -41,8 +42,7 @@ public class FilterBasicLandCard extends FilterCard { super("basic land card"); this.cardType.add(CardType.LAND); this.setScopeCardType(ComparisonScope.Any); - this.supertype.add("Basic"); - this.setScopeSupertype(ComparisonScope.Any); + this.add(new SupertypePredicate("Basic")); } public FilterBasicLandCard(final FilterBasicLandCard filter) { diff --git a/Mage/src/mage/filter/common/FilterLegendaryPermanent.java b/Mage/src/mage/filter/common/FilterLegendaryPermanent.java index df926611165..b9ccafcdddf 100644 --- a/Mage/src/mage/filter/common/FilterLegendaryPermanent.java +++ b/Mage/src/mage/filter/common/FilterLegendaryPermanent.java @@ -29,6 +29,7 @@ package mage.filter.common; import mage.filter.FilterPermanent; +import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -42,7 +43,7 @@ public class FilterLegendaryPermanent extends FilterPermanent implements Predicate { +public class SupertypePredicate implements Predicate { private final String supertype; - public Supertype(String supertype) { + public SupertypePredicate(String supertype) { this.supertype = supertype; } diff --git a/Mage/src/mage/target/common/TargetBasicLandCard.java b/Mage/src/mage/target/common/TargetBasicLandCard.java index a03fffa7422..eaadb3da4c0 100644 --- a/Mage/src/mage/target/common/TargetBasicLandCard.java +++ b/Mage/src/mage/target/common/TargetBasicLandCard.java @@ -31,6 +31,7 @@ package mage.target.common; import mage.Constants.CardType; import mage.Constants.Zone; import mage.filter.Filter.ComparisonScope; +import mage.filter.predicate.mageobject.SupertypePredicate; import mage.target.TargetCard; /** @@ -41,8 +42,7 @@ public class TargetBasicLandCard extends TargetCard { public TargetBasicLandCard(Zone zone) { super(zone); - filter.getSupertype().add("Basic"); - filter.setScopeSupertype(ComparisonScope.Any); + filter.add(new SupertypePredicate("Basic")); filter.getCardType().add(CardType.LAND); filter.setScopeCardType(ComparisonScope.Any); }