diff --git a/Mage.Sets/src/mage/cards/a/ATST.java b/Mage.Sets/src/mage/cards/a/ATST.java index ff6646cddb5..160ab562cd8 100644 --- a/Mage.Sets/src/mage/cards/a/ATST.java +++ b/Mage.Sets/src/mage/cards/a/ATST.java @@ -34,6 +34,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class ATST extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures"); static { - filter.add(new SubtypePredicate("Trooper")); + filter.add(new SubtypePredicate(SubType.TROOPER)); } public ATST(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/Abolish.java b/Mage.Sets/src/mage/cards/a/Abolish.java index 45bb47ca802..fa283196e44 100644 --- a/Mage.Sets/src/mage/cards/a/Abolish.java +++ b/Mage.Sets/src/mage/cards/a/Abolish.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class Abolish extends CardImpl { private static final FilterCard filterCost = new FilterCard("Plains card"); static { - filterCost.add(new SubtypePredicate("Plains")); + filterCost.add(new SubtypePredicate(SubType.PLAINS)); } public Abolish(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AcademyResearchers.java b/Mage.Sets/src/mage/cards/a/AcademyResearchers.java index e3437097adc..bfb2059ae25 100644 --- a/Mage.Sets/src/mage/cards/a/AcademyResearchers.java +++ b/Mage.Sets/src/mage/cards/a/AcademyResearchers.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -94,7 +95,7 @@ class AcademyResearchersEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { FilterCard filterCardInHand = new FilterCard(); - filterCardInHand.add(new SubtypePredicate("Aura")); + filterCardInHand.add(new SubtypePredicate(SubType.AURA)); Player controller = game.getPlayer(source.getControllerId()); Permanent academyResearchers = game.getPermanent(source.getSourceId()); if (controller != null && academyResearchers != null) { diff --git a/Mage.Sets/src/mage/cards/a/AcidRain.java b/Mage.Sets/src/mage/cards/a/AcidRain.java index ca7bb414e48..5143b3073ed 100644 --- a/Mage.Sets/src/mage/cards/a/AcidRain.java +++ b/Mage.Sets/src/mage/cards/a/AcidRain.java @@ -31,6 +31,7 @@ import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -44,7 +45,7 @@ public class AcidRain extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Forests"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public AcidRain(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AcidWebSpider.java b/Mage.Sets/src/mage/cards/a/AcidWebSpider.java index 478f0647e09..012d4d558ba 100644 --- a/Mage.Sets/src/mage/cards/a/AcidWebSpider.java +++ b/Mage.Sets/src/mage/cards/a/AcidWebSpider.java @@ -36,6 +36,7 @@ import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; @@ -50,7 +51,7 @@ public class AcidWebSpider extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Equipment"); static { - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public AcidWebSpider (UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/ActiveVolcano.java b/Mage.Sets/src/mage/cards/a/ActiveVolcano.java index b260c74dc90..dc69e50387d 100644 --- a/Mage.Sets/src/mage/cards/a/ActiveVolcano.java +++ b/Mage.Sets/src/mage/cards/a/ActiveVolcano.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class ActiveVolcano extends CardImpl { private static final FilterPermanent filterIsland = new FilterPermanent("Island"); static { filterBlue.add(new ColorPredicate(ObjectColor.BLUE)); - filterIsland.add(new SubtypePredicate("Island")); + filterIsland.add(new SubtypePredicate(SubType.ISLAND)); } public ActiveVolcano(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AdmiralAckbar.java b/Mage.Sets/src/mage/cards/a/AdmiralAckbar.java index 2a68d0b34a5..08f02712be5 100644 --- a/Mage.Sets/src/mage/cards/a/AdmiralAckbar.java +++ b/Mage.Sets/src/mage/cards/a/AdmiralAckbar.java @@ -39,10 +39,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.UntapAllControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SuperType; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -58,7 +55,7 @@ public class AdmiralAckbar extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Starship creatures"); static { - filter.add(new SubtypePredicate("Starship")); + filter.add(new SubtypePredicate(SubType.STARSHIP)); } public AdmiralAckbar(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AerialModification.java b/Mage.Sets/src/mage/cards/a/AerialModification.java index b68f29e0dc8..9bf90f8a292 100644 --- a/Mage.Sets/src/mage/cards/a/AerialModification.java +++ b/Mage.Sets/src/mage/cards/a/AerialModification.java @@ -38,10 +38,7 @@ import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AttachmentType; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -60,7 +57,7 @@ public class AerialModification extends CardImpl { static { filter.add(Predicates.or(new CardTypePredicate(CardType.CREATURE), - new SubtypePredicate("Vehicle"))); + new SubtypePredicate(SubType.VEHICLE))); } public AerialModification(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AeronautAdmiral.java b/Mage.Sets/src/mage/cards/a/AeronautAdmiral.java index c055ab8db1c..319ba97a68c 100644 --- a/Mage.Sets/src/mage/cards/a/AeronautAdmiral.java +++ b/Mage.Sets/src/mage/cards/a/AeronautAdmiral.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledArtifactPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class AeronautAdmiral extends CardImpl { private static final FilterControlledArtifactPermanent filter = new FilterControlledArtifactPermanent("Vehicles"); static { - filter.add(new SubtypePredicate("Vehicle")); + filter.add(new SubtypePredicate(SubType.VEHICLE)); } public AeronautAdmiral(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AetherCharge.java b/Mage.Sets/src/mage/cards/a/AetherCharge.java index b95db50cb69..73ba83cbc6a 100644 --- a/Mage.Sets/src/mage/cards/a/AetherCharge.java +++ b/Mage.Sets/src/mage/cards/a/AetherCharge.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -56,7 +57,7 @@ public class AetherCharge extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Beast you control"); static { - filter.add(new SubtypePredicate("Beast")); + filter.add(new SubtypePredicate(SubType.BEAST)); } public AetherCharge(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AetherMeltdown.java b/Mage.Sets/src/mage/cards/a/AetherMeltdown.java index f855c4bfe4a..e0d31d12bd3 100644 --- a/Mage.Sets/src/mage/cards/a/AetherMeltdown.java +++ b/Mage.Sets/src/mage/cards/a/AetherMeltdown.java @@ -38,10 +38,7 @@ import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.FlashAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -59,7 +56,7 @@ public class AetherMeltdown extends CardImpl { private final static FilterPermanent filter = new FilterPermanent("creature or vehicle"); static { - filter.add(Predicates.or(new CardTypePredicate(CardType.CREATURE), new SubtypePredicate("Vehicle"))); + filter.add(Predicates.or(new CardTypePredicate(CardType.CREATURE), new SubtypePredicate(SubType.VEHICLE))); } public AetherMeltdown(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AetherShockwave.java b/Mage.Sets/src/mage/cards/a/AetherShockwave.java index a54e3f076dd..fa7eab64e02 100644 --- a/Mage.Sets/src/mage/cards/a/AetherShockwave.java +++ b/Mage.Sets/src/mage/cards/a/AetherShockwave.java @@ -32,6 +32,7 @@ import mage.abilities.effects.common.TapAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,8 +48,8 @@ public class AetherShockwave extends CardImpl { private static final FilterCreaturePermanent filterSpirit = new FilterCreaturePermanent("Spirits"); private static final FilterCreaturePermanent filterNonSpirit = new FilterCreaturePermanent("non-Spirit creatures"); static { - filterSpirit.add(new SubtypePredicate("Spirit")); - filterNonSpirit.add(Predicates.not(new SubtypePredicate("Spirit"))); + filterSpirit.add(new SubtypePredicate(SubType.SPIRIT)); + filterNonSpirit.add(Predicates.not(new SubtypePredicate(SubType.SPIRIT))); } public AetherShockwave(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AirborneAid.java b/Mage.Sets/src/mage/cards/a/AirborneAid.java index 73b1f416d82..dc2ffd51e04 100644 --- a/Mage.Sets/src/mage/cards/a/AirborneAid.java +++ b/Mage.Sets/src/mage/cards/a/AirborneAid.java @@ -32,6 +32,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -46,7 +47,7 @@ public class AirborneAid extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Bird on the battlefield"); static { - filter.add(new SubtypePredicate("Bird")); + filter.add(new SubtypePredicate(SubType.BIRD)); } public AirborneAid(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AirdropCondor.java b/Mage.Sets/src/mage/cards/a/AirdropCondor.java index 73b468bca68..12549667c8b 100644 --- a/Mage.Sets/src/mage/cards/a/AirdropCondor.java +++ b/Mage.Sets/src/mage/cards/a/AirdropCondor.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -55,7 +56,7 @@ public class AirdropCondor extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Goblin creature"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public AirdropCondor(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AjaniMentorOfHeroes.java b/Mage.Sets/src/mage/cards/a/AjaniMentorOfHeroes.java index b320b17432b..07748b176f6 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniMentorOfHeroes.java +++ b/Mage.Sets/src/mage/cards/a/AjaniMentorOfHeroes.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.counter.DistributeCountersEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.constants.Zone; import mage.counters.CounterType; @@ -61,7 +62,7 @@ public class AjaniMentorOfHeroes extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); filterCard.add(Predicates.or( - new SubtypePredicate("Aura"), + new SubtypePredicate(SubType.AURA), new CardTypePredicate(CardType.CREATURE), new CardTypePredicate(CardType.PLANESWALKER))); } diff --git a/Mage.Sets/src/mage/cards/a/AjanisComrade.java b/Mage.Sets/src/mage/cards/a/AjanisComrade.java index 581196d08b2..a77b909449d 100644 --- a/Mage.Sets/src/mage/cards/a/AjanisComrade.java +++ b/Mage.Sets/src/mage/cards/a/AjanisComrade.java @@ -36,6 +36,7 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.counters.CounterType; import mage.filter.common.FilterControlledPermanent; @@ -54,7 +55,7 @@ public class AjanisComrade extends CardImpl { static { filter.add(new CardTypePredicate(CardType.PLANESWALKER)); - filter.add(new SubtypePredicate("Ajani")); + filter.add(new SubtypePredicate(SubType.AJANI)); } public AjanisComrade(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AkoumBattlesinger.java b/Mage.Sets/src/mage/cards/a/AkoumBattlesinger.java index b7f79253d2b..e6ddb37fa99 100644 --- a/Mage.Sets/src/mage/cards/a/AkoumBattlesinger.java +++ b/Mage.Sets/src/mage/cards/a/AkoumBattlesinger.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class AkoumBattlesinger extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("have Ally creatures"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/a/AkromasDevoted.java b/Mage.Sets/src/mage/cards/a/AkromasDevoted.java index 1babd98c50a..fdf77245f2f 100644 --- a/Mage.Sets/src/mage/cards/a/AkromasDevoted.java +++ b/Mage.Sets/src/mage/cards/a/AkromasDevoted.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; @@ -55,7 +56,7 @@ public class AkromasDevoted extends CardImpl { // Cleric creatures have vigilance. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(VigilanceAbility.getInstance(), - Duration.WhileOnBattlefield, new FilterCreaturePermanent("Cleric", "Cleric creatures")))); + Duration.WhileOnBattlefield, new FilterCreaturePermanent(SubType.CLERIC, "Cleric creatures")))); } public AkromasDevoted(final AkromasDevoted card) { diff --git a/Mage.Sets/src/mage/cards/a/AkutaBornOfAsh.java b/Mage.Sets/src/mage/cards/a/AkutaBornOfAsh.java index 3d38e0cd67c..d555d24c2fc 100644 --- a/Mage.Sets/src/mage/cards/a/AkutaBornOfAsh.java +++ b/Mage.Sets/src/mage/cards/a/AkutaBornOfAsh.java @@ -38,10 +38,7 @@ import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldEffec import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SuperType; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; @@ -56,7 +53,7 @@ public class AkutaBornOfAsh extends CardImpl { private static final FilterControlledPermanent filterSwamp = new FilterControlledPermanent("a Swamp"); static { - filterSwamp.add(new SubtypePredicate("Swamp")); + filterSwamp.add(new SubtypePredicate(SubType.SWAMP)); } public AkutaBornOfAsh(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AliBaba.java b/Mage.Sets/src/mage/cards/a/AliBaba.java index a1f83576b51..e2deda92e15 100644 --- a/Mage.Sets/src/mage/cards/a/AliBaba.java +++ b/Mage.Sets/src/mage/cards/a/AliBaba.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class AliBaba extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Wall"); static { - filter.add(new SubtypePredicate("Wall")); + filter.add(new SubtypePredicate(SubType.WALL)); } public AliBaba(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AllyEncampment.java b/Mage.Sets/src/mage/cards/a/AllyEncampment.java index 2b6d2567892..14968f98fa8 100644 --- a/Mage.Sets/src/mage/cards/a/AllyEncampment.java +++ b/Mage.Sets/src/mage/cards/a/AllyEncampment.java @@ -39,6 +39,7 @@ import mage.abilities.mana.conditional.ConditionalSpellManaBuilder; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterSpell; import mage.filter.common.FilterControlledCreaturePermanent; @@ -56,7 +57,7 @@ public class AllyEncampment extends CardImpl { private static final FilterSpell FILTER = new FilterSpell("an Ally spell"); static { - FILTER.add(new SubtypePredicate("Ally")); + FILTER.add(new SubtypePredicate(SubType.ALLY)); } public AllyEncampment(UUID ownerId, CardSetInfo setInfo) { @@ -72,7 +73,7 @@ public class AllyEncampment extends CardImpl { Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandTargetEffect(), new GenericManaCost(1)); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - ability.addTarget(new TargetControlledCreaturePermanent(new FilterControlledCreaturePermanent("Ally", "Ally you control"))); + ability.addTarget(new TargetControlledCreaturePermanent(new FilterControlledCreaturePermanent(SubType.ALLY, "Ally you control"))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/a/AlphaKavu.java b/Mage.Sets/src/mage/cards/a/AlphaKavu.java index d039a685290..21328e62ab8 100644 --- a/Mage.Sets/src/mage/cards/a/AlphaKavu.java +++ b/Mage.Sets/src/mage/cards/a/AlphaKavu.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class AlphaKavu extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Kavu creature"); static { - filter.add(new SubtypePredicate("Kavu")); + filter.add(new SubtypePredicate(SubType.KAVU)); } public AlphaKavu(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AmbushCommander.java b/Mage.Sets/src/mage/cards/a/AmbushCommander.java index da00e062d6e..70cf5fbd853 100644 --- a/Mage.Sets/src/mage/cards/a/AmbushCommander.java +++ b/Mage.Sets/src/mage/cards/a/AmbushCommander.java @@ -38,10 +38,7 @@ import mage.abilities.effects.common.continuous.BecomesCreatureAllEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.DependencyType; -import mage.constants.Duration; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,11 +54,11 @@ import java.util.UUID; */ public class AmbushCommander extends CardImpl { - private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Elf", "an Elf"); + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.ELF, "an Elf"); private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("Forests you control"); static { - filter2.add(new SubtypePredicate("Forest")); + filter2.add(new SubtypePredicate(SubType.FOREST)); } public AmbushCommander(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AnabaAncestor.java b/Mage.Sets/src/mage/cards/a/AnabaAncestor.java index a7a1fc39739..24b6954688f 100644 --- a/Mage.Sets/src/mage/cards/a/AnabaAncestor.java +++ b/Mage.Sets/src/mage/cards/a/AnabaAncestor.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class AnabaAncestor extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Another target Minotaur creature"); static { - filter.add(new SubtypePredicate("Minotaur")); + filter.add(new SubtypePredicate(SubType.MINOTAUR)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/a/AnabaSpiritCrafter.java b/Mage.Sets/src/mage/cards/a/AnabaSpiritCrafter.java index 5840ddbd16b..453ddd254c1 100644 --- a/Mage.Sets/src/mage/cards/a/AnabaSpiritCrafter.java +++ b/Mage.Sets/src/mage/cards/a/AnabaSpiritCrafter.java @@ -34,6 +34,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class AnabaSpiritCrafter extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Minotaur creatures"); static { - filter.add(new SubtypePredicate("Minotaur")); + filter.add(new SubtypePredicate(SubType.MINOTAUR)); } public AnabaSpiritCrafter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AncestorsProphet.java b/Mage.Sets/src/mage/cards/a/AncestorsProphet.java index dce451a6e0d..14bd1186cd0 100644 --- a/Mage.Sets/src/mage/cards/a/AncestorsProphet.java +++ b/Mage.Sets/src/mage/cards/a/AncestorsProphet.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -52,7 +53,7 @@ public class AncestorsProphet extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Clerics you control"); static { - filter.add(new SubtypePredicate("Cleric")); + filter.add(new SubtypePredicate(SubType.CLERIC)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/a/AngelOfGlorysRise.java b/Mage.Sets/src/mage/cards/a/AngelOfGlorysRise.java index c0be93aad68..654c8c5c556 100644 --- a/Mage.Sets/src/mage/cards/a/AngelOfGlorysRise.java +++ b/Mage.Sets/src/mage/cards/a/AngelOfGlorysRise.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; @@ -83,8 +84,8 @@ class AngelOfGlorysRiseEffect extends OneShotEffect { private static final FilterCreaturePermanent filterZombie = new FilterCreaturePermanent(); static { - filterZombie.add(new SubtypePredicate("Zombie")); - filterHuman.add(new SubtypePredicate("Human")); + filterZombie.add(new SubtypePredicate(SubType.ZOMBIE)); + filterHuman.add(new SubtypePredicate(SubType.HUMAN)); } public AngelOfGlorysRiseEffect() { diff --git a/Mage.Sets/src/mage/cards/a/AngelicCaptain.java b/Mage.Sets/src/mage/cards/a/AngelicCaptain.java index 87260f921e3..d220ba06eb3 100644 --- a/Mage.Sets/src/mage/cards/a/AngelicCaptain.java +++ b/Mage.Sets/src/mage/cards/a/AngelicCaptain.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; @@ -51,7 +52,7 @@ public class AngelicCaptain extends CardImpl { private static final FilterAttackingCreature filter = new FilterAttackingCreature("other attacking Ally"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/a/AngelicOverseer.java b/Mage.Sets/src/mage/cards/a/AngelicOverseer.java index 69b9df63453..1bdaf8df4c9 100644 --- a/Mage.Sets/src/mage/cards/a/AngelicOverseer.java +++ b/Mage.Sets/src/mage/cards/a/AngelicOverseer.java @@ -39,6 +39,7 @@ import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -56,7 +57,7 @@ public class AngelicOverseer extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Human"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public AngelicOverseer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/Anger.java b/Mage.Sets/src/mage/cards/a/Anger.java index b8ac2a50ff3..b5c4d17a05e 100644 --- a/Mage.Sets/src/mage/cards/a/Anger.java +++ b/Mage.Sets/src/mage/cards/a/Anger.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -58,7 +59,7 @@ public class Anger extends CardImpl { static { filter.add(new CardTypePredicate(CardType.LAND)); - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public Anger(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AngryMob.java b/Mage.Sets/src/mage/cards/a/AngryMob.java index af5bd0c1808..53b736b94ec 100644 --- a/Mage.Sets/src/mage/cards/a/AngryMob.java +++ b/Mage.Sets/src/mage/cards/a/AngryMob.java @@ -36,10 +36,7 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.keyword.TrampleAbility; 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.constants.*; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.ControllerPredicate; @@ -55,7 +52,7 @@ public class AngryMob extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Swamps you opponents control"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); filter.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/a/AnimateWall.java b/Mage.Sets/src/mage/cards/a/AnimateWall.java index aed2c8b488d..2b6c15a5a89 100644 --- a/Mage.Sets/src/mage/cards/a/AnimateWall.java +++ b/Mage.Sets/src/mage/cards/a/AnimateWall.java @@ -53,7 +53,7 @@ public class AnimateWall extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wall"); static { - filter.add(new SubtypePredicate("Wall")); + filter.add(new SubtypePredicate(SubType.WALL)); } public AnimateWall(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AnowonTheRuinSage.java b/Mage.Sets/src/mage/cards/a/AnowonTheRuinSage.java index 9263e699b50..2df61452a09 100644 --- a/Mage.Sets/src/mage/cards/a/AnowonTheRuinSage.java +++ b/Mage.Sets/src/mage/cards/a/AnowonTheRuinSage.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.SacrificeAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.TargetController; import mage.filter.common.FilterControlledCreaturePermanent; @@ -50,7 +51,7 @@ public class AnowonTheRuinSage extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Vampire creature"); static { - filter.add(Predicates.not(new SubtypePredicate("Vampire"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.VAMPIRE))); } public AnowonTheRuinSage(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AphettoDredging.java b/Mage.Sets/src/mage/cards/a/AphettoDredging.java index 51cb31efe5c..fa92e01c0f3 100644 --- a/Mage.Sets/src/mage/cards/a/AphettoDredging.java +++ b/Mage.Sets/src/mage/cards/a/AphettoDredging.java @@ -38,6 +38,7 @@ import mage.choices.Choice; import mage.choices.ChoiceImpl; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -68,7 +69,7 @@ public class AphettoDredging extends CardImpl { if (controller != null) { Choice typeChoice = new ChoiceImpl(true); typeChoice.setMessage("Choose a creature type"); - typeChoice.setChoices(CardRepository.instance.getCreatureTypes()); + typeChoice.setChoices(SubType.getCreatureTypes(false)); while (!controller.choose(Outcome.PutCreatureInPlay, typeChoice, game)) { if (!controller.canRespond()) { return; @@ -77,7 +78,7 @@ public class AphettoDredging extends CardImpl { String chosenType = typeChoice.getChoice(); FilterCreatureCard filter = new FilterCreatureCard(chosenType + " cards"); - filter.add(new SubtypePredicate(chosenType)); + filter.add(new SubtypePredicate(SubType.byDescription(chosenType))); ability.addTarget(new TargetCardInYourGraveyard(0, 3, filter)); } } diff --git a/Mage.Sets/src/mage/cards/a/AphettoGrifter.java b/Mage.Sets/src/mage/cards/a/AphettoGrifter.java index 61d641d6456..976c591495c 100644 --- a/Mage.Sets/src/mage/cards/a/AphettoGrifter.java +++ b/Mage.Sets/src/mage/cards/a/AphettoGrifter.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -55,7 +56,7 @@ public class AphettoGrifter extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Wizard")); + filter.add(new SubtypePredicate(SubType.WIZARD)); } public AphettoGrifter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AquitectsWill.java b/Mage.Sets/src/mage/cards/a/AquitectsWill.java index 46ad85d7c1c..d3bdac1840a 100644 --- a/Mage.Sets/src/mage/cards/a/AquitectsWill.java +++ b/Mage.Sets/src/mage/cards/a/AquitectsWill.java @@ -35,10 +35,7 @@ import mage.abilities.effects.common.continuous.BecomesBasicLandTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.SubLayer; +import mage.constants.*; import mage.counters.CounterType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,7 +54,7 @@ public class AquitectsWill extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Merfolk"); static { - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK)); } public AquitectsWill(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/Arachnogenesis.java b/Mage.Sets/src/mage/cards/a/Arachnogenesis.java index 5a91103fcec..64059925a9b 100644 --- a/Mage.Sets/src/mage/cards/a/Arachnogenesis.java +++ b/Mage.Sets/src/mage/cards/a/Arachnogenesis.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,7 +55,7 @@ public class Arachnogenesis extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Spider creatures"); static { - filter.add(Predicates.not(new SubtypePredicate("Spider"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.SPIDER))); } public Arachnogenesis(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/ArachnusSpinner.java b/Mage.Sets/src/mage/cards/a/ArachnusSpinner.java index f8f543987d6..f4563ce448b 100644 --- a/Mage.Sets/src/mage/cards/a/ArachnusSpinner.java +++ b/Mage.Sets/src/mage/cards/a/ArachnusSpinner.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.common.FilterControlledCreaturePermanent; @@ -64,7 +65,7 @@ public class ArachnusSpinner extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Spider you control"); static { - filter.add(new SubtypePredicate("Spider")); + filter.add(new SubtypePredicate(SubType.SPIDER)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/a/ArashinForemost.java b/Mage.Sets/src/mage/cards/a/ArashinForemost.java index d5df7bf0a3b..2d963e36d8c 100644 --- a/Mage.Sets/src/mage/cards/a/ArashinForemost.java +++ b/Mage.Sets/src/mage/cards/a/ArashinForemost.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; @@ -52,7 +53,7 @@ public class ArashinForemost extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target Warrior creature you control"); static { - filter.add(new SubtypePredicate("Warrior")); + filter.add(new SubtypePredicate(SubType.WARRIOR)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/a/ArborElf.java b/Mage.Sets/src/mage/cards/a/ArborElf.java index c5bc1f38f5a..697b9fef0c0 100644 --- a/Mage.Sets/src/mage/cards/a/ArborElf.java +++ b/Mage.Sets/src/mage/cards/a/ArborElf.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.UntapTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; import mage.target.common.TargetLandPermanent; @@ -48,7 +49,7 @@ import java.util.UUID; */ public class ArborElf extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("Forest", "Forest"); + private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.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/ArchangelAvacyn.java b/Mage.Sets/src/mage/cards/a/ArchangelAvacyn.java index 8e6c6c7622a..ec1697841fe 100644 --- a/Mage.Sets/src/mage/cards/a/ArchangelAvacyn.java +++ b/Mage.Sets/src/mage/cards/a/ArchangelAvacyn.java @@ -61,7 +61,7 @@ public class ArchangelAvacyn extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a non-Angel creature you control"); static { - filter.add(Predicates.not(new SubtypePredicate("Angel"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.ANGEL))); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/a/ArchdemonOfGreed.java b/Mage.Sets/src/mage/cards/a/ArchdemonOfGreed.java index 7d49377f729..4e1d1340abd 100644 --- a/Mage.Sets/src/mage/cards/a/ArchdemonOfGreed.java +++ b/Mage.Sets/src/mage/cards/a/ArchdemonOfGreed.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -58,7 +59,7 @@ public class ArchdemonOfGreed extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Human"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/a/ArchdemonOfUnx.java b/Mage.Sets/src/mage/cards/a/ArchdemonOfUnx.java index 360062f5624..e814c533a90 100644 --- a/Mage.Sets/src/mage/cards/a/ArchdemonOfUnx.java +++ b/Mage.Sets/src/mage/cards/a/ArchdemonOfUnx.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -54,7 +55,7 @@ public class ArchdemonOfUnx extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Zombie creature"); static { - filter.add(Predicates.not(new SubtypePredicate("Zombie"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.ZOMBIE))); } public ArchdemonOfUnx(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/ArcticAven.java b/Mage.Sets/src/mage/cards/a/ArcticAven.java index 8cee410fd3a..9a47e298d7f 100644 --- a/Mage.Sets/src/mage/cards/a/ArcticAven.java +++ b/Mage.Sets/src/mage/cards/a/ArcticAven.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,7 +55,7 @@ public class ArcticAven extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Plains"); static { - filter.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.PLAINS)); } public ArcticAven(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AridMesa.java b/Mage.Sets/src/mage/cards/a/AridMesa.java index 83d03045b3b..acab30dbabe 100644 --- a/Mage.Sets/src/mage/cards/a/AridMesa.java +++ b/Mage.Sets/src/mage/cards/a/AridMesa.java @@ -33,7 +33,9 @@ import mage.abilities.common.FetchLandActivatedAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; +import java.util.EnumSet; import java.util.UUID; /** @@ -45,7 +47,7 @@ public class AridMesa extends CardImpl { public AridMesa(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.LAND},null); this.frameColor = new ObjectColor("WR"); - this.addAbility(new FetchLandActivatedAbility(new String[] {"Mountain", "Plains"})); + this.addAbility(new FetchLandActivatedAbility(EnumSet.of(SubType.MOUNTAIN, SubType.PLAINS))); } public AridMesa(final AridMesa card) { diff --git a/Mage.Sets/src/mage/cards/a/ArmamentMaster.java b/Mage.Sets/src/mage/cards/a/ArmamentMaster.java index 45ef3f245bb..e47445b2afa 100644 --- a/Mage.Sets/src/mage/cards/a/ArmamentMaster.java +++ b/Mage.Sets/src/mage/cards/a/ArmamentMaster.java @@ -51,7 +51,7 @@ public class ArmamentMaster extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Other Kor creatures you control"); static { - filter.add(new SubtypePredicate("Kor")); + filter.add(new SubtypePredicate(SubType.KOR)); } public ArmamentMaster(UUID ownerId, CardSetInfo setInfo) { @@ -80,7 +80,7 @@ class ArmamentMasterEffect extends ContinuousEffectImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Other Kor creatures you control"); static { - filter.add(new SubtypePredicate("Kor")); + filter.add(new SubtypePredicate(SubType.KOR)); } public ArmamentMasterEffect() { diff --git a/Mage.Sets/src/mage/cards/a/ArmedResponse.java b/Mage.Sets/src/mage/cards/a/ArmedResponse.java index 1afba191ddc..3d25e00fc26 100644 --- a/Mage.Sets/src/mage/cards/a/ArmedResponse.java +++ b/Mage.Sets/src/mage/cards/a/ArmedResponse.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledArtifactPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetAttackingCreature; @@ -48,7 +49,7 @@ public class ArmedResponse extends CardImpl { private static final FilterControlledArtifactPermanent filter = new FilterControlledArtifactPermanent("Equipment you control"); static { - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } diff --git a/Mage.Sets/src/mage/cards/a/ArmoryAutomaton.java b/Mage.Sets/src/mage/cards/a/ArmoryAutomaton.java index 8f2b5fc5377..f3d57297a50 100644 --- a/Mage.Sets/src/mage/cards/a/ArmoryAutomaton.java +++ b/Mage.Sets/src/mage/cards/a/ArmoryAutomaton.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.common.FilterArtifactPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -77,7 +78,7 @@ class ArmoryAutomatonEffect extends OneShotEffect { private static final FilterArtifactPermanent filter = new FilterArtifactPermanent("Equipment"); static { - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public ArmoryAutomatonEffect() { diff --git a/Mage.Sets/src/mage/cards/a/ArmoryGuard.java b/Mage.Sets/src/mage/cards/a/ArmoryGuard.java index eb3a9ec325d..f5db6983c5c 100644 --- a/Mage.Sets/src/mage/cards/a/ArmoryGuard.java +++ b/Mage.Sets/src/mage/cards/a/ArmoryGuard.java @@ -36,6 +36,7 @@ import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class ArmoryGuard extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Gate"); static { - filter.add(new SubtypePredicate("Gate")); + filter.add(new SubtypePredicate(SubType.GATE)); } public ArmoryGuard(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/ArtificersHex.java b/Mage.Sets/src/mage/cards/a/ArtificersHex.java index a2aa387e6ce..23a7315d17c 100644 --- a/Mage.Sets/src/mage/cards/a/ArtificersHex.java +++ b/Mage.Sets/src/mage/cards/a/ArtificersHex.java @@ -34,10 +34,7 @@ import mage.abilities.effects.common.AttachEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -56,7 +53,7 @@ public class ArtificersHex extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Equipment"); static { filter.add(new CardTypePredicate(CardType.ARTIFACT)); - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public ArtificersHex(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AspectOfWolf.java b/Mage.Sets/src/mage/cards/a/AspectOfWolf.java index 7c148f12e9f..b8dd286bcf0 100644 --- a/Mage.Sets/src/mage/cards/a/AspectOfWolf.java +++ b/Mage.Sets/src/mage/cards/a/AspectOfWolf.java @@ -36,10 +36,7 @@ import mage.abilities.effects.common.continuous.BoostEnchantedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -85,7 +82,7 @@ class HalfForestsDownCount implements DynamicValue { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } @Override @@ -115,7 +112,7 @@ class HalfForestsUpCount implements DynamicValue { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } @Override diff --git a/Mage.Sets/src/mage/cards/a/AssemblyWorker.java b/Mage.Sets/src/mage/cards/a/AssemblyWorker.java index 591d7d26d80..f16d3f5977f 100644 --- a/Mage.Sets/src/mage/cards/a/AssemblyWorker.java +++ b/Mage.Sets/src/mage/cards/a/AssemblyWorker.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class AssemblyWorker extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Assembly-Worker creature"); static { - filter.add(new SubtypePredicate("Assembly-Worker")); + filter.add(new SubtypePredicate(SubType.ASSEMBLY_WORKER)); } public AssemblyWorker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AtarkaWorldRender.java b/Mage.Sets/src/mage/cards/a/AtarkaWorldRender.java index a9c52bd851f..991449be2f1 100644 --- a/Mage.Sets/src/mage/cards/a/AtarkaWorldRender.java +++ b/Mage.Sets/src/mage/cards/a/AtarkaWorldRender.java @@ -36,10 +36,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -88,7 +85,7 @@ class AtarkaWorldRenderEffect extends TriggeredAbilityImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("dragon you control"); static { - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public AtarkaWorldRenderEffect() { diff --git a/Mage.Sets/src/mage/cards/a/Atogatog.java b/Mage.Sets/src/mage/cards/a/Atogatog.java index 68bed27c6c3..33503314142 100644 --- a/Mage.Sets/src/mage/cards/a/Atogatog.java +++ b/Mage.Sets/src/mage/cards/a/Atogatog.java @@ -53,7 +53,7 @@ public class Atogatog extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Atog")); + filter.add(new SubtypePredicate(SubType.ATOG)); } public Atogatog(UUID ownerId, CardSetInfo setInfo) { @@ -68,7 +68,7 @@ public class Atogatog extends CardImpl { // Sacrifice an Atog creature: Atogatog gets +X/+X until end of turn, where X is the sacrificed creature's power. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(xValue, xValue,Duration.EndOfTurn), - new SacrificeTargetCost(new TargetControlledCreaturePermanent(1,1,new FilterControlledCreaturePermanent("Atog", "an Atog creature"), false)))); + new SacrificeTargetCost(new TargetControlledCreaturePermanent(1,1,new FilterControlledCreaturePermanent(SubType.ATOG, "an Atog creature"), false)))); } diff --git a/Mage.Sets/src/mage/cards/a/AuntiesHovel.java b/Mage.Sets/src/mage/cards/a/AuntiesHovel.java index 531b5f84c6d..42908f3970e 100644 --- a/Mage.Sets/src/mage/cards/a/AuntiesHovel.java +++ b/Mage.Sets/src/mage/cards/a/AuntiesHovel.java @@ -35,6 +35,7 @@ import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInHand; @@ -49,7 +50,7 @@ public class AuntiesHovel extends CardImpl { private static final FilterCard filter = new FilterCard("a Goblin card from your hand"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public AuntiesHovel(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AuntiesSnitch.java b/Mage.Sets/src/mage/cards/a/AuntiesSnitch.java index 0064d5a1427..7f5af6d8447 100644 --- a/Mage.Sets/src/mage/cards/a/AuntiesSnitch.java +++ b/Mage.Sets/src/mage/cards/a/AuntiesSnitch.java @@ -35,6 +35,7 @@ import mage.abilities.keyword.ProwlAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; @@ -86,7 +87,7 @@ class AuntiesSnitchTriggeredAbility extends TriggeredAbilityImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblin or Rogue you control"); static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(Predicates.or(new SubtypePredicate("Goblin"), new SubtypePredicate("Rogue"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.GOBLIN), new SubtypePredicate(SubType.ROGUE))); } public AuntiesSnitchTriggeredAbility() { diff --git a/Mage.Sets/src/mage/cards/a/AuraBarbs.java b/Mage.Sets/src/mage/cards/a/AuraBarbs.java index e821f9e69a4..ed9f5f84083 100644 --- a/Mage.Sets/src/mage/cards/a/AuraBarbs.java +++ b/Mage.Sets/src/mage/cards/a/AuraBarbs.java @@ -33,6 +33,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -91,7 +92,7 @@ public class AuraBarbs extends CardImpl { } } - filterEnchantments.add(new SubtypePredicate("Aura")); + filterEnchantments.add(new SubtypePredicate(SubType.AURA)); for (Permanent auraEnchantment : game.getBattlefield().getActivePermanents(filterEnchantments, source.getControllerId(), source.getSourceId(), game)) { if (auraEnchantment.getAttachedTo() != null) { Permanent attachedToCreature = game.getPermanent(auraEnchantment.getAttachedTo()); diff --git a/Mage.Sets/src/mage/cards/a/AuraFinesse.java b/Mage.Sets/src/mage/cards/a/AuraFinesse.java index ba55e2d411a..1408e0b1346 100644 --- a/Mage.Sets/src/mage/cards/a/AuraFinesse.java +++ b/Mage.Sets/src/mage/cards/a/AuraFinesse.java @@ -34,6 +34,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterEnchantmentPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,7 +58,7 @@ public class AuraFinesse extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public AuraFinesse(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AuraGnarlid.java b/Mage.Sets/src/mage/cards/a/AuraGnarlid.java index 0dfa3bb3b1b..d09f186f634 100644 --- a/Mage.Sets/src/mage/cards/a/AuraGnarlid.java +++ b/Mage.Sets/src/mage/cards/a/AuraGnarlid.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class AuraGnarlid extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Aura on the battlefield"); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public AuraGnarlid(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AuraGraft.java b/Mage.Sets/src/mage/cards/a/AuraGraft.java index 1da1d746295..251be7d7998 100644 --- a/Mage.Sets/src/mage/cards/a/AuraGraft.java +++ b/Mage.Sets/src/mage/cards/a/AuraGraft.java @@ -36,6 +36,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.Filter; import mage.filter.FilterPermanent; import mage.filter.predicate.ObjectPlayer; @@ -61,7 +62,7 @@ public class AuraGraft extends CardImpl { // Gain control of target Aura that's attached to a permanent. Attach it to another permanent it can enchant. FilterPermanent filter = new FilterPermanent("Aura that's attached to a permanent"); - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); filter.add(new AttachedToPermanentPredicate()); this.getSpellAbility().addTarget(new TargetPermanent(filter)); diff --git a/Mage.Sets/src/mage/cards/a/AuratouchedMage.java b/Mage.Sets/src/mage/cards/a/AuratouchedMage.java index 529f1416ca5..4b5e4085931 100644 --- a/Mage.Sets/src/mage/cards/a/AuratouchedMage.java +++ b/Mage.Sets/src/mage/cards/a/AuratouchedMage.java @@ -34,6 +34,7 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.*; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -91,7 +92,7 @@ class AuratouchedMageEffect extends OneShotEffect { Permanent auratouchedMage = game.getPermanentOrLKIBattlefield(source.getSourceId()); //must be LKI to resolve if (controller != null && auratouchedMage != null) { FilterCard filter = new FilterCard("aura that could enchant " + auratouchedMage.getName()); - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); filter.add(new AuraCardCanAttachToLKIPermanentId(auratouchedMage.getId())); TargetCardInLibrary target = new TargetCardInLibrary(filter); target.setNotTarget(true); diff --git a/Mage.Sets/src/mage/cards/a/AuriokSteelshaper.java b/Mage.Sets/src/mage/cards/a/AuriokSteelshaper.java index 4b64b7a6156..c0c5b2df4a4 100644 --- a/Mage.Sets/src/mage/cards/a/AuriokSteelshaper.java +++ b/Mage.Sets/src/mage/cards/a/AuriokSteelshaper.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -56,8 +57,8 @@ public class AuriokSteelshaper extends CardImpl { static { soldiersOrKnights.add(Predicates.or( - new SubtypePredicate("Soldier"), - new SubtypePredicate("Knight") + new SubtypePredicate(SubType.SOLDIER), + new SubtypePredicate(SubType.KNIGHT) )); } diff --git a/Mage.Sets/src/mage/cards/a/AuriokSurvivors.java b/Mage.Sets/src/mage/cards/a/AuriokSurvivors.java index cb844ed05ce..9d5e63cc0bb 100644 --- a/Mage.Sets/src/mage/cards/a/AuriokSurvivors.java +++ b/Mage.Sets/src/mage/cards/a/AuriokSurvivors.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -53,7 +54,7 @@ public class AuriokSurvivors extends CardImpl { private static final FilterCard filter = new FilterCard("Equipment card from your graveyard"); static { - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public AuriokSurvivors(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/Aurochs.java b/Mage.Sets/src/mage/cards/a/Aurochs.java index d25d339659e..19c7b32f3bb 100644 --- a/Mage.Sets/src/mage/cards/a/Aurochs.java +++ b/Mage.Sets/src/mage/cards/a/Aurochs.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; @@ -52,7 +53,7 @@ public class Aurochs extends CardImpl { private static final FilterAttackingCreature filter1 = new FilterAttackingCreature("other attacking Aurochs"); static { - filter1.add(new SubtypePredicate("Aurochs")); + filter1.add(new SubtypePredicate(SubType.AUROCHS)); filter1.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/a/AurochsHerd.java b/Mage.Sets/src/mage/cards/a/AurochsHerd.java index 4ed5f1f3f9e..87863f6a86a 100644 --- a/Mage.Sets/src/mage/cards/a/AurochsHerd.java +++ b/Mage.Sets/src/mage/cards/a/AurochsHerd.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,8 +58,8 @@ public class AurochsHerd extends CardImpl { private static final FilterAttackingCreature filter2 = new FilterAttackingCreature("other attacking Aurochs"); static { - filter1.add(new SubtypePredicate("Aurochs")); - filter2.add(new SubtypePredicate("Aurochs")); + filter1.add(new SubtypePredicate(SubType.AUROCHS)); + filter2.add(new SubtypePredicate(SubType.AUROCHS)); filter2.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/a/AvacynianPriest.java b/Mage.Sets/src/mage/cards/a/AvacynianPriest.java index 8ab7e35dde5..3e386e8b00a 100644 --- a/Mage.Sets/src/mage/cards/a/AvacynianPriest.java +++ b/Mage.Sets/src/mage/cards/a/AvacynianPriest.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -52,7 +53,7 @@ public class AvacynianPriest extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Human creature"); static { - filter.add(Predicates.not(new SubtypePredicate("Human"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.HUMAN))); } public AvacynianPriest(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AvengerOfZendikar.java b/Mage.Sets/src/mage/cards/a/AvengerOfZendikar.java index 749ef544652..1de50c28637 100644 --- a/Mage.Sets/src/mage/cards/a/AvengerOfZendikar.java +++ b/Mage.Sets/src/mage/cards/a/AvengerOfZendikar.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.counter.AddCountersAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledLandPermanent; @@ -56,7 +57,7 @@ public class AvengerOfZendikar extends CardImpl { private static final FilterControlledPermanent filterLand = new FilterControlledLandPermanent(); static { - filter.add(new SubtypePredicate("Plant")); + filter.add(new SubtypePredicate(SubType.PLANT)); } public AvengerOfZendikar (UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AvoidFate.java b/Mage.Sets/src/mage/cards/a/AvoidFate.java index 76ae7f4932c..93a314b3b33 100644 --- a/Mage.Sets/src/mage/cards/a/AvoidFate.java +++ b/Mage.Sets/src/mage/cards/a/AvoidFate.java @@ -31,6 +31,7 @@ import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterSpell; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -50,7 +51,7 @@ public class AvoidFate extends CardImpl { private final static FilterSpell filter = new FilterSpell("instant or Aura spell that targets a permanent you control"); static { - filter.add(Predicates.or(new CardTypePredicate(CardType.INSTANT), new SubtypePredicate("Aura"))); + filter.add(Predicates.or(new CardTypePredicate(CardType.INSTANT), new SubtypePredicate(SubType.AURA))); filter.add(new TargetsPermanentPredicate(new FilterControlledPermanent())); } diff --git a/Mage.Sets/src/mage/cards/a/AwakenTheAncient.java b/Mage.Sets/src/mage/cards/a/AwakenTheAncient.java index 2157bd326e6..a3c6e9c1da5 100644 --- a/Mage.Sets/src/mage/cards/a/AwakenTheAncient.java +++ b/Mage.Sets/src/mage/cards/a/AwakenTheAncient.java @@ -36,10 +36,7 @@ import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterLandPermanent; import mage.game.permanent.token.Token; import mage.target.TargetPermanent; @@ -53,7 +50,7 @@ import java.util.UUID; */ public class AwakenTheAncient extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain", "Mountain"); + private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.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 ea9cdc8955f..cd02f2b0da5 100644 --- a/Mage.Sets/src/mage/cards/a/AwakenerDruid.java +++ b/Mage.Sets/src/mage/cards/a/AwakenerDruid.java @@ -35,10 +35,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.SubLayer; +import mage.constants.*; import mage.filter.common.FilterLandPermanent; import mage.game.Game; import mage.game.permanent.Permanent; @@ -53,7 +50,7 @@ import java.util.UUID; */ public class AwakenerDruid extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("Forest", "Forest"); + private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.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/a/AwokenHorror.java b/Mage.Sets/src/mage/cards/a/AwokenHorror.java index 1b2e644b910..fcf1591a300 100644 --- a/Mage.Sets/src/mage/cards/a/AwokenHorror.java +++ b/Mage.Sets/src/mage/cards/a/AwokenHorror.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.ReturnToHandFromBattlefieldAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -78,7 +79,7 @@ class AwokenHorrorAbility extends TriggeredAbilityImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Horror creatures"); static { - filter.add(Predicates.not(new SubtypePredicate("Horror"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.HORROR))); } public AwokenHorrorAbility() { diff --git a/Mage.Sets/src/mage/cards/b/BadRiver.java b/Mage.Sets/src/mage/cards/b/BadRiver.java index 482e9370069..2458963f431 100644 --- a/Mage.Sets/src/mage/cards/b/BadRiver.java +++ b/Mage.Sets/src/mage/cards/b/BadRiver.java @@ -32,7 +32,9 @@ import mage.abilities.common.FetchLandActivatedAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; +import java.util.EnumSet; import java.util.UUID; /** @@ -47,7 +49,7 @@ public class BadRiver extends CardImpl { // Bad River enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); // {tap}, Sacrifice Bad River: Search your library for an Island or Swamp card and put it onto the battlefield. Then shuffle your library. - this.addAbility(new FetchLandActivatedAbility(false, new String[]{"Island", "Swamp"})); + this.addAbility(new FetchLandActivatedAbility(false, EnumSet.of(SubType.ISLAND, SubType.SWAMP))); } diff --git a/Mage.Sets/src/mage/cards/b/BallyrushBanneret.java b/Mage.Sets/src/mage/cards/b/BallyrushBanneret.java index 4c353c670c6..8596ad42a21 100644 --- a/Mage.Sets/src/mage/cards/b/BallyrushBanneret.java +++ b/Mage.Sets/src/mage/cards/b/BallyrushBanneret.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; @@ -50,8 +51,8 @@ public class BallyrushBanneret extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Kithkin"), - new SubtypePredicate("Soldier"))); + new SubtypePredicate(SubType.KITHKIN), + new SubtypePredicate(SubType.SOLDIER))); } public BallyrushBanneret(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BalthorTheStout.java b/Mage.Sets/src/mage/cards/b/BalthorTheStout.java index 32aac8c25d0..829c0708011 100644 --- a/Mage.Sets/src/mage/cards/b/BalthorTheStout.java +++ b/Mage.Sets/src/mage/cards/b/BalthorTheStout.java @@ -36,10 +36,7 @@ import mage.abilities.effects.common.continuous.BoostAllEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; @@ -57,9 +54,9 @@ public class BalthorTheStout extends CardImpl { private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("another target Barbarian"); static { - filter1.add(new SubtypePredicate("Barbarian")); + filter1.add(new SubtypePredicate(SubType.BARBARIAN)); filter2.add(new AnotherPredicate()); - filter2.add(new SubtypePredicate("Barbarian")); + filter2.add(new SubtypePredicate(SubType.BARBARIAN)); } public BalthorTheStout(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BarbarianOutcast.java b/Mage.Sets/src/mage/cards/b/BarbarianOutcast.java index 9c8d623ba84..e1a278ca6ce 100644 --- a/Mage.Sets/src/mage/cards/b/BarbarianOutcast.java +++ b/Mage.Sets/src/mage/cards/b/BarbarianOutcast.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.SacrificeSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class BarbarianOutcast extends CardImpl { private static final FilterControlledLandPermanent filterControlledLand = new FilterControlledLandPermanent("a Swamp"); static { - filterControlledLand.add(new SubtypePredicate("Swamp")); + filterControlledLand.add(new SubtypePredicate(SubType.SWAMP)); } public BarbarianOutcast(UUID ownerId, CardSetInfo setInfo) { @@ -62,7 +63,7 @@ public class BarbarianOutcast extends CardImpl { // When you control no Swamps, sacrifice Barbarian Outcast. this.addAbility(new ControlsPermanentsControllerTriggeredAbility( - new FilterLandPermanent("Swamp", "no Swamps"), ComparisonType.EQUAL_TO, 0, + new FilterLandPermanent(SubType.SWAMP, "no Swamps"), ComparisonType.EQUAL_TO, 0, new SacrificeSourceEffect())); } diff --git a/Mage.Sets/src/mage/cards/b/BarrelDownSokenzan.java b/Mage.Sets/src/mage/cards/b/BarrelDownSokenzan.java index f03adc21b55..9078977bca2 100644 --- a/Mage.Sets/src/mage/cards/b/BarrelDownSokenzan.java +++ b/Mage.Sets/src/mage/cards/b/BarrelDownSokenzan.java @@ -35,6 +35,7 @@ import mage.abilities.effects.keyword.SweepEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -51,7 +52,7 @@ public class BarrelDownSokenzan extends CardImpl { // Sweep - Return any number of Mountains you control to their owner's hand. Barrel Down Sokenzan deals damage to target creature equal to twice the number of Mountains returned this way. - this.getSpellAbility().addEffect(new SweepEffect("Mountain")); + this.getSpellAbility().addEffect(new SweepEffect(SubType.MOUNTAIN)); DynamicValue sweepValue = new MultipliedValue(new SweepNumber("Mountain", false), 2); this.getSpellAbility().addEffect(new DamageTargetEffect(sweepValue)); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); diff --git a/Mage.Sets/src/mage/cards/b/BaruFistOfKrosa.java b/Mage.Sets/src/mage/cards/b/BaruFistOfKrosa.java index 44adad6d643..fdfec51f6a4 100644 --- a/Mage.Sets/src/mage/cards/b/BaruFistOfKrosa.java +++ b/Mage.Sets/src/mage/cards/b/BaruFistOfKrosa.java @@ -61,7 +61,7 @@ public class BaruFistOfKrosa extends CardImpl { private static final FilterCreaturePermanent greenCreatureFilter = new FilterCreaturePermanent("green creatures you control"); static { - forestFilter.add(new SubtypePredicate("Forest")); + forestFilter.add(new SubtypePredicate(SubType.FOREST)); greenCreatureFilter.add(new ControllerPredicate(TargetController.YOU)); greenCreatureFilter.add(new ColorPredicate(ObjectColor.GREEN)); } diff --git a/Mage.Sets/src/mage/cards/b/BattletideAlchemist.java b/Mage.Sets/src/mage/cards/b/BattletideAlchemist.java index 133671858e4..4bce62cb80f 100644 --- a/Mage.Sets/src/mage/cards/b/BattletideAlchemist.java +++ b/Mage.Sets/src/mage/cards/b/BattletideAlchemist.java @@ -34,10 +34,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.PreventionEffectImpl; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledCreaturePermanent; import mage.game.Game; import mage.game.events.GameEvent; @@ -95,7 +92,7 @@ class BattletideAlchemistEffect extends PreventionEffectImpl { Player controller = game.getPlayer(source.getControllerId()); Player targetPlayer = game.getPlayer(event.getTargetId()); if (controller != null) { - int numberOfClericsControlled = new PermanentsOnBattlefieldCount(new FilterControlledCreaturePermanent("Cleric", "Clerics")).calculate(game, source, this); + int numberOfClericsControlled = new PermanentsOnBattlefieldCount(new FilterControlledCreaturePermanent(SubType.CLERIC, "Clerics")).calculate(game, source, this); int toPrevent = Math.min(numberOfClericsControlled, event.getAmount()); if (toPrevent > 0 && controller.chooseUse(Outcome.PreventDamage, "Prevent " + toPrevent + " damage to " + targetPlayer.getName() + '?', source, game)) { GameEvent preventEvent = new GameEvent(GameEvent.EventType.PREVENT_DAMAGE, targetPlayer.getId(), source.getSourceId(), source.getControllerId(), toPrevent, false); diff --git a/Mage.Sets/src/mage/cards/b/BindingMummy.java b/Mage.Sets/src/mage/cards/b/BindingMummy.java index e84f8dbf919..8b445ce21e5 100644 --- a/Mage.Sets/src/mage/cards/b/BindingMummy.java +++ b/Mage.Sets/src/mage/cards/b/BindingMummy.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import static mage.filter.StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_CREATURE; import mage.filter.common.FilterControlledPermanent; @@ -52,7 +53,7 @@ public class BindingMummy extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public BindingMummy(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BitterheartWitch.java b/Mage.Sets/src/mage/cards/b/BitterheartWitch.java index 1927e3db142..f264ea7cbe0 100644 --- a/Mage.Sets/src/mage/cards/b/BitterheartWitch.java +++ b/Mage.Sets/src/mage/cards/b/BitterheartWitch.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -85,7 +86,7 @@ class BitterheartWitchEffect extends OneShotEffect { private static final FilterCard filter = new FilterCard("Curse card in your library"); static { - filter.add(new SubtypePredicate("Curse")); + filter.add(new SubtypePredicate(SubType.CURSE)); } public BitterheartWitchEffect() { diff --git a/Mage.Sets/src/mage/cards/b/BlackMarketDealer.java b/Mage.Sets/src/mage/cards/b/BlackMarketDealer.java index 0a17c645daa..09c7392e93a 100644 --- a/Mage.Sets/src/mage/cards/b/BlackMarketDealer.java +++ b/Mage.Sets/src/mage/cards/b/BlackMarketDealer.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.BountyAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; @@ -59,7 +60,7 @@ public class BlackMarketDealer extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(Predicates.or(new SubtypePredicate("Rogue"), new SubtypePredicate("Hunter"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.ROGUE), new SubtypePredicate(SubType.HUNTER))); } public BlackMarketDealer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BlackPoplarShaman.java b/Mage.Sets/src/mage/cards/b/BlackPoplarShaman.java index 06335ea3b73..a166fba0ac4 100644 --- a/Mage.Sets/src/mage/cards/b/BlackPoplarShaman.java +++ b/Mage.Sets/src/mage/cards/b/BlackPoplarShaman.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.RegenerateTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class BlackPoplarShaman extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Treefolk"); static { - filter.add(new SubtypePredicate("Treefolk")); + filter.add(new SubtypePredicate(SubType.TREEFOLK)); } public BlackPoplarShaman(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BladewingsThrall.java b/Mage.Sets/src/mage/cards/b/BladewingsThrall.java index 18649626f39..570e13f2306 100644 --- a/Mage.Sets/src/mage/cards/b/BladewingsThrall.java +++ b/Mage.Sets/src/mage/cards/b/BladewingsThrall.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; @@ -62,12 +63,12 @@ public class BladewingsThrall extends CardImpl { // Bladewing's Thrall has flying as long as you control a Dragon. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield), - new PermanentsOnTheBattlefieldCondition(new FilterControlledCreaturePermanent("Dragon", "a Dragon")), + new PermanentsOnTheBattlefieldCondition(new FilterControlledCreaturePermanent(SubType.DRAGON, "a Dragon")), RULE))); // When a Dragon enters the battlefield, you may return Bladewing's Thrall from your graveyard to the battlefield. this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.GRAVEYARD, - new ReturnSourceFromGraveyardToBattlefieldEffect(), new FilterCreaturePermanent("Dragon", "a Dragon"), true)); + new ReturnSourceFromGraveyardToBattlefieldEffect(), new FilterCreaturePermanent(SubType.DRAGON, "a Dragon"), true)); } public BladewingsThrall(final BladewingsThrall card) { diff --git a/Mage.Sets/src/mage/cards/b/BlightedShaman.java b/Mage.Sets/src/mage/cards/b/BlightedShaman.java index 903d30ec102..d1efb96c5d9 100644 --- a/Mage.Sets/src/mage/cards/b/BlightedShaman.java +++ b/Mage.Sets/src/mage/cards/b/BlightedShaman.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -55,7 +56,7 @@ public class BlightedShaman extends CardImpl { private static final FilterControlledPermanent filterSwamp = new FilterControlledPermanent("a Swamp"); static { - filterSwamp.add(new SubtypePredicate("Swamp")); + filterSwamp.add(new SubtypePredicate(SubType.SWAMP)); } public BlightedShaman(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/Blightspeaker.java b/Mage.Sets/src/mage/cards/b/Blightspeaker.java index 6700fcacc65..2212c508b0a 100644 --- a/Mage.Sets/src/mage/cards/b/Blightspeaker.java +++ b/Mage.Sets/src/mage/cards/b/Blightspeaker.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterPermanentCard; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -56,7 +57,7 @@ public class Blightspeaker extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 3 or less"); static { - filter.add(new SubtypePredicate("Rebel")); + filter.add(new SubtypePredicate(SubType.REBEL)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 4)); } diff --git a/Mage.Sets/src/mage/cards/b/BlindSpotGiant.java b/Mage.Sets/src/mage/cards/b/BlindSpotGiant.java index 63f9bf99091..a29967da010 100644 --- a/Mage.Sets/src/mage/cards/b/BlindSpotGiant.java +++ b/Mage.Sets/src/mage/cards/b/BlindSpotGiant.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -77,7 +78,7 @@ class BlindSpotGiantEffect extends RestrictionEffect { private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Giant"); static { - filter.add(new SubtypePredicate("Giant")); + filter.add(new SubtypePredicate(SubType.GIANT)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/b/BlinkmothNexus.java b/Mage.Sets/src/mage/cards/b/BlinkmothNexus.java index 3a386d36f22..387864e7a23 100644 --- a/Mage.Sets/src/mage/cards/b/BlinkmothNexus.java +++ b/Mage.Sets/src/mage/cards/b/BlinkmothNexus.java @@ -41,6 +41,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,7 +58,7 @@ public class BlinkmothNexus extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Blinkmoth"); static { - filter.add(new SubtypePredicate("Blinkmoth")); + filter.add(new SubtypePredicate(SubType.BLINKMOTH)); } public BlinkmothNexus(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BloodstainedMire.java b/Mage.Sets/src/mage/cards/b/BloodstainedMire.java index fcf584bd202..d30b55d900c 100644 --- a/Mage.Sets/src/mage/cards/b/BloodstainedMire.java +++ b/Mage.Sets/src/mage/cards/b/BloodstainedMire.java @@ -32,7 +32,9 @@ import mage.abilities.common.FetchLandActivatedAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; +import java.util.EnumSet; import java.util.UUID; /** @@ -46,7 +48,7 @@ public class BloodstainedMire extends CardImpl { this.frameColor = new ObjectColor("RB"); // {tap}, Pay 1 life, Sacrifice Bloodstained Mire: Search your library for a Swamp or Mountain card and put it onto the battlefield. Then shuffle your library. - this.addAbility(new FetchLandActivatedAbility(new String[]{"Swamp", "Mountain"})); + this.addAbility(new FetchLandActivatedAbility(EnumSet.of(SubType.SWAMP,SubType.MOUNTAIN))); } public BloodstainedMire(final BloodstainedMire card) { diff --git a/Mage.Sets/src/mage/cards/b/BloodthirstyOgre.java b/Mage.Sets/src/mage/cards/b/BloodthirstyOgre.java index 90ca2567e89..3e28d9d7eaa 100644 --- a/Mage.Sets/src/mage/cards/b/BloodthirstyOgre.java +++ b/Mage.Sets/src/mage/cards/b/BloodthirstyOgre.java @@ -42,6 +42,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterControlledPermanent; @@ -59,7 +60,7 @@ public class BloodthirstyOgre extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control a Demon"); static { - filter.add(new SubtypePredicate("Demon")); + filter.add(new SubtypePredicate(SubType.DEMON)); } public BloodthirstyOgre(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BlurSliver.java b/Mage.Sets/src/mage/cards/b/BlurSliver.java index d78e0568c67..860895f0637 100644 --- a/Mage.Sets/src/mage/cards/b/BlurSliver.java +++ b/Mage.Sets/src/mage/cards/b/BlurSliver.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; @@ -56,7 +57,7 @@ public class BlurSliver extends CardImpl { // Sliver creatures you control have haste. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(HasteAbility.getInstance(), Duration.WhileOnBattlefield, - new FilterControlledCreaturePermanent("Sliver", "Sliver creatures you control")))); + new FilterControlledCreaturePermanent(SubType.SLIVER, "Sliver creatures you control")))); } diff --git a/Mage.Sets/src/mage/cards/b/BogRats.java b/Mage.Sets/src/mage/cards/b/BogRats.java index 2a3c675ac4d..13436913440 100644 --- a/Mage.Sets/src/mage/cards/b/BogRats.java +++ b/Mage.Sets/src/mage/cards/b/BogRats.java @@ -34,6 +34,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class BogRats extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Walls"); static { - filter.add(new SubtypePredicate("Wall")); + filter.add(new SubtypePredicate(SubType.WALL)); } public BogRats(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BogSerpent.java b/Mage.Sets/src/mage/cards/b/BogSerpent.java index 30974bfbbea..95ddfe5b5cb 100644 --- a/Mage.Sets/src/mage/cards/b/BogSerpent.java +++ b/Mage.Sets/src/mage/cards/b/BogSerpent.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.combat.CantAttackUnlessDefenderControllsPer import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; @@ -54,11 +55,11 @@ public class BogSerpent extends CardImpl { this.toughness = new MageInt(5); // Bog Serpent can't attack unless defending player controls a Swamp. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Swamp", "a Swamp")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.SWAMP, "a Swamp")))); // When you control no Swamps, sacrifice Bog Serpent. this.addAbility(new ControlsPermanentsControllerTriggeredAbility( - new FilterLandPermanent("Swamp", "no Swamps"), ComparisonType.EQUAL_TO, 0, + new FilterLandPermanent(SubType.SWAMP, "no Swamps"), ComparisonType.EQUAL_TO, 0, new SacrificeSourceEffect())); } diff --git a/Mage.Sets/src/mage/cards/b/BoggartArsonists.java b/Mage.Sets/src/mage/cards/b/BoggartArsonists.java index c03dbfb4de9..8cce17bffac 100644 --- a/Mage.Sets/src/mage/cards/b/BoggartArsonists.java +++ b/Mage.Sets/src/mage/cards/b/BoggartArsonists.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.PlainswalkAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.Predicates; @@ -55,8 +56,8 @@ public class BoggartArsonists extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Scarecrow"), - new SubtypePredicate("Plains"))); + new SubtypePredicate(SubType.SCARECROW), + new SubtypePredicate(SubType.PLAINS))); } public BoggartArsonists(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BoggartBirthRite.java b/Mage.Sets/src/mage/cards/b/BoggartBirthRite.java index 1e83479996c..c54fa192c47 100644 --- a/Mage.Sets/src/mage/cards/b/BoggartBirthRite.java +++ b/Mage.Sets/src/mage/cards/b/BoggartBirthRite.java @@ -31,6 +31,7 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInYourGraveyard; @@ -46,7 +47,7 @@ public class BoggartBirthRite extends CardImpl { private static final FilterCard filter = new FilterCard("Goblin card from your graveyard"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public BoggartBirthRite(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BoggartMob.java b/Mage.Sets/src/mage/cards/b/BoggartMob.java index a2c74a48579..0173a4ff081 100644 --- a/Mage.Sets/src/mage/cards/b/BoggartMob.java +++ b/Mage.Sets/src/mage/cards/b/BoggartMob.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SetTargetPointer; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.GoblinRogueToken; @@ -50,7 +51,7 @@ public class BoggartMob extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Goblin you control"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public BoggartMob(UUID ownerId, CardSetInfo setInfo) { @@ -61,7 +62,7 @@ public class BoggartMob extends CardImpl { this.toughness = new MageInt(5); // Champion a Goblin - this.addAbility(new ChampionAbility(this, "Goblin", false)); + this.addAbility(new ChampionAbility(this, SubType.GOBLIN, false)); // Whenever a Goblin you control deals combat damage to a player, you may create a 1/1 black Goblin Rogue creature token. this.addAbility(new DealsDamageToAPlayerAllTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/b/BoggartShenanigans.java b/Mage.Sets/src/mage/cards/b/BoggartShenanigans.java index 618bf9549a7..eff1860c1ff 100644 --- a/Mage.Sets/src/mage/cards/b/BoggartShenanigans.java +++ b/Mage.Sets/src/mage/cards/b/BoggartShenanigans.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class BoggartShenanigans extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public BoggartShenanigans(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BoggartSpriteChaser.java b/Mage.Sets/src/mage/cards/b/BoggartSpriteChaser.java index 24fd2c94d38..def4ee7fd51 100644 --- a/Mage.Sets/src/mage/cards/b/BoggartSpriteChaser.java +++ b/Mage.Sets/src/mage/cards/b/BoggartSpriteChaser.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; @@ -60,7 +61,7 @@ public class BoggartSpriteChaser extends CardImpl { this.toughness = new MageInt(2); // As long as you control a Faerie, Boggart Sprite-Chaser gets +1/+1 and has flying. - FilterPermanent filter = new FilterPermanent("Faerie", "Faerie"); + FilterPermanent filter = new FilterPermanent(SubType.FAERIE, "Faerie"); Effect effect = new BoostSourceWhileControlsEffect(filter, 1, 1); effect.setText("As long as you control a Faerie, {this} gets +1/+1"); Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect); diff --git a/Mage.Sets/src/mage/cards/b/Boil.java b/Mage.Sets/src/mage/cards/b/Boil.java index 82771100200..e2d8e71fa25 100644 --- a/Mage.Sets/src/mage/cards/b/Boil.java +++ b/Mage.Sets/src/mage/cards/b/Boil.java @@ -31,6 +31,7 @@ import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -45,7 +46,7 @@ public class Boil extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("islands"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public Boil(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BorderlandBehemoth.java b/Mage.Sets/src/mage/cards/b/BorderlandBehemoth.java index bf8476f5bea..304ced8c80d 100644 --- a/Mage.Sets/src/mage/cards/b/BorderlandBehemoth.java +++ b/Mage.Sets/src/mage/cards/b/BorderlandBehemoth.java @@ -36,10 +36,7 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.keyword.TrampleAbility; 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.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -66,7 +63,7 @@ public class BorderlandBehemoth extends CardImpl { // Borderland Behemoth gets +4/+4 for each other Giant you control. FilterCreaturePermanent filter = new FilterCreaturePermanent("other Giant you control"); - filter.add(new SubtypePredicate("Giant")); + filter.add(new SubtypePredicate(SubType.GIANT)); filter.add(Predicates.not(new PermanentIdPredicate(this.getId()))); filter.add(new ControllerPredicate(TargetController.YOU)); DynamicValue xValue = new PermanentsOnBattlefieldCount(filter, 4); diff --git a/Mage.Sets/src/mage/cards/b/BroodSliver.java b/Mage.Sets/src/mage/cards/b/BroodSliver.java index 52aac00a44a..7e751971374 100644 --- a/Mage.Sets/src/mage/cards/b/BroodSliver.java +++ b/Mage.Sets/src/mage/cards/b/BroodSliver.java @@ -36,6 +36,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.SetTargetPointer; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.permanent.token.SliverToken; @@ -58,7 +59,7 @@ public class BroodSliver extends CardImpl { // Whenever a Sliver deals combat damage to a player, its controller may create a 1/1 colorless Sliver creature token. this.addAbility(new DealsDamageToAPlayerAllTriggeredAbility(new BroodSliverEffect(), - new FilterCreaturePermanent("Sliver", "a Sliver"), false, SetTargetPointer.PLAYER, true)); + new FilterCreaturePermanent(SubType.SLIVER, "a Sliver"), false, SetTargetPointer.PLAYER, true)); } public BroodSliver(final BroodSliver card) { diff --git a/Mage.Sets/src/mage/cards/b/BrunaTheFadingLight.java b/Mage.Sets/src/mage/cards/b/BrunaTheFadingLight.java index 72ce3556cab..0246366f9dc 100644 --- a/Mage.Sets/src/mage/cards/b/BrunaTheFadingLight.java +++ b/Mage.Sets/src/mage/cards/b/BrunaTheFadingLight.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.FilterCard; @@ -58,8 +59,8 @@ public class BrunaTheFadingLight extends CardImpl { static { filter.add(Predicates.and(new CardTypePredicate(CardType.CREATURE), - (Predicates.or(new SubtypePredicate("Human"), - (new SubtypePredicate("Angel")))))); + (Predicates.or(new SubtypePredicate(SubType.HUMAN), + (new SubtypePredicate(SubType.ANGEL)))))); } public BrunaTheFadingLight(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BullAurochs.java b/Mage.Sets/src/mage/cards/b/BullAurochs.java index 1342ae8f8cc..3dabd1b0d0a 100644 --- a/Mage.Sets/src/mage/cards/b/BullAurochs.java +++ b/Mage.Sets/src/mage/cards/b/BullAurochs.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; @@ -52,7 +53,7 @@ public class BullAurochs extends CardImpl { private static final FilterAttackingCreature filter = new FilterAttackingCreature("other attacking Aurochs"); static { - filter.add(new SubtypePredicate("Aurochs")); + filter.add(new SubtypePredicate(SubType.AUROCHS)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/c/CallToGlory.java b/Mage.Sets/src/mage/cards/c/CallToGlory.java index 18ed6672a03..670e7d108c0 100644 --- a/Mage.Sets/src/mage/cards/c/CallToGlory.java +++ b/Mage.Sets/src/mage/cards/c/CallToGlory.java @@ -36,6 +36,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -53,7 +54,7 @@ public class CallToGlory extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Samurai"); static { - filter.add(new SubtypePredicate("Samurai")); + filter.add(new SubtypePredicate(SubType.SAMURAI)); } public CallToGlory(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CaptainOfTheMists.java b/Mage.Sets/src/mage/cards/c/CaptainOfTheMists.java index fa028ce56c1..b91e33d7be3 100644 --- a/Mage.Sets/src/mage/cards/c/CaptainOfTheMists.java +++ b/Mage.Sets/src/mage/cards/c/CaptainOfTheMists.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.UntapSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledCreaturePermanent; @@ -58,7 +59,7 @@ public class CaptainOfTheMists extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public CaptainOfTheMists(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CaptivatingVampire.java b/Mage.Sets/src/mage/cards/c/CaptivatingVampire.java index cd2a49fa268..9a9cfb45b12 100644 --- a/Mage.Sets/src/mage/cards/c/CaptivatingVampire.java +++ b/Mage.Sets/src/mage/cards/c/CaptivatingVampire.java @@ -59,8 +59,8 @@ public class CaptivatingVampire extends CardImpl { private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("untapped Vampires you control"); static { - filter1.add(new SubtypePredicate("Vampire")); - filter2.add(new SubtypePredicate("Vampire")); + filter1.add(new SubtypePredicate(SubType.VAMPIRE)); + filter2.add(new SubtypePredicate(SubType.VAMPIRE)); filter2.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/c/CaribouRange.java b/Mage.Sets/src/mage/cards/c/CaribouRange.java index ecd11db88a6..3e6684f4daf 100644 --- a/Mage.Sets/src/mage/cards/c/CaribouRange.java +++ b/Mage.Sets/src/mage/cards/c/CaribouRange.java @@ -42,10 +42,7 @@ import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AttachmentType; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -64,7 +61,7 @@ public class CaribouRange extends CardImpl { static { filter.add(new TokenPredicate()); - filter.add(new SubtypePredicate("Caribou")); + filter.add(new SubtypePredicate(SubType.CARIBOU)); } public CaribouRange(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CarpetOfFlowers.java b/Mage.Sets/src/mage/cards/c/CarpetOfFlowers.java index f12eb0b7840..381af1aea3d 100644 --- a/Mage.Sets/src/mage/cards/c/CarpetOfFlowers.java +++ b/Mage.Sets/src/mage/cards/c/CarpetOfFlowers.java @@ -37,6 +37,7 @@ import mage.choices.ChoiceColor; import mage.choices.ChoiceImpl; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -137,7 +138,7 @@ class CarpetOfFlowersEffect extends ManaEffect { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Island "); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); filter.add(new CardTypePredicate(CardType.LAND)); } diff --git a/Mage.Sets/src/mage/cards/c/CateranBrute.java b/Mage.Sets/src/mage/cards/c/CateranBrute.java index 1f40866cb05..a0fdee6b3a5 100644 --- a/Mage.Sets/src/mage/cards/c/CateranBrute.java +++ b/Mage.Sets/src/mage/cards/c/CateranBrute.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterPermanentCard; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -55,7 +56,7 @@ public class CateranBrute extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 2 or less"); static { - filter.add(new SubtypePredicate()); + filter.add(new SubtypePredicate(SubType.MERCENARY)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 3)); } diff --git a/Mage.Sets/src/mage/cards/c/CateranEnforcer.java b/Mage.Sets/src/mage/cards/c/CateranEnforcer.java index 486c294c45b..5cab7f219ae 100644 --- a/Mage.Sets/src/mage/cards/c/CateranEnforcer.java +++ b/Mage.Sets/src/mage/cards/c/CateranEnforcer.java @@ -39,6 +39,7 @@ import mage.abilities.keyword.FearAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterPermanentCard; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -56,7 +57,7 @@ public class CateranEnforcer extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 4 or less"); static { - filter.add(new SubtypePredicate("Mercenary")); + filter.add(new SubtypePredicate(SubType.MERCENARY)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 5)); } diff --git a/Mage.Sets/src/mage/cards/c/CateranOverlord.java b/Mage.Sets/src/mage/cards/c/CateranOverlord.java index 75a81adfbcc..7b321742928 100644 --- a/Mage.Sets/src/mage/cards/c/CateranOverlord.java +++ b/Mage.Sets/src/mage/cards/c/CateranOverlord.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterPermanentCard; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -58,7 +59,7 @@ public class CateranOverlord extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 6 or less"); static { - filter.add(new SubtypePredicate("Mercenary")); + filter.add(new SubtypePredicate(SubType.MERCENARY)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 7)); } diff --git a/Mage.Sets/src/mage/cards/c/CateranSlaver.java b/Mage.Sets/src/mage/cards/c/CateranSlaver.java index 8457a86e0c6..2c0e9ff6694 100644 --- a/Mage.Sets/src/mage/cards/c/CateranSlaver.java +++ b/Mage.Sets/src/mage/cards/c/CateranSlaver.java @@ -39,6 +39,7 @@ import mage.abilities.keyword.SwampwalkAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterPermanentCard; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -56,7 +57,7 @@ public class CateranSlaver extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 5 or less"); static { - filter.add(new SubtypePredicate("Mercenary")); + filter.add(new SubtypePredicate(SubType.MERCENARY)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 6)); } diff --git a/Mage.Sets/src/mage/cards/c/CauterySliver.java b/Mage.Sets/src/mage/cards/c/CauterySliver.java index 4962a7a17e2..00c4bb3048c 100644 --- a/Mage.Sets/src/mage/cards/c/CauterySliver.java +++ b/Mage.Sets/src/mage/cards/c/CauterySliver.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreatureOrPlayer; @@ -54,7 +55,7 @@ import java.util.UUID; */ public class CauterySliver extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("Sliver", "All Slivers"); + private static final FilterPermanent filter = new FilterPermanent(SubType.SLIVER, "All Slivers"); public CauterySliver(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{W}"); diff --git a/Mage.Sets/src/mage/cards/c/CemeteryReaper.java b/Mage.Sets/src/mage/cards/c/CemeteryReaper.java index 6c2760d1d37..9bca51506b8 100644 --- a/Mage.Sets/src/mage/cards/c/CemeteryReaper.java +++ b/Mage.Sets/src/mage/cards/c/CemeteryReaper.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; @@ -57,7 +58,7 @@ public class CemeteryReaper extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie creatures"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public CemeteryReaper(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CennsTactician.java b/Mage.Sets/src/mage/cards/c/CennsTactician.java index 6e3fc0fda51..6b71c48926b 100644 --- a/Mage.Sets/src/mage/cards/c/CennsTactician.java +++ b/Mage.Sets/src/mage/cards/c/CennsTactician.java @@ -37,10 +37,7 @@ import mage.abilities.effects.common.combat.CanBlockAdditionalCreatureAllEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.ColoredManaSymbol; -import mage.constants.Duration; -import mage.constants.Zone; +import mage.constants.*; import mage.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; @@ -59,7 +56,7 @@ public class CennsTactician extends CardImpl { private static final FilterCreaturePermanent filterSoldier = new FilterCreaturePermanent("Soldier creature"); private static final FilterControlledCreaturePermanent filterCounter = new FilterControlledCreaturePermanent("Each creature you control with a +1/+1 counter on it"); static { - filterSoldier.add(new SubtypePredicate("Soldier")); + filterSoldier.add(new SubtypePredicate(SubType.SOLDIER)); filterCounter.add(new CounterPredicate(CounterType.P1P1)); } diff --git a/Mage.Sets/src/mage/cards/c/ChainedToTheRocks.java b/Mage.Sets/src/mage/cards/c/ChainedToTheRocks.java index b1730aef3da..83c3ace546d 100644 --- a/Mage.Sets/src/mage/cards/c/ChainedToTheRocks.java +++ b/Mage.Sets/src/mage/cards/c/ChainedToTheRocks.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -93,7 +94,7 @@ public class ChainedToTheRocks extends CardImpl { private static final FilterCreaturePermanent filterTarget = new FilterCreaturePermanent("creature an opponent controls"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); filterTarget.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/c/ChangelingBerserker.java b/Mage.Sets/src/mage/cards/c/ChangelingBerserker.java index b63553a4d0e..e8dbce9dbee 100644 --- a/Mage.Sets/src/mage/cards/c/ChangelingBerserker.java +++ b/Mage.Sets/src/mage/cards/c/ChangelingBerserker.java @@ -56,7 +56,7 @@ public class ChangelingBerserker extends CardImpl { this.addAbility(HasteAbility.getInstance()); // Champion a creature - this.addAbility(new ChampionAbility(this, "", true)); + this.addAbility(new ChampionAbility(this, true)); } public ChangelingBerserker(final ChangelingBerserker card) { diff --git a/Mage.Sets/src/mage/cards/c/ChangelingHero.java b/Mage.Sets/src/mage/cards/c/ChangelingHero.java index b80c5ad866b..8e18fc821c9 100644 --- a/Mage.Sets/src/mage/cards/c/ChangelingHero.java +++ b/Mage.Sets/src/mage/cards/c/ChangelingHero.java @@ -53,7 +53,7 @@ public class ChangelingHero extends CardImpl { this.addAbility(ChangelingAbility.getInstance()); // Champion a creature - this.addAbility(new ChampionAbility(this, "", true)); + this.addAbility(new ChampionAbility(this, true)); // Lifelink this.addAbility(LifelinkAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/c/ChargeAcrossTheAraba.java b/Mage.Sets/src/mage/cards/c/ChargeAcrossTheAraba.java index b9ffcdbdc18..789309bfadc 100644 --- a/Mage.Sets/src/mage/cards/c/ChargeAcrossTheAraba.java +++ b/Mage.Sets/src/mage/cards/c/ChargeAcrossTheAraba.java @@ -35,6 +35,7 @@ package mage.cards.c; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; + import mage.constants.SubType; import java.util.UUID; @@ -50,7 +51,7 @@ public class ChargeAcrossTheAraba extends CardImpl { // Sweep - Return any number of Plains you control to their owner's hand. Creatures you control get +1/+1 until end of turn for each Plains returned this way. - this.getSpellAbility().addEffect(new SweepEffect("Plains")); + this.getSpellAbility().addEffect(new SweepEffect(SubType.PLAINS)); DynamicValue sweepValue = new SweepNumber("Plains", true); this.getSpellAbility().addEffect(new BoostControlledEffect(sweepValue, sweepValue, Duration.EndOfTurn)); diff --git a/Mage.Sets/src/mage/cards/c/Choke.java b/Mage.Sets/src/mage/cards/c/Choke.java index 199c54169a4..c89d2042174 100644 --- a/Mage.Sets/src/mage/cards/c/Choke.java +++ b/Mage.Sets/src/mage/cards/c/Choke.java @@ -31,10 +31,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect; 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.constants.*; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +46,7 @@ public class Choke extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Islands"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public Choke(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/ClashOfRealities.java b/Mage.Sets/src/mage/cards/c/ClashOfRealities.java index f8d9af36aca..263d2743d53 100644 --- a/Mage.Sets/src/mage/cards/c/ClashOfRealities.java +++ b/Mage.Sets/src/mage/cards/c/ClashOfRealities.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -55,8 +56,8 @@ public class ClashOfRealities extends CardImpl { private static final FilterCreaturePermanent filterNotSpirit = new FilterCreaturePermanent("non-Spirit creature"); static { - filterSpirit.add(new SubtypePredicate("Spirit")); - filterNotSpirit.add(Predicates.not(new SubtypePredicate("Spirit"))); + filterSpirit.add(new SubtypePredicate(SubType.SPIRIT)); + filterNotSpirit.add(Predicates.not(new SubtypePredicate(SubType.SPIRIT))); } public ClashOfRealities(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/Clickslither.java b/Mage.Sets/src/mage/cards/c/Clickslither.java index 60737a36b8f..c8410a28c55 100644 --- a/Mage.Sets/src/mage/cards/c/Clickslither.java +++ b/Mage.Sets/src/mage/cards/c/Clickslither.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -56,7 +57,7 @@ public class Clickslither extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Goblin"); static { - filter.add(new SubtypePredicate(("Goblin"))); + filter.add(new SubtypePredicate((SubType.GOBLIN))); } public Clickslither(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CloakOfInvisibility.java b/Mage.Sets/src/mage/cards/c/CloakOfInvisibility.java index 7172a9e1aa6..b82ecf5c83e 100644 --- a/Mage.Sets/src/mage/cards/c/CloakOfInvisibility.java +++ b/Mage.Sets/src/mage/cards/c/CloakOfInvisibility.java @@ -52,7 +52,7 @@ import java.util.UUID; public class CloakOfInvisibility extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by Walls"); static { - filter.add(Predicates.not(new SubtypePredicate("Wall"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.WALL))); } public CloakOfInvisibility(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/Cloudpost.java b/Mage.Sets/src/mage/cards/c/Cloudpost.java index c32e8c56ce2..1a18b4d445a 100644 --- a/Mage.Sets/src/mage/cards/c/Cloudpost.java +++ b/Mage.Sets/src/mage/cards/c/Cloudpost.java @@ -34,6 +34,7 @@ import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class Cloudpost extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Locus in play"); static { - filter.add(new SubtypePredicate("Locus")); + filter.add(new SubtypePredicate(SubType.LOCUS)); } public Cloudpost(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CloudreachCavalry.java b/Mage.Sets/src/mage/cards/c/CloudreachCavalry.java index 0bc0acb27c9..a404405ca0e 100644 --- a/Mage.Sets/src/mage/cards/c/CloudreachCavalry.java +++ b/Mage.Sets/src/mage/cards/c/CloudreachCavalry.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,7 +55,7 @@ public class CloudreachCavalry extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Bird"); static { - filter.add(new SubtypePredicate("Bird")); + filter.add(new SubtypePredicate(SubType.BIRD)); } public CloudreachCavalry(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/ClutchOfUndeath.java b/Mage.Sets/src/mage/cards/c/ClutchOfUndeath.java index 2d7c390abd5..4cf3e125ea7 100644 --- a/Mage.Sets/src/mage/cards/c/ClutchOfUndeath.java +++ b/Mage.Sets/src/mage/cards/c/ClutchOfUndeath.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -67,7 +68,7 @@ public class ClutchOfUndeath extends CardImpl { new ConditionalContinuousEffect( new BoostEnchantedEffect(3, 3), new BoostEnchantedEffect(-3, -3), - new EnchantedCreatureSubtypeCondition("Zombie"), + new EnchantedCreatureSubtypeCondition(SubType.ZOMBIE), "Enchanted creature gets +3/+3 as long as it's a Zombie. Otherwise, it gets -3/-3.") ) ); diff --git a/Mage.Sets/src/mage/cards/c/CoalitionFlag.java b/Mage.Sets/src/mage/cards/c/CoalitionFlag.java index 20080703141..a428eece458 100644 --- a/Mage.Sets/src/mage/cards/c/CoalitionFlag.java +++ b/Mage.Sets/src/mage/cards/c/CoalitionFlag.java @@ -64,7 +64,7 @@ public class CoalitionFlag extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SetCardSubtypeAttachedEffect("Flagbearer", Duration.WhileOnBattlefield, AttachmentType.AURA))); // While choosing targets as part of casting a spell or activating an ability, your opponents must choose at least one Flagbearer on the battlefield if able. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new TargetsHaveToTargetPermanentIfAbleEffect(new FilterPermanent("Flagbearer", "one Flagbearer")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new TargetsHaveToTargetPermanentIfAbleEffect(new FilterPermanent(SubType.FLAGBEARER, "one Flagbearer")))); } public CoalitionFlag(final CoalitionFlag card) { diff --git a/Mage.Sets/src/mage/cards/c/CoalitionHonorGuard.java b/Mage.Sets/src/mage/cards/c/CoalitionHonorGuard.java index bd20e61a0b2..558860aeba6 100644 --- a/Mage.Sets/src/mage/cards/c/CoalitionHonorGuard.java +++ b/Mage.Sets/src/mage/cards/c/CoalitionHonorGuard.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.ruleModifying.TargetsHaveToTargetPermanentI import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; @@ -54,7 +55,7 @@ public class CoalitionHonorGuard extends CardImpl { this.toughness = new MageInt(4); // While choosing targets as part of casting a spell or activating an ability, your opponents must choose at least one Flagbearer on the battlefield if able. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new TargetsHaveToTargetPermanentIfAbleEffect(new FilterPermanent("Flagbearer", "one Flagbearer")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new TargetsHaveToTargetPermanentIfAbleEffect(new FilterPermanent(SubType.FLAGBEARER, "one Flagbearer")))); } public CoalitionHonorGuard(final CoalitionHonorGuard card) { diff --git a/Mage.Sets/src/mage/cards/c/CoalitionVictory.java b/Mage.Sets/src/mage/cards/c/CoalitionVictory.java index 625cb91e0dd..f35ef28e3fe 100644 --- a/Mage.Sets/src/mage/cards/c/CoalitionVictory.java +++ b/Mage.Sets/src/mage/cards/c/CoalitionVictory.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.WinGameSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.ColorPredicate; @@ -61,11 +62,11 @@ public class CoalitionVictory extends CardImpl { public static final FilterControlledCreaturePermanent filterGreen = new FilterControlledCreaturePermanent(); static { - filterPlains.add(new SubtypePredicate("Plains")); - filterIsland.add(new SubtypePredicate("Island")); - filterSwamp.add(new SubtypePredicate("Swamp")); - filterMountain.add(new SubtypePredicate("Mountain")); - filterForest.add(new SubtypePredicate("Forest")); + filterPlains.add(new SubtypePredicate(SubType.PLAINS)); + filterIsland.add(new SubtypePredicate(SubType.ISLAND)); + filterSwamp.add(new SubtypePredicate(SubType.SWAMP)); + filterMountain.add(new SubtypePredicate(SubType.MOUNTAIN)); + filterForest.add(new SubtypePredicate(SubType.FOREST)); filterWhite.add(new ColorPredicate(ObjectColor.WHITE)); filterBlue.add(new ColorPredicate(ObjectColor.BLUE)); filterBlack.add(new ColorPredicate(ObjectColor.BLACK)); diff --git a/Mage.Sets/src/mage/cards/c/CoastalDrake.java b/Mage.Sets/src/mage/cards/c/CoastalDrake.java index 80e6181c763..a3b777bc399 100644 --- a/Mage.Sets/src/mage/cards/c/CoastalDrake.java +++ b/Mage.Sets/src/mage/cards/c/CoastalDrake.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -61,7 +62,7 @@ public class CoastalDrake extends CardImpl { // {1}{U}, {T} : Return target Kavu to its owner's hand. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandTargetEffect(), new ManaCostsImpl("{1}{U}")); - ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("Kavu", "Kavu"))); + ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent(SubType.KAVU, "Kavu"))); ability.addCost(new TapSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/Cockatrice.java b/Mage.Sets/src/mage/cards/c/Cockatrice.java index 41b24157063..f9f40c6843a 100644 --- a/Mage.Sets/src/mage/cards/c/Cockatrice.java +++ b/Mage.Sets/src/mage/cards/c/Cockatrice.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class Cockatrice extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall creature"); static { - filter.add(Predicates.not(new SubtypePredicate("Wall"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.WALL))); } public Cockatrice(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CompellingDeterrence.java b/Mage.Sets/src/mage/cards/c/CompellingDeterrence.java index 92f39b93d9f..3872d248f0a 100644 --- a/Mage.Sets/src/mage/cards/c/CompellingDeterrence.java +++ b/Mage.Sets/src/mage/cards/c/CompellingDeterrence.java @@ -33,6 +33,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -91,7 +92,7 @@ class CompellingDeterrenceEffect extends OneShotEffect { if (controller != null && player != null) { player.moveCards(target, Zone.HAND, source, game); FilterPermanent FILTER = new FilterPermanent(); - FILTER.add(new SubtypePredicate("Zombie")); + FILTER.add(new SubtypePredicate(SubType.ZOMBIE)); if (game.getState().getBattlefield().countAll(FILTER, controller.getId(), game) > 0) { player.discard(1, false, source, game); } diff --git a/Mage.Sets/src/mage/cards/c/ConfrontTheUnknown.java b/Mage.Sets/src/mage/cards/c/ConfrontTheUnknown.java index ee87e137c2e..7de2e78df4f 100644 --- a/Mage.Sets/src/mage/cards/c/ConfrontTheUnknown.java +++ b/Mage.Sets/src/mage/cards/c/ConfrontTheUnknown.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; @@ -50,7 +51,7 @@ public class ConfrontTheUnknown extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("each Clue you control"); static { - filter.add(new SubtypePredicate("Clue")); + filter.add(new SubtypePredicate(SubType.CLUE)); } public ConfrontTheUnknown(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/Conversion.java b/Mage.Sets/src/mage/cards/c/Conversion.java index 34bb28a0fb7..8989f3119b5 100644 --- a/Mage.Sets/src/mage/cards/c/Conversion.java +++ b/Mage.Sets/src/mage/cards/c/Conversion.java @@ -54,7 +54,7 @@ import java.util.stream.Collectors; */ public class Conversion extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain", "Mountains"); + private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.MOUNTAIN, "Mountains"); public Conversion(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{W}{W}"); diff --git a/Mage.Sets/src/mage/cards/c/CoralReef.java b/Mage.Sets/src/mage/cards/c/CoralReef.java index 599aa06f87b..459551fa942 100644 --- a/Mage.Sets/src/mage/cards/c/CoralReef.java +++ b/Mage.Sets/src/mage/cards/c/CoralReef.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; @@ -65,7 +66,7 @@ public class CoralReef extends CardImpl { private static final FilterControlledCreaturePermanent untappedBlueCreatureFilter = new FilterControlledCreaturePermanent("an untapped blue creature you control"); static { - islandFilter.add(new SubtypePredicate("Island")); + islandFilter.add(new SubtypePredicate(SubType.ISLAND)); untappedBlueCreatureFilter.add(Predicates.not(new TappedPredicate())); untappedBlueCreatureFilter.add(new ColorPredicate(ObjectColor.BLUE)); } diff --git a/Mage.Sets/src/mage/cards/c/Corrupt.java b/Mage.Sets/src/mage/cards/c/Corrupt.java index 6198667f3e1..13fa2834bcb 100644 --- a/Mage.Sets/src/mage/cards/c/Corrupt.java +++ b/Mage.Sets/src/mage/cards/c/Corrupt.java @@ -34,6 +34,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -74,7 +75,7 @@ class CorruptEffect extends OneShotEffect { private static final FilterLandPermanent filter = new FilterLandPermanent("Swamps"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/c/CracklingPerimeter.java b/Mage.Sets/src/mage/cards/c/CracklingPerimeter.java index 97d2a1d59e1..451a6b0de24 100644 --- a/Mage.Sets/src/mage/cards/c/CracklingPerimeter.java +++ b/Mage.Sets/src/mage/cards/c/CracklingPerimeter.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.DamagePlayersEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; @@ -52,7 +53,7 @@ public class CracklingPerimeter extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Gate you control"); static { - filter.add(new SubtypePredicate("Gate")); + filter.add(new SubtypePredicate(SubType.GATE)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/c/CrosissCatacombs.java b/Mage.Sets/src/mage/cards/c/CrosissCatacombs.java index 2b111670462..e88f2410845 100644 --- a/Mage.Sets/src/mage/cards/c/CrosissCatacombs.java +++ b/Mage.Sets/src/mage/cards/c/CrosissCatacombs.java @@ -36,6 +36,7 @@ import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class CrosissCatacombs extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("non-Lair land"); static{ - filter.add(Predicates.not(new SubtypePredicate("Lair"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.LAIR))); } public CrosissCatacombs(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CrusadingKnight.java b/Mage.Sets/src/mage/cards/c/CrusadingKnight.java index e0cfb75341f..7425146f4c8 100644 --- a/Mage.Sets/src/mage/cards/c/CrusadingKnight.java +++ b/Mage.Sets/src/mage/cards/c/CrusadingKnight.java @@ -35,10 +35,7 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.keyword.ProtectionAbility; 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.constants.*; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.ControllerPredicate; @@ -53,7 +50,7 @@ public class CrusadingKnight extends CardImpl { private static final FilterLandPermanent swampFilter = new FilterLandPermanent("Swamp your opponent controls"); static { - swampFilter.add(new SubtypePredicate("Swamp")); + swampFilter.add(new SubtypePredicate(SubType.SWAMP)); swampFilter.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/c/CrushUnderfoot.java b/Mage.Sets/src/mage/cards/c/CrushUnderfoot.java index 3832a0d606d..4afeec81f3a 100644 --- a/Mage.Sets/src/mage/cards/c/CrushUnderfoot.java +++ b/Mage.Sets/src/mage/cards/c/CrushUnderfoot.java @@ -33,6 +33,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -76,7 +77,7 @@ class CrushUnderfootEffect extends OneShotEffect { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Giant you control"); static { - filter.add(new SubtypePredicate("Giant")); + filter.add(new SubtypePredicate(SubType.GIANT)); } public CrushUnderfootEffect() { diff --git a/Mage.Sets/src/mage/cards/c/CruxOfFate.java b/Mage.Sets/src/mage/cards/c/CruxOfFate.java index ac387dcf829..38e2cbc7d69 100644 --- a/Mage.Sets/src/mage/cards/c/CruxOfFate.java +++ b/Mage.Sets/src/mage/cards/c/CruxOfFate.java @@ -32,6 +32,7 @@ import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class CruxOfFate extends CardImpl { private static final FilterCreaturePermanent filterNonDragon = new FilterCreaturePermanent("non-Dragon creatures"); static { - filterNonDragon.add(Predicates.not(new SubtypePredicate("Dragon"))); + filterNonDragon.add(Predicates.not(new SubtypePredicate(SubType.DRAGON))); } public CruxOfFate(UUID ownerId, CardSetInfo setInfo) { @@ -55,7 +56,7 @@ public class CruxOfFate extends CardImpl { // Choose one - // * Destroy all Dragon creatures. - this.getSpellAbility().addEffect(new DestroyAllEffect(new FilterCreaturePermanent("Dragon", "Dragon creatures"))); + this.getSpellAbility().addEffect(new DestroyAllEffect(new FilterCreaturePermanent(SubType.DRAGON, "Dragon creatures"))); // * Destroy all non-Dragon creatures. Mode mode = new Mode(); mode.getEffects().add(new DestroyAllEffect(new FilterCreaturePermanent(filterNonDragon))); diff --git a/Mage.Sets/src/mage/cards/c/Cryoclasm.java b/Mage.Sets/src/mage/cards/c/Cryoclasm.java index 7fa93259469..b23263b0c6c 100644 --- a/Mage.Sets/src/mage/cards/c/Cryoclasm.java +++ b/Mage.Sets/src/mage/cards/c/Cryoclasm.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class Cryoclasm extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Plains or Island"); static { - filter.add(Predicates.or(new SubtypePredicate("Plains"), new SubtypePredicate("Island"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.PLAINS), new SubtypePredicate(SubType.ISLAND))); } public Cryoclasm(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CryptSliver.java b/Mage.Sets/src/mage/cards/c/CryptSliver.java index eaf7b709dde..3b09118df33 100644 --- a/Mage.Sets/src/mage/cards/c/CryptSliver.java +++ b/Mage.Sets/src/mage/cards/c/CryptSliver.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; @@ -60,7 +61,7 @@ public class CryptSliver extends CardImpl { // All Slivers have "{tap}: Regenerate target Sliver." Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateTargetEffect(), new TapSourceCost()); - ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("Sliver", "Sliver"))); + ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent(SubType.SLIVER, "Sliver"))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(ability, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE_SLIVERS))); } diff --git a/Mage.Sets/src/mage/cards/c/Cryptbreaker.java b/Mage.Sets/src/mage/cards/c/Cryptbreaker.java index cf799bf3724..40b72b89535 100644 --- a/Mage.Sets/src/mage/cards/c/Cryptbreaker.java +++ b/Mage.Sets/src/mage/cards/c/Cryptbreaker.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; @@ -61,7 +62,7 @@ public class Cryptbreaker extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public Cryptbreaker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CultOfTheWaxingMoon.java b/Mage.Sets/src/mage/cards/c/CultOfTheWaxingMoon.java index 4de9acd7ce5..aafa15ca232 100644 --- a/Mage.Sets/src/mage/cards/c/CultOfTheWaxingMoon.java +++ b/Mage.Sets/src/mage/cards/c/CultOfTheWaxingMoon.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; @@ -76,7 +77,7 @@ class CultOfTheWaxingMoonAbility extends TriggeredAbilityImpl { private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(); static { - filter.add(Predicates.not(new SubtypePredicate("Human"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.HUMAN))); } public CultOfTheWaxingMoonAbility() { diff --git a/Mage.Sets/src/mage/cards/c/CurseOfMisfortunes.java b/Mage.Sets/src/mage/cards/c/CurseOfMisfortunes.java index d1f1eb3bbb4..c11d5578304 100644 --- a/Mage.Sets/src/mage/cards/c/CurseOfMisfortunes.java +++ b/Mage.Sets/src/mage/cards/c/CurseOfMisfortunes.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; @@ -98,7 +99,7 @@ class CurseOfMisfortunesEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { FilterCard filter = new FilterCard("Curse card that doesn't have the same name as a Curse attached to enchanted player"); - filter.add(new SubtypePredicate("Curse")); + filter.add(new SubtypePredicate(SubType.CURSE)); Permanent enchantment = game.getPermanent(source.getSourceId()); if (enchantment != null && enchantment.getAttachedTo() != null) { Player targetPlayer = game.getPlayer(enchantment.getAttachedTo()); diff --git a/Mage.Sets/src/mage/cards/d/Dandan.java b/Mage.Sets/src/mage/cards/d/Dandan.java index 415f07de46e..de5fa019665 100644 --- a/Mage.Sets/src/mage/cards/d/Dandan.java +++ b/Mage.Sets/src/mage/cards/d/Dandan.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.combat.CantAttackUnlessDefenderControllsPer import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; @@ -54,11 +55,11 @@ public class Dandan extends CardImpl { this.toughness = new MageInt(1); // Dandan can't attack unless defending player controls an Island. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island", "an Island")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.ISLAND, "an Island")))); // When you control no Islands, sacrifice Dandan. this.addAbility(new ControlsPermanentsControllerTriggeredAbility( - new FilterLandPermanent("Island", "no Islands"), ComparisonType.EQUAL_TO, 0, + new FilterLandPermanent(SubType.ISLAND, "no Islands"), ComparisonType.EQUAL_TO, 0, new SacrificeSourceEffect())); } diff --git a/Mage.Sets/src/mage/cards/d/DarigaazsCaldera.java b/Mage.Sets/src/mage/cards/d/DarigaazsCaldera.java index bc39942388c..1cb11356968 100644 --- a/Mage.Sets/src/mage/cards/d/DarigaazsCaldera.java +++ b/Mage.Sets/src/mage/cards/d/DarigaazsCaldera.java @@ -36,6 +36,7 @@ import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class DarigaazsCaldera extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("non-Lair land"); static{ - filter.add(Predicates.not(new SubtypePredicate("Lair"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.LAIR))); } public DarigaazsCaldera(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DarkSupplicant.java b/Mage.Sets/src/mage/cards/d/DarkSupplicant.java index 7edc3dd9516..165076a75c0 100644 --- a/Mage.Sets/src/mage/cards/d/DarkSupplicant.java +++ b/Mage.Sets/src/mage/cards/d/DarkSupplicant.java @@ -39,6 +39,7 @@ import mage.cards.CardSetInfo; import mage.cards.Cards; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.common.FilterControlledPermanent; @@ -61,7 +62,7 @@ public class DarkSupplicant extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("three Clerics you control"); static { - filter.add(new SubtypePredicate("Cleric")); + filter.add(new SubtypePredicate(SubType.CLERIC)); } public DarkSupplicant(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/Deadapult.java b/Mage.Sets/src/mage/cards/d/Deadapult.java index b212867a1bd..b0551bc739a 100644 --- a/Mage.Sets/src/mage/cards/d/Deadapult.java +++ b/Mage.Sets/src/mage/cards/d/Deadapult.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class Deadapult extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Zombie"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public Deadapult(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DeathTrooper.java b/Mage.Sets/src/mage/cards/d/DeathTrooper.java index 2d919a0f798..d1d17530ad0 100644 --- a/Mage.Sets/src/mage/cards/d/DeathTrooper.java +++ b/Mage.Sets/src/mage/cards/d/DeathTrooper.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class DeathTrooper extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures"); static { - filter.add(new SubtypePredicate("Trooper")); + filter.add(new SubtypePredicate(SubType.TROOPER)); } public DeathTrooper(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DepalaPilotExemplar.java b/Mage.Sets/src/mage/cards/d/DepalaPilotExemplar.java index 949ea88af56..611e3df720d 100644 --- a/Mage.Sets/src/mage/cards/d/DepalaPilotExemplar.java +++ b/Mage.Sets/src/mage/cards/d/DepalaPilotExemplar.java @@ -66,10 +66,10 @@ public class DepalaPilotExemplar extends CardImpl { this.toughness = new MageInt(3); // Other Dwarves you control get +1/+1. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, new FilterCreaturePermanent("Dwarf", "Dwarves"), true))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, new FilterCreaturePermanent(SubType.DWARF, "Dwarves"), true))); // Each Vehicle you control gets +1/+1 as long as it's a creature. - Effect effect = new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, new FilterCreaturePermanent("Vehicle", "Vehicle")); + Effect effect = new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, new FilterCreaturePermanent(SubType.VEHICLE, "Vehicle")); effect.setText("Each Vehicle you control gets +1/+1 as long as it's a creature"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); @@ -92,7 +92,7 @@ class DepalaPilotExemplarEffect extends OneShotEffect { private static final FilterCard filter = new FilterCard("Dwarf and Vehicle cards"); static { - filter.add(Predicates.or(new SubtypePredicate("Dwarf"), new SubtypePredicate("Vehicle"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.DWARF), new SubtypePredicate(SubType.VEHICLE))); } DepalaPilotExemplarEffect() { diff --git a/Mage.Sets/src/mage/cards/d/DerangedHermit.java b/Mage.Sets/src/mage/cards/d/DerangedHermit.java index 62f7f33c900..463be2fd351 100644 --- a/Mage.Sets/src/mage/cards/d/DerangedHermit.java +++ b/Mage.Sets/src/mage/cards/d/DerangedHermit.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class DerangedHermit extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Squirrel creatures"); static { - filter.add(new SubtypePredicate("Squirrel")); + filter.add(new SubtypePredicate(SubType.SQUIRREL)); } public DerangedHermit(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DesertNomads.java b/Mage.Sets/src/mage/cards/d/DesertNomads.java index 99e18ef32e7..57eafb699b5 100644 --- a/Mage.Sets/src/mage/cards/d/DesertNomads.java +++ b/Mage.Sets/src/mage/cards/d/DesertNomads.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class DesertNomads extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("desert"); static { - filter.add(new SubtypePredicate("Desert")); + filter.add(new SubtypePredicate(SubType.DESERT)); } public DesertNomads(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DesiccatedNaga.java b/Mage.Sets/src/mage/cards/d/DesiccatedNaga.java index 747f1bd0cfc..0c48479c05f 100644 --- a/Mage.Sets/src/mage/cards/d/DesiccatedNaga.java +++ b/Mage.Sets/src/mage/cards/d/DesiccatedNaga.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterPlaneswalkerPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,7 +55,7 @@ public class DesiccatedNaga extends CardImpl { private static final FilterPlaneswalkerPermanent filter = new FilterPlaneswalkerPermanent("you control a Liliana planeswalker"); static { - filter.add(new SubtypePredicate("Liliana")); + filter.add(new SubtypePredicate(SubType.LILIANA)); } public DesiccatedNaga(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/Didgeridoo.java b/Mage.Sets/src/mage/cards/d/Didgeridoo.java index 081baed532c..e5d109214c6 100644 --- a/Mage.Sets/src/mage/cards/d/Didgeridoo.java +++ b/Mage.Sets/src/mage/cards/d/Didgeridoo.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterPermanentCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class Didgeridoo extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("a Minotaur permanent card"); static { - filter.add(new SubtypePredicate("Minotaur")); + filter.add(new SubtypePredicate(SubType.MINOTAUR)); } public Didgeridoo(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DiplomacyOfTheWastes.java b/Mage.Sets/src/mage/cards/d/DiplomacyOfTheWastes.java index 0c147959748..6f5d772df2f 100644 --- a/Mage.Sets/src/mage/cards/d/DiplomacyOfTheWastes.java +++ b/Mage.Sets/src/mage/cards/d/DiplomacyOfTheWastes.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.discard.DiscardCardYouChooseTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterNonlandCard; import mage.target.common.TargetOpponent; @@ -54,7 +55,7 @@ public class DiplomacyOfTheWastes extends CardImpl { this.getSpellAbility().addEffect(new DiscardCardYouChooseTargetEffect(new FilterNonlandCard())); this.getSpellAbility().addEffect(new ConditionalOneShotEffect( new LoseLifeTargetEffect(2), - new PermanentsOnTheBattlefieldCondition(new FilterControlledCreaturePermanent("Warrior", "Warrior")), + new PermanentsOnTheBattlefieldCondition(new FilterControlledCreaturePermanent(SubType.WARRIOR, "Warrior")), "If you control a Warrior, that player loses 2 life")); } diff --git a/Mage.Sets/src/mage/cards/d/DivinersWand.java b/Mage.Sets/src/mage/cards/d/DivinersWand.java index 847a8355a92..68e83b63b04 100644 --- a/Mage.Sets/src/mage/cards/d/DivinersWand.java +++ b/Mage.Sets/src/mage/cards/d/DivinersWand.java @@ -58,7 +58,7 @@ public class DivinersWand extends CardImpl { private static final FilterPermanent filter = new FilterCreaturePermanent("a Wizard creature"); static { - filter.add(new SubtypePredicate("Wizard")); + filter.add(new SubtypePredicate(SubType.WIZARD)); } public DivinersWand(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DormantSliver.java b/Mage.Sets/src/mage/cards/d/DormantSliver.java index 0b405c3cbb1..1d05d49d0a8 100644 --- a/Mage.Sets/src/mage/cards/d/DormantSliver.java +++ b/Mage.Sets/src/mage/cards/d/DormantSliver.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -50,9 +51,9 @@ import java.util.UUID; */ public class DormantSliver extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Sliver", "All Sliver creatures"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SLIVER, "All Sliver creatures"); - private static final FilterPermanent filterSlivers = new FilterPermanent("Sliver", "All Slivers"); + private static final FilterPermanent filterSlivers = new FilterPermanent(SubType.SLIVER, "All Slivers"); public DormantSliver(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{U}"); diff --git a/Mage.Sets/src/mage/cards/d/DownhillCharge.java b/Mage.Sets/src/mage/cards/d/DownhillCharge.java index b015c3b8b0c..3b6ddb49192 100644 --- a/Mage.Sets/src/mage/cards/d/DownhillCharge.java +++ b/Mage.Sets/src/mage/cards/d/DownhillCharge.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; @@ -53,7 +54,7 @@ public class DownhillCharge extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Mountain"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public DownhillCharge(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DragonTempest.java b/Mage.Sets/src/mage/cards/d/DragonTempest.java index 06264220b72..d3966cb3aab 100644 --- a/Mage.Sets/src/mage/cards/d/DragonTempest.java +++ b/Mage.Sets/src/mage/cards/d/DragonTempest.java @@ -72,7 +72,7 @@ public class DragonTempest extends CardImpl { Ability ability = new EntersBattlefieldControlledTriggeredAbility( Zone.BATTLEFIELD, new DragonTempestDamageEffect(), - new FilterCreaturePermanent("Dragon", "a Dragon"), + new FilterCreaturePermanent(SubType.DRAGON, "a Dragon"), false, SetTargetPointer.PERMANENT, "" @@ -97,7 +97,7 @@ class DragonTempestDamageEffect extends OneShotEffect { private static final FilterControlledPermanent dragonFilter = new FilterControlledPermanent(); static { - dragonFilter.add(new SubtypePredicate("Dragon")); + dragonFilter.add(new SubtypePredicate(SubType.DRAGON)); } public DragonTempestDamageEffect() { diff --git a/Mage.Sets/src/mage/cards/d/DranasChosen.java b/Mage.Sets/src/mage/cards/d/DranasChosen.java index 3d75436ad7c..164c04c0d70 100644 --- a/Mage.Sets/src/mage/cards/d/DranasChosen.java +++ b/Mage.Sets/src/mage/cards/d/DranasChosen.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -56,7 +57,7 @@ public class DranasChosen extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Ally you control"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/d/DroidFactory.java b/Mage.Sets/src/mage/cards/d/DroidFactory.java index 929ebbaff08..5a5b3beb932 100644 --- a/Mage.Sets/src/mage/cards/d/DroidFactory.java +++ b/Mage.Sets/src/mage/cards/d/DroidFactory.java @@ -35,10 +35,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterCard; import mage.filter.predicate.Predicate; import mage.filter.predicate.Predicates; @@ -89,9 +86,9 @@ public class DroidFactory extends CardImpl { FilterCard filter = new FilterCard("basic Plains, Island or Swamp"); filter.add(new CardTypePredicate(CardType.LAND)); ArrayList> subtypePredicates = new ArrayList<>(); - subtypePredicates.add(new SubtypePredicate("Swamp")); - subtypePredicates.add(new SubtypePredicate("Plains")); - subtypePredicates.add(new SubtypePredicate("Island")); + subtypePredicates.add(new SubtypePredicate(SubType.SWAMP)); + subtypePredicates.add(new SubtypePredicate(SubType.PLAINS)); + subtypePredicates.add(new SubtypePredicate(SubType.ISLAND)); filter.add(Predicates.or(subtypePredicates)); filter.add(new SupertypePredicate(SuperType.BASIC)); TargetCardInLibrary target = new TargetCardInLibrary(filter); diff --git a/Mage.Sets/src/mage/cards/d/DromokaTheEternal.java b/Mage.Sets/src/mage/cards/d/DromokaTheEternal.java index ffff611ef12..44588d31793 100644 --- a/Mage.Sets/src/mage/cards/d/DromokaTheEternal.java +++ b/Mage.Sets/src/mage/cards/d/DromokaTheEternal.java @@ -34,6 +34,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.common.FilterControlledCreaturePermanent; @@ -56,7 +57,7 @@ public class DromokaTheEternal extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Whenever a Dragon you control attacks, bolster 2. this.addAbility(new AttacksCreatureYouControlTriggeredAbility( - new BolsterEffect(2), false, new FilterControlledCreaturePermanent("Dragon", "Dragon you control"))); + new BolsterEffect(2), false, new FilterControlledCreaturePermanent(SubType.DRAGON, "Dragon you control"))); } public DromokaTheEternal(final DromokaTheEternal card) { diff --git a/Mage.Sets/src/mage/cards/d/DrossGolem.java b/Mage.Sets/src/mage/cards/d/DrossGolem.java index e7cf055ee20..529dcaf02d6 100644 --- a/Mage.Sets/src/mage/cards/d/DrossGolem.java +++ b/Mage.Sets/src/mage/cards/d/DrossGolem.java @@ -33,6 +33,7 @@ import mage.abilities.keyword.FearAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import java.util.UUID; @@ -49,7 +50,7 @@ public class DrossGolem extends CardImpl { this.toughness = new MageInt(2); // Affinity for Swamps - this.addAbility(new AffinityForLandTypeAbility("Swamp", "Swamps")); + this.addAbility(new AffinityForLandTypeAbility(SubType.SWAMP, "Swamps")); // Fear this.addAbility(FearAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/d/DrownerOfHope.java b/Mage.Sets/src/mage/cards/d/DrownerOfHope.java index ef4ad1490db..b8597750ba3 100644 --- a/Mage.Sets/src/mage/cards/d/DrownerOfHope.java +++ b/Mage.Sets/src/mage/cards/d/DrownerOfHope.java @@ -39,6 +39,7 @@ import mage.abilities.keyword.DevoidAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -59,8 +60,8 @@ public class DrownerOfHope extends CardImpl { static { FILTER.add(Predicates.and( - new SubtypePredicate("Eldrazi"), - new SubtypePredicate("Scion"))); + new SubtypePredicate(SubType.ELDRAZI), + new SubtypePredicate(SubType.SCION))); } public DrownerOfHope(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DrownerOfSecrets.java b/Mage.Sets/src/mage/cards/d/DrownerOfSecrets.java index b42cfe77b18..dc4e4a2fb06 100644 --- a/Mage.Sets/src/mage/cards/d/DrownerOfSecrets.java +++ b/Mage.Sets/src/mage/cards/d/DrownerOfSecrets.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -54,7 +55,7 @@ public class DrownerOfSecrets extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Merfolk you control"); static { - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/d/DrudgeSpell.java b/Mage.Sets/src/mage/cards/d/DrudgeSpell.java index 126a7ca3d31..eb033bb7ff6 100644 --- a/Mage.Sets/src/mage/cards/d/DrudgeSpell.java +++ b/Mage.Sets/src/mage/cards/d/DrudgeSpell.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.DestroyAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreatureCard; @@ -57,7 +58,7 @@ public class DrudgeSpell extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Skeleton tokens"); static { - filter.add(new SubtypePredicate("Skeleton")); + filter.add(new SubtypePredicate(SubType.SKELETON)); filter.add(new TokenPredicate()); } diff --git a/Mage.Sets/src/mage/cards/d/DuergarHedgeMage.java b/Mage.Sets/src/mage/cards/d/DuergarHedgeMage.java index 61da9dcb5e5..770a225ab15 100644 --- a/Mage.Sets/src/mage/cards/d/DuergarHedgeMage.java +++ b/Mage.Sets/src/mage/cards/d/DuergarHedgeMage.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetArtifactPermanent; @@ -54,8 +55,8 @@ public class DuergarHedgeMage extends CardImpl { private static final FilterLandPermanent filter2 = new FilterLandPermanent("a Plains"); static { - filter.add(new SubtypePredicate("Mountain")); - filter2.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); + filter2.add(new SubtypePredicate(SubType.PLAINS)); } 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."; diff --git a/Mage.Sets/src/mage/cards/d/DwarvenLieutenant.java b/Mage.Sets/src/mage/cards/d/DwarvenLieutenant.java index fb064024d32..05669e3b6c9 100644 --- a/Mage.Sets/src/mage/cards/d/DwarvenLieutenant.java +++ b/Mage.Sets/src/mage/cards/d/DwarvenLieutenant.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class DwarvenLieutenant extends CardImpl { static FilterCreaturePermanent filter = new FilterCreaturePermanent("Dwarf creature"); static { - filter.add(new SubtypePredicate("Dwarf")); + filter.add(new SubtypePredicate(SubType.DWARF)); } public DwarvenLieutenant(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DwarvenSoldier.java b/Mage.Sets/src/mage/cards/d/DwarvenSoldier.java index 3a77f999ecd..fe3602495cc 100644 --- a/Mage.Sets/src/mage/cards/d/DwarvenSoldier.java +++ b/Mage.Sets/src/mage/cards/d/DwarvenSoldier.java @@ -34,6 +34,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import java.util.UUID; @@ -52,7 +53,7 @@ public class DwarvenSoldier extends CardImpl { this.toughness = new MageInt(1); // Whenever Dwarven Soldier blocks or becomes blocked by one or more Orcs, Dwarven Soldier gets +0/+2 until end of turn. - this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(new BoostSourceEffect(0, 2, Duration.EndOfTurn), new FilterCreaturePermanent("Orc", "Orc creature"), false)); + this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(new BoostSourceEffect(0, 2, Duration.EndOfTurn), new FilterCreaturePermanent(SubType.ORC, "Orc creature"), false)); } public DwarvenSoldier(final DwarvenSoldier card) { diff --git a/Mage.Sets/src/mage/cards/d/DwynenGiltLeafDaen.java b/Mage.Sets/src/mage/cards/d/DwynenGiltLeafDaen.java index 52ab5181591..bf3bd807049 100644 --- a/Mage.Sets/src/mage/cards/d/DwynenGiltLeafDaen.java +++ b/Mage.Sets/src/mage/cards/d/DwynenGiltLeafDaen.java @@ -36,10 +36,7 @@ import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.AttackingPredicate; @@ -52,7 +49,7 @@ import java.util.UUID; */ public class DwynenGiltLeafDaen extends CardImpl { - private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Elf", "attacking Elf you control"); + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.ELF, "attacking Elf you control"); static { filter.add(new AttackingPredicate()); } @@ -69,7 +66,7 @@ public class DwynenGiltLeafDaen extends CardImpl { this.addAbility(ReachAbility.getInstance()); // Other Elf creatures you control get +1/+1. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, new FilterCreaturePermanent("Elf", "Elf creatures"), true))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, new FilterCreaturePermanent(SubType.ELF, "Elf creatures"), true))); // Whenever Dwynen, Gilt-Leaf Daen attacks, you gain 1 life for each attacking Elf you control. this.addAbility(new AttacksTriggeredAbility(new GainLifeEffect(new PermanentsOnBattlefieldCount(filter)), false)); diff --git a/Mage.Sets/src/mage/cards/e/EladamriLordOfLeaves.java b/Mage.Sets/src/mage/cards/e/EladamriLordOfLeaves.java index feeb309a190..d943d590063 100644 --- a/Mage.Sets/src/mage/cards/e/EladamriLordOfLeaves.java +++ b/Mage.Sets/src/mage/cards/e/EladamriLordOfLeaves.java @@ -34,10 +34,7 @@ import mage.abilities.keyword.ForestwalkAbility; import mage.abilities.keyword.ShroudAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,8 +51,8 @@ public class EladamriLordOfLeaves extends CardImpl { private static final FilterPermanent filterPermanents = new FilterPermanent("Elves"); static { - filterCreatures.add(new SubtypePredicate("Elf")); - filterPermanents.add(new SubtypePredicate("Elf")); + filterCreatures.add(new SubtypePredicate(SubType.ELF)); + filterPermanents.add(new SubtypePredicate(SubType.ELF)); } public EladamriLordOfLeaves(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/ElephantGraveyard.java b/Mage.Sets/src/mage/cards/e/ElephantGraveyard.java index c7f4add9b33..40f3940893e 100644 --- a/Mage.Sets/src/mage/cards/e/ElephantGraveyard.java +++ b/Mage.Sets/src/mage/cards/e/ElephantGraveyard.java @@ -35,6 +35,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.target.TargetPermanent; @@ -47,7 +48,7 @@ import java.util.UUID; */ public class ElephantGraveyard extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("Elephant", "Elephant"); + private static final FilterPermanent filter = new FilterPermanent(SubType.ELEPHANT, "Elephant"); public ElephantGraveyard(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.LAND},""); diff --git a/Mage.Sets/src/mage/cards/e/ElvishBranchbender.java b/Mage.Sets/src/mage/cards/e/ElvishBranchbender.java index 7399baac165..43346bc2d7c 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishBranchbender.java +++ b/Mage.Sets/src/mage/cards/e/ElvishBranchbender.java @@ -37,10 +37,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -58,7 +55,7 @@ public class ElvishBranchbender extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public ElvishBranchbender(UUID ownerId, CardSetInfo setInfo) { @@ -89,7 +86,7 @@ class ElvishBranchbenderEffect extends OneShotEffect { final static FilterControlledPermanent filter = new FilterControlledPermanent("Elves you control"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } ElvishBranchbenderEffect() { diff --git a/Mage.Sets/src/mage/cards/e/ElvishFarmer.java b/Mage.Sets/src/mage/cards/e/ElvishFarmer.java index aa0f24877e9..28520db8809 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishFarmer.java +++ b/Mage.Sets/src/mage/cards/e/ElvishFarmer.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.constants.Zone; import mage.counters.CounterType; @@ -57,7 +58,7 @@ public class ElvishFarmer extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Saproling"); static { - filter.add(new SubtypePredicate("Saproling")); + filter.add(new SubtypePredicate(SubType.SAPROLING)); } public ElvishFarmer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/ElvishGuidance.java b/Mage.Sets/src/mage/cards/e/ElvishGuidance.java index 847686aa3cf..91576e169b4 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishGuidance.java +++ b/Mage.Sets/src/mage/cards/e/ElvishGuidance.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; @@ -82,7 +83,7 @@ public class ElvishGuidance extends CardImpl { class ElvishGuidanceTriggeredAbility extends TriggeredManaAbility { public ElvishGuidanceTriggeredAbility() { - super(Zone.BATTLEFIELD, new DynamicManaEffect(Mana.GreenMana(1), new PermanentsOnBattlefieldCount(new FilterCreaturePermanent("Elf", "Elf")))); + super(Zone.BATTLEFIELD, new DynamicManaEffect(Mana.GreenMana(1), new PermanentsOnBattlefieldCount(new FilterCreaturePermanent(SubType.ELF, "Elf")))); } public ElvishGuidanceTriggeredAbility(final ElvishGuidanceTriggeredAbility ability) { diff --git a/Mage.Sets/src/mage/cards/e/ElvishHarbinger.java b/Mage.Sets/src/mage/cards/e/ElvishHarbinger.java index c3115e1e605..95b0b3511a0 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishHarbinger.java +++ b/Mage.Sets/src/mage/cards/e/ElvishHarbinger.java @@ -35,6 +35,7 @@ import mage.abilities.mana.AnyColorManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -49,7 +50,7 @@ public class ElvishHarbinger extends CardImpl { public static final FilterCard filter = new FilterCard("Elf card"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELEMENTAL)); } public ElvishHarbinger(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}"); diff --git a/Mage.Sets/src/mage/cards/e/ElvishPathcutter.java b/Mage.Sets/src/mage/cards/e/ElvishPathcutter.java index fa320f44395..ac2a9630e71 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishPathcutter.java +++ b/Mage.Sets/src/mage/cards/e/ElvishPathcutter.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class ElvishPathcutter extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf creature"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public ElvishPathcutter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/ElvishPromenade.java b/Mage.Sets/src/mage/cards/e/ElvishPromenade.java index c11c8f82f2e..e934f163e12 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishPromenade.java +++ b/Mage.Sets/src/mage/cards/e/ElvishPromenade.java @@ -32,6 +32,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.ElfToken; @@ -47,7 +48,7 @@ public class ElvishPromenade extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Elf you control"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public ElvishPromenade(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/ElvishSoultiller.java b/Mage.Sets/src/mage/cards/e/ElvishSoultiller.java index e27498add3f..0a15f7bf288 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishSoultiller.java +++ b/Mage.Sets/src/mage/cards/e/ElvishSoultiller.java @@ -41,6 +41,7 @@ import mage.choices.Choice; import mage.choices.ChoiceImpl; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -110,7 +111,7 @@ class ElvishSoultillerEffect extends OneShotEffect { } Cards cardsToLibrary = new CardsImpl(); FilterCreatureCard filter = new FilterCreatureCard(); - filter.add(new SubtypePredicate(typeChoice.getChoice())); + filter.add(new SubtypePredicate(SubType.byDescription(typeChoice.getChoice()))); cardsToLibrary.addAll(controller.getGraveyard().getCards(filter, source.getSourceId(), source.getControllerId(), game)); controller.putCardsOnTopOfLibrary(cardsToLibrary, game, source, false); controller.shuffleLibrary(source, game); diff --git a/Mage.Sets/src/mage/cards/e/EmrakulsEvangel.java b/Mage.Sets/src/mage/cards/e/EmrakulsEvangel.java index ae82b51f2ac..332f51896d4 100644 --- a/Mage.Sets/src/mage/cards/e/EmrakulsEvangel.java +++ b/Mage.Sets/src/mage/cards/e/EmrakulsEvangel.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; @@ -88,7 +89,7 @@ class EmrakulsEvangelCost extends CostImpl { static { filter.add(new AnotherPredicate()); - filter.add(Predicates.not(new SubtypePredicate("Eldrazi"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.ELDRAZI))); } private int numSacrificed = 1; // always sacrifices self at least diff --git a/Mage.Sets/src/mage/cards/e/EmrakulsInfluence.java b/Mage.Sets/src/mage/cards/e/EmrakulsInfluence.java index 9fefeb18e51..8221db9f894 100644 --- a/Mage.Sets/src/mage/cards/e/EmrakulsInfluence.java +++ b/Mage.Sets/src/mage/cards/e/EmrakulsInfluence.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterSpell; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class EmrakulsInfluence extends CardImpl { private static final FilterSpell filterSpell = new FilterSpell("Eldrazi creature spell with converted mana cost 7 or greater"); static { - filterSpell.add(new SubtypePredicate("Eldrazi")); + filterSpell.add(new SubtypePredicate( SubType.ELDRAZI)); filterSpell.add(new ConvertedManaCostPredicate(ComparisonType.MORE_THAN, 6)); } diff --git a/Mage.Sets/src/mage/cards/e/EndlessRanksOfTheDead.java b/Mage.Sets/src/mage/cards/e/EndlessRanksOfTheDead.java index 4faf8f1143b..eb7df23212f 100644 --- a/Mage.Sets/src/mage/cards/e/EndlessRanksOfTheDead.java +++ b/Mage.Sets/src/mage/cards/e/EndlessRanksOfTheDead.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -74,7 +75,7 @@ class HalfZombiesCount implements DynamicValue { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } @Override diff --git a/Mage.Sets/src/mage/cards/e/EnlistmentOfficer.java b/Mage.Sets/src/mage/cards/e/EnlistmentOfficer.java index d14ed147552..d289081b9a0 100644 --- a/Mage.Sets/src/mage/cards/e/EnlistmentOfficer.java +++ b/Mage.Sets/src/mage/cards/e/EnlistmentOfficer.java @@ -34,6 +34,7 @@ import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class EnlistmentOfficer extends CardImpl { private static final FilterCard filter = new FilterCard("Soldier cards"); static { - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public EnlistmentOfficer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/EquestrianSkill.java b/Mage.Sets/src/mage/cards/e/EquestrianSkill.java index 0fb3fd20ce6..7d43f880ae2 100644 --- a/Mage.Sets/src/mage/cards/e/EquestrianSkill.java +++ b/Mage.Sets/src/mage/cards/e/EquestrianSkill.java @@ -65,7 +65,7 @@ public class EquestrianSkill extends CardImpl { // As long as enchanted creature is a Human, it has trample. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( new GainAbilityAttachedEffect(TrampleAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield), - new EnchantedCreatureSubtypeCondition("Human"), + new EnchantedCreatureSubtypeCondition(SubType.HUMAN), "As long as enchanted creature is a Human, it has trample" ))); } diff --git a/Mage.Sets/src/mage/cards/e/EsperPanorama.java b/Mage.Sets/src/mage/cards/e/EsperPanorama.java index 85d542b29ed..f7ae8cf88ca 100644 --- a/Mage.Sets/src/mage/cards/e/EsperPanorama.java +++ b/Mage.Sets/src/mage/cards/e/EsperPanorama.java @@ -36,10 +36,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -61,9 +58,9 @@ public class EsperPanorama extends CardImpl { filter.add(new CardTypePredicate(CardType.LAND)); filter.add(new SupertypePredicate(SuperType.BASIC)); filter.add(Predicates.or( - new SubtypePredicate("Plains"), - new SubtypePredicate("Island"), - new SubtypePredicate("Swamp"))); + new SubtypePredicate(SubType.PLAINS), + new SubtypePredicate(SubType.ISLAND), + new SubtypePredicate(SubType.SWAMP))); } public EsperPanorama(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/EtherealWhiskergill.java b/Mage.Sets/src/mage/cards/e/EtherealWhiskergill.java index fdbe8508c89..58075dbbde9 100644 --- a/Mage.Sets/src/mage/cards/e/EtherealWhiskergill.java +++ b/Mage.Sets/src/mage/cards/e/EtherealWhiskergill.java @@ -34,6 +34,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; @@ -55,7 +56,7 @@ public class EtherealWhiskergill extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Ethereal Whiskergill can't attack unless defending player controls an Island. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island","an Island")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.ISLAND,"an Island")))); } public EtherealWhiskergill(final EtherealWhiskergill card) { diff --git a/Mage.Sets/src/mage/cards/e/EvergloveCourier.java b/Mage.Sets/src/mage/cards/e/EvergloveCourier.java index e9b82a00d4d..58c04b4d23b 100644 --- a/Mage.Sets/src/mage/cards/e/EvergloveCourier.java +++ b/Mage.Sets/src/mage/cards/e/EvergloveCourier.java @@ -42,6 +42,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -58,7 +59,7 @@ public class EvergloveCourier extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf creature"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public EvergloveCourier(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/ExtricatorOfFlesh.java b/Mage.Sets/src/mage/cards/e/ExtricatorOfFlesh.java index 5c8ce724d8a..a64899e8cce 100644 --- a/Mage.Sets/src/mage/cards/e/ExtricatorOfFlesh.java +++ b/Mage.Sets/src/mage/cards/e/ExtricatorOfFlesh.java @@ -41,6 +41,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; @@ -59,7 +60,7 @@ public class ExtricatorOfFlesh extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Eldrazi creature"); static { - filter.add(Predicates.not(new SubtypePredicate("Eldrazi"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.ELDRAZI))); } public ExtricatorOfFlesh(UUID ownerId, CardSetInfo setInfo) { @@ -74,7 +75,7 @@ public class ExtricatorOfFlesh extends CardImpl { // Eldrazi you control have vigilance this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect( - VigilanceAbility.getInstance(), Duration.WhileOnBattlefield, new FilterControlledCreaturePermanent("Eldrazi", "Eldrazi you control ")))); + VigilanceAbility.getInstance(), Duration.WhileOnBattlefield, new FilterControlledCreaturePermanent(SubType.ELDRAZI, "Eldrazi you control ")))); // {2}, {T}, Sacrifice a non-Eldrazi creature: Create a 3/2 colorless Eldrazi Horror creature token. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new EldraziHorrorToken()), new GenericManaCost(2)); diff --git a/Mage.Sets/src/mage/cards/e/EyeblightMassacre.java b/Mage.Sets/src/mage/cards/e/EyeblightMassacre.java index 5ab768fb84a..db956729f16 100644 --- a/Mage.Sets/src/mage/cards/e/EyeblightMassacre.java +++ b/Mage.Sets/src/mage/cards/e/EyeblightMassacre.java @@ -32,6 +32,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class EyeblightMassacre extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Non-Elf creatures"); static { - filter.add(Predicates.not(new SubtypePredicate("Elf"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.ELF))); } public EyeblightMassacre(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/EyeblightsEnding.java b/Mage.Sets/src/mage/cards/e/EyeblightsEnding.java index 024efef4ed7..63a5d36b28e 100644 --- a/Mage.Sets/src/mage/cards/e/EyeblightsEnding.java +++ b/Mage.Sets/src/mage/cards/e/EyeblightsEnding.java @@ -31,6 +31,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class EyeblightsEnding extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Elf creature"); static { - filter.add(Predicates.not(new SubtypePredicate("Elf"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.ELF))); } public EyeblightsEnding(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FaerieTrickery.java b/Mage.Sets/src/mage/cards/f/FaerieTrickery.java index e548746e979..48fdf8e8208 100644 --- a/Mage.Sets/src/mage/cards/f/FaerieTrickery.java +++ b/Mage.Sets/src/mage/cards/f/FaerieTrickery.java @@ -31,6 +31,7 @@ import mage.abilities.effects.common.CounterTargetWithReplacementEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterSpell; import mage.filter.predicate.Predicates; @@ -48,7 +49,7 @@ public class FaerieTrickery extends CardImpl { private static final FilterSpell filter = new FilterSpell("non-Faerie spell"); static { - filter.add(Predicates.not(new SubtypePredicate("Faerie"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.FAERIE))); } public FaerieTrickery(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FalkenrathGorger.java b/Mage.Sets/src/mage/cards/f/FalkenrathGorger.java index b7b6afabd21..db280a01c25 100644 --- a/Mage.Sets/src/mage/cards/f/FalkenrathGorger.java +++ b/Mage.Sets/src/mage/cards/f/FalkenrathGorger.java @@ -87,7 +87,7 @@ class FalkenrathGorgerEffect extends ContinuousEffectImpl { private static final FilterCreatureCard filter = new FilterCreatureCard("Vampire creature card you own"); static { - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); } diff --git a/Mage.Sets/src/mage/cards/f/FallenCleric.java b/Mage.Sets/src/mage/cards/f/FallenCleric.java index 63ac31911cf..0811d88426d 100644 --- a/Mage.Sets/src/mage/cards/f/FallenCleric.java +++ b/Mage.Sets/src/mage/cards/f/FallenCleric.java @@ -34,6 +34,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class FallenCleric extends CardImpl { private static final FilterCard filter = new FilterCard("Clerics"); static { - filter.add(new SubtypePredicate("Cleric")); + filter.add(new SubtypePredicate(SubType.CLERIC)); } public FallenCleric(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FelhidePetrifier.java b/Mage.Sets/src/mage/cards/f/FelhidePetrifier.java index a9452c97c1f..786b90541f0 100644 --- a/Mage.Sets/src/mage/cards/f/FelhidePetrifier.java +++ b/Mage.Sets/src/mage/cards/f/FelhidePetrifier.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; @@ -59,7 +60,7 @@ public class FelhidePetrifier extends CardImpl { // Other Minotaur creatures you control have deathtouch. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect( DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield, - new FilterCreaturePermanent("Minotaur","Minotaur creatures"), + new FilterCreaturePermanent(SubType.MINOTAUR,"Minotaur creatures"), true) )); } diff --git a/Mage.Sets/src/mage/cards/f/FieldOfReality.java b/Mage.Sets/src/mage/cards/f/FieldOfReality.java index e2a6c49c5cf..caf2a57cd78 100644 --- a/Mage.Sets/src/mage/cards/f/FieldOfReality.java +++ b/Mage.Sets/src/mage/cards/f/FieldOfReality.java @@ -60,7 +60,7 @@ public class FieldOfReality extends CardImpl { // Enchanted creature can't be blocked by Spirits. this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesAttachedEffect( - Duration.WhileOnBattlefield, new FilterCreaturePermanent("Spirit", "Spirits"), AttachmentType.AURA))); + Duration.WhileOnBattlefield, new FilterCreaturePermanent(SubType.SPIRIT, "Spirits"), AttachmentType.AURA))); // {1}{U}: Return Field of Reality to its owner's hand. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandSourceEffect(true), new ManaCostsImpl("{1}{U}"))); } diff --git a/Mage.Sets/src/mage/cards/f/FigureOfDestiny.java b/Mage.Sets/src/mage/cards/f/FigureOfDestiny.java index 1a7b5e05182..d98fac023b9 100644 --- a/Mage.Sets/src/mage/cards/f/FigureOfDestiny.java +++ b/Mage.Sets/src/mage/cards/f/FigureOfDestiny.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -56,8 +57,8 @@ public class FigureOfDestiny extends CardImpl { private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent(); private static final FilterCreaturePermanent filter3 = new FilterCreaturePermanent(); static { - filter2.add(new SubtypePredicate("Spirit")); - filter3.add(new SubtypePredicate("Warrior")); + filter2.add(new SubtypePredicate(SubType.SPIRIT)); + filter3.add(new SubtypePredicate(SubType.WARRIOR)); } public FigureOfDestiny(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/Flameshot.java b/Mage.Sets/src/mage/cards/f/Flameshot.java index 89d543fb4f5..cb1371d7432 100644 --- a/Mage.Sets/src/mage/cards/f/Flameshot.java +++ b/Mage.Sets/src/mage/cards/f/Flameshot.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.DamageMultiEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInHand; @@ -49,7 +50,7 @@ public class Flameshot extends CardImpl { private static final FilterCard filter = new FilterCard("a Mountain card"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public Flameshot(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FlashFlood.java b/Mage.Sets/src/mage/cards/f/FlashFlood.java index d372d731f28..d2c250752e8 100644 --- a/Mage.Sets/src/mage/cards/f/FlashFlood.java +++ b/Mage.Sets/src/mage/cards/f/FlashFlood.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class FlashFlood extends CardImpl { static { filter1.add(new ColorPredicate(ObjectColor.RED)); - filter2.add(new SubtypePredicate("Mountain")); + filter2.add(new SubtypePredicate(SubType.MOUNTAIN)); } public FlashFlood(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FlinthoofBoar.java b/Mage.Sets/src/mage/cards/f/FlinthoofBoar.java index b8e2008a1e8..357e09d60ba 100644 --- a/Mage.Sets/src/mage/cards/f/FlinthoofBoar.java +++ b/Mage.Sets/src/mage/cards/f/FlinthoofBoar.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class FlinthoofBoar extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Mountain"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public FlinthoofBoar(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FloodPlain.java b/Mage.Sets/src/mage/cards/f/FloodPlain.java index 3ebaadca185..73b0bec93a0 100644 --- a/Mage.Sets/src/mage/cards/f/FloodPlain.java +++ b/Mage.Sets/src/mage/cards/f/FloodPlain.java @@ -32,7 +32,9 @@ import mage.abilities.common.FetchLandActivatedAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; +import java.util.EnumSet; import java.util.UUID; /** @@ -47,7 +49,7 @@ public class FloodPlain extends CardImpl { // Flood Plain enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); // {tap}, Sacrifice Flood Plain: Search your library for a Plains or Island card and put it onto the battlefield. Then shuffle your library. - this.addAbility(new FetchLandActivatedAbility(false, new String[]{"Plains", "Island"})); + this.addAbility(new FetchLandActivatedAbility(false, EnumSet.of(SubType.PLAINS, SubType.ISLAND))); } public FloodPlain(final FloodPlain card) { diff --git a/Mage.Sets/src/mage/cards/f/Floodchaser.java b/Mage.Sets/src/mage/cards/f/Floodchaser.java index 6af53363bb2..b4a3afb3b7d 100644 --- a/Mage.Sets/src/mage/cards/f/Floodchaser.java +++ b/Mage.Sets/src/mage/cards/f/Floodchaser.java @@ -41,6 +41,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterLandPermanent; @@ -64,7 +65,7 @@ public class Floodchaser extends CardImpl { this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(6)), "{this} enters the battlefield with six +1/+1 counters on it")); // Floodchaser can't attack unless defending player controls an Island. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island","an Island")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.ISLAND,"an Island")))); // {U}, Remove a +1/+1 counter from Floodchaser: Target land becomes an Island until end of turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesBasicLandTargetEffect(Duration.EndOfTurn, "Island"), new ManaCostsImpl("{U}")); diff --git a/Mage.Sets/src/mage/cards/f/FloodedShoreline.java b/Mage.Sets/src/mage/cards/f/FloodedShoreline.java index 75070b8b002..31f95d9f4f9 100644 --- a/Mage.Sets/src/mage/cards/f/FloodedShoreline.java +++ b/Mage.Sets/src/mage/cards/f/FloodedShoreline.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class FloodedShoreline extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Islands"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public FloodedShoreline(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FloodedStrand.java b/Mage.Sets/src/mage/cards/f/FloodedStrand.java index f4d8eb56c36..2269b8a8bf7 100644 --- a/Mage.Sets/src/mage/cards/f/FloodedStrand.java +++ b/Mage.Sets/src/mage/cards/f/FloodedStrand.java @@ -32,7 +32,9 @@ import mage.abilities.common.FetchLandActivatedAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; +import java.util.EnumSet; import java.util.UUID; /** @@ -46,7 +48,7 @@ public class FloodedStrand extends CardImpl { this.frameColor = new ObjectColor("UW"); // {tap}, Pay 1 life, Sacrifice Flooded Strand: Search your library for a Plains or Island card and put it onto the battlefield. Then shuffle your library. - this.addAbility(new FetchLandActivatedAbility(new String[]{"Plains", "Island"})); + this.addAbility(new FetchLandActivatedAbility(EnumSet.of(SubType.PLAINS, SubType.ISLAND))); } public FloodedStrand(final FloodedStrand card) { diff --git a/Mage.Sets/src/mage/cards/f/FlowOfMaggots.java b/Mage.Sets/src/mage/cards/f/FlowOfMaggots.java index 5219f9929bf..2e44afe1a53 100644 --- a/Mage.Sets/src/mage/cards/f/FlowOfMaggots.java +++ b/Mage.Sets/src/mage/cards/f/FlowOfMaggots.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class FlowOfMaggots extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall creatures"); static { - filter.add(Predicates.not(new SubtypePredicate("Wall"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.WALL))); } public FlowOfMaggots(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FodderLaunch.java b/Mage.Sets/src/mage/cards/f/FodderLaunch.java index 6e49334736a..3a4bcc2035a 100644 --- a/Mage.Sets/src/mage/cards/f/FodderLaunch.java +++ b/Mage.Sets/src/mage/cards/f/FodderLaunch.java @@ -34,6 +34,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -50,7 +51,7 @@ public class FodderLaunch extends CardImpl { this.subtype.add("Goblin"); //As an additional cost to cast Fodder Launch, sacrifice a Goblin. - this.getSpellAbility().addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, new FilterControlledCreaturePermanent("Goblin", "a Goblin"), true))); + this.getSpellAbility().addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, new FilterControlledCreaturePermanent(SubType.GOBLIN, "a Goblin"), true))); //Target creature gets -5/-5 until end of turn. Fodder Launch deals 5 damage to that creature's controller. this.getSpellAbility().addEffect(new BoostTargetEffect(-5, -5, Duration.EndOfTurn)); diff --git a/Mage.Sets/src/mage/cards/f/FoothillGuide.java b/Mage.Sets/src/mage/cards/f/FoothillGuide.java index 8c18bf0396f..808b23f8cfb 100644 --- a/Mage.Sets/src/mage/cards/f/FoothillGuide.java +++ b/Mage.Sets/src/mage/cards/f/FoothillGuide.java @@ -34,6 +34,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class FoothillGuide extends CardImpl { private static final FilterCard filter = new FilterCard("Goblins"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public FoothillGuide(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/ForebodingRuins.java b/Mage.Sets/src/mage/cards/f/ForebodingRuins.java index 6108d48ece5..593fcce0833 100644 --- a/Mage.Sets/src/mage/cards/f/ForebodingRuins.java +++ b/Mage.Sets/src/mage/cards/f/ForebodingRuins.java @@ -35,6 +35,7 @@ import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,8 +52,8 @@ public class ForebodingRuins extends CardImpl { private static final FilterCard filter = new FilterCard("a Swamp or Mountain card from your hand"); static { - filter.add(Predicates.or(new SubtypePredicate("Swamp"), - new SubtypePredicate("Mountain"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.SWAMP), + new SubtypePredicate(SubType.MOUNTAIN))); } public ForebodingRuins(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/Fortitude.java b/Mage.Sets/src/mage/cards/f/Fortitude.java index 7c8f9944d30..0cb3e3d210b 100644 --- a/Mage.Sets/src/mage/cards/f/Fortitude.java +++ b/Mage.Sets/src/mage/cards/f/Fortitude.java @@ -37,10 +37,7 @@ import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AttachmentType; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; @@ -58,7 +55,7 @@ public class Fortitude extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public Fortitude(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FreneticSliver.java b/Mage.Sets/src/mage/cards/f/FreneticSliver.java index 84463581015..d503c439c94 100644 --- a/Mage.Sets/src/mage/cards/f/FreneticSliver.java +++ b/Mage.Sets/src/mage/cards/f/FreneticSliver.java @@ -38,10 +38,7 @@ import mage.abilities.effects.common.ExileReturnBattlefieldOwnerNextEndStepSourc import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.game.Game; import mage.game.permanent.Permanent; @@ -55,7 +52,7 @@ import java.util.UUID; */ public class FreneticSliver extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("Sliver", "All Slivers"); + private static final FilterPermanent filter = new FilterPermanent(SubType.SLIVER, "All Slivers"); public FreneticSliver(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}{R}"); diff --git a/Mage.Sets/src/mage/cards/f/FrightshroudCourier.java b/Mage.Sets/src/mage/cards/f/FrightshroudCourier.java index cb94ff13b46..19cd4260cec 100644 --- a/Mage.Sets/src/mage/cards/f/FrightshroudCourier.java +++ b/Mage.Sets/src/mage/cards/f/FrightshroudCourier.java @@ -42,6 +42,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -58,7 +59,7 @@ public class FrightshroudCourier extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie creature"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public FrightshroudCourier(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FulfillContract.java b/Mage.Sets/src/mage/cards/f/FulfillContract.java index fbbf3ad6dc4..d1dc1668cf6 100644 --- a/Mage.Sets/src/mage/cards/f/FulfillContract.java +++ b/Mage.Sets/src/mage/cards/f/FulfillContract.java @@ -33,6 +33,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; @@ -58,7 +59,7 @@ public class FulfillContract extends CardImpl { static { filterBountyCreature.add(new CounterPredicate(CounterType.BOUNTY)); - filterRogueOrHunter.add(Predicates.or(new SubtypePredicate("Rogue"), new SubtypePredicate("Hunter"))); + filterRogueOrHunter.add(Predicates.or(new SubtypePredicate(SubType.ROGUE), new SubtypePredicate(SubType.HUNTER))); } public FulfillContract(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FungusSliver.java b/Mage.Sets/src/mage/cards/f/FungusSliver.java index 4368c90fea2..41150266769 100644 --- a/Mage.Sets/src/mage/cards/f/FungusSliver.java +++ b/Mage.Sets/src/mage/cards/f/FungusSliver.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; @@ -51,7 +52,7 @@ public class FungusSliver extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public FungusSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GaeasLiege.java b/Mage.Sets/src/mage/cards/g/GaeasLiege.java index 13dcdc17c35..897fda501e7 100644 --- a/Mage.Sets/src/mage/cards/g/GaeasLiege.java +++ b/Mage.Sets/src/mage/cards/g/GaeasLiege.java @@ -44,6 +44,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterLandPermanent; @@ -64,7 +65,7 @@ public class GaeasLiege extends CardImpl { final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control"); static { - filterLands.add(new SubtypePredicate("Forest")); + filterLands.add(new SubtypePredicate(SubType.FOREST)); } public GaeasLiege(UUID ownerId, CardSetInfo setInfo) { @@ -111,7 +112,7 @@ class DefendersForestCount implements DynamicValue { } FilterLandPermanent filter = new FilterLandPermanent("forest"); - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); return game.getBattlefield().countAll(filter, defenderId, game); } diff --git a/Mage.Sets/src/mage/cards/g/GaeasTouch.java b/Mage.Sets/src/mage/cards/g/GaeasTouch.java index 6b7306504f0..12141333018 100644 --- a/Mage.Sets/src/mage/cards/g/GaeasTouch.java +++ b/Mage.Sets/src/mage/cards/g/GaeasTouch.java @@ -83,7 +83,7 @@ class PutBasicForestOnBattlefieldEffect extends OneShotEffect { static { filter.add(Predicates.and(new CardTypePredicate(CardType.LAND), new SupertypePredicate(SuperType.BASIC))); - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } private static final String choiceText = "Put a basic Forest card from your hand onto the battlefield?"; diff --git a/Mage.Sets/src/mage/cards/g/GangrenousGoliath.java b/Mage.Sets/src/mage/cards/g/GangrenousGoliath.java index 0bca24643cc..9bf830e1685 100644 --- a/Mage.Sets/src/mage/cards/g/GangrenousGoliath.java +++ b/Mage.Sets/src/mage/cards/g/GangrenousGoliath.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class GangrenousGoliath extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Clerics"); static { - filter.add(new SubtypePredicate("Cleric")); + filter.add(new SubtypePredicate(SubType.CLERIC)); } public GangrenousGoliath(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GatecreeperVine.java b/Mage.Sets/src/mage/cards/g/GatecreeperVine.java index c81c89f48fa..83b7a4fe0c1 100644 --- a/Mage.Sets/src/mage/cards/g/GatecreeperVine.java +++ b/Mage.Sets/src/mage/cards/g/GatecreeperVine.java @@ -34,6 +34,7 @@ import mage.abilities.keyword.DefenderAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; @@ -57,7 +58,7 @@ public class GatecreeperVine extends CardImpl { Predicates.and( new CardTypePredicate(CardType.LAND), new SupertypePredicate(SuperType.BASIC)), - new SubtypePredicate("Gate"))); + new SubtypePredicate(SubType.GATE))); } public GatecreeperVine(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GathererOfGraces.java b/Mage.Sets/src/mage/cards/g/GathererOfGraces.java index 4dc44343935..dd552a61bd0 100644 --- a/Mage.Sets/src/mage/cards/g/GathererOfGraces.java +++ b/Mage.Sets/src/mage/cards/g/GathererOfGraces.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class GathererOfGraces extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("an aura"); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public GathererOfGraces(UUID ownerId, CardSetInfo cardSetInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GemhideSliver.java b/Mage.Sets/src/mage/cards/g/GemhideSliver.java index 5779e908d4b..bbbd0d5a9e6 100644 --- a/Mage.Sets/src/mage/cards/g/GemhideSliver.java +++ b/Mage.Sets/src/mage/cards/g/GemhideSliver.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; @@ -47,7 +48,7 @@ import java.util.UUID; */ public class GemhideSliver extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("Sliver", "All Slivers"); + private static final FilterPermanent filter = new FilterPermanent(SubType.SLIVER, "All Slivers"); public GemhideSliver(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}"); diff --git a/Mage.Sets/src/mage/cards/g/GempalmPolluter.java b/Mage.Sets/src/mage/cards/g/GempalmPolluter.java index e4fd1c03e25..66f980342a0 100644 --- a/Mage.Sets/src/mage/cards/g/GempalmPolluter.java +++ b/Mage.Sets/src/mage/cards/g/GempalmPolluter.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.CyclingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPlayer; @@ -53,7 +54,7 @@ public class GempalmPolluter extends CardImpl { static final private FilterPermanent filter = new FilterPermanent("Zombie"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public GempalmPolluter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GempalmStrider.java b/Mage.Sets/src/mage/cards/g/GempalmStrider.java index ffca7140672..cfca830affd 100644 --- a/Mage.Sets/src/mage/cards/g/GempalmStrider.java +++ b/Mage.Sets/src/mage/cards/g/GempalmStrider.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class GempalmStrider extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf creatures"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public GempalmStrider(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheCedars.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheCedars.java index 8c8c23f37e1..3791205abc1 100644 --- a/Mage.Sets/src/mage/cards/g/GenjuOfTheCedars.java +++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheCedars.java @@ -38,10 +38,7 @@ import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterLandPermanent; import mage.game.permanent.token.Token; import mage.target.TargetPermanent; @@ -56,7 +53,7 @@ import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActiv */ public class GenjuOfTheCedars extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("Forest", "Forest"); + private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.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 7af016f1272..5b9efe6ec47 100644 --- a/Mage.Sets/src/mage/cards/g/GenjuOfTheFalls.java +++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheFalls.java @@ -38,10 +38,7 @@ import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterLandPermanent; import mage.game.permanent.token.Token; import mage.target.TargetPermanent; @@ -56,7 +53,7 @@ import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActiv */ public class GenjuOfTheFalls extends CardImpl { - private static final FilterLandPermanent FILTER = new FilterLandPermanent("Island", "Island"); + private static final FilterLandPermanent FILTER = new FilterLandPermanent(SubType.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 a2ab0041d88..88c8b22f4b2 100644 --- a/Mage.Sets/src/mage/cards/g/GenjuOfTheFens.java +++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheFens.java @@ -39,10 +39,7 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterLandPermanent; import mage.game.permanent.token.Token; import mage.target.TargetPermanent; @@ -57,7 +54,7 @@ import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActiv */ public class GenjuOfTheFens extends CardImpl { - private static final FilterLandPermanent FILTER = new FilterLandPermanent("Swamp", "Swamp"); + private static final FilterLandPermanent FILTER = new FilterLandPermanent(SubType.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 c8b28c4520a..06fb9583a86 100644 --- a/Mage.Sets/src/mage/cards/g/GenjuOfTheFields.java +++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheFields.java @@ -55,7 +55,7 @@ import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActiv */ public class GenjuOfTheFields extends CardImpl { - private static final FilterLandPermanent FILTER = new FilterLandPermanent("Plains", "Plains"); + private static final FilterLandPermanent FILTER = new FilterLandPermanent(SubType.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/GhostflameSliver.java b/Mage.Sets/src/mage/cards/g/GhostflameSliver.java index d26111b0830..c8c5bcffd1d 100644 --- a/Mage.Sets/src/mage/cards/g/GhostflameSliver.java +++ b/Mage.Sets/src/mage/cards/g/GhostflameSliver.java @@ -69,7 +69,7 @@ public class GhostflameSliver extends CardImpl { class GhostflameSliverEffect extends ContinuousEffectImpl { - private static final FilterPermanent filter = new FilterPermanent("Sliver", "All Slivers"); + private static final FilterPermanent filter = new FilterPermanent(SubType.SLIVER, "All Slivers"); private static ObjectColor colorless = new ObjectColor(); diff --git a/Mage.Sets/src/mage/cards/g/GhoulcallersChant.java b/Mage.Sets/src/mage/cards/g/GhoulcallersChant.java index f5dfc6d830f..3c420d96797 100644 --- a/Mage.Sets/src/mage/cards/g/GhoulcallersChant.java +++ b/Mage.Sets/src/mage/cards/g/GhoulcallersChant.java @@ -32,6 +32,7 @@ import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class GhoulcallersChant extends CardImpl { private static final FilterCard filter = new FilterCard("Zombie cards from your graveyard"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public GhoulcallersChant(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/Ghoulraiser.java b/Mage.Sets/src/mage/cards/g/Ghoulraiser.java index b1f9fae3658..d7e398fd618 100644 --- a/Mage.Sets/src/mage/cards/g/Ghoulraiser.java +++ b/Mage.Sets/src/mage/cards/g/Ghoulraiser.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -93,7 +94,7 @@ class GhoulraiserEffect extends OneShotEffect { Player player = game.getPlayer(source.getControllerId()); if (player != null) { FilterCard filter = new FilterCard("Zombie card"); - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); Card[] cards = player.getGraveyard().getCards(filter, game).toArray(new Card[0]); if (cards.length > 0) { Card card = cards[RandomUtil.nextInt(cards.length)]; diff --git a/Mage.Sets/src/mage/cards/g/GiantHarbinger.java b/Mage.Sets/src/mage/cards/g/GiantHarbinger.java index 5fecc600c32..21cde0053c1 100644 --- a/Mage.Sets/src/mage/cards/g/GiantHarbinger.java +++ b/Mage.Sets/src/mage/cards/g/GiantHarbinger.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutOnLibraryEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -47,7 +48,7 @@ public class GiantHarbinger extends CardImpl { public static final FilterCard filter = new FilterCard("Giant card"); static { - filter.add(new SubtypePredicate("Giant")); + filter.add(new SubtypePredicate(SubType.GIANT)); } public GiantHarbinger(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GideonOfTheTrials.java b/Mage.Sets/src/mage/cards/g/GideonOfTheTrials.java index 166b9f92d7a..96f475d41f6 100644 --- a/Mage.Sets/src/mage/cards/g/GideonOfTheTrials.java +++ b/Mage.Sets/src/mage/cards/g/GideonOfTheTrials.java @@ -99,7 +99,7 @@ class GideonOfTheTrialsCantLoseEffect extends ContinuousRuleModifyingEffectImpl private static final FilterPlaneswalkerPermanent filter = new FilterPlaneswalkerPermanent("a Gideon planeswalker"); static { - filter.add(new SubtypePredicate("Gideon")); + filter.add(new SubtypePredicate(SubType.GIDEON)); } public GideonOfTheTrialsCantLoseEffect() { diff --git a/Mage.Sets/src/mage/cards/g/GiftOfEstates.java b/Mage.Sets/src/mage/cards/g/GiftOfEstates.java index fe0f6b7df5f..1d29a6303be 100644 --- a/Mage.Sets/src/mage/cards/g/GiftOfEstates.java +++ b/Mage.Sets/src/mage/cards/g/GiftOfEstates.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class GiftOfEstates extends CardImpl { private static final FilterCard filter = new FilterCard("Plains cards"); static { - filter.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.PLAINS)); } diff --git a/Mage.Sets/src/mage/cards/g/GiltLeafArchdruid.java b/Mage.Sets/src/mage/cards/g/GiltLeafArchdruid.java index 9a749314787..43e8951c60e 100644 --- a/Mage.Sets/src/mage/cards/g/GiltLeafArchdruid.java +++ b/Mage.Sets/src/mage/cards/g/GiltLeafArchdruid.java @@ -59,7 +59,7 @@ public class GiltLeafArchdruid extends CardImpl { private static final FilterSpell filterSpell = new FilterSpell("a Druid spell"); static { - filterSpell.add(new SubtypePredicate("Druid")); + filterSpell.add(new SubtypePredicate(SubType.DRUID)); } public GiltLeafArchdruid(UUID ownerId, CardSetInfo setInfo) { @@ -74,7 +74,7 @@ public class GiltLeafArchdruid extends CardImpl { this.addAbility(new SpellCastControllerTriggeredAbility(new DrawCardSourceControllerEffect(1), filterSpell, true)); // Tap seven untapped Druids you control: Gain control of all lands target player controls. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainControlAllLandsEffect(Duration.EndOfGame), new TapTargetCost(new TargetControlledCreaturePermanent(7, 7, new FilterControlledCreaturePermanent("Druid", "Druids you control"), true))); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainControlAllLandsEffect(Duration.EndOfGame), new TapTargetCost(new TargetControlledCreaturePermanent(7, 7, new FilterControlledCreaturePermanent(SubType.DRUID, "Druids you control"), true))); ability.addTarget(new TargetPlayer()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GiltLeafWinnower.java b/Mage.Sets/src/mage/cards/g/GiltLeafWinnower.java index 23c992ad67b..3817875337a 100644 --- a/Mage.Sets/src/mage/cards/g/GiltLeafWinnower.java +++ b/Mage.Sets/src/mage/cards/g/GiltLeafWinnower.java @@ -36,6 +36,7 @@ import mage.abilities.keyword.MenaceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicate; import mage.filter.predicate.Predicates; @@ -54,7 +55,7 @@ public class GiltLeafWinnower extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Elf creature whose power and toughness aren't equal"); static { - filter.add(Predicates.not(new SubtypePredicate("Elf"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.ELF))); filter.add(new PowerToughnessNotEqualPredicate()); } diff --git a/Mage.Sets/src/mage/cards/g/GlacialFortress.java b/Mage.Sets/src/mage/cards/g/GlacialFortress.java index b37642ca6bb..5a63b43c94f 100644 --- a/Mage.Sets/src/mage/cards/g/GlacialFortress.java +++ b/Mage.Sets/src/mage/cards/g/GlacialFortress.java @@ -40,6 +40,7 @@ import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -55,7 +56,7 @@ public class GlacialFortress extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.add(Predicates.or(new SubtypePredicate("Plains"), new SubtypePredicate("Island"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.PLAINS), new SubtypePredicate(SubType.ISLAND))); } public GlacialFortress(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinChirurgeon.java b/Mage.Sets/src/mage/cards/g/GoblinChirurgeon.java index d007e0428d5..5d048a62377 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinChirurgeon.java +++ b/Mage.Sets/src/mage/cards/g/GoblinChirurgeon.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.RegenerateTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent; @@ -58,7 +59,7 @@ public class GoblinChirurgeon extends CardImpl { // Sacrifice a Goblin: Regenerate target creature. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateTargetEffect(), - new SacrificeTargetCost(new TargetControlledCreaturePermanent(new FilterControlledCreaturePermanent("Goblin","a Goblin")))); + new SacrificeTargetCost(new TargetControlledCreaturePermanent(new FilterControlledCreaturePermanent(SubType.GOBLIN,"a Goblin")))); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GoblinClearcutter.java b/Mage.Sets/src/mage/cards/g/GoblinClearcutter.java index ecf54069cfd..f14551c9bb6 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinClearcutter.java +++ b/Mage.Sets/src/mage/cards/g/GoblinClearcutter.java @@ -40,6 +40,7 @@ import mage.choices.Choice; import mage.choices.ChoiceImpl; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -59,7 +60,7 @@ public class GoblinClearcutter extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public GoblinClearcutter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinDiggingTeam.java b/Mage.Sets/src/mage/cards/g/GoblinDiggingTeam.java index f7946b2e541..e4573efbc8f 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinDiggingTeam.java +++ b/Mage.Sets/src/mage/cards/g/GoblinDiggingTeam.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class GoblinDiggingTeam extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Wall"); static { - filter.add(new SubtypePredicate("Wall")); + filter.add(new SubtypePredicate(SubType.WALL)); } public GoblinDiggingTeam(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinPiledriver.java b/Mage.Sets/src/mage/cards/g/GoblinPiledriver.java index 955096f50b8..cfe02471170 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinPiledriver.java +++ b/Mage.Sets/src/mage/cards/g/GoblinPiledriver.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; @@ -53,7 +54,7 @@ public class GoblinPiledriver extends CardImpl { private static final FilterAttackingCreature filter = new FilterAttackingCreature("other attacking Goblin"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/g/GoblinPyromancer.java b/Mage.Sets/src/mage/cards/g/GoblinPyromancer.java index 4055ca5036f..0de07fa057c 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinPyromancer.java +++ b/Mage.Sets/src/mage/cards/g/GoblinPyromancer.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.FilterPermanent; import mage.filter.StaticFilters; @@ -52,7 +53,7 @@ public class GoblinPyromancer extends CardImpl { private static final FilterPermanent filterPermanent = new FilterPermanent("Goblins"); static { - filterPermanent.add(new SubtypePredicate("Goblin")); + filterPermanent.add(new SubtypePredicate(SubType.GOBLIN)); } public GoblinPyromancer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinWarchief.java b/Mage.Sets/src/mage/cards/g/GoblinWarchief.java index 33d442beb6d..50c905c37ea 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinWarchief.java +++ b/Mage.Sets/src/mage/cards/g/GoblinWarchief.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; @@ -53,8 +54,8 @@ public class GoblinWarchief extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblins"); static { - filterSpells.add(new SubtypePredicate("Goblin")); - filter.add(new SubtypePredicate("Goblin")); + filterSpells.add(new SubtypePredicate(SubType.GOBLIN)); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public GoblinWarchief(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinWizard.java b/Mage.Sets/src/mage/cards/g/GoblinWizard.java index 1f5a308f5b2..03aaf5cbdd7 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinWizard.java +++ b/Mage.Sets/src/mage/cards/g/GoblinWizard.java @@ -38,10 +38,7 @@ import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Rarity; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.common.FilterPermanentCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -60,8 +57,8 @@ public class GoblinWizard extends CardImpl { private static final FilterPermanent goblinPermanent = new FilterPermanent("Goblin"); static { - filter.add(new SubtypePredicate("Goblin")); - goblinPermanent.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); + goblinPermanent.add(new SubtypePredicate(SubType.GOBLIN)); } public GoblinWizard(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinsOfTheFlarg.java b/Mage.Sets/src/mage/cards/g/GoblinsOfTheFlarg.java index 7bb36b7d651..da43be763b1 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinsOfTheFlarg.java +++ b/Mage.Sets/src/mage/cards/g/GoblinsOfTheFlarg.java @@ -35,6 +35,7 @@ import mage.abilities.keyword.MountainwalkAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class GoblinsOfTheFlarg extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Dwarf"); static { - filter.add(new SubtypePredicate("Dwarf")); + filter.add(new SubtypePredicate(SubType.DWARF)); } public GoblinsOfTheFlarg(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GodoBanditWarlord.java b/Mage.Sets/src/mage/cards/g/GodoBanditWarlord.java index 16a0bae7c59..d10dc4bb132 100644 --- a/Mage.Sets/src/mage/cards/g/GodoBanditWarlord.java +++ b/Mage.Sets/src/mage/cards/g/GodoBanditWarlord.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.FilterCard; @@ -63,7 +64,7 @@ public class GodoBanditWarlord extends CardImpl { private static final FilterCard filter = new FilterCard("an Equipment card"); static { filter.add(new CardTypePredicate(CardType.ARTIFACT)); - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public GodoBanditWarlord(UUID ownerId, CardSetInfo setInfo) { @@ -79,7 +80,7 @@ public class GodoBanditWarlord extends CardImpl { this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false, true), true)); // Whenever Godo attacks for the first time each turn, untap it and all Samurai you control. After this phase, there is an additional combat phase. FilterControlledCreaturePermanent untapFilter = new FilterControlledCreaturePermanent(); - untapFilter.add(Predicates.or(new PermanentIdPredicate(this.getId()), new SubtypePredicate("Samurai"))); + untapFilter.add(Predicates.or(new PermanentIdPredicate(this.getId()), new SubtypePredicate(SubType.SAMURAI))); Ability ability = new GodoBanditWarlordAttacksTriggeredAbility(new UntapAllControllerEffect(untapFilter,"untap it and all Samurai you control"), false); ability.addEffect(new AdditionalCombatPhaseEffect()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/g/GorillaPack.java b/Mage.Sets/src/mage/cards/g/GorillaPack.java index 338b286a0bc..4fbc7173cba 100644 --- a/Mage.Sets/src/mage/cards/g/GorillaPack.java +++ b/Mage.Sets/src/mage/cards/g/GorillaPack.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.combat.CantAttackUnlessDefenderControllsPer import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; @@ -54,11 +55,11 @@ public class GorillaPack extends CardImpl { this.toughness = new MageInt(3); // Gorilla Pack can't attack unless defending player controls a Forest. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Forest", "a Forest")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.FOREST, "a Forest")))); // When you control no Forests, sacrifice Gorilla Pack. this.addAbility(new ControlsPermanentsControllerTriggeredAbility( - new FilterLandPermanent("Forest", "no Forests"), ComparisonType.EQUAL_TO, 0, + new FilterLandPermanent(SubType.FOREST, "no Forests"), ComparisonType.EQUAL_TO, 0, new SacrificeSourceEffect())); } diff --git a/Mage.Sets/src/mage/cards/g/GraveBramble.java b/Mage.Sets/src/mage/cards/g/GraveBramble.java index 0034df0dcdd..49fdc8feb0c 100644 --- a/Mage.Sets/src/mage/cards/g/GraveBramble.java +++ b/Mage.Sets/src/mage/cards/g/GraveBramble.java @@ -33,6 +33,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class GraveBramble extends CardImpl { private static final FilterPermanent filter = new FilterCreaturePermanent("Zombies"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public GraveBramble(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GraveDefiler.java b/Mage.Sets/src/mage/cards/g/GraveDefiler.java index d7830bc7cd9..c77c801c554 100644 --- a/Mage.Sets/src/mage/cards/g/GraveDefiler.java +++ b/Mage.Sets/src/mage/cards/g/GraveDefiler.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.RevealLibraryPutIntoHandEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class GraveDefiler extends CardImpl { private static final FilterCard filter = new FilterCard("Zombie cards"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public GraveDefiler(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GraveSifter.java b/Mage.Sets/src/mage/cards/g/GraveSifter.java index 509f0cfb395..f6e17eba431 100644 --- a/Mage.Sets/src/mage/cards/g/GraveSifter.java +++ b/Mage.Sets/src/mage/cards/g/GraveSifter.java @@ -39,6 +39,7 @@ import mage.choices.Choice; import mage.choices.ChoiceImpl; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.common.FilterCreatureCard; @@ -98,7 +99,7 @@ class GraveSifterEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Choice typeChoice = new ChoiceImpl(true); typeChoice.setMessage("Choose creature type to return cards from your graveyard"); - typeChoice.setChoices(CardRepository.instance.getCreatureTypes()); + typeChoice.setChoices(SubType.getCreatureTypes(false)); Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { @@ -108,7 +109,7 @@ class GraveSifterEffect extends OneShotEffect { if (player.choose(outcome, typeChoice, game)) { game.informPlayers(player.getLogName() + " has chosen: " + typeChoice.getChoice()); FilterCard filter = new FilterCreatureCard("creature cards with creature type " + typeChoice.getChoice() + " from your graveyard"); - filter.add(new SubtypePredicate(typeChoice.getChoice())); + filter.add(new SubtypePredicate(SubType.byDescription(typeChoice.getChoice()))); Target target = new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, filter); player.chooseTarget(outcome, target, source, game); player.moveCards(new CardsImpl(target.getTargets()), Zone.HAND, source, game); diff --git a/Mage.Sets/src/mage/cards/g/GravebornMuse.java b/Mage.Sets/src/mage/cards/g/GravebornMuse.java index f3a0a2349ad..e98c7817182 100644 --- a/Mage.Sets/src/mage/cards/g/GravebornMuse.java +++ b/Mage.Sets/src/mage/cards/g/GravebornMuse.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class GravebornMuse extends CardImpl { private static FilterControlledPermanent filter = new FilterControlledPermanent("Zombie you control"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public GravebornMuse(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/Gravecrawler.java b/Mage.Sets/src/mage/cards/g/Gravecrawler.java index 1412ae8bb1e..ba09b84354a 100644 --- a/Mage.Sets/src/mage/cards/g/Gravecrawler.java +++ b/Mage.Sets/src/mage/cards/g/Gravecrawler.java @@ -78,7 +78,7 @@ class GravecrawlerPlayEffect extends AsThoughEffectImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("zombie"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public GravecrawlerPlayEffect() { diff --git a/Mage.Sets/src/mage/cards/g/GravespawnSovereign.java b/Mage.Sets/src/mage/cards/g/GravespawnSovereign.java index dab0b98335b..c638d6a792d 100644 --- a/Mage.Sets/src/mage/cards/g/GravespawnSovereign.java +++ b/Mage.Sets/src/mage/cards/g/GravespawnSovereign.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffec import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreatureCard; @@ -55,7 +56,7 @@ public class GravespawnSovereign extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Zombies you control"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/g/GreensideWatcher.java b/Mage.Sets/src/mage/cards/g/GreensideWatcher.java index f5ec8657168..92aa168c6c7 100644 --- a/Mage.Sets/src/mage/cards/g/GreensideWatcher.java +++ b/Mage.Sets/src/mage/cards/g/GreensideWatcher.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.UntapTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class GreensideWatcher extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Gate"); static { - filter.add(new SubtypePredicate("Gate")); + filter.add(new SubtypePredicate(SubType.GATE)); } public GreensideWatcher(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GriffinCanyon.java b/Mage.Sets/src/mage/cards/g/GriffinCanyon.java index 98f83d1b4fa..d9bca4841ac 100644 --- a/Mage.Sets/src/mage/cards/g/GriffinCanyon.java +++ b/Mage.Sets/src/mage/cards/g/GriffinCanyon.java @@ -35,10 +35,7 @@ import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; @@ -53,7 +50,7 @@ import java.util.UUID; */ public class GriffinCanyon extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("Griffin", "target Griffin"); + private static final FilterPermanent filter = new FilterPermanent(SubType.GRIFFIN, "target Griffin"); public GriffinCanyon(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.LAND},""); diff --git a/Mage.Sets/src/mage/cards/g/Gush.java b/Mage.Sets/src/mage/cards/g/Gush.java index 4292f005970..d9f58ea9b85 100644 --- a/Mage.Sets/src/mage/cards/g/Gush.java +++ b/Mage.Sets/src/mage/cards/g/Gush.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; @@ -47,7 +48,7 @@ public class Gush extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("Islands"); static{ - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public Gush(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{4}{U}"); diff --git a/Mage.Sets/src/mage/cards/g/GutwrencherOni.java b/Mage.Sets/src/mage/cards/g/GutwrencherOni.java index 6497775e97b..2014bc1d87b 100644 --- a/Mage.Sets/src/mage/cards/g/GutwrencherOni.java +++ b/Mage.Sets/src/mage/cards/g/GutwrencherOni.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledCreaturePermanent; @@ -53,7 +54,7 @@ public class GutwrencherOni extends CardImpl { private static final FilterPermanent filter = new FilterControlledCreaturePermanent("Ogre"); static { - filter.add(new SubtypePredicate("Ogre")); + filter.add(new SubtypePredicate(SubType.OGRE)); } public GutwrencherOni(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HaloHunter.java b/Mage.Sets/src/mage/cards/h/HaloHunter.java index 4df7dbd6558..4ce9a57574f 100644 --- a/Mage.Sets/src/mage/cards/h/HaloHunter.java +++ b/Mage.Sets/src/mage/cards/h/HaloHunter.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.keyword.IntimidateAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; @@ -49,7 +50,7 @@ public class HaloHunter extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Angel"); static { - filter.add(new SubtypePredicate("Angel")); + filter.add(new SubtypePredicate(SubType.ANGEL)); } public HaloHunter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HammerheadShark.java b/Mage.Sets/src/mage/cards/h/HammerheadShark.java index 8de3046d68f..b9083c2ac2e 100644 --- a/Mage.Sets/src/mage/cards/h/HammerheadShark.java +++ b/Mage.Sets/src/mage/cards/h/HammerheadShark.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.combat.CantAttackUnlessDefenderControllsPer import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; @@ -50,7 +51,7 @@ public class HammerheadShark extends CardImpl { this.toughness = new MageInt(3); // Hammerhead Shark can't attack unless defending player controls an Island. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island","an Island")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.ISLAND,"an Island")))); } public HammerheadShark(final HammerheadShark card) { diff --git a/Mage.Sets/src/mage/cards/h/HanaKami.java b/Mage.Sets/src/mage/cards/h/HanaKami.java index 8404e09a292..dd583dd15ec 100644 --- a/Mage.Sets/src/mage/cards/h/HanaKami.java +++ b/Mage.Sets/src/mage/cards/h/HanaKami.java @@ -39,6 +39,7 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class HanaKami extends CardImpl { private static final FilterCard filter = new FilterCard("Arcane card from your graveyard"); static { - filter.add(new SubtypePredicate("Arcane")); + filter.add(new SubtypePredicate(SubType.ARCANE)); } public HanaKami(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HarborSerpent.java b/Mage.Sets/src/mage/cards/h/HarborSerpent.java index a8e15a72f43..9f8dffed906 100644 --- a/Mage.Sets/src/mage/cards/h/HarborSerpent.java +++ b/Mage.Sets/src/mage/cards/h/HarborSerpent.java @@ -30,6 +30,7 @@ package mage.cards.h; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; @@ -75,7 +76,7 @@ public class HarborSerpent extends CardImpl { class HarborSerpentEffect extends RestrictionEffect { - private static final FilterLandPermanent filter = new FilterLandPermanent("Island", "Island"); + private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.ISLAND, "Island"); public HarborSerpentEffect() { super(Duration.WhileOnBattlefield); diff --git a/Mage.Sets/src/mage/cards/h/HarmonicSliver.java b/Mage.Sets/src/mage/cards/h/HarmonicSliver.java index a6bd50d671f..1802e8a9215 100644 --- a/Mage.Sets/src/mage/cards/h/HarmonicSliver.java +++ b/Mage.Sets/src/mage/cards/h/HarmonicSliver.java @@ -30,6 +30,7 @@ package mage.cards.h; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.TriggeredAbility; @@ -52,7 +53,7 @@ public class HarmonicSliver extends CardImpl { private static final FilterCreaturePermanent filterSliver = new FilterCreaturePermanent(); static { - filterSliver.add(new SubtypePredicate("Sliver")); + filterSliver.add(new SubtypePredicate(SubType.SLIVER)); } public HarmonicSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HarpoonSniper.java b/Mage.Sets/src/mage/cards/h/HarpoonSniper.java index b1efa1f6e8e..0949c7f7bff 100644 --- a/Mage.Sets/src/mage/cards/h/HarpoonSniper.java +++ b/Mage.Sets/src/mage/cards/h/HarpoonSniper.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.ColoredManaSymbol; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,7 +55,7 @@ public class HarpoonSniper extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Merfolk you control"); static { - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK)); } public HarpoonSniper(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HarshMercy.java b/Mage.Sets/src/mage/cards/h/HarshMercy.java index 3473aff7256..0843bec0ff6 100644 --- a/Mage.Sets/src/mage/cards/h/HarshMercy.java +++ b/Mage.Sets/src/mage/cards/h/HarshMercy.java @@ -41,6 +41,7 @@ import mage.choices.Choice; import mage.choices.ChoiceImpl; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -98,7 +99,7 @@ class HarshMercyEffect extends OneShotEffect { Player player = game.getPlayer(playerId); Choice typeChoice = new ChoiceImpl(true); typeChoice.setMessage("Choose a creature type"); - typeChoice.setChoices(CardRepository.instance.getCreatureTypes()); + typeChoice.setChoices(SubType.getCreatureTypes(false)); while (!player.choose(Outcome.DestroyPermanent, typeChoice, game)) { if (!player.canRespond()) { continue PlayerIteration; @@ -113,7 +114,7 @@ class HarshMercyEffect extends OneShotEffect { FilterPermanent filter = new FilterCreaturePermanent("creatures"); for (String type : chosenTypes) { - filter.add(Predicates.not(new SubtypePredicate(type))); + filter.add(Predicates.not(new SubtypePredicate(SubType.byDescription(type)))); } return new DestroyAllEffect(filter, true).apply(game, source); diff --git a/Mage.Sets/src/mage/cards/h/HazardTrooper.java b/Mage.Sets/src/mage/cards/h/HazardTrooper.java index 2a5308f2a2f..ec5b6f79ac1 100644 --- a/Mage.Sets/src/mage/cards/h/HazardTrooper.java +++ b/Mage.Sets/src/mage/cards/h/HazardTrooper.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class HazardTrooper extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures"); static { - filter.add(new SubtypePredicate("Trooper")); + filter.add(new SubtypePredicate(SubType.TROOPER)); } public HazardTrooper(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HeartOfYavimaya.java b/Mage.Sets/src/mage/cards/h/HeartOfYavimaya.java index 029bdc9b98b..3d74bc83791 100644 --- a/Mage.Sets/src/mage/cards/h/HeartOfYavimaya.java +++ b/Mage.Sets/src/mage/cards/h/HeartOfYavimaya.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -55,7 +56,7 @@ public class HeartOfYavimaya extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public HeartOfYavimaya(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HearthcageGiant.java b/Mage.Sets/src/mage/cards/h/HearthcageGiant.java index b0048dfafe5..227515f3a45 100644 --- a/Mage.Sets/src/mage/cards/h/HearthcageGiant.java +++ b/Mage.Sets/src/mage/cards/h/HearthcageGiant.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -57,8 +58,8 @@ public class HearthcageGiant extends CardImpl { private static final FilterCreaturePermanent filterGiant = new FilterCreaturePermanent("Giant"); static { - filterElemental.add(new SubtypePredicate("Elemental")); - filterGiant.add(new SubtypePredicate("Giant")); + filterElemental.add(new SubtypePredicate(SubType.ELEMENTAL)); + filterGiant.add(new SubtypePredicate(SubType.GIANT)); } public HearthcageGiant(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/Hecatomb.java b/Mage.Sets/src/mage/cards/h/Hecatomb.java index 5de876c0837..1017619b1f4 100644 --- a/Mage.Sets/src/mage/cards/h/Hecatomb.java +++ b/Mage.Sets/src/mage/cards/h/Hecatomb.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.Predicates; @@ -56,7 +57,7 @@ public class Hecatomb extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("an untapped Swamp you control"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/h/HedgeTroll.java b/Mage.Sets/src/mage/cards/h/HedgeTroll.java index 41a2c879b9e..757f53be4f3 100644 --- a/Mage.Sets/src/mage/cards/h/HedgeTroll.java +++ b/Mage.Sets/src/mage/cards/h/HedgeTroll.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.continuous.BoostSourceWhileControlsEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class HedgeTroll extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Plains"); static { - filter.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.PLAINS)); } public HedgeTroll(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HerdchaserDragon.java b/Mage.Sets/src/mage/cards/h/HerdchaserDragon.java index 9ff335180d6..34a845e1d4e 100644 --- a/Mage.Sets/src/mage/cards/h/HerdchaserDragon.java +++ b/Mage.Sets/src/mage/cards/h/HerdchaserDragon.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class HerdchaserDragon extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public HerdchaserDragon(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HeronsGraceChampion.java b/Mage.Sets/src/mage/cards/h/HeronsGraceChampion.java index 72ec7c82601..062a0c57d3e 100644 --- a/Mage.Sets/src/mage/cards/h/HeronsGraceChampion.java +++ b/Mage.Sets/src/mage/cards/h/HeronsGraceChampion.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class HeronsGraceChampion extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other Humans"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public HeronsGraceChampion(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HibernationSliver.java b/Mage.Sets/src/mage/cards/h/HibernationSliver.java index cd783dcb26c..8711f199d5d 100644 --- a/Mage.Sets/src/mage/cards/h/HibernationSliver.java +++ b/Mage.Sets/src/mage/cards/h/HibernationSliver.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; @@ -62,7 +63,7 @@ public class HibernationSliver extends CardImpl { Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new PayLifeCost(2)); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(ability, Duration.WhileOnBattlefield, - new FilterPermanent("Sliver", "All Slivers"), "All Slivers have \"Pay 2 life: Return this permanent to its owner's hand"))); + new FilterPermanent(SubType.SLIVER, "All Slivers"), "All Slivers have \"Pay 2 life: Return this permanent to its owner's hand"))); } public HibernationSliver(final HibernationSliver card) { diff --git a/Mage.Sets/src/mage/cards/h/HighlandBerserker.java b/Mage.Sets/src/mage/cards/h/HighlandBerserker.java index 653aca89c15..36192bd3f50 100644 --- a/Mage.Sets/src/mage/cards/h/HighlandBerserker.java +++ b/Mage.Sets/src/mage/cards/h/HighlandBerserker.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class HighlandBerserker extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Ally creatures you control"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/h/HondenOfLifesWeb.java b/Mage.Sets/src/mage/cards/h/HondenOfLifesWeb.java index 254cef86d7e..dda8cab9540 100644 --- a/Mage.Sets/src/mage/cards/h/HondenOfLifesWeb.java +++ b/Mage.Sets/src/mage/cards/h/HondenOfLifesWeb.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.TargetController; import mage.filter.common.FilterControlledPermanent; @@ -50,7 +51,7 @@ public class HondenOfLifesWeb extends CardImpl { final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine"); static { - filter.add(new SubtypePredicate("Shrine")); + filter.add(new SubtypePredicate(SubType.SHRINE)); } public HondenOfLifesWeb(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HondenOfSeeingWinds.java b/Mage.Sets/src/mage/cards/h/HondenOfSeeingWinds.java index 5021fedeee7..96c34e2d941 100644 --- a/Mage.Sets/src/mage/cards/h/HondenOfSeeingWinds.java +++ b/Mage.Sets/src/mage/cards/h/HondenOfSeeingWinds.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.TargetController; import mage.filter.common.FilterControlledPermanent; @@ -49,7 +50,7 @@ public class HondenOfSeeingWinds extends CardImpl { final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine"); static { - filter.add(new SubtypePredicate("Shrine")); + filter.add(new SubtypePredicate(SubType.SHRINE)); } public HondenOfSeeingWinds(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HopeAgainstHope.java b/Mage.Sets/src/mage/cards/h/HopeAgainstHope.java index bc8e3dec137..c883b8cd08c 100644 --- a/Mage.Sets/src/mage/cards/h/HopeAgainstHope.java +++ b/Mage.Sets/src/mage/cards/h/HopeAgainstHope.java @@ -39,11 +39,7 @@ import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AttachmentType; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledCreaturePermanent; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -70,7 +66,7 @@ public class HopeAgainstHope extends CardImpl { // As long as enchanted creature is a Human, it has first strike. SimpleStaticAbility ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( - new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.AURA), new EnchantedCreatureSubtypeCondition(String.valueOf("Human")), + new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.AURA), new EnchantedCreatureSubtypeCondition(SubType.HUMAN), "As long as enchanted creature is a Human, it has first strike")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HopeCharm.java b/Mage.Sets/src/mage/cards/h/HopeCharm.java index 077a8e9dbb0..892ba64773c 100644 --- a/Mage.Sets/src/mage/cards/h/HopeCharm.java +++ b/Mage.Sets/src/mage/cards/h/HopeCharm.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; @@ -52,7 +53,7 @@ public class HopeCharm extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Aura"); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public HopeCharm(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HorobisWhisper.java b/Mage.Sets/src/mage/cards/h/HorobisWhisper.java index 3a6f43ccdf3..b190d7cf197 100644 --- a/Mage.Sets/src/mage/cards/h/HorobisWhisper.java +++ b/Mage.Sets/src/mage/cards/h/HorobisWhisper.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.SpliceOntoArcaneAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterLandPermanent; @@ -57,7 +58,7 @@ public class HorobisWhisper extends CardImpl { static { filterTarget.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); - filterCondition.add(new SubtypePredicate("Swamp")); + filterCondition.add(new SubtypePredicate(SubType.SWAMP)); } public HorobisWhisper(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HowlOfTheNightPack.java b/Mage.Sets/src/mage/cards/h/HowlOfTheNightPack.java index f4698dbb4d4..d8b811c9d4e 100644 --- a/Mage.Sets/src/mage/cards/h/HowlOfTheNightPack.java +++ b/Mage.Sets/src/mage/cards/h/HowlOfTheNightPack.java @@ -33,6 +33,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.WolfToken; @@ -46,7 +47,7 @@ public class HowlOfTheNightPack extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("for each Forest you control"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public HowlOfTheNightPack(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HowlpackAlpha.java b/Mage.Sets/src/mage/cards/h/HowlpackAlpha.java index 453ede1fdd8..d0c0207ff6d 100644 --- a/Mage.Sets/src/mage/cards/h/HowlpackAlpha.java +++ b/Mage.Sets/src/mage/cards/h/HowlpackAlpha.java @@ -62,7 +62,7 @@ public class HowlpackAlpha extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf and Wolf creatures"); static { - filter.add(Predicates.or(new SubtypePredicate("Werewolf"), new SubtypePredicate("Wolf"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.WEREWOLF), new SubtypePredicate(SubType.WOLF))); } public HowlpackAlpha(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HowlpackResurgence.java b/Mage.Sets/src/mage/cards/h/HowlpackResurgence.java index 27140fc1da4..ccdd72b0b31 100644 --- a/Mage.Sets/src/mage/cards/h/HowlpackResurgence.java +++ b/Mage.Sets/src/mage/cards/h/HowlpackResurgence.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -53,8 +54,8 @@ public class HowlpackResurgence extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you control that's a Wolf or a Werewolf"); static { - filter.add(Predicates.or(new SubtypePredicate("Wolf"), - new SubtypePredicate("Werewolf"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.WOLF), + new SubtypePredicate(SubType.WEREWOLF))); } public HowlpackResurgence(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HowlpackWolf.java b/Mage.Sets/src/mage/cards/h/HowlpackWolf.java index 67de0b90621..11a2789ab94 100644 --- a/Mage.Sets/src/mage/cards/h/HowlpackWolf.java +++ b/Mage.Sets/src/mage/cards/h/HowlpackWolf.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -75,7 +76,7 @@ class HowlpackWolfRestrictionEffect extends RestrictionEffect { private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Wolf or Werewolf"); static { - filter.add(Predicates.or(new SubtypePredicate("Wolf"), new SubtypePredicate("Werewolf"))); + filter.add(Predicates.or(new SubtypePredicate("Wolf"), new SubtypePredicate(SubType.WEREWOLF))); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/h/Hubris.java b/Mage.Sets/src/mage/cards/h/Hubris.java index f7d468d50b0..0c8751cc888 100644 --- a/Mage.Sets/src/mage/cards/h/Hubris.java +++ b/Mage.Sets/src/mage/cards/h/Hubris.java @@ -36,6 +36,7 @@ import mage.cards.Cards; import mage.cards.CardsImpl; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterEnchantmentPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -74,7 +75,7 @@ class HubrisReturnEffect extends OneShotEffect { private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent(); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public HubrisReturnEffect() { diff --git a/Mage.Sets/src/mage/cards/h/HuntingCheetah.java b/Mage.Sets/src/mage/cards/h/HuntingCheetah.java index b96dcaeb29e..899b334c6a7 100644 --- a/Mage.Sets/src/mage/cards/h/HuntingCheetah.java +++ b/Mage.Sets/src/mage/cards/h/HuntingCheetah.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -47,7 +48,7 @@ public class HuntingCheetah extends CardImpl { private static final FilterCard filter = new FilterCard("Forest card"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public HuntingCheetah(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/IbHalfheartGoblinTactician.java b/Mage.Sets/src/mage/cards/i/IbHalfheartGoblinTactician.java index 7221d443b1a..daae3519f00 100644 --- a/Mage.Sets/src/mage/cards/i/IbHalfheartGoblinTactician.java +++ b/Mage.Sets/src/mage/cards/i/IbHalfheartGoblinTactician.java @@ -62,8 +62,8 @@ public class IbHalfheartGoblinTactician extends CardImpl { private static final FilterCreaturePermanent filterGoblin = new FilterCreaturePermanent("another Goblin you control"); static { - filter.add(new SubtypePredicate("Mountain")); - filterGoblin.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); + filterGoblin.add(new SubtypePredicate(SubType.GOBLIN)); filterGoblin.add(new AnotherPredicate()); filterGoblin.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/i/IcatianLieutenant.java b/Mage.Sets/src/mage/cards/i/IcatianLieutenant.java index 67bcdd2ef85..77b34a1d677 100644 --- a/Mage.Sets/src/mage/cards/i/IcatianLieutenant.java +++ b/Mage.Sets/src/mage/cards/i/IcatianLieutenant.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class IcatianLieutenant extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creature"); static { - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public IcatianLieutenant(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/IizukaTheRuthless.java b/Mage.Sets/src/mage/cards/i/IizukaTheRuthless.java index 1388dea06d8..98e64a02ee6 100644 --- a/Mage.Sets/src/mage/cards/i/IizukaTheRuthless.java +++ b/Mage.Sets/src/mage/cards/i/IizukaTheRuthless.java @@ -37,10 +37,7 @@ import mage.abilities.keyword.BushidoAbility; import mage.abilities.keyword.DoubleStrikeAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledCreaturePermanent; @@ -56,7 +53,7 @@ public class IizukaTheRuthless extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Samurai"); static { - filter.add(new SubtypePredicate("Samurai")); + filter.add(new SubtypePredicate(SubType.SAMURAI)); } public IizukaTheRuthless(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/Immerwolf.java b/Mage.Sets/src/mage/cards/i/Immerwolf.java index fde98d26d62..091049eb497 100644 --- a/Mage.Sets/src/mage/cards/i/Immerwolf.java +++ b/Mage.Sets/src/mage/cards/i/Immerwolf.java @@ -36,10 +36,7 @@ import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.keyword.IntimidateAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,7 +54,7 @@ public class Immerwolf extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wolf and Werewolf creatures"); static { - filter.add(Predicates.or(new SubtypePredicate("Wolf"), new SubtypePredicate("Werewolf"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.WOLF), new SubtypePredicate(SubType.WEREWOLF))); } public Immerwolf(UUID ownerId, CardSetInfo setInfo) { @@ -92,7 +89,7 @@ class ImmerwolfEffect extends ContinuousRuleModifyingEffectImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.add(new SubtypePredicate("Werewolf")); + filter.add(new SubtypePredicate(SubType.WEREWOLF)); filter.add(Predicates.not(new SubtypePredicate("Human"))); } diff --git a/Mage.Sets/src/mage/cards/i/ImperialGunner.java b/Mage.Sets/src/mage/cards/i/ImperialGunner.java index 32790ed34bd..e49d39b7977 100644 --- a/Mage.Sets/src/mage/cards/i/ImperialGunner.java +++ b/Mage.Sets/src/mage/cards/i/ImperialGunner.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreatureOrPlayer; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class ImperialGunner extends CardImpl { private static final FilterCreatureOrPlayer filter = new FilterCreatureOrPlayer("target player or Starship creature"); static { - filter.getCreatureFilter().add(new SubtypePredicate("Starship")); + filter.getCreatureFilter().add(new SubtypePredicate(SubType.STARSHIP)); } public ImperialGunner(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/ImperialHellkite.java b/Mage.Sets/src/mage/cards/i/ImperialHellkite.java index 378f8cd9f4e..a70861b715f 100644 --- a/Mage.Sets/src/mage/cards/i/ImperialHellkite.java +++ b/Mage.Sets/src/mage/cards/i/ImperialHellkite.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.MorphAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterBySubtypeCard; import mage.target.common.TargetCardInLibrary; @@ -60,7 +61,7 @@ public class ImperialHellkite extends CardImpl { this.addAbility(new MorphAbility(this, new ManaCostsImpl("{6}{R}{R}"))); // When Imperial Hellkite is turned face up, you may search your library for a Dragon card, reveal it, and put it into your hand. If you do, shuffle your library. - Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, new FilterBySubtypeCard("Dragon")), true, true); + Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, new FilterBySubtypeCard(SubType.DRAGON)), true, true); effect.setText("you may search your library for a Dragon card, reveal it, and put it into your hand. If you do, shuffle your library"); this.addAbility(new TurnedFaceUpSourceTriggeredAbility(effect)); } diff --git a/Mage.Sets/src/mage/cards/i/InOketrasName.java b/Mage.Sets/src/mage/cards/i/InOketrasName.java index dc237e7b8c5..eeb67bcc7b9 100644 --- a/Mage.Sets/src/mage/cards/i/InOketrasName.java +++ b/Mage.Sets/src/mage/cards/i/InOketrasName.java @@ -33,6 +33,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,8 +48,8 @@ public class InOketrasName extends CardImpl { private static final FilterCreaturePermanent filterNotZombies = new FilterCreaturePermanent("Other creatures"); static { - filterZombies.add(new SubtypePredicate("Zombie")); - filterNotZombies.add(Predicates.not(new SubtypePredicate("Zombie"))); + filterZombies.add(new SubtypePredicate(SubType.ZOMBIE)); + filterNotZombies.add(Predicates.not(new SubtypePredicate(SubType.ZOMBIE))); } public InOketrasName(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/InameAsOne.java b/Mage.Sets/src/mage/cards/i/InameAsOne.java index c582af12e13..fb166c5e650 100644 --- a/Mage.Sets/src/mage/cards/i/InameAsOne.java +++ b/Mage.Sets/src/mage/cards/i/InameAsOne.java @@ -44,6 +44,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.common.FilterPermanentCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -65,7 +66,7 @@ public class InameAsOne extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Spirit permanent card"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public InameAsOne(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/IncandescentSoulstoke.java b/Mage.Sets/src/mage/cards/i/IncandescentSoulstoke.java index 64644a73597..1b598083dac 100644 --- a/Mage.Sets/src/mage/cards/i/IncandescentSoulstoke.java +++ b/Mage.Sets/src/mage/cards/i/IncandescentSoulstoke.java @@ -44,10 +44,7 @@ import mage.abilities.keyword.HasteAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterCard; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; @@ -67,7 +64,7 @@ public class IncandescentSoulstoke extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elemental creatures"); static { - filter.add(new SubtypePredicate("Elemental")); + filter.add(new SubtypePredicate(SubType.ELEMENTAL)); } public IncandescentSoulstoke(UUID ownerId, CardSetInfo setInfo) { @@ -121,7 +118,7 @@ class IncandescentSoulstokeEffect extends OneShotEffect { if (controller != null) { if (controller.chooseUse(Outcome.PutCreatureInPlay, choiceText, source, game)) { FilterCard filter = new FilterCreatureCard(); - filter.add(new SubtypePredicate(("Elemental"))); + filter.add(new SubtypePredicate((SubType.ELEMENTAL))); TargetCardInHand target = new TargetCardInHand(filter); if (controller.choose(Outcome.PutCreatureInPlay, target, source.getSourceId(), game)) { Card card = game.getCard(target.getFirstTarget()); diff --git a/Mage.Sets/src/mage/cards/i/IndebtedSamurai.java b/Mage.Sets/src/mage/cards/i/IndebtedSamurai.java index 120fbad572a..e45c4ddc8cb 100644 --- a/Mage.Sets/src/mage/cards/i/IndebtedSamurai.java +++ b/Mage.Sets/src/mage/cards/i/IndebtedSamurai.java @@ -29,6 +29,7 @@ package mage.cards.i; import java.util.UUID; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.MageInt; import mage.abilities.common.DiesCreatureTriggeredAbility; @@ -50,7 +51,7 @@ public class IndebtedSamurai extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a Samurai you control"); static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Samurai")); + filter.add(new SubtypePredicate(SubType.SAMURAI)); } public IndebtedSamurai(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/InfernalCaretaker.java b/Mage.Sets/src/mage/cards/i/InfernalCaretaker.java index 46f98f0a90f..a448e0b18a2 100644 --- a/Mage.Sets/src/mage/cards/i/InfernalCaretaker.java +++ b/Mage.Sets/src/mage/cards/i/InfernalCaretaker.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.MorphAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.common.FilterBySubtypeCard; @@ -46,7 +47,7 @@ import mage.filter.common.FilterBySubtypeCard; */ public class InfernalCaretaker extends CardImpl { - private static FilterCard zombieCard = new FilterBySubtypeCard("Zombie"); + private static FilterCard zombieCard = new FilterBySubtypeCard(SubType.ZOMBIE); public InfernalCaretaker(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}"); diff --git a/Mage.Sets/src/mage/cards/i/InformationDealer.java b/Mage.Sets/src/mage/cards/i/InformationDealer.java index 3cacba07f92..ac832d3a3d5 100644 --- a/Mage.Sets/src/mage/cards/i/InformationDealer.java +++ b/Mage.Sets/src/mage/cards/i/InformationDealer.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.LookLibraryControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class InformationDealer extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Wizards on the battlefield"); static { - filter.add(new SubtypePredicate("Wizard")); + filter.add(new SubtypePredicate(SubType.WIZARD)); } public InformationDealer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/IntrepidProvisioner.java b/Mage.Sets/src/mage/cards/i/IntrepidProvisioner.java index 7efc27d28ff..0263961e417 100644 --- a/Mage.Sets/src/mage/cards/i/IntrepidProvisioner.java +++ b/Mage.Sets/src/mage/cards/i/IntrepidProvisioner.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.permanent.AnotherPredicate; import mage.target.common.TargetControlledCreaturePermanent; @@ -47,7 +48,7 @@ import mage.target.common.TargetControlledCreaturePermanent; */ public class IntrepidProvisioner extends CardImpl { - private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Human", "another target Human you control"); + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.HUMAN, "another target Human you control"); static { filter.add(new AnotherPredicate()); diff --git a/Mage.Sets/src/mage/cards/i/InventorsGoggles.java b/Mage.Sets/src/mage/cards/i/InventorsGoggles.java index b282da74ab3..f5102000bcd 100644 --- a/Mage.Sets/src/mage/cards/i/InventorsGoggles.java +++ b/Mage.Sets/src/mage/cards/i/InventorsGoggles.java @@ -36,11 +36,7 @@ import mage.abilities.effects.common.continuous.BoostEquippedEffect; import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.SetTargetPointer; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; /** @@ -60,7 +56,7 @@ public class InventorsGoggles extends CardImpl { this.addAbility(new EntersBattlefieldControlledTriggeredAbility( Zone.BATTLEFIELD, new AttachEffect(Outcome.BoostCreature, "attach {this} to it"), - new FilterPermanent("Artificer", "Artificer"), + new FilterPermanent(SubType.ARTIFICER, "Artificer"), true, SetTargetPointer.PERMANENT, null)); diff --git a/Mage.Sets/src/mage/cards/i/Invigorate.java b/Mage.Sets/src/mage/cards/i/Invigorate.java index d269f9969be..45f852d9ed9 100644 --- a/Mage.Sets/src/mage/cards/i/Invigorate.java +++ b/Mage.Sets/src/mage/cards/i/Invigorate.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; @@ -49,7 +50,7 @@ public class Invigorate extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("If you control a Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public Invigorate(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/IslandFishJasconius.java b/Mage.Sets/src/mage/cards/i/IslandFishJasconius.java index 27f72f37be7..e90b6376375 100644 --- a/Mage.Sets/src/mage/cards/i/IslandFishJasconius.java +++ b/Mage.Sets/src/mage/cards/i/IslandFishJasconius.java @@ -28,7 +28,7 @@ package mage.cards.i; import mage.MageInt; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.ControlsPermanentsControllerTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; @@ -40,9 +40,6 @@ import mage.abilities.effects.common.UntapSourceEffect; import mage.abilities.effects.common.combat.CantAttackUnlessDefenderControllsPermanent; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.TargetController; -import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; import java.util.UUID; @@ -70,11 +67,11 @@ public class IslandFishJasconius extends CardImpl { false)); // Island Fish Jasconius can't attack unless defending player controls an Island. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island", "an Island")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.ISLAND, "an Island")))); // When you control no Islands, sacrifice Island Fish Jasconius. this.addAbility(new ControlsPermanentsControllerTriggeredAbility( - new FilterLandPermanent("Island", "no Islands"), ComparisonType.EQUAL_TO, 0, + new FilterLandPermanent(SubType.ISLAND, "no Islands"), ComparisonType.EQUAL_TO, 0, new SacrificeSourceEffect())); } diff --git a/Mage.Sets/src/mage/cards/i/IxidorsWill.java b/Mage.Sets/src/mage/cards/i/IxidorsWill.java index 3c6bcfe7f91..7754589f85b 100644 --- a/Mage.Sets/src/mage/cards/i/IxidorsWill.java +++ b/Mage.Sets/src/mage/cards/i/IxidorsWill.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.CounterUnlessPaysEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.target.TargetSpell; @@ -44,7 +45,7 @@ import mage.target.TargetSpell; */ public class IxidorsWill extends CardImpl { - private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("Wizard", "Wizard"); + private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent(SubType.WIZARD, "Wizard"); public IxidorsWill(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}"); diff --git a/Mage.Sets/src/mage/cards/j/JaradGolgariLichLord.java b/Mage.Sets/src/mage/cards/j/JaradGolgariLichLord.java index 296096d681a..c4a8e2d6635 100644 --- a/Mage.Sets/src/mage/cards/j/JaradGolgariLichLord.java +++ b/Mage.Sets/src/mage/cards/j/JaradGolgariLichLord.java @@ -41,10 +41,7 @@ import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreatureCard; @@ -67,8 +64,8 @@ public class JaradGolgariLichLord extends CardImpl { static { filter.add(new AnotherPredicate()); - filterSwamp.add(new SubtypePredicate("Swamp")); - filterForest.add(new SubtypePredicate("Forest")); + filterSwamp.add(new SubtypePredicate(SubType.SWAMP)); + filterForest.add(new SubtypePredicate(SubType.FOREST)); } public JaradGolgariLichLord(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/j/JawsOfStone.java b/Mage.Sets/src/mage/cards/j/JawsOfStone.java index b981b607464..c450498711b 100644 --- a/Mage.Sets/src/mage/cards/j/JawsOfStone.java +++ b/Mage.Sets/src/mage/cards/j/JawsOfStone.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.DamageMultiEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreatureOrPlayerAmount; @@ -47,7 +48,7 @@ public class JawsOfStone extends CardImpl { static final private FilterControlledLandPermanent filter = new FilterControlledLandPermanent("mountains you control"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } static final private String rule = "{this} deals X damage divided as you choose among any number of target creatures and/or players, where X is the number of Mountains you control as you cast {this}"; diff --git a/Mage.Sets/src/mage/cards/j/JediStarfighter.java b/Mage.Sets/src/mage/cards/j/JediStarfighter.java index 2d75cd1b380..200c251af93 100644 --- a/Mage.Sets/src/mage/cards/j/JediStarfighter.java +++ b/Mage.Sets/src/mage/cards/j/JediStarfighter.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class JediStarfighter extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Jedi creatures you control"); static { - filter.add(new SubtypePredicate("Jedi")); + filter.add(new SubtypePredicate(SubType.JEDI)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/j/JediTraining.java b/Mage.Sets/src/mage/cards/j/JediTraining.java index 5d11c052187..0cfce93bb1b 100644 --- a/Mage.Sets/src/mage/cards/j/JediTraining.java +++ b/Mage.Sets/src/mage/cards/j/JediTraining.java @@ -37,6 +37,7 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class JediTraining extends CardImpl { protected static final FilterCard filter = new FilterCard("Jedi spells"); static { - filter.add(new SubtypePredicate("Jedi")); + filter.add(new SubtypePredicate(SubType.JEDI)); } public JediTraining(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/j/JudgeOfCurrents.java b/Mage.Sets/src/mage/cards/j/JudgeOfCurrents.java index 036886efb9a..5a73bb8330b 100644 --- a/Mage.Sets/src/mage/cards/j/JudgeOfCurrents.java +++ b/Mage.Sets/src/mage/cards/j/JudgeOfCurrents.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledCreaturePermanent; /** @@ -50,7 +51,7 @@ public class JudgeOfCurrents extends CardImpl { this.toughness = new MageInt(1); // Whenever a Merfolk you control becomes tapped, you may gain 1 life. - this.addAbility(new BecomesTappedTriggeredAbility(new GainLifeEffect(1), true, new FilterControlledCreaturePermanent("Merfolk", "a Merfolk you control"))); + this.addAbility(new BecomesTappedTriggeredAbility(new GainLifeEffect(1), true, new FilterControlledCreaturePermanent(SubType.MERFOLK, "a Merfolk you control"))); } public JudgeOfCurrents(final JudgeOfCurrents card) { diff --git a/Mage.Sets/src/mage/cards/j/Juggernaut.java b/Mage.Sets/src/mage/cards/j/Juggernaut.java index 114a8867958..69a9a850a02 100644 --- a/Mage.Sets/src/mage/cards/j/Juggernaut.java +++ b/Mage.Sets/src/mage/cards/j/Juggernaut.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class Juggernaut extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Walls"); static { - filter.add(new SubtypePredicate("Wall")); + filter.add(new SubtypePredicate(SubType.WALL)); } public Juggernaut(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/j/JungleBasin.java b/Mage.Sets/src/mage/cards/j/JungleBasin.java index 1ad6c7362ce..b3973d6a278 100644 --- a/Mage.Sets/src/mage/cards/j/JungleBasin.java +++ b/Mage.Sets/src/mage/cards/j/JungleBasin.java @@ -38,6 +38,7 @@ import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.Predicates; @@ -54,7 +55,7 @@ public class JungleBasin extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("an untapped Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/k/KabiraEvangel.java b/Mage.Sets/src/mage/cards/k/KabiraEvangel.java index 6432956b3e5..568c2696621 100644 --- a/Mage.Sets/src/mage/cards/k/KabiraEvangel.java +++ b/Mage.Sets/src/mage/cards/k/KabiraEvangel.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledCreaturePermanent; @@ -52,7 +53,7 @@ public class KabiraEvangel extends CardImpl { private static final FilterControlledCreaturePermanent FILTER1 = new FilterControlledCreaturePermanent(); static { - FILTER1.add(new SubtypePredicate("Ally")); + FILTER1.add(new SubtypePredicate(SubType.ALLY)); } public KabiraEvangel(UUID ownerId, CardSetInfo setInfo) { @@ -65,7 +66,7 @@ public class KabiraEvangel extends CardImpl { this.toughness = new MageInt(3); FilterPermanent filter2 = new FilterPermanent(getName() + " or another Ally"); - filter2.add(Predicates.or(new CardIdPredicate(this.getId()), new SubtypePredicate("Ally"))); + filter2.add(Predicates.or(new CardIdPredicate(this.getId()), new SubtypePredicate(SubType.ALLY))); // Whenever Kabira Evangel or another Ally enters the battlefield under your control, you may choose a color. If you do, Allies you control gain protection from the chosen color until end of turn. Effect effect = new GainProtectionFromColorAllEffect(Duration.EndOfTurn, FILTER1); diff --git a/Mage.Sets/src/mage/cards/k/KangeeAerieKeeper.java b/Mage.Sets/src/mage/cards/k/KangeeAerieKeeper.java index a71db140996..155266cccb9 100644 --- a/Mage.Sets/src/mage/cards/k/KangeeAerieKeeper.java +++ b/Mage.Sets/src/mage/cards/k/KangeeAerieKeeper.java @@ -45,10 +45,7 @@ import mage.abilities.keyword.KickerAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -64,7 +61,7 @@ public class KangeeAerieKeeper extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Bird creatures"); static { - filter.add(new SubtypePredicate("Bird")); + filter.add(new SubtypePredicate(SubType.BIRD)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/k/KariZevsExpertise.java b/Mage.Sets/src/mage/cards/k/KariZevsExpertise.java index fb50ffe8443..44def69dd4f 100644 --- a/Mage.Sets/src/mage/cards/k/KariZevsExpertise.java +++ b/Mage.Sets/src/mage/cards/k/KariZevsExpertise.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -53,7 +54,7 @@ public class KariZevsExpertise extends CardImpl { static { filter.add(Predicates.or(new CardTypePredicate(CardType.CREATURE), - new SubtypePredicate("Vehicle"))); + new SubtypePredicate(SubType.VEHICLE))); } public KariZevsExpertise(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/Karoo.java b/Mage.Sets/src/mage/cards/k/Karoo.java index 97115d20335..fac91ebce72 100644 --- a/Mage.Sets/src/mage/cards/k/Karoo.java +++ b/Mage.Sets/src/mage/cards/k/Karoo.java @@ -38,6 +38,7 @@ import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.Predicates; @@ -54,7 +55,7 @@ public class Karoo extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("an untapped Plains"); static { - filter.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.PLAINS)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/k/KashiTribeElite.java b/Mage.Sets/src/mage/cards/k/KashiTribeElite.java index 31514f4c63d..a4a84730d33 100644 --- a/Mage.Sets/src/mage/cards/k/KashiTribeElite.java +++ b/Mage.Sets/src/mage/cards/k/KashiTribeElite.java @@ -37,10 +37,7 @@ import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.keyword.ShroudAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; @@ -57,7 +54,7 @@ public class KashiTribeElite extends CardImpl { static { filter.add(new SupertypePredicate(SuperType.LEGENDARY)); - filter.add(new SubtypePredicate("Snake")); + filter.add(new SubtypePredicate(SubType.SNAKE)); } public KashiTribeElite(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KavuMauler.java b/Mage.Sets/src/mage/cards/k/KavuMauler.java index 15b6e5d333b..450bd2f8d9b 100644 --- a/Mage.Sets/src/mage/cards/k/KavuMauler.java +++ b/Mage.Sets/src/mage/cards/k/KavuMauler.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterAttackingCreature; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; @@ -50,7 +51,7 @@ public class KavuMauler extends CardImpl { private static final FilterAttackingCreature filter = new FilterAttackingCreature("other attacking Kavu"); static { - filter.add(new SubtypePredicate("Kavu")); + filter.add(new SubtypePredicate(SubType.KAVU)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/k/KazuulWarlord.java b/Mage.Sets/src/mage/cards/k/KazuulWarlord.java index da41809e682..8e5060ab5cf 100644 --- a/Mage.Sets/src/mage/cards/k/KazuulWarlord.java +++ b/Mage.Sets/src/mage/cards/k/KazuulWarlord.java @@ -30,6 +30,7 @@ package mage.cards.k; import java.util.UUID; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.MageInt; import mage.abilities.common.AllyEntersBattlefieldTriggeredAbility; @@ -50,7 +51,7 @@ public class KazuulWarlord extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Ally creatures you control"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/k/KeeperOfTheNineGales.java b/Mage.Sets/src/mage/cards/k/KeeperOfTheNineGales.java index 167b0a221c8..26a702ef212 100644 --- a/Mage.Sets/src/mage/cards/k/KeeperOfTheNineGales.java +++ b/Mage.Sets/src/mage/cards/k/KeeperOfTheNineGales.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -56,7 +57,7 @@ public class KeeperOfTheNineGales extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Bird")); + filter.add(new SubtypePredicate(SubType.BIRD)); } public KeeperOfTheNineGales(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KentaroTheSmilingCat.java b/Mage.Sets/src/mage/cards/k/KentaroTheSmilingCat.java index bfcaab96b90..a1e6f4d8432 100644 --- a/Mage.Sets/src/mage/cards/k/KentaroTheSmilingCat.java +++ b/Mage.Sets/src/mage/cards/k/KentaroTheSmilingCat.java @@ -85,7 +85,7 @@ class KentaroTheSmilingCatCastingEffect extends ContinuousEffectImpl { private static final FilterCard filterSamurai = new FilterCard(); static { - filterSamurai.add(new SubtypePredicate("Samurai")); + filterSamurai.add(new SubtypePredicate(SubType.SAMURAI)); } static final AlternativeCostSourceAbility alternativeCastingCostAbility = new AlternativeCostSourceAbility( diff --git a/Mage.Sets/src/mage/cards/k/KessigMalcontents.java b/Mage.Sets/src/mage/cards/k/KessigMalcontents.java index f37f74861a8..a5bf1f299a6 100644 --- a/Mage.Sets/src/mage/cards/k/KessigMalcontents.java +++ b/Mage.Sets/src/mage/cards/k/KessigMalcontents.java @@ -35,6 +35,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPlayer; @@ -49,7 +50,7 @@ public class KessigMalcontents extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Humans you control"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public KessigMalcontents(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KinsbaileBorderguard.java b/Mage.Sets/src/mage/cards/k/KinsbaileBorderguard.java index ac3cdac14cb..2fb7082cd6b 100644 --- a/Mage.Sets/src/mage/cards/k/KinsbaileBorderguard.java +++ b/Mage.Sets/src/mage/cards/k/KinsbaileBorderguard.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.counters.Counter; import mage.counters.CounterType; import mage.filter.common.FilterControlledPermanent; @@ -57,7 +58,7 @@ public class KinsbaileBorderguard extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent(); static { - filter.add(new SubtypePredicate("Kithkin")); + filter.add(new SubtypePredicate(SubType.KITHKIN)); } public KinsbaileBorderguard(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KitsuneMystic.java b/Mage.Sets/src/mage/cards/k/KitsuneMystic.java index 975b60c9797..f5d54abef69 100644 --- a/Mage.Sets/src/mage/cards/k/KitsuneMystic.java +++ b/Mage.Sets/src/mage/cards/k/KitsuneMystic.java @@ -38,10 +38,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.FlipSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterEnchantmentPermanent; import mage.filter.predicate.mageobject.AttachmentAttachedToCardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -92,7 +89,7 @@ class AutumnTailKitsuneSage extends Token { static { filter.add(new AttachmentAttachedToCardTypePredicate(CardType.CREATURE)); - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } AutumnTailKitsuneSage() { diff --git a/Mage.Sets/src/mage/cards/k/KnightCaptainOfEos.java b/Mage.Sets/src/mage/cards/k/KnightCaptainOfEos.java index 626dcccc7f0..b69f0e00afb 100644 --- a/Mage.Sets/src/mage/cards/k/KnightCaptainOfEos.java +++ b/Mage.Sets/src/mage/cards/k/KnightCaptainOfEos.java @@ -30,6 +30,7 @@ package mage.cards.k; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -54,7 +55,7 @@ public class KnightCaptainOfEos extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Soldier"); static { - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public KnightCaptainOfEos(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KnightExemplar.java b/Mage.Sets/src/mage/cards/k/KnightExemplar.java index e3dbc5d3b94..eae9277d54f 100644 --- a/Mage.Sets/src/mage/cards/k/KnightExemplar.java +++ b/Mage.Sets/src/mage/cards/k/KnightExemplar.java @@ -29,10 +29,8 @@ package mage.cards.k; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.TargetController; -import mage.constants.Zone; + +import mage.constants.*; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.Effect; @@ -56,7 +54,7 @@ public class KnightExemplar extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Knight creatures"); static { - filter.add(new SubtypePredicate("Knight")); + filter.add(new SubtypePredicate(SubType.KNIGHT)); } public KnightExemplar(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KnuckleboneWitch.java b/Mage.Sets/src/mage/cards/k/KnuckleboneWitch.java index d12eafb7336..0eea55dd359 100644 --- a/Mage.Sets/src/mage/cards/k/KnuckleboneWitch.java +++ b/Mage.Sets/src/mage/cards/k/KnuckleboneWitch.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; @@ -50,7 +51,7 @@ public class KnuckleboneWitch extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public KnuckleboneWitch(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KoboldDrillSergeant.java b/Mage.Sets/src/mage/cards/k/KoboldDrillSergeant.java index 708bd10e55f..b2263a153d5 100644 --- a/Mage.Sets/src/mage/cards/k/KoboldDrillSergeant.java +++ b/Mage.Sets/src/mage/cards/k/KoboldDrillSergeant.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class KoboldDrillSergeant extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Kobold creatures"); static { - filter.add(new SubtypePredicate("Kobold")); + filter.add(new SubtypePredicate(SubType.KOBOLD)); } public KoboldDrillSergeant(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KoboldOverlord.java b/Mage.Sets/src/mage/cards/k/KoboldOverlord.java index bb2849dc7bd..cdecf5bf4a6 100644 --- a/Mage.Sets/src/mage/cards/k/KoboldOverlord.java +++ b/Mage.Sets/src/mage/cards/k/KoboldOverlord.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class KoboldOverlord extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Kobold creatures"); static { - filter.add(new SubtypePredicate("Kobold")); + filter.add(new SubtypePredicate(SubType.KOBOLD)); } public KoboldOverlord(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KolaghanTheStormsFury.java b/Mage.Sets/src/mage/cards/k/KolaghanTheStormsFury.java index 4e7df5acbf5..f082e538f5e 100644 --- a/Mage.Sets/src/mage/cards/k/KolaghanTheStormsFury.java +++ b/Mage.Sets/src/mage/cards/k/KolaghanTheStormsFury.java @@ -50,7 +50,7 @@ public class KolaghanTheStormsFury extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Dragon you control"); static { - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/k/KondasHatamoto.java b/Mage.Sets/src/mage/cards/k/KondasHatamoto.java index 7e3dd2855b4..7fc8d637bfe 100644 --- a/Mage.Sets/src/mage/cards/k/KondasHatamoto.java +++ b/Mage.Sets/src/mage/cards/k/KondasHatamoto.java @@ -37,10 +37,7 @@ import mage.abilities.keyword.BushidoAbility; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; @@ -59,7 +56,7 @@ public class KondasHatamoto extends CardImpl { static { filter.add(new SupertypePredicate(SuperType.LEGENDARY)); - filter.add(new SubtypePredicate("Samurai")); + filter.add(new SubtypePredicate(SubType.SAMURAI)); } public KondasHatamoto (UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KorCartographer.java b/Mage.Sets/src/mage/cards/k/KorCartographer.java index fda56ebbf96..ad0a3ba82ba 100644 --- a/Mage.Sets/src/mage/cards/k/KorCartographer.java +++ b/Mage.Sets/src/mage/cards/k/KorCartographer.java @@ -34,6 +34,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterBySubtypeCard; import mage.target.common.TargetCardInLibrary; @@ -52,7 +53,7 @@ public class KorCartographer extends CardImpl { this.toughness = new MageInt(2); // When Kor Cartographer enters the battlefield, you may search your library for a Plains card, put it onto the battlefield tapped, then shuffle your library. - this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(new FilterBySubtypeCard("Plains")), true), true)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(new FilterBySubtypeCard(SubType.PLAINS)), true), true)); } public KorCartographer(final KorCartographer card) { diff --git a/Mage.Sets/src/mage/cards/k/KorOutfitter.java b/Mage.Sets/src/mage/cards/k/KorOutfitter.java index 40010458667..f58c15cb49f 100644 --- a/Mage.Sets/src/mage/cards/k/KorOutfitter.java +++ b/Mage.Sets/src/mage/cards/k/KorOutfitter.java @@ -36,6 +36,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -52,7 +53,7 @@ public class KorOutfitter extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Equipment you control"); static { - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public KorOutfitter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KorSpiritdancer.java b/Mage.Sets/src/mage/cards/k/KorSpiritdancer.java index b072113d82d..44d4fddaf96 100644 --- a/Mage.Sets/src/mage/cards/k/KorSpiritdancer.java +++ b/Mage.Sets/src/mage/cards/k/KorSpiritdancer.java @@ -30,6 +30,7 @@ package mage.cards.k; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; @@ -51,7 +52,7 @@ public class KorSpiritdancer extends CardImpl { private static final FilterSpell filter = new FilterSpell("an Aura spell"); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public KorSpiritdancer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KormusBell.java b/Mage.Sets/src/mage/cards/k/KormusBell.java index d25ae953b57..241be3129ca 100644 --- a/Mage.Sets/src/mage/cards/k/KormusBell.java +++ b/Mage.Sets/src/mage/cards/k/KormusBell.java @@ -34,10 +34,7 @@ import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.common.continuous.BecomesCreatureAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.DependencyType; -import mage.constants.Duration; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.game.permanent.token.Token; @@ -52,7 +49,7 @@ public class KormusBell extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}"); // All Swamps are 1/1 black creatures that are still lands. - ContinuousEffect effect = new BecomesCreatureAllEffect(new KormusBellToken(), "lands", new FilterPermanent("Swamp", "Swamps"), Duration.WhileOnBattlefield); + ContinuousEffect effect = new BecomesCreatureAllEffect(new KormusBellToken(), "lands", new FilterPermanent(SubType.SWAMP, "Swamps"), Duration.WhileOnBattlefield); effect.setDependedToType(DependencyType.BecomeSwamp); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/cards/k/KragmaWarcaller.java b/Mage.Sets/src/mage/cards/k/KragmaWarcaller.java index 4213d5d6994..9a1b09b2e16 100644 --- a/Mage.Sets/src/mage/cards/k/KragmaWarcaller.java +++ b/Mage.Sets/src/mage/cards/k/KragmaWarcaller.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class KragmaWarcaller extends CardImpl { private static final FilterControlledCreaturePermanent filter1 = new FilterControlledCreaturePermanent("Minotaur creatures you control"); private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("Minotaur you control"); static { - filter1.add(new SubtypePredicate("Minotaur")); + filter1.add(new SubtypePredicate(SubType.MINOTAUR)); } public KragmaWarcaller(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KrosanGroundshaker.java b/Mage.Sets/src/mage/cards/k/KrosanGroundshaker.java index 34a35392293..bff9e2b0f6a 100644 --- a/Mage.Sets/src/mage/cards/k/KrosanGroundshaker.java +++ b/Mage.Sets/src/mage/cards/k/KrosanGroundshaker.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class KrosanGroundshaker extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Beast creature"); static { - filter.add(new SubtypePredicate("Beast")); + filter.add(new SubtypePredicate(SubType.BEAST)); } public KrosanGroundshaker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KrosanVerge.java b/Mage.Sets/src/mage/cards/k/KrosanVerge.java index cf87347e77f..36d4990b4e1 100644 --- a/Mage.Sets/src/mage/cards/k/KrosanVerge.java +++ b/Mage.Sets/src/mage/cards/k/KrosanVerge.java @@ -30,6 +30,7 @@ package mage.cards.k; import java.util.UUID; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTappedAbility; @@ -56,8 +57,8 @@ public class KrosanVerge extends CardImpl { private static final FilterCard filterPlains = new FilterCard("a Plains"); static { - filterForest.add(new SubtypePredicate("Forest")); - filterPlains.add(new SubtypePredicate("Plains")); + filterForest.add(new SubtypePredicate(SubType.FOREST)); + filterPlains.add(new SubtypePredicate(SubType.PLAINS)); } public KrosanVerge(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LakeOfTheDead.java b/Mage.Sets/src/mage/cards/l/LakeOfTheDead.java index 9c011ff95b2..3b61f12c21f 100644 --- a/Mage.Sets/src/mage/cards/l/LakeOfTheDead.java +++ b/Mage.Sets/src/mage/cards/l/LakeOfTheDead.java @@ -39,6 +39,7 @@ import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class LakeOfTheDead extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Swamp"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public LakeOfTheDead(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LandoCalrissian.java b/Mage.Sets/src/mage/cards/l/LandoCalrissian.java index 933ff4978f8..57061a52055 100644 --- a/Mage.Sets/src/mage/cards/l/LandoCalrissian.java +++ b/Mage.Sets/src/mage/cards/l/LandoCalrissian.java @@ -36,10 +36,7 @@ import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.TargetController; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.ControllerPredicate; @@ -56,7 +53,7 @@ public class LandoCalrissian extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Starship you control"); static { - filter.add(new SubtypePredicate("Starship")); + filter.add(new SubtypePredicate(SubType.STARSHIP)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/l/LavaDart.java b/Mage.Sets/src/mage/cards/l/LavaDart.java index 76944b89ba0..90372fffe2d 100644 --- a/Mage.Sets/src/mage/cards/l/LavaDart.java +++ b/Mage.Sets/src/mage/cards/l/LavaDart.java @@ -34,6 +34,7 @@ import mage.abilities.keyword.FlashbackAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TimingRule; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class LavaDart extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Mountain"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public LavaDart(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LavamancersSkill.java b/Mage.Sets/src/mage/cards/l/LavamancersSkill.java index ea0a68c18e5..974aa4c03eb 100644 --- a/Mage.Sets/src/mage/cards/l/LavamancersSkill.java +++ b/Mage.Sets/src/mage/cards/l/LavamancersSkill.java @@ -41,11 +41,7 @@ import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AttachmentType; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -77,7 +73,7 @@ public class LavamancersSkill extends CardImpl { Ability pingTwoAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new TapSourceCost()); pingTwoAbility.addTarget(new TargetCreaturePermanent()); ContinuousEffect isWizardEffect = new GainAbilityAttachedEffect(pingTwoAbility, AttachmentType.AURA); - SimpleStaticAbility ifWizardAbility = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(isWizardEffect, new EnchantedCreatureSubtypeCondition("Wizard"), + SimpleStaticAbility ifWizardAbility = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(isWizardEffect, new EnchantedCreatureSubtypeCondition(SubType.WIZARD), "As long as enchanted creature is a Wizard, it has \"{T}: This creature deals 2 damage to target creature.\"")); this.addAbility(ifWizardAbility); diff --git a/Mage.Sets/src/mage/cards/l/LightningCrafter.java b/Mage.Sets/src/mage/cards/l/LightningCrafter.java index e4a964b7714..702cd544fea 100644 --- a/Mage.Sets/src/mage/cards/l/LightningCrafter.java +++ b/Mage.Sets/src/mage/cards/l/LightningCrafter.java @@ -27,6 +27,7 @@ */ package mage.cards.l; +import java.util.EnumSet; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; @@ -37,6 +38,7 @@ import mage.abilities.keyword.ChampionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.target.common.TargetCreatureOrPlayer; @@ -54,7 +56,7 @@ public class LightningCrafter extends CardImpl { this.toughness = new MageInt(3); // Champion a Goblin or Shaman - this.addAbility(new ChampionAbility(this, new String[]{"Goblin", "Shaman"}, false)); + this.addAbility(new ChampionAbility(this, EnumSet.of(SubType.GOBLIN, SubType.SHAMAN), false)); // {T}: Lightning Crafter deals 3 damage to target creature or player. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3), new TapSourceCost()); diff --git a/Mage.Sets/src/mage/cards/l/LilianasShade.java b/Mage.Sets/src/mage/cards/l/LilianasShade.java index ab316b379c5..9eaca1ae3ec 100644 --- a/Mage.Sets/src/mage/cards/l/LilianasShade.java +++ b/Mage.Sets/src/mage/cards/l/LilianasShade.java @@ -30,6 +30,7 @@ package mage.cards.l; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -52,7 +53,7 @@ public class LilianasShade extends CardImpl { private static final FilterLandCard filter = new FilterLandCard("Swamp"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public LilianasShade(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LimDulTheNecromancer.java b/Mage.Sets/src/mage/cards/l/LimDulTheNecromancer.java index 69764d9802b..b66fa3ae7d2 100644 --- a/Mage.Sets/src/mage/cards/l/LimDulTheNecromancer.java +++ b/Mage.Sets/src/mage/cards/l/LimDulTheNecromancer.java @@ -64,7 +64,7 @@ public class LimDulTheNecromancer extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.OPPONENT)); - filter2.add(new SubtypePredicate("Zombie")); + filter2.add(new SubtypePredicate(SubType.ZOMBIE)); } public LimDulTheNecromancer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LinSivviDefiantHero.java b/Mage.Sets/src/mage/cards/l/LinSivviDefiantHero.java index 9d09be812ce..23b3a6c23c5 100644 --- a/Mage.Sets/src/mage/cards/l/LinSivviDefiantHero.java +++ b/Mage.Sets/src/mage/cards/l/LinSivviDefiantHero.java @@ -62,7 +62,7 @@ public class LinSivviDefiantHero extends CardImpl { static { filter.add(new OwnerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Rebel")); + filter.add(new SubtypePredicate(SubType.REBEL)); } static final String rule = "Put target Rebel card from your graveyard on the bottom of your library"; @@ -125,7 +125,7 @@ class LinSivviDefiantHeroEffect extends OneShotEffect { FilterPermanentCard filter = new FilterPermanentCard(new StringBuilder("Rebel permanent card with converted mana cost ").append(xCost).append(" or less").toString()); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, xCost + 1)); - filter.add(new SubtypePredicate("Rebel")); + filter.add(new SubtypePredicate(SubType.REBEL)); TargetCardInLibrary target = new TargetCardInLibrary(filter); if (controller.searchLibrary(target, game)) { diff --git a/Mage.Sets/src/mage/cards/l/LordOfTheAccursed.java b/Mage.Sets/src/mage/cards/l/LordOfTheAccursed.java index 883cc1a266e..754fc3cfc43 100644 --- a/Mage.Sets/src/mage/cards/l/LordOfTheAccursed.java +++ b/Mage.Sets/src/mage/cards/l/LordOfTheAccursed.java @@ -41,6 +41,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate; */ public class LordOfTheAccursed extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie", "Zombie creatures"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.ZOMBIE, "Zombie creatures"); public LordOfTheAccursed(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}"); diff --git a/Mage.Sets/src/mage/cards/l/LovisaColdeyes.java b/Mage.Sets/src/mage/cards/l/LovisaColdeyes.java index f85d6f98a73..2123b4db775 100644 --- a/Mage.Sets/src/mage/cards/l/LovisaColdeyes.java +++ b/Mage.Sets/src/mage/cards/l/LovisaColdeyes.java @@ -52,7 +52,7 @@ public class LovisaColdeyes extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature that's a Barbarian, a Warrior, or a Berserker"); static { - filter.add(Predicates.or(new SubtypePredicate(SubType.BARBARION), new SubtypePredicate(SubType.WARRIOR), new SubtypePredicate(SubType.BERSERKER))); + filter.add(Predicates.or(new SubtypePredicate(SubType.BARBARIAN), new SubtypePredicate(SubType.WARRIOR), new SubtypePredicate(SubType.BERSERKER))); } public LovisaColdeyes(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LullmageMentor.java b/Mage.Sets/src/mage/cards/l/LullmageMentor.java index fe070b4b7e4..5ab5d7ca584 100644 --- a/Mage.Sets/src/mage/cards/l/LullmageMentor.java +++ b/Mage.Sets/src/mage/cards/l/LullmageMentor.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; @@ -56,7 +57,7 @@ public class LullmageMentor extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Merfolk you control"); static { - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/l/LuminescentRain.java b/Mage.Sets/src/mage/cards/l/LuminescentRain.java index 9a9d341e796..0ce823909bf 100644 --- a/Mage.Sets/src/mage/cards/l/LuminescentRain.java +++ b/Mage.Sets/src/mage/cards/l/LuminescentRain.java @@ -90,7 +90,7 @@ class LuminescentRainEffect extends OneShotEffect { if (player != null) { Choice typeChoice = new ChoiceImpl(true); typeChoice.setMessage("Choose a creature type:"); - typeChoice.setChoices(SubType.getCreatureTypes()); + typeChoice.setChoices(SubType.getCreatureTypes(false)); while (!player.choose(Outcome.BoostCreature, typeChoice, game)) { if (!player.canRespond()) { return false; diff --git a/Mage.Sets/src/mage/cards/l/LymphSliver.java b/Mage.Sets/src/mage/cards/l/LymphSliver.java index bf9644e804a..f67549e7a24 100644 --- a/Mage.Sets/src/mage/cards/l/LymphSliver.java +++ b/Mage.Sets/src/mage/cards/l/LymphSliver.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; @@ -48,7 +49,7 @@ import mage.game.events.GameEvent; */ public class LymphSliver extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Sliver", "All Sliver creatures"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SLIVER, "All Sliver creatures"); public LymphSliver(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}"); diff --git a/Mage.Sets/src/mage/cards/l/LysAlanaHuntmaster.java b/Mage.Sets/src/mage/cards/l/LysAlanaHuntmaster.java index 1dc8d4c349f..d6a59c4ab95 100644 --- a/Mage.Sets/src/mage/cards/l/LysAlanaHuntmaster.java +++ b/Mage.Sets/src/mage/cards/l/LysAlanaHuntmaster.java @@ -34,6 +34,7 @@ import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.FilterSpell; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.ElfToken; @@ -47,7 +48,7 @@ public class LysAlanaHuntmaster extends CardImpl { private static final FilterSpell filter = new FilterSpell("Elf spell"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public LysAlanaHuntmaster(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MagneticTheft.java b/Mage.Sets/src/mage/cards/m/MagneticTheft.java index 7004df261b1..ebeaea53d43 100644 --- a/Mage.Sets/src/mage/cards/m/MagneticTheft.java +++ b/Mage.Sets/src/mage/cards/m/MagneticTheft.java @@ -34,6 +34,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -50,7 +51,7 @@ public class MagneticTheft extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Equipment"); static { - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public MagneticTheft(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MagnigothTreefolk.java b/Mage.Sets/src/mage/cards/m/MagnigothTreefolk.java index f7efecadb5b..33cd49dc8b4 100644 --- a/Mage.Sets/src/mage/cards/m/MagnigothTreefolk.java +++ b/Mage.Sets/src/mage/cards/m/MagnigothTreefolk.java @@ -30,7 +30,7 @@ package mage.cards.m; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.decorator.ConditionalContinuousEffect; @@ -42,9 +42,6 @@ import mage.abilities.keyword.PlainswalkAbility; import mage.abilities.keyword.SwampwalkAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; /** @@ -53,11 +50,11 @@ import mage.filter.common.FilterLandPermanent; */ public class MagnigothTreefolk extends CardImpl { - private static final FilterLandPermanent filterPlains = new FilterLandPermanent("Plains", "Plains"); - private static final FilterLandPermanent filterIsland = new FilterLandPermanent("Island", "Island"); - private static final FilterLandPermanent filterSwamp = new FilterLandPermanent("Swamp", "Swamp"); - private static final FilterLandPermanent filterMountain = new FilterLandPermanent("Mountain", "Mountain"); - private static final FilterLandPermanent filterForest = new FilterLandPermanent("Forest", "Forest"); + private static final FilterLandPermanent filterPlains = new FilterLandPermanent(SubType.PLAINS, "Plains"); + private static final FilterLandPermanent filterIsland = new FilterLandPermanent(SubType.ISLAND, "Island"); + private static final FilterLandPermanent filterSwamp = new FilterLandPermanent(SubType.SWAMP, "Swamp"); + private static final FilterLandPermanent filterMountain = new FilterLandPermanent(SubType.MOUNTAIN, "Mountain"); + private static final FilterLandPermanent filterForest = new FilterLandPermanent(SubType.FOREST, "Forest"); public MagnigothTreefolk(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}"); diff --git a/Mage.Sets/src/mage/cards/m/MagusOfTheCoffers.java b/Mage.Sets/src/mage/cards/m/MagusOfTheCoffers.java index 560e891d9db..cb9d7e6eb4d 100644 --- a/Mage.Sets/src/mage/cards/m/MagusOfTheCoffers.java +++ b/Mage.Sets/src/mage/cards/m/MagusOfTheCoffers.java @@ -38,6 +38,7 @@ import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class MagusOfTheCoffers extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Swamp you control"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public MagusOfTheCoffers(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java b/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java index f24a959fe96..2ff12109684 100644 --- a/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java +++ b/Mage.Sets/src/mage/cards/m/MalakirSoothsayer.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; @@ -55,7 +56,7 @@ public class MalakirSoothsayer extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Ally you control"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/m/MaraudingKnight.java b/Mage.Sets/src/mage/cards/m/MaraudingKnight.java index 4bdc6882f6f..7f3957d40ec 100644 --- a/Mage.Sets/src/mage/cards/m/MaraudingKnight.java +++ b/Mage.Sets/src/mage/cards/m/MaraudingKnight.java @@ -49,7 +49,7 @@ public class MaraudingKnight extends CardImpl { private static final FilterLandPermanent plainsFilter = new FilterLandPermanent("Plains your opponent controls"); static { - plainsFilter.add(new SubtypePredicate("Plains")); + plainsFilter.add(new SubtypePredicate(SubType.PLAINS)); plainsFilter.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/m/Marjhan.java b/Mage.Sets/src/mage/cards/m/Marjhan.java index d067533a452..b91bba58b93 100644 --- a/Mage.Sets/src/mage/cards/m/Marjhan.java +++ b/Mage.Sets/src/mage/cards/m/Marjhan.java @@ -29,7 +29,7 @@ package mage.cards.m; import mage.MageInt; import mage.abilities.Ability; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.common.ControlsPermanentsControllerTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; @@ -47,10 +47,6 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.PhaseStep; -import mage.constants.Zone; import mage.filter.common.FilterAttackingCreature; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.Predicates; @@ -88,7 +84,7 @@ public class Marjhan extends CardImpl { this.addAbility(ability); // Marjhan can't attack unless defending player controls an Island. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island", "an Island")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.ISLAND, "an Island")))); // {U}{U}: Marjhan gets -1/-0 until end of turn and deals 1 damage to target attacking creature without flying. ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(-1, 0, Duration.EndOfTurn), new ManaCostsImpl("{U}{U}")); @@ -99,7 +95,7 @@ public class Marjhan extends CardImpl { // When you control no Islands, sacrifice Marjhan. this.addAbility(new ControlsPermanentsControllerTriggeredAbility( - new FilterLandPermanent("Island", "no Islands"), ComparisonType.EQUAL_TO, 0, + new FilterLandPermanent(SubType.ISLAND, "no Islands"), ComparisonType.EQUAL_TO, 0, new SacrificeSourceEffect())); } diff --git a/Mage.Sets/src/mage/cards/m/MarkOfTheOni.java b/Mage.Sets/src/mage/cards/m/MarkOfTheOni.java index 2c22494bac2..39fefec7fdc 100644 --- a/Mage.Sets/src/mage/cards/m/MarkOfTheOni.java +++ b/Mage.Sets/src/mage/cards/m/MarkOfTheOni.java @@ -30,10 +30,7 @@ package mage.cards.m; import java.util.UUID; -import mage.constants.ComparisonType; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.abilities.Ability; import mage.abilities.common.BeginningOfEndStepTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; @@ -44,7 +41,6 @@ import mage.abilities.effects.common.continuous.ControlEnchantedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.TargetController; import mage.filter.common.FilterControlledCreaturePermanent; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -75,7 +71,7 @@ public class MarkOfTheOni extends CardImpl { new SacrificeSourceEffect(), TargetController.ANY, new PermanentsOnTheBattlefieldCondition( - new FilterControlledCreaturePermanent("Demon", "if you control no Demons"), + new FilterControlledCreaturePermanent(SubType.DEMON, "if you control no Demons"), ComparisonType.FEWER_THAN, 1), false)); } diff --git a/Mage.Sets/src/mage/cards/m/MarkovCrusader.java b/Mage.Sets/src/mage/cards/m/MarkovCrusader.java index 397343d86cf..b89690e0e78 100644 --- a/Mage.Sets/src/mage/cards/m/MarkovCrusader.java +++ b/Mage.Sets/src/mage/cards/m/MarkovCrusader.java @@ -39,6 +39,7 @@ import mage.abilities.keyword.LifelinkAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -55,7 +56,7 @@ public class MarkovCrusader extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); } public MarkovCrusader(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MarrowGnawer.java b/Mage.Sets/src/mage/cards/m/MarrowGnawer.java index 17a39ed1b87..1bbc64a89ff 100644 --- a/Mage.Sets/src/mage/cards/m/MarrowGnawer.java +++ b/Mage.Sets/src/mage/cards/m/MarrowGnawer.java @@ -30,9 +30,7 @@ package mage.cards.m; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -45,7 +43,6 @@ import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.keyword.FearAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.Duration; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -63,7 +60,7 @@ public class MarrowGnawer extends CardImpl { private static final FilterControlledCreaturePermanent filter3 = new FilterControlledCreaturePermanent("the number of Rats you control"); static { - SubtypePredicate ratPredicate = new SubtypePredicate("Rat"); + SubtypePredicate ratPredicate = new SubtypePredicate(SubType.RAT); filterFear.add(ratPredicate); filterSacrifice.add(ratPredicate); filter3.add(ratPredicate); diff --git a/Mage.Sets/src/mage/cards/m/MarshFlats.java b/Mage.Sets/src/mage/cards/m/MarshFlats.java index c191cda9935..4c65b6b0c8b 100644 --- a/Mage.Sets/src/mage/cards/m/MarshFlats.java +++ b/Mage.Sets/src/mage/cards/m/MarshFlats.java @@ -28,12 +28,14 @@ package mage.cards.m; +import java.util.EnumSet; import java.util.UUID; import mage.ObjectColor; import mage.constants.CardType; import mage.abilities.common.FetchLandActivatedAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; /** * @@ -44,7 +46,7 @@ public class MarshFlats extends CardImpl { public MarshFlats(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.LAND},null); this.frameColor = new ObjectColor("WB"); - this.addAbility(new FetchLandActivatedAbility(new String[] {"Swamp", "Plains"})); + this.addAbility(new FetchLandActivatedAbility(EnumSet.of(SubType.SWAMP, SubType.PLAINS))); } public MarshFlats(final MarshFlats card) { diff --git a/Mage.Sets/src/mage/cards/m/MarshLurker.java b/Mage.Sets/src/mage/cards/m/MarshLurker.java index 85ac74866ee..79f101bdbec 100644 --- a/Mage.Sets/src/mage/cards/m/MarshLurker.java +++ b/Mage.Sets/src/mage/cards/m/MarshLurker.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.FearAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class MarshLurker extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Swamp"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public MarshLurker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/Massacre.java b/Mage.Sets/src/mage/cards/m/Massacre.java index 7ebfea4bf78..9da22dba6c0 100644 --- a/Mage.Sets/src/mage/cards/m/Massacre.java +++ b/Mage.Sets/src/mage/cards/m/Massacre.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,8 +52,8 @@ public class Massacre extends CardImpl { private static final FilterPermanent filterSwamp = new FilterPermanent(); static { - filterPlains.add(new SubtypePredicate(("Plains"))); - filterSwamp.add(new SubtypePredicate(("Swamp"))); + filterPlains.add(new SubtypePredicate((SubType.PLAINS))); + filterSwamp.add(new SubtypePredicate((SubType.SWAMP))); } public Massacre(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MasterOfThePearlTrident.java b/Mage.Sets/src/mage/cards/m/MasterOfThePearlTrident.java index a4a9c1d7895..d6b3011e87a 100644 --- a/Mage.Sets/src/mage/cards/m/MasterOfThePearlTrident.java +++ b/Mage.Sets/src/mage/cards/m/MasterOfThePearlTrident.java @@ -30,6 +30,7 @@ package mage.cards.m; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; @@ -50,7 +51,7 @@ public class MasterOfThePearlTrident extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Merfolk creatures"); static { - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK)); } public MasterOfThePearlTrident(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MasterOfWaves.java b/Mage.Sets/src/mage/cards/m/MasterOfWaves.java index c6e43148171..093f632c39d 100644 --- a/Mage.Sets/src/mage/cards/m/MasterOfWaves.java +++ b/Mage.Sets/src/mage/cards/m/MasterOfWaves.java @@ -39,10 +39,7 @@ import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.ColoredManaSymbol; -import mage.constants.Duration; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.MasterOfWavesElementalToken; @@ -56,7 +53,7 @@ public class MasterOfWaves extends CardImpl { private static final FilterCreaturePermanent filterBoost = new FilterCreaturePermanent("Elemental creatures"); static { - filterBoost.add(new SubtypePredicate("Elemental")); + filterBoost.add(new SubtypePredicate(SubType.ELEMENTAL)); } public MasterOfWaves(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MasterworkOfIngenuity.java b/Mage.Sets/src/mage/cards/m/MasterworkOfIngenuity.java index 74c1945badb..2e00887011e 100644 --- a/Mage.Sets/src/mage/cards/m/MasterworkOfIngenuity.java +++ b/Mage.Sets/src/mage/cards/m/MasterworkOfIngenuity.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.CopyPermanentEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class MasterworkOfIngenuity extends CardImpl { static { filter.add(new CardTypePredicate(CardType.ARTIFACT)); - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public MasterworkOfIngenuity(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MaulSplicer.java b/Mage.Sets/src/mage/cards/m/MaulSplicer.java index a54468c8c97..37775387163 100644 --- a/Mage.Sets/src/mage/cards/m/MaulSplicer.java +++ b/Mage.Sets/src/mage/cards/m/MaulSplicer.java @@ -30,6 +30,7 @@ package mage.cards.m; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -54,7 +55,7 @@ public class MaulSplicer extends CardImpl { static { filter.add(new CardTypePredicate(CardType.CREATURE)); - filter.add(new SubtypePredicate("Golem")); + filter.add(new SubtypePredicate(SubType.GOLEM)); } public MaulSplicer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MercenaryInformer.java b/Mage.Sets/src/mage/cards/m/MercenaryInformer.java index fc10bab2b3d..c85ef87bf2d 100644 --- a/Mage.Sets/src/mage/cards/m/MercenaryInformer.java +++ b/Mage.Sets/src/mage/cards/m/MercenaryInformer.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterObject; import mage.filter.FilterPermanent; @@ -62,7 +63,7 @@ public class MercenaryInformer extends CardImpl { static { filterBlack.add(new ColorPredicate(ObjectColor.BLACK)); filterMercenary.add(Predicates.not(new TokenPredicate())); - filterMercenary.add(new SubtypePredicate("Mercenary")); + filterMercenary.add(new SubtypePredicate(SubType.MERCENARY)); } public MercenaryInformer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MerchantShip.java b/Mage.Sets/src/mage/cards/m/MerchantShip.java index c072eac7829..e98c0c3b0d8 100644 --- a/Mage.Sets/src/mage/cards/m/MerchantShip.java +++ b/Mage.Sets/src/mage/cards/m/MerchantShip.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.combat.CantAttackUnlessDefenderControllsPer import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; @@ -56,12 +57,12 @@ public class MerchantShip extends CardImpl { this.toughness = new MageInt(2); // Merchant Ship can't attack unless defending player controls an Island. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island", "an Island")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.ISLAND, "an Island")))); // Whenever Merchant Ship attacks and isn't blocked, you gain 2 life. this.addAbility(new AttacksAndIsNotBlockedTriggeredAbility(new GainLifeEffect(2))); // When you control no Islands, sacrifice Merchant Ship. this.addAbility(new ControlsPermanentsControllerTriggeredAbility( - new FilterLandPermanent("Island", "no Islands"), ComparisonType.EQUAL_TO, 0, + new FilterLandPermanent(SubType.ISLAND, "no Islands"), ComparisonType.EQUAL_TO, 0, new SacrificeSourceEffect())); } diff --git a/Mage.Sets/src/mage/cards/m/MerfolkWayfinder.java b/Mage.Sets/src/mage/cards/m/MerfolkWayfinder.java index eb237ea6c5e..920c76f42e6 100644 --- a/Mage.Sets/src/mage/cards/m/MerfolkWayfinder.java +++ b/Mage.Sets/src/mage/cards/m/MerfolkWayfinder.java @@ -35,6 +35,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class MerfolkWayfinder extends CardImpl { private static final FilterCard filter = new FilterCard("all Island cards"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } diff --git a/Mage.Sets/src/mage/cards/m/MerrowCommerce.java b/Mage.Sets/src/mage/cards/m/MerrowCommerce.java index c2ce4a60025..ffd7dce50df 100644 --- a/Mage.Sets/src/mage/cards/m/MerrowCommerce.java +++ b/Mage.Sets/src/mage/cards/m/MerrowCommerce.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.UntapAllControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -45,7 +46,7 @@ public class MerrowCommerce extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Merfolk you control"); static { - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK)); } public MerrowCommerce(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MerrowHarbinger.java b/Mage.Sets/src/mage/cards/m/MerrowHarbinger.java index 63cd5feb5c7..068cef269ab 100644 --- a/Mage.Sets/src/mage/cards/m/MerrowHarbinger.java +++ b/Mage.Sets/src/mage/cards/m/MerrowHarbinger.java @@ -35,6 +35,7 @@ import mage.abilities.keyword.IslandwalkAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -49,7 +50,7 @@ public class MerrowHarbinger extends CardImpl { public static final FilterCard filter = new FilterCard("Merfolk card"); static { - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK )); } public MerrowHarbinger(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MesmericSliver.java b/Mage.Sets/src/mage/cards/m/MesmericSliver.java index 3f7f22c0ff8..acb262e4a49 100644 --- a/Mage.Sets/src/mage/cards/m/MesmericSliver.java +++ b/Mage.Sets/src/mage/cards/m/MesmericSliver.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class MesmericSliver extends CardImpl { private static final FilterCreaturePermanent filterSliver = new FilterCreaturePermanent(); static { - filterSliver.add(new SubtypePredicate("Sliver")); + filterSliver.add(new SubtypePredicate(SubType.SLIVER)); } public MesmericSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MidnightDuelist.java b/Mage.Sets/src/mage/cards/m/MidnightDuelist.java index 49bb2a53799..8e8846e93b9 100644 --- a/Mage.Sets/src/mage/cards/m/MidnightDuelist.java +++ b/Mage.Sets/src/mage/cards/m/MidnightDuelist.java @@ -32,6 +32,7 @@ import mage.MageInt; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class MidnightDuelist extends CardImpl { private static final FilterPermanent filter = new FilterCreaturePermanent("Vampires"); static { - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); } public MidnightDuelist(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MikaeusTheUnhallowed.java b/Mage.Sets/src/mage/cards/m/MikaeusTheUnhallowed.java index 50b7374f7f8..c742a3db5e0 100644 --- a/Mage.Sets/src/mage/cards/m/MikaeusTheUnhallowed.java +++ b/Mage.Sets/src/mage/cards/m/MikaeusTheUnhallowed.java @@ -37,10 +37,7 @@ import mage.abilities.keyword.IntimidateAbility; import mage.abilities.keyword.UndyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -60,7 +57,7 @@ public class MikaeusTheUnhallowed extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Human creatures"); static { - filter.add(Predicates.not(new SubtypePredicate("Human"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.HUMAN))); } public MikaeusTheUnhallowed(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MindlashSliver.java b/Mage.Sets/src/mage/cards/m/MindlashSliver.java index 1d36c7ece79..af2a923ff09 100644 --- a/Mage.Sets/src/mage/cards/m/MindlashSliver.java +++ b/Mage.Sets/src/mage/cards/m/MindlashSliver.java @@ -30,6 +30,7 @@ package mage.cards.m; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; @@ -53,7 +54,7 @@ public class MindlashSliver extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public MindlashSliver(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}"); diff --git a/Mage.Sets/src/mage/cards/m/MindlessNull.java b/Mage.Sets/src/mage/cards/m/MindlessNull.java index eb45c92a90d..3b0469029d0 100644 --- a/Mage.Sets/src/mage/cards/m/MindlessNull.java +++ b/Mage.Sets/src/mage/cards/m/MindlessNull.java @@ -30,6 +30,7 @@ package mage.cards.m; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; @@ -74,7 +75,7 @@ class MindlessNullEffect extends RestrictionEffect { public MindlessNullEffect() { super(Duration.WhileOnBattlefield); - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); staticText = "{this} can't block unless you control a Vampire"; } diff --git a/Mage.Sets/src/mage/cards/m/MindwhipSliver.java b/Mage.Sets/src/mage/cards/m/MindwhipSliver.java index 3ec71fbc565..48236d79532 100644 --- a/Mage.Sets/src/mage/cards/m/MindwhipSliver.java +++ b/Mage.Sets/src/mage/cards/m/MindwhipSliver.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class MindwhipSliver extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("All Slivers"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public MindwhipSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MishrasFactory.java b/Mage.Sets/src/mage/cards/m/MishrasFactory.java index e4ca9ca5477..597d1c8f290 100644 --- a/Mage.Sets/src/mage/cards/m/MishrasFactory.java +++ b/Mage.Sets/src/mage/cards/m/MishrasFactory.java @@ -30,6 +30,7 @@ package mage.cards.m; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; @@ -54,7 +55,7 @@ public class MishrasFactory extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Assembly-Worker creature"); static { - filter.add(new SubtypePredicate("Assembly-Worker")); + filter.add(new SubtypePredicate(SubType.ASSEMBLY_WORKER)); } public MishrasFactory(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MistbindClique.java b/Mage.Sets/src/mage/cards/m/MistbindClique.java index a50f70750e1..2b7fc6b56c1 100644 --- a/Mage.Sets/src/mage/cards/m/MistbindClique.java +++ b/Mage.Sets/src/mage/cards/m/MistbindClique.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; import mage.game.Game; @@ -63,7 +64,7 @@ public class MistbindClique extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // Champion a Faerie - this.addAbility(new ChampionAbility(this, "Faerie", false)); + this.addAbility(new ChampionAbility(this, SubType.FAERIE, false)); // When a Faerie is championed with Mistbind Clique, tap all lands target player controls. this.addAbility(new MistbindCliqueAbility()); diff --git a/Mage.Sets/src/mage/cards/m/Mobilization.java b/Mage.Sets/src/mage/cards/m/Mobilization.java index 8f48e1f3ef9..2ab5ee877f2 100644 --- a/Mage.Sets/src/mage/cards/m/Mobilization.java +++ b/Mage.Sets/src/mage/cards/m/Mobilization.java @@ -39,6 +39,7 @@ import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class Mobilization extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures"); static { - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public Mobilization(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/Moggcatcher.java b/Mage.Sets/src/mage/cards/m/Moggcatcher.java index e02f4988c74..6c98d3301d2 100644 --- a/Mage.Sets/src/mage/cards/m/Moggcatcher.java +++ b/Mage.Sets/src/mage/cards/m/Moggcatcher.java @@ -29,6 +29,7 @@ package mage.cards.m; import java.util.UUID; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; @@ -51,7 +52,7 @@ public class Moggcatcher extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Goblin permanent card"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public Moggcatcher(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/Moonmist.java b/Mage.Sets/src/mage/cards/m/Moonmist.java index 2427b2fd71a..dc152574a54 100644 --- a/Mage.Sets/src/mage/cards/m/Moonmist.java +++ b/Mage.Sets/src/mage/cards/m/Moonmist.java @@ -36,6 +36,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.PreventAllDamageByAllPermanentsEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class Moonmist extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures other than Werewolves and Wolves"); static { - filter.add(Predicates.not(new SubtypePredicate("Werewolf"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.WEREWOLF))); filter.add(Predicates.not(new SubtypePredicate("Wolf"))); } diff --git a/Mage.Sets/src/mage/cards/m/MountainValley.java b/Mage.Sets/src/mage/cards/m/MountainValley.java index dcace4a8391..fd8a9cc334e 100644 --- a/Mage.Sets/src/mage/cards/m/MountainValley.java +++ b/Mage.Sets/src/mage/cards/m/MountainValley.java @@ -27,12 +27,14 @@ */ package mage.cards.m; +import java.util.EnumSet; import java.util.UUID; import mage.abilities.common.EntersBattlefieldTappedAbility; import mage.abilities.common.FetchLandActivatedAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; /** * @@ -46,7 +48,7 @@ public class MountainValley extends CardImpl { // Mountain Valley enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); // {tap}, Sacrifice Mountain Valley: Search your library for a Mountain or Forest card and put it onto the battlefield. Then shuffle your library. - this.addAbility(new FetchLandActivatedAbility(false, new String[]{"Mountain", "Forest"})); + this.addAbility(new FetchLandActivatedAbility(false, EnumSet.of(SubType.MOUNTAIN, SubType.FOREST))); } diff --git a/Mage.Sets/src/mage/cards/m/Mycologist.java b/Mage.Sets/src/mage/cards/m/Mycologist.java index f02b732258a..703cec80738 100644 --- a/Mage.Sets/src/mage/cards/m/Mycologist.java +++ b/Mage.Sets/src/mage/cards/m/Mycologist.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.constants.Zone; import mage.counters.CounterType; @@ -56,7 +57,7 @@ public class Mycologist extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Saproling"); static { - filter.add(new SubtypePredicate("Saproling")); + filter.add(new SubtypePredicate(SubType.SAPROLING)); } public Mycologist(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java b/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java index 183dc20def0..24f4b557792 100644 --- a/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java +++ b/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java @@ -44,6 +44,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -90,7 +91,7 @@ class MyrBattlesphereEffect extends OneShotEffect { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Myr")); + filter.add(new SubtypePredicate(SubType.MYR)); } public MyrBattlesphereEffect() { diff --git a/Mage.Sets/src/mage/cards/m/MyrGalvanizer.java b/Mage.Sets/src/mage/cards/m/MyrGalvanizer.java index 3526ec66d15..5644911da95 100644 --- a/Mage.Sets/src/mage/cards/m/MyrGalvanizer.java +++ b/Mage.Sets/src/mage/cards/m/MyrGalvanizer.java @@ -30,9 +30,7 @@ package mage.cards.m; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Zone; +import mage.constants.*; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -43,7 +41,6 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.Outcome; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -57,7 +54,7 @@ public class MyrGalvanizer extends CardImpl { static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Myr creatures"); static { - filter.add(new SubtypePredicate("Myr")); + filter.add(new SubtypePredicate(SubType.MYR)); } public MyrGalvanizer (UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NagaoBoundByHonor.java b/Mage.Sets/src/mage/cards/n/NagaoBoundByHonor.java index b1583037d00..6b02b4d2248 100644 --- a/Mage.Sets/src/mage/cards/n/NagaoBoundByHonor.java +++ b/Mage.Sets/src/mage/cards/n/NagaoBoundByHonor.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.BushidoAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class NagaoBoundByHonor extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Samurai creatures"); static { - filter.add(new SubtypePredicate("Samurai")); + filter.add(new SubtypePredicate(SubType.SAMURAI)); } public NagaoBoundByHonor(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NathsBuffoon.java b/Mage.Sets/src/mage/cards/n/NathsBuffoon.java index 9e0720a288e..7fadbc8bdb0 100644 --- a/Mage.Sets/src/mage/cards/n/NathsBuffoon.java +++ b/Mage.Sets/src/mage/cards/n/NathsBuffoon.java @@ -33,6 +33,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -45,7 +46,7 @@ public class NathsBuffoon extends CardImpl { private static final FilterCard filter = new FilterCard("Elves"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public NathsBuffoon(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NehebTheWorthy.java b/Mage.Sets/src/mage/cards/n/NehebTheWorthy.java index 7336239f8b2..5fb85ac0678 100644 --- a/Mage.Sets/src/mage/cards/n/NehebTheWorthy.java +++ b/Mage.Sets/src/mage/cards/n/NehebTheWorthy.java @@ -30,7 +30,7 @@ package mage.cards.n; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.Condition; @@ -42,11 +42,6 @@ import mage.abilities.effects.common.discard.DiscardEachPlayerEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.TargetController; -import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.ControllerPredicate; @@ -60,7 +55,7 @@ public class NehebTheWorthy extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Minotaurs"); static { - filter.add(new SubtypePredicate("Minotaur")); + filter.add(new SubtypePredicate(SubType.MINOTAUR)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/n/NettlingImp.java b/Mage.Sets/src/mage/cards/n/NettlingImp.java index b4f7a07a8ec..d81610c73d5 100644 --- a/Mage.Sets/src/mage/cards/n/NettlingImp.java +++ b/Mage.Sets/src/mage/cards/n/NettlingImp.java @@ -40,10 +40,7 @@ import mage.abilities.effects.common.DestroyTargetAtBeginningOfNextEndStepEffect import mage.abilities.effects.common.combat.AttacksIfAbleTargetEffect; 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.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -63,7 +60,7 @@ public class NettlingImp extends CardImpl { final static FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall"); static { - filter.add(Predicates.not(new SubtypePredicate("Wall"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.WALL))); filter.add(new ControlledFromStartOfControllerTurnPredicate()); filter.add(new ControllerPredicate(TargetController.ACTIVE)); filter.setMessage("non-Wall creature the active player has controlled continuously since the beginning of the turn."); diff --git a/Mage.Sets/src/mage/cards/n/NezumiShadowWatcher.java b/Mage.Sets/src/mage/cards/n/NezumiShadowWatcher.java index 1481db8f395..44d828afd86 100644 --- a/Mage.Sets/src/mage/cards/n/NezumiShadowWatcher.java +++ b/Mage.Sets/src/mage/cards/n/NezumiShadowWatcher.java @@ -37,6 +37,7 @@ import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class NezumiShadowWatcher extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Ninja"); static { - filter.add(new SubtypePredicate("Ninja")); + filter.add(new SubtypePredicate(SubType.NINJA)); } public NezumiShadowWatcher(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NightRevelers.java b/Mage.Sets/src/mage/cards/n/NightRevelers.java index 1221208e9ef..1e49f8534be 100644 --- a/Mage.Sets/src/mage/cards/n/NightRevelers.java +++ b/Mage.Sets/src/mage/cards/n/NightRevelers.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; @@ -47,7 +48,7 @@ import java.util.UUID; */ public class NightRevelers extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("Human", "Human"); + private static final FilterPermanent filter = new FilterPermanent(SubType.HUMAN, "Human"); public NightRevelers(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{R}"); diff --git a/Mage.Sets/src/mage/cards/n/Nightmare.java b/Mage.Sets/src/mage/cards/n/Nightmare.java index 42cb7d9200c..ce40dd3017b 100644 --- a/Mage.Sets/src/mage/cards/n/Nightmare.java +++ b/Mage.Sets/src/mage/cards/n/Nightmare.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class Nightmare extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Swamps you control"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public Nightmare(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NirkanaRevenant.java b/Mage.Sets/src/mage/cards/n/NirkanaRevenant.java index 8ad0c60116c..4ebcc737396 100644 --- a/Mage.Sets/src/mage/cards/n/NirkanaRevenant.java +++ b/Mage.Sets/src/mage/cards/n/NirkanaRevenant.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -82,7 +83,7 @@ class NirkanaRevenantTriggeredAbility extends TriggeredManaAbility { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("Swamp"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public NirkanaRevenantTriggeredAbility() { diff --git a/Mage.Sets/src/mage/cards/n/NissaVastwoodSeer.java b/Mage.Sets/src/mage/cards/n/NissaVastwoodSeer.java index 99e5abe8673..4e3245e354c 100644 --- a/Mage.Sets/src/mage/cards/n/NissaVastwoodSeer.java +++ b/Mage.Sets/src/mage/cards/n/NissaVastwoodSeer.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.FilterCard; import mage.filter.common.FilterLandPermanent; @@ -58,7 +59,7 @@ public class NissaVastwoodSeer extends CardImpl { private static final FilterCard filter = new FilterCard("basic Forest card"); static { filter.add(new SupertypePredicate(SuperType.BASIC)); - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public NissaVastwoodSeer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NoggleHedgeMage.java b/Mage.Sets/src/mage/cards/n/NoggleHedgeMage.java index 45c270e3468..f5012587310 100644 --- a/Mage.Sets/src/mage/cards/n/NoggleHedgeMage.java +++ b/Mage.Sets/src/mage/cards/n/NoggleHedgeMage.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -56,8 +57,8 @@ public class NoggleHedgeMage extends CardImpl { private final static FilterLandPermanent filter2 = new FilterLandPermanent(); static { - filter.add(new SubtypePredicate("Island")); - filter2.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.ISLAND)); + filter2.add(new SubtypePredicate(SubType.MOUNTAIN)); } private String rule = "When {this} enters the battlefield, if you control two or more Islands, you may tap two target permanents."; diff --git a/Mage.Sets/src/mage/cards/n/NovaChaser.java b/Mage.Sets/src/mage/cards/n/NovaChaser.java index beb951039b0..ca384b8c19f 100644 --- a/Mage.Sets/src/mage/cards/n/NovaChaser.java +++ b/Mage.Sets/src/mage/cards/n/NovaChaser.java @@ -34,6 +34,7 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; /** * @@ -52,7 +53,7 @@ public class NovaChaser extends CardImpl { this.addAbility(TrampleAbility.getInstance()); // Champion an Elemental - this.addAbility(new ChampionAbility(this, "Elemental", false)); + this.addAbility(new ChampionAbility(this, SubType.ELEMENTAL, false)); } public NovaChaser(final NovaChaser card) { diff --git a/Mage.Sets/src/mage/cards/o/ObsidianBattleAxe.java b/Mage.Sets/src/mage/cards/o/ObsidianBattleAxe.java index cee11e91200..f19e2b4c5af 100644 --- a/Mage.Sets/src/mage/cards/o/ObsidianBattleAxe.java +++ b/Mage.Sets/src/mage/cards/o/ObsidianBattleAxe.java @@ -28,10 +28,8 @@ package mage.cards.o; import java.util.UUID; -import mage.constants.AttachmentType; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Zone; + +import mage.constants.*; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; @@ -43,7 +41,6 @@ import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.SetTargetPointer; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -56,7 +53,7 @@ public class ObsidianBattleAxe extends CardImpl { private static final FilterPermanent filter = new FilterCreaturePermanent("a Warrior creature"); static { - filter.add(new SubtypePredicate("Warrior")); + filter.add(new SubtypePredicate(SubType.WARRIOR)); } public ObsidianBattleAxe(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/o/OgreJailbreaker.java b/Mage.Sets/src/mage/cards/o/OgreJailbreaker.java index cbd6fc79fff..236f04b3a2a 100644 --- a/Mage.Sets/src/mage/cards/o/OgreJailbreaker.java +++ b/Mage.Sets/src/mage/cards/o/OgreJailbreaker.java @@ -78,7 +78,7 @@ class OgreJailbreakerEffect extends AsThoughEffectImpl { private static final FilterPermanent filter = new FilterPermanent(); private PermanentsOnTheBattlefieldCondition gateCondition; static { - filter.add(new SubtypePredicate("Gate")); + filter.add(new SubtypePredicate(SubType.GATE)); } public OgreJailbreakerEffect() { diff --git a/Mage.Sets/src/mage/cards/o/OnduWarCleric.java b/Mage.Sets/src/mage/cards/o/OnduWarCleric.java index 0f6fff8d09c..113c52e2296 100644 --- a/Mage.Sets/src/mage/cards/o/OnduWarCleric.java +++ b/Mage.Sets/src/mage/cards/o/OnduWarCleric.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -54,7 +55,7 @@ public class OnduWarCleric extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Ally you control"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/o/Opalescence.java b/Mage.Sets/src/mage/cards/o/Opalescence.java index 5f75871939d..519185fec76 100644 --- a/Mage.Sets/src/mage/cards/o/Opalescence.java +++ b/Mage.Sets/src/mage/cards/o/Opalescence.java @@ -38,13 +38,7 @@ import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.ContinuousEffectImpl; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.DependencyType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterEnchantmentPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -83,7 +77,7 @@ class OpalescenceEffect extends ContinuousEffectImpl { private static final EnumSet checkDependencyTypes; static { - filter.add(Predicates.not(new SubtypePredicate("Aura"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.AURA))); filter.add(new AnotherPredicate()); checkDependencyTypes = EnumSet.of(DependencyType.AuraAddingRemoving, DependencyType.EnchantmentAddingRemoving); } diff --git a/Mage.Sets/src/mage/cards/o/OpenTheArmory.java b/Mage.Sets/src/mage/cards/o/OpenTheArmory.java index 5c6a014aa0e..ced3aff6b70 100644 --- a/Mage.Sets/src/mage/cards/o/OpenTheArmory.java +++ b/Mage.Sets/src/mage/cards/o/OpenTheArmory.java @@ -34,6 +34,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.cards.Cards; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -68,8 +69,8 @@ class OpenTheArmoryTarget extends TargetCardInLibrary { private static final FilterCard filter = new FilterCard("Aura or Equipment card"); static { filter.add(Predicates.or( - new SubtypePredicate("Equipment"), - new SubtypePredicate("Aura"))); + new SubtypePredicate(SubType.EQUIPMENT), + new SubtypePredicate(SubType.AURA))); } public OpenTheArmoryTarget() { diff --git a/Mage.Sets/src/mage/cards/o/Ophiomancer.java b/Mage.Sets/src/mage/cards/o/Ophiomancer.java index ea2e7d7d802..6cd1bb348a4 100644 --- a/Mage.Sets/src/mage/cards/o/Ophiomancer.java +++ b/Mage.Sets/src/mage/cards/o/Ophiomancer.java @@ -35,10 +35,7 @@ import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.ComparisonType; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.game.permanent.token.OphiomancerSnakeToken; @@ -59,7 +56,7 @@ public class Ophiomancer extends CardImpl { // At the beginning of each upkeep, if you control no Snakes, create a 1/1 black Snake creature token with deathtouch. this.addAbility(new ConditionalTriggeredAbility( new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new OphiomancerSnakeToken()), TargetController.ANY, false, false), - new PermanentsOnTheBattlefieldCondition(new FilterCreaturePermanent("Snake", "no Snakes"), ComparisonType.EQUAL_TO, 0), + new PermanentsOnTheBattlefieldCondition(new FilterCreaturePermanent(SubType.SNAKE, "no Snakes"), ComparisonType.EQUAL_TO, 0), "At the beginning of each upkeep, if you control no Snakes, create a 1/1 black Snake creature token with deathtouch.")); } diff --git a/Mage.Sets/src/mage/cards/o/OratorOfOjutai.java b/Mage.Sets/src/mage/cards/o/OratorOfOjutai.java index 30c0371441f..60c80e12055 100644 --- a/Mage.Sets/src/mage/cards/o/OratorOfOjutai.java +++ b/Mage.Sets/src/mage/cards/o/OratorOfOjutai.java @@ -41,10 +41,7 @@ import mage.abilities.keyword.DefenderAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AbilityType; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -63,7 +60,7 @@ public class OratorOfOjutai extends CardImpl { private static final FilterCard filter = new FilterCard("a Dragon card from your hand (you don't have to)"); static { - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public OratorOfOjutai(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/o/OrchardWarden.java b/Mage.Sets/src/mage/cards/o/OrchardWarden.java index fc35b52eac1..592af7f015c 100644 --- a/Mage.Sets/src/mage/cards/o/OrchardWarden.java +++ b/Mage.Sets/src/mage/cards/o/OrchardWarden.java @@ -34,10 +34,7 @@ import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.SetTargetPointer; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; @@ -54,7 +51,7 @@ public class OrchardWarden extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another Treefolk creature"); static { - filter.add(new SubtypePredicate("Treefolk")); + filter.add(new SubtypePredicate(SubType.TREEFOLK)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/o/OrcishLumberjack.java b/Mage.Sets/src/mage/cards/o/OrcishLumberjack.java index a80f693c64e..91bd91a78c5 100644 --- a/Mage.Sets/src/mage/cards/o/OrcishLumberjack.java +++ b/Mage.Sets/src/mage/cards/o/OrcishLumberjack.java @@ -43,6 +43,7 @@ import mage.choices.Choice; import mage.choices.ChoiceImpl; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -59,7 +60,7 @@ public class OrcishLumberjack extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public OrcishLumberjack(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/o/Oubliette.java b/Mage.Sets/src/mage/cards/o/Oubliette.java index 974223d5720..e2becc1c182 100644 --- a/Mage.Sets/src/mage/cards/o/Oubliette.java +++ b/Mage.Sets/src/mage/cards/o/Oubliette.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.counters.Counter; import mage.counters.Counters; @@ -91,7 +92,7 @@ class OublietteEffect extends OneShotEffect { private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent(); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public OublietteEffect() { @@ -160,7 +161,7 @@ class OublietteReturnEffect extends OneShotEffect { static { filterAura.add(new CardTypePredicate(CardType.ENCHANTMENT)); - filterAura.add(new SubtypePredicate("Aura")); + filterAura.add(new SubtypePredicate(SubType.AURA)); } public OublietteReturnEffect() { diff --git a/Mage.Sets/src/mage/cards/o/Outbreak.java b/Mage.Sets/src/mage/cards/o/Outbreak.java index ad1e7c600a8..9dc75671b96 100644 --- a/Mage.Sets/src/mage/cards/o/Outbreak.java +++ b/Mage.Sets/src/mage/cards/o/Outbreak.java @@ -99,7 +99,7 @@ class OutbreakEffect extends OneShotEffect { if (player != null) { Choice typeChoice = new ChoiceImpl(true); typeChoice.setMessage("Choose a creature type:"); - typeChoice.setChoices(SubType.getCreatureTypes()); + typeChoice.setChoices(SubType.getCreatureTypes(false)); while (!player.choose(outcome, typeChoice, game)) { if (!player.canRespond()) { return false; diff --git a/Mage.Sets/src/mage/cards/o/OxiddaGolem.java b/Mage.Sets/src/mage/cards/o/OxiddaGolem.java index 38c2ba44b58..6506954aa72 100644 --- a/Mage.Sets/src/mage/cards/o/OxiddaGolem.java +++ b/Mage.Sets/src/mage/cards/o/OxiddaGolem.java @@ -34,6 +34,7 @@ import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; /** * @@ -48,7 +49,7 @@ public class OxiddaGolem extends CardImpl { this.toughness = new MageInt(2); // Affinity for Mountains - this.addAbility(new AffinityForLandTypeAbility("Mountain", "Mountains")); + this.addAbility(new AffinityForLandTypeAbility(SubType.MOUNTAIN, "Mountains")); // Haste this.addAbility(HasteAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/p/PackRat.java b/Mage.Sets/src/mage/cards/p/PackRat.java index ae6e0a22561..1f0cb97b75a 100644 --- a/Mage.Sets/src/mage/cards/p/PackRat.java +++ b/Mage.Sets/src/mage/cards/p/PackRat.java @@ -41,6 +41,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -69,7 +70,7 @@ public class PackRat extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Rats you control"); static { - filter.add(new SubtypePredicate("Rat")); + filter.add(new SubtypePredicate(SubType.RAT)); } public PackRat(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheAkki.java b/Mage.Sets/src/mage/cards/p/PatronOfTheAkki.java index 525626de844..d7be56264a6 100644 --- a/Mage.Sets/src/mage/cards/p/PatronOfTheAkki.java +++ b/Mage.Sets/src/mage/cards/p/PatronOfTheAkki.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.common.FilterCreaturePermanent; @@ -55,7 +56,7 @@ public class PatronOfTheAkki extends CardImpl { this.toughness = new MageInt(5); // Goblin offering (You may cast this card any time you could cast an instant by sacrificing a Goblin and paying the difference in mana costs between this and the sacrificed Goblin. Mana cost includes color.) - this.addAbility(new OfferingAbility("Goblin")); + this.addAbility(new OfferingAbility(SubType.GOBLIN)); // Whenever Patron of the Akki attacks, creatures you control get +2/+0 until end of turn. this.addAbility(new AttacksTriggeredAbility(new BoostControlledEffect(2, 0, Duration.EndOfTurn, new FilterCreaturePermanent(), false), false)); diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheMoon.java b/Mage.Sets/src/mage/cards/p/PatronOfTheMoon.java index 6d71a2ab22a..4bab9f4e928 100644 --- a/Mage.Sets/src/mage/cards/p/PatronOfTheMoon.java +++ b/Mage.Sets/src/mage/cards/p/PatronOfTheMoon.java @@ -38,10 +38,7 @@ import mage.abilities.keyword.OfferingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.cards.CardsImpl; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterLandCard; import mage.game.Game; import mage.players.Player; @@ -62,7 +59,7 @@ public class PatronOfTheMoon extends CardImpl { this.toughness = new MageInt(4); // Moonfolk offering (You may cast this card any time you could cast an instant by sacrificing a Moonfolk and paying the difference in mana costs between this and the sacrificed Moonfolk. Mana cost includes color.) - this.addAbility(new OfferingAbility("Moonfolk")); + this.addAbility(new OfferingAbility(SubType.MOONFOLK)); // Flying this.addAbility(FlyingAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheNezumi.java b/Mage.Sets/src/mage/cards/p/PatronOfTheNezumi.java index 6277f53d486..8f30f3e26d1 100644 --- a/Mage.Sets/src/mage/cards/p/PatronOfTheNezumi.java +++ b/Mage.Sets/src/mage/cards/p/PatronOfTheNezumi.java @@ -36,6 +36,7 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.Zone; import mage.game.Game; @@ -61,7 +62,7 @@ public class PatronOfTheNezumi extends CardImpl { this.toughness = new MageInt(6); // Rat offering (You may cast this card any time you could cast an instant by sacrificing a Rat and paying the difference in mana costs between this and the sacrificed Rat. Mana cost includes color.) - this.addAbility(new OfferingAbility("Rat")); + this.addAbility(new OfferingAbility(SubType.RAT)); // Whenever a permanent is put into an opponent's graveyard, that player loses 1 life. this.addAbility(new PatronOfTheNezumiTriggeredAbility(new LoseLifeTargetEffect(1))); diff --git a/Mage.Sets/src/mage/cards/p/PatronWizard.java b/Mage.Sets/src/mage/cards/p/PatronWizard.java index 838ee65f8df..6e5434dda02 100644 --- a/Mage.Sets/src/mage/cards/p/PatronWizard.java +++ b/Mage.Sets/src/mage/cards/p/PatronWizard.java @@ -38,6 +38,7 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.CounterUnlessPaysEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -55,7 +56,7 @@ public class PatronWizard extends CardImpl { static final private FilterControlledPermanent filter = new FilterControlledPermanent("untapped Wizard you control"); static { - filter.add(new SubtypePredicate("Wizard")); + filter.add(new SubtypePredicate(SubType.WIZARD)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/p/PeacewalkerColossus.java b/Mage.Sets/src/mage/cards/p/PeacewalkerColossus.java index 14de052a794..993fadd143b 100644 --- a/Mage.Sets/src/mage/cards/p/PeacewalkerColossus.java +++ b/Mage.Sets/src/mage/cards/p/PeacewalkerColossus.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledArtifactPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -55,7 +56,7 @@ public class PeacewalkerColossus extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Vehicle")); + filter.add(new SubtypePredicate(SubType.VEHICLE)); } public PeacewalkerColossus(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PeerPressure.java b/Mage.Sets/src/mage/cards/p/PeerPressure.java index a0dccc9b8bd..1fb41bcef1d 100644 --- a/Mage.Sets/src/mage/cards/p/PeerPressure.java +++ b/Mage.Sets/src/mage/cards/p/PeerPressure.java @@ -95,7 +95,7 @@ class PeerPressureEffect extends OneShotEffect { if (controller != null) { Choice choice = new ChoiceImpl(true); choice.setMessage("Choose creature type"); - choice.setChoices(SubType.getCreatureTypes()); + choice.setChoices(SubType.getCreatureTypes(false)); while (!controller.choose(Outcome.GainControl, choice, game)) { if (!controller.canRespond()) { return false; diff --git a/Mage.Sets/src/mage/cards/p/PeopleOfTheWoods.java b/Mage.Sets/src/mage/cards/p/PeopleOfTheWoods.java index a0bfec42f57..074520b1b28 100644 --- a/Mage.Sets/src/mage/cards/p/PeopleOfTheWoods.java +++ b/Mage.Sets/src/mage/cards/p/PeopleOfTheWoods.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class PeopleOfTheWoods extends CardImpl { final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control"); static { - filterLands.add(new SubtypePredicate("Forest")); + filterLands.add(new SubtypePredicate(SubType.FOREST)); } public PeopleOfTheWoods(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PheresBandWarchief.java b/Mage.Sets/src/mage/cards/p/PheresBandWarchief.java index 642ac52836c..25c235bc1f5 100644 --- a/Mage.Sets/src/mage/cards/p/PheresBandWarchief.java +++ b/Mage.Sets/src/mage/cards/p/PheresBandWarchief.java @@ -38,10 +38,7 @@ import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.VigilanceAbility; 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.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.ControllerPredicate; @@ -55,7 +52,7 @@ public class PheresBandWarchief extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Other Centaur creatures you control"); static { - filter.add(new SubtypePredicate("Centaur")); + filter.add(new SubtypePredicate(SubType.CENTAUR)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/p/PirateShip.java b/Mage.Sets/src/mage/cards/p/PirateShip.java index 05885e4407b..d1382256296 100644 --- a/Mage.Sets/src/mage/cards/p/PirateShip.java +++ b/Mage.Sets/src/mage/cards/p/PirateShip.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.combat.CantAttackUnlessDefenderControllsPer import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; import mage.target.common.TargetCreatureOrPlayer; @@ -60,14 +61,14 @@ public class PirateShip extends CardImpl { this.toughness = new MageInt(3); // Pirate Ship can't attack unless defending player controls an Island. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island", "an Island")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.ISLAND, "an Island")))); // {tap}: Pirate Ship deals 1 damage to target creature or player. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost()); ability.addTarget(new TargetCreatureOrPlayer()); this.addAbility(ability); // When you control no Islands, sacrifice Pirate Ship. this.addAbility(new ControlsPermanentsControllerTriggeredAbility( - new FilterLandPermanent("Island", "no Islands"), ComparisonType.EQUAL_TO, 0, + new FilterLandPermanent(SubType.ISLAND, "no Islands"), ComparisonType.EQUAL_TO, 0, new SacrificeSourceEffect())); } diff --git a/Mage.Sets/src/mage/cards/p/PlantElemental.java b/Mage.Sets/src/mage/cards/p/PlantElemental.java index 42257c3fcbc..107638bc14c 100644 --- a/Mage.Sets/src/mage/cards/p/PlantElemental.java +++ b/Mage.Sets/src/mage/cards/p/PlantElemental.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; @@ -48,7 +49,7 @@ public class PlantElemental extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("a Forest"); static{ - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public PlantElemental(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PlowThroughReito.java b/Mage.Sets/src/mage/cards/p/PlowThroughReito.java index d68fa6ff69c..607d8dc974e 100644 --- a/Mage.Sets/src/mage/cards/p/PlowThroughReito.java +++ b/Mage.Sets/src/mage/cards/p/PlowThroughReito.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.target.common.TargetCreaturePermanent; /** @@ -50,7 +51,7 @@ public class PlowThroughReito extends CardImpl { // Sweep - Return any number of Plains you control to their owner's hand. Target creature gets +1/+1 until end of turn for each Plains returned this way. - this.getSpellAbility().addEffect(new SweepEffect("Plains")); + this.getSpellAbility().addEffect(new SweepEffect(SubType.PLAINS)); DynamicValue sweepValue = new SweepNumber("Plains", true); this.getSpellAbility().addEffect(new BoostTargetEffect(sweepValue, sweepValue, Duration.EndOfTurn)); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); diff --git a/Mage.Sets/src/mage/cards/p/PollutedDelta.java b/Mage.Sets/src/mage/cards/p/PollutedDelta.java index 85c1e56fa78..48928b51ad3 100644 --- a/Mage.Sets/src/mage/cards/p/PollutedDelta.java +++ b/Mage.Sets/src/mage/cards/p/PollutedDelta.java @@ -27,12 +27,14 @@ */ package mage.cards.p; +import java.util.EnumSet; import java.util.UUID; import mage.ObjectColor; import mage.constants.CardType; import mage.abilities.common.FetchLandActivatedAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; /** * @@ -45,7 +47,7 @@ public class PollutedDelta extends CardImpl { this.frameColor = new ObjectColor("UB"); // {tap}, Pay 1 life, Sacrifice Polluted Delta: Search your library for an Island or Swamp card and put it onto the battlefield. Then shuffle your library. - this.addAbility(new FetchLandActivatedAbility(new String[]{"Island", "Swamp"})); + this.addAbility(new FetchLandActivatedAbility(EnumSet.of(SubType.ISLAND, SubType.SWAMP))); } public PollutedDelta(final PollutedDelta card) { diff --git a/Mage.Sets/src/mage/cards/p/PrimalBeyond.java b/Mage.Sets/src/mage/cards/p/PrimalBeyond.java index 99fa00e8009..e4de9786556 100644 --- a/Mage.Sets/src/mage/cards/p/PrimalBeyond.java +++ b/Mage.Sets/src/mage/cards/p/PrimalBeyond.java @@ -43,6 +43,7 @@ import mage.abilities.mana.builder.ConditionalManaBuilder; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -57,7 +58,7 @@ public class PrimalBeyond extends CardImpl { private static final FilterCard filter = new FilterCard("a Elemental card from your hand"); static { - filter.add(new SubtypePredicate("Elemental")); + filter.add(new SubtypePredicate(SubType.ELEMENTAL)); } public PrimalBeyond(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PrizedElephant.java b/Mage.Sets/src/mage/cards/p/PrizedElephant.java index 0e9b730a0d7..375dd298c4e 100644 --- a/Mage.Sets/src/mage/cards/p/PrizedElephant.java +++ b/Mage.Sets/src/mage/cards/p/PrizedElephant.java @@ -43,6 +43,7 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,7 +58,7 @@ public class PrizedElephant extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public PrizedElephant(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/ProfanePrayers.java b/Mage.Sets/src/mage/cards/p/ProfanePrayers.java index 88e7751500a..b201dcb5633 100644 --- a/Mage.Sets/src/mage/cards/p/ProfanePrayers.java +++ b/Mage.Sets/src/mage/cards/p/ProfanePrayers.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreatureOrPlayer; @@ -47,7 +48,7 @@ public class ProfanePrayers extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Cleric on the battlefield"); static { - filter.add(new SubtypePredicate("Cleric")); + filter.add(new SubtypePredicate(SubType.CLERIC)); } public ProfanePrayers(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/ProwessOfTheFair.java b/Mage.Sets/src/mage/cards/p/ProwessOfTheFair.java index 958f155032f..119b47b9008 100644 --- a/Mage.Sets/src/mage/cards/p/ProwessOfTheFair.java +++ b/Mage.Sets/src/mage/cards/p/ProwessOfTheFair.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class ProwessOfTheFair extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("another nontoken Elf"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); filter.add(new AnotherPredicate()); filter.add(Predicates.not(new TokenPredicate())); } diff --git a/Mage.Sets/src/mage/cards/p/PsionicSliver.java b/Mage.Sets/src/mage/cards/p/PsionicSliver.java index a5d3947da3a..431ec402011 100644 --- a/Mage.Sets/src/mage/cards/p/PsionicSliver.java +++ b/Mage.Sets/src/mage/cards/p/PsionicSliver.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.target.common.TargetCreatureOrPlayer; @@ -51,7 +52,7 @@ import mage.target.common.TargetCreatureOrPlayer; */ public class PsionicSliver extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Sliver", "All Sliver creatures"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SLIVER, "All Sliver creatures"); public PsionicSliver(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}"); diff --git a/Mage.Sets/src/mage/cards/p/PsychotropeThallid.java b/Mage.Sets/src/mage/cards/p/PsychotropeThallid.java index 87623fa0965..ac3ef6d89a7 100644 --- a/Mage.Sets/src/mage/cards/p/PsychotropeThallid.java +++ b/Mage.Sets/src/mage/cards/p/PsychotropeThallid.java @@ -41,6 +41,7 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.constants.Zone; import mage.counters.CounterType; @@ -57,7 +58,7 @@ public class PsychotropeThallid extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Saproling"); static { - filter.add(new SubtypePredicate("Saproling")); + filter.add(new SubtypePredicate(SubType.SAPROLING)); } public PsychotropeThallid(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PulmonicSliver.java b/Mage.Sets/src/mage/cards/p/PulmonicSliver.java index 5fc14b65050..ae6d934320f 100644 --- a/Mage.Sets/src/mage/cards/p/PulmonicSliver.java +++ b/Mage.Sets/src/mage/cards/p/PulmonicSliver.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -48,9 +49,9 @@ import mage.filter.common.FilterCreaturePermanent; */ public class PulmonicSliver extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Sliver", "All Sliver creatures"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SLIVER, "All Sliver creatures"); - private static final FilterPermanent filterSlivers = new FilterPermanent("Sliver", "All Slivers"); + private static final FilterPermanent filterSlivers = new FilterPermanent(SubType.SLIVER, "All Slivers"); public PulmonicSliver(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}"); diff --git a/Mage.Sets/src/mage/cards/p/PuppetConjurer.java b/Mage.Sets/src/mage/cards/p/PuppetConjurer.java index 896d54cecf0..7d79679d4b2 100644 --- a/Mage.Sets/src/mage/cards/p/PuppetConjurer.java +++ b/Mage.Sets/src/mage/cards/p/PuppetConjurer.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.SacrificeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; @@ -54,7 +55,7 @@ public class PuppetConjurer extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Homunculus"); static { - filter.add(new SubtypePredicate("Homunculus")); + filter.add(new SubtypePredicate(SubType.HOMUNCULUS)); } public PuppetConjurer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PutridRaptor.java b/Mage.Sets/src/mage/cards/p/PutridRaptor.java index 1c4a16b601c..38f11681e9c 100644 --- a/Mage.Sets/src/mage/cards/p/PutridRaptor.java +++ b/Mage.Sets/src/mage/cards/p/PutridRaptor.java @@ -34,6 +34,7 @@ import mage.abilities.keyword.MorphAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -46,7 +47,7 @@ public class PutridRaptor extends CardImpl { private static final FilterCard filter = new FilterCard("a Zombie card"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public PutridRaptor(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/q/QuarryColossus.java b/Mage.Sets/src/mage/cards/q/QuarryColossus.java index 221be88175d..c241be33e08 100644 --- a/Mage.Sets/src/mage/cards/q/QuarryColossus.java +++ b/Mage.Sets/src/mage/cards/q/QuarryColossus.java @@ -41,6 +41,7 @@ import mage.cards.Cards; import mage.cards.CardsImpl; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.game.Game; @@ -100,7 +101,7 @@ class QuarryColossusReturnLibraryEffect extends OneShotEffect { if (permanent != null && controller != null) { Player owner = game.getPlayer(permanent.getOwnerId()); if (owner != null) { - int plains = game.getBattlefield().countAll(new FilterPermanent("Plains", "Plains you control"), source.getControllerId(), game); + int plains = game.getBattlefield().countAll(new FilterPermanent(SubType.PLAINS, "Plains you control"), source.getControllerId(), game); int xValue = Math.min(plains, owner.getLibrary().size()); Cards cards = new CardsImpl(); Deque cardIds = new LinkedList<>(); diff --git a/Mage.Sets/src/mage/cards/q/QuicksilverFountain.java b/Mage.Sets/src/mage/cards/q/QuicksilverFountain.java index 958498e2284..37116b33921 100644 --- a/Mage.Sets/src/mage/cards/q/QuicksilverFountain.java +++ b/Mage.Sets/src/mage/cards/q/QuicksilverFountain.java @@ -65,7 +65,7 @@ public class QuicksilverFountain extends CardImpl { this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new QuicksilverFountainEffect(), TargetController.ANY, false, true)); // At the beginning of each end step, if all lands on the battlefield are Islands, remove all flood counters from them. - Condition condition = new AllLandsAreSubtypeCondition("Island"); + Condition condition = new AllLandsAreSubtypeCondition(SubType.ISLAND); this.addAbility(new BeginningOfEndStepTriggeredAbility(Zone.BATTLEFIELD, new QuicksilverFountainEffect2(), TargetController.ANY, condition, false)); } @@ -85,7 +85,7 @@ class QuicksilverFountainEffect extends OneShotEffect { static final private FilterControlledLandPermanent filterNonIslandLand = new FilterControlledLandPermanent("non-Island land"); static { - filterNonIslandLand.add(Predicates.not(new SubtypePredicate("Island"))); + filterNonIslandLand.add(Predicates.not(new SubtypePredicate(SubType.ISLAND))); } public QuicksilverFountainEffect() { @@ -148,9 +148,9 @@ class QuicksilverFountainEffect2 extends OneShotEffect { class AllLandsAreSubtypeCondition implements Condition { - private final String subtype; + private final SubType subtype; - public AllLandsAreSubtypeCondition(String subtype) { + public AllLandsAreSubtypeCondition(SubType subtype) { this.subtype = subtype; } diff --git a/Mage.Sets/src/mage/cards/q/QuillSlingerBoggart.java b/Mage.Sets/src/mage/cards/q/QuillSlingerBoggart.java index a2d3ce0bb9c..b3c4892aac6 100644 --- a/Mage.Sets/src/mage/cards/q/QuillSlingerBoggart.java +++ b/Mage.Sets/src/mage/cards/q/QuillSlingerBoggart.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterSpell; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPlayer; @@ -48,7 +49,7 @@ public class QuillSlingerBoggart extends CardImpl { private static final FilterSpell filter = new FilterSpell("a Kithkin spell"); static { - filter.add(new SubtypePredicate("Kithkin")); + filter.add(new SubtypePredicate(SubType.KITHKIN)); } public QuillSlingerBoggart(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/q/QuirionRanger.java b/Mage.Sets/src/mage/cards/q/QuirionRanger.java index 1ac4821393f..1558a8dfb5d 100644 --- a/Mage.Sets/src/mage/cards/q/QuirionRanger.java +++ b/Mage.Sets/src/mage/cards/q/QuirionRanger.java @@ -29,6 +29,7 @@ package mage.cards.q; import java.util.UUID; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; @@ -51,7 +52,7 @@ public class QuirionRanger extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public QuirionRanger(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RageForger.java b/Mage.Sets/src/mage/cards/r/RageForger.java index 0e8cc800bf9..cddf11ac275 100644 --- a/Mage.Sets/src/mage/cards/r/RageForger.java +++ b/Mage.Sets/src/mage/cards/r/RageForger.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.TargetController; import mage.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; @@ -61,7 +62,7 @@ public class RageForger extends CardImpl { private static final FilterControlledCreaturePermanent filterAttack = new FilterControlledCreaturePermanent("creature you control with a +1/+1 counter on it"); static { - filter.add(new SubtypePredicate("Shaman")); + filter.add(new SubtypePredicate(SubType.SHAMAN)); filter.add(new ControllerPredicate(TargetController.YOU)); filter.add(new AnotherPredicate()); filterAttack.add(new CounterPredicate(CounterType.P1P1)); diff --git a/Mage.Sets/src/mage/cards/r/RagebloodShaman.java b/Mage.Sets/src/mage/cards/r/RagebloodShaman.java index 2e857a3b519..31eb4e6fc64 100644 --- a/Mage.Sets/src/mage/cards/r/RagebloodShaman.java +++ b/Mage.Sets/src/mage/cards/r/RagebloodShaman.java @@ -36,10 +36,7 @@ import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.keyword.TrampleAbility; 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.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.ControllerPredicate; @@ -49,7 +46,7 @@ import mage.filter.predicate.permanent.ControllerPredicate; */ public class RagebloodShaman extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Minotaur", "Minotaur creatures"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.MINOTAUR, "Minotaur creatures"); static { filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/r/RakshaGoldenCub.java b/Mage.Sets/src/mage/cards/r/RakshaGoldenCub.java index 8376c0eaaff..f952239c7d6 100644 --- a/Mage.Sets/src/mage/cards/r/RakshaGoldenCub.java +++ b/Mage.Sets/src/mage/cards/r/RakshaGoldenCub.java @@ -55,7 +55,7 @@ public class RakshaGoldenCub extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Cat creatures you control"); static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Cat")); + filter.add(new SubtypePredicate(SubType.CAT)); } public RakshaGoldenCub(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RamosianCommander.java b/Mage.Sets/src/mage/cards/r/RamosianCommander.java index fc90f9268d5..1ddead1cead 100644 --- a/Mage.Sets/src/mage/cards/r/RamosianCommander.java +++ b/Mage.Sets/src/mage/cards/r/RamosianCommander.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterPermanentCard; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -55,7 +56,7 @@ public class RamosianCommander extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 5 or less"); static { - filter.add(new SubtypePredicate("Rebel")); + filter.add(new SubtypePredicate(SubType.REBEL)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 6)); } diff --git a/Mage.Sets/src/mage/cards/r/RamosianLieutenant.java b/Mage.Sets/src/mage/cards/r/RamosianLieutenant.java index 8a33bcd5640..055bb7059ea 100644 --- a/Mage.Sets/src/mage/cards/r/RamosianLieutenant.java +++ b/Mage.Sets/src/mage/cards/r/RamosianLieutenant.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterPermanentCard; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -55,7 +56,7 @@ public class RamosianLieutenant extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 3 or less"); static { - filter.add(new SubtypePredicate("Rebel")); + filter.add(new SubtypePredicate(SubType.REBEL)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 4)); } diff --git a/Mage.Sets/src/mage/cards/r/RamosianSkyMarshal.java b/Mage.Sets/src/mage/cards/r/RamosianSkyMarshal.java index 82258dcdd5f..82eeca67e34 100644 --- a/Mage.Sets/src/mage/cards/r/RamosianSkyMarshal.java +++ b/Mage.Sets/src/mage/cards/r/RamosianSkyMarshal.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterPermanentCard; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -55,7 +56,7 @@ public class RamosianSkyMarshal extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 6 or less"); static { - filter.add(new SubtypePredicate("Rebel")); + filter.add(new SubtypePredicate(SubType.REBEL)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 7)); } diff --git a/Mage.Sets/src/mage/cards/r/RavenousDemon.java b/Mage.Sets/src/mage/cards/r/RavenousDemon.java index 117ce7c036c..c4d540c8016 100644 --- a/Mage.Sets/src/mage/cards/r/RavenousDemon.java +++ b/Mage.Sets/src/mage/cards/r/RavenousDemon.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.TransformAbility; import mage.cards.a.ArchdemonOfGreed; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class RavenousDemon extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Human"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public RavenousDemon(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/ReachOfBranches.java b/Mage.Sets/src/mage/cards/r/ReachOfBranches.java index 14df5f64721..675455621ac 100644 --- a/Mage.Sets/src/mage/cards/r/ReachOfBranches.java +++ b/Mage.Sets/src/mage/cards/r/ReachOfBranches.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; @@ -51,7 +52,7 @@ public class ReachOfBranches extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public ReachOfBranches(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/ReaperKing.java b/Mage.Sets/src/mage/cards/r/ReaperKing.java index 46739ee04e7..4babeda3155 100644 --- a/Mage.Sets/src/mage/cards/r/ReaperKing.java +++ b/Mage.Sets/src/mage/cards/r/ReaperKing.java @@ -35,10 +35,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; @@ -56,9 +53,9 @@ public class ReaperKing extends CardImpl { private static final FilterCreaturePermanent filterTrigger = new FilterCreaturePermanent("another Scarecrow"); static { - filter.add(new SubtypePredicate("Scarecrow")); + filter.add(new SubtypePredicate(SubType.SCARECROW)); filterTrigger.add(new AnotherPredicate()); - filterTrigger.add(new SubtypePredicate("Scarecrow")); + filterTrigger.add(new SubtypePredicate(SubType.SCARECROW)); } public ReaperKing(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RecklessOne.java b/Mage.Sets/src/mage/cards/r/RecklessOne.java index 63a37971148..73d8bb93af6 100644 --- a/Mage.Sets/src/mage/cards/r/RecklessOne.java +++ b/Mage.Sets/src/mage/cards/r/RecklessOne.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class RecklessOne extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Goblins on the battlefield"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public RecklessOne(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RegalCaracal.java b/Mage.Sets/src/mage/cards/r/RegalCaracal.java index 74f0cacc639..e4021f89024 100644 --- a/Mage.Sets/src/mage/cards/r/RegalCaracal.java +++ b/Mage.Sets/src/mage/cards/r/RegalCaracal.java @@ -39,10 +39,7 @@ import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.keyword.LifelinkAbility; 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.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.ControllerPredicate; @@ -57,7 +54,7 @@ public class RegalCaracal extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Cats"); static { - filter.add(new SubtypePredicate("Cat")); + filter.add(new SubtypePredicate(SubType.CAT)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/r/ReinsOfTheVinesteed.java b/Mage.Sets/src/mage/cards/r/ReinsOfTheVinesteed.java index 104c6deb89d..d960230ab2d 100644 --- a/Mage.Sets/src/mage/cards/r/ReinsOfTheVinesteed.java +++ b/Mage.Sets/src/mage/cards/r/ReinsOfTheVinesteed.java @@ -40,10 +40,7 @@ import mage.abilities.keyword.EnchantAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicate; import mage.filter.predicate.Predicates; @@ -115,7 +112,7 @@ class ReinsOfTheVinesteedEffect extends OneShotEffect { StringBuilder sb = new StringBuilder("creature that shares a creature type with the formerly attached creature: "); ArrayList> subtypes = new ArrayList<>(); for (String subtype : lastStateCreature.getSubtype(game)) { - subtypes.add(new SubtypePredicate(subtype)); + subtypes.add(new SubtypePredicate(SubType.byDescription(subtype))); sb.append(subtype).append(", "); } FILTER.add(Predicates.or(subtypes)); diff --git a/Mage.Sets/src/mage/cards/r/RelicSeeker.java b/Mage.Sets/src/mage/cards/r/RelicSeeker.java index b8ac7eab3f3..a75dcdac7ad 100644 --- a/Mage.Sets/src/mage/cards/r/RelicSeeker.java +++ b/Mage.Sets/src/mage/cards/r/RelicSeeker.java @@ -35,6 +35,7 @@ import mage.abilities.keyword.RenownAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class RelicSeeker extends CardImpl { static { filter.add(new CardTypePredicate(CardType.ARTIFACT)); - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public RelicSeeker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RendFlesh.java b/Mage.Sets/src/mage/cards/r/RendFlesh.java index 4ab2ec093c1..ac7ff9625f5 100644 --- a/Mage.Sets/src/mage/cards/r/RendFlesh.java +++ b/Mage.Sets/src/mage/cards/r/RendFlesh.java @@ -34,6 +34,7 @@ import mage.constants.CardType; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class RendFlesh extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Non-Spirit"); static { - filter.add(Predicates.not(new SubtypePredicate("Spirit"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.SPIRIT))); } public RendFlesh(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RendSpirit.java b/Mage.Sets/src/mage/cards/r/RendSpirit.java index b180c330742..f070fd355ff 100644 --- a/Mage.Sets/src/mage/cards/r/RendSpirit.java +++ b/Mage.Sets/src/mage/cards/r/RendSpirit.java @@ -34,6 +34,7 @@ import mage.constants.CardType; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; @@ -46,7 +47,7 @@ public class RendSpirit extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Spirit"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public RendSpirit(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RenegadeFirebrand.java b/Mage.Sets/src/mage/cards/r/RenegadeFirebrand.java index 6e8eaaf9047..d697ed3d6cd 100644 --- a/Mage.Sets/src/mage/cards/r/RenegadeFirebrand.java +++ b/Mage.Sets/src/mage/cards/r/RenegadeFirebrand.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -56,7 +57,7 @@ public class RenegadeFirebrand extends CardImpl { static { filter.add(new CardTypePredicate(CardType.PLANESWALKER)); - filter.add(new SubtypePredicate("Chandra")); + filter.add(new SubtypePredicate(SubType.CHANDRA)); } public RenegadeFirebrand(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RequiemAngel.java b/Mage.Sets/src/mage/cards/r/RequiemAngel.java index 3c516f91117..69e263e9898 100644 --- a/Mage.Sets/src/mage/cards/r/RequiemAngel.java +++ b/Mage.Sets/src/mage/cards/r/RequiemAngel.java @@ -29,6 +29,7 @@ package mage.cards.r; import java.util.UUID; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.MageInt; import mage.abilities.common.DiesCreatureTriggeredAbility; @@ -51,7 +52,7 @@ public class RequiemAngel extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another non-Spirit creature you control"); static { - filter.add(Predicates.not(new SubtypePredicate("Spirit"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.SPIRIT))); filter.add(new AnotherPredicate()); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/r/RestorationAngel.java b/Mage.Sets/src/mage/cards/r/RestorationAngel.java index d636fbdb026..ddea61a1b7a 100644 --- a/Mage.Sets/src/mage/cards/r/RestorationAngel.java +++ b/Mage.Sets/src/mage/cards/r/RestorationAngel.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; @@ -58,7 +59,7 @@ public class RestorationAngel extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Angel creature you control"); static { - filter.add(Predicates.not(new SubtypePredicate("Angel"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.ANGEL))); } public RestorationAngel(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RhoxPikemaster.java b/Mage.Sets/src/mage/cards/r/RhoxPikemaster.java index 327c3705a6e..d5a1e56946f 100644 --- a/Mage.Sets/src/mage/cards/r/RhoxPikemaster.java +++ b/Mage.Sets/src/mage/cards/r/RhoxPikemaster.java @@ -31,6 +31,7 @@ package mage.cards.r; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; @@ -50,7 +51,7 @@ public class RhoxPikemaster extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures"); static { - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public RhoxPikemaster(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RidersOfGavony.java b/Mage.Sets/src/mage/cards/r/RidersOfGavony.java index 4c1fae21582..76a4058a8cc 100644 --- a/Mage.Sets/src/mage/cards/r/RidersOfGavony.java +++ b/Mage.Sets/src/mage/cards/r/RidersOfGavony.java @@ -38,12 +38,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -87,7 +82,7 @@ class RidersOfGavonyGainAbilityControlledEffect extends ContinuousEffectImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Human creatures you control"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } protected FilterPermanent protectionFilter; @@ -115,7 +110,7 @@ class RidersOfGavonyGainAbilityControlledEffect extends ContinuousEffectImpl { String subtype = (String) game.getState().getValue(permanent.getId() + "_type"); if (subtype != null) { protectionFilter = new FilterPermanent(subtype + 's'); - protectionFilter.add(new SubtypePredicate(subtype)); + protectionFilter.add(new SubtypePredicate(SubType.byDescription(subtype))); } } } diff --git a/Mage.Sets/src/mage/cards/r/RingOfImmortals.java b/Mage.Sets/src/mage/cards/r/RingOfImmortals.java index 59f1464622f..d51c6678ef5 100644 --- a/Mage.Sets/src/mage/cards/r/RingOfImmortals.java +++ b/Mage.Sets/src/mage/cards/r/RingOfImmortals.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterSpell; import mage.filter.common.FilterControlledPermanent; @@ -54,7 +55,7 @@ public class RingOfImmortals extends CardImpl { private final static FilterSpell filter = new FilterSpell("instant or Aura spell that targets a permanent you control"); static { - filter.add(Predicates.or(new CardTypePredicate(CardType.INSTANT), new SubtypePredicate("Aura"))); + filter.add(Predicates.or(new CardTypePredicate(CardType.INSTANT), new SubtypePredicate(SubType.AURA))); filter.add(new TargetsPermanentPredicate(new FilterControlledPermanent())); } diff --git a/Mage.Sets/src/mage/cards/r/RiptideLaboratory.java b/Mage.Sets/src/mage/cards/r/RiptideLaboratory.java index b7222798024..d8cd20d5a44 100644 --- a/Mage.Sets/src/mage/cards/r/RiptideLaboratory.java +++ b/Mage.Sets/src/mage/cards/r/RiptideLaboratory.java @@ -37,6 +37,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class RiptideLaboratory extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Wizard you control"); static { - filter.add(new SubtypePredicate("Wizard")); + filter.add(new SubtypePredicate(SubType.WIZARD)); } public RiptideLaboratory(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RoarOfJukai.java b/Mage.Sets/src/mage/cards/r/RoarOfJukai.java index b92ac3b0a7d..f98b29ec38a 100644 --- a/Mage.Sets/src/mage/cards/r/RoarOfJukai.java +++ b/Mage.Sets/src/mage/cards/r/RoarOfJukai.java @@ -30,7 +30,7 @@ package mage.cards.r; import java.util.UUID; import mage.abilities.Ability; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.costs.common.GainLifeOpponentCost; import mage.abilities.effects.ContinuousEffect; @@ -39,9 +39,6 @@ import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.keyword.SpliceOntoArcaneAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -84,7 +81,7 @@ class RoarOfJukaiEffect extends OneShotEffect { private static final FilterCreaturePermanent filterBlocked = new FilterCreaturePermanent("blocked creature"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); filterBlocked.add(new BlockedPredicate()); } diff --git a/Mage.Sets/src/mage/cards/r/RoarOfTheCrowd.java b/Mage.Sets/src/mage/cards/r/RoarOfTheCrowd.java index 0ed741a1fda..fe5e0855e26 100644 --- a/Mage.Sets/src/mage/cards/r/RoarOfTheCrowd.java +++ b/Mage.Sets/src/mage/cards/r/RoarOfTheCrowd.java @@ -39,6 +39,7 @@ import mage.choices.Choice; import mage.choices.ChoiceImpl; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -91,14 +92,14 @@ class RoarOfTheCrowdEffect extends OneShotEffect { if (player != null) { Choice typeChoice = new ChoiceImpl(true); typeChoice.setMessage("Choose a creature type:"); - typeChoice.setChoices(CardRepository.instance.getCreatureTypes()); + typeChoice.setChoices(SubType.getCreatureTypes(false)); while (!player.choose(Outcome.LoseLife, typeChoice, game)) { if (!player.canRespond()) { return false; } } FilterControlledPermanent filter = new FilterControlledPermanent(); - filter.add(new SubtypePredicate(typeChoice.getChoice())); + filter.add(new SubtypePredicate(SubType.byDescription(typeChoice.getChoice()))); return new DamageTargetEffect(new PermanentsOnBattlefieldCount(filter)).apply(game, source); } return false; diff --git a/Mage.Sets/src/mage/cards/r/RockBasilisk.java b/Mage.Sets/src/mage/cards/r/RockBasilisk.java index d3b13a60a6b..225087644a9 100644 --- a/Mage.Sets/src/mage/cards/r/RockBasilisk.java +++ b/Mage.Sets/src/mage/cards/r/RockBasilisk.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class RockBasilisk extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall creature"); static { - filter.add(Predicates.not(new SubtypePredicate("Wall"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.WALL))); } public RockBasilisk(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RocketTrooper.java b/Mage.Sets/src/mage/cards/r/RocketTrooper.java index 0a5e79dcb40..a981513f958 100644 --- a/Mage.Sets/src/mage/cards/r/RocketTrooper.java +++ b/Mage.Sets/src/mage/cards/r/RocketTrooper.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.target.common.TargetOpponentsCreaturePermanent; @@ -63,7 +64,7 @@ public class RocketTrooper extends CardImpl { ability.addTarget(new TargetOpponentsCreaturePermanent()); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(ability, Duration.WhileOnBattlefield, - new FilterCreaturePermanent("Trooper", "Trooper creatures"), false))); + new FilterCreaturePermanent(SubType.TROOPER, "Trooper creatures"), false))); } diff --git a/Mage.Sets/src/mage/cards/r/RofellosLlanowarEmissary.java b/Mage.Sets/src/mage/cards/r/RofellosLlanowarEmissary.java index fcec1ab8dd3..66dbe5a2f12 100644 --- a/Mage.Sets/src/mage/cards/r/RofellosLlanowarEmissary.java +++ b/Mage.Sets/src/mage/cards/r/RofellosLlanowarEmissary.java @@ -35,6 +35,7 @@ import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class RofellosLlanowarEmissary extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("for each Forest you control"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public RofellosLlanowarEmissary(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RootSliver.java b/Mage.Sets/src/mage/cards/r/RootSliver.java index 2df36d83a2c..8d6631417ad 100644 --- a/Mage.Sets/src/mage/cards/r/RootSliver.java +++ b/Mage.Sets/src/mage/cards/r/RootSliver.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterSpell; import mage.filter.FilterStackObject; @@ -50,7 +51,7 @@ public class RootSliver extends CardImpl { private static final FilterSpell filter = new FilterSpell("Sliver spells"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } diff --git a/Mage.Sets/src/mage/cards/r/RootboundCrag.java b/Mage.Sets/src/mage/cards/r/RootboundCrag.java index 84a54d46918..45638478245 100644 --- a/Mage.Sets/src/mage/cards/r/RootboundCrag.java +++ b/Mage.Sets/src/mage/cards/r/RootboundCrag.java @@ -42,6 +42,7 @@ import mage.abilities.mana.GreenManaAbility; import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -55,7 +56,7 @@ public class RootboundCrag extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.add(Predicates.or(new SubtypePredicate("Mountain"), new SubtypePredicate("Forest"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.MOUNTAIN), new SubtypePredicate(SubType.FOREST))); } public RootboundCrag(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/Rootgrapple.java b/Mage.Sets/src/mage/cards/r/Rootgrapple.java index d1d1c8588d3..797959b99d3 100644 --- a/Mage.Sets/src/mage/cards/r/Rootgrapple.java +++ b/Mage.Sets/src/mage/cards/r/Rootgrapple.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -54,7 +55,7 @@ public class Rootgrapple extends CardImpl { static { filterNoncreature.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); - filterTreefolk.add(new SubtypePredicate("Treefolk")); + filterTreefolk.add(new SubtypePredicate(SubType.TREEFOLK)); } public Rootgrapple(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RootwaterAlligator.java b/Mage.Sets/src/mage/cards/r/RootwaterAlligator.java index a3bd9c61b97..0b1dcb139bd 100644 --- a/Mage.Sets/src/mage/cards/r/RootwaterAlligator.java +++ b/Mage.Sets/src/mage/cards/r/RootwaterAlligator.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.RegenerateSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class RootwaterAlligator extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Forest"); static{ - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public RootwaterAlligator(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RotlungReanimator.java b/Mage.Sets/src/mage/cards/r/RotlungReanimator.java index 64225385010..0386e89b233 100644 --- a/Mage.Sets/src/mage/cards/r/RotlungReanimator.java +++ b/Mage.Sets/src/mage/cards/r/RotlungReanimator.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.ZombieToken; @@ -47,7 +48,7 @@ public class RotlungReanimator extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("{this} or another Cleric"); static { - filter.add(new SubtypePredicate("Cleric")); + filter.add(new SubtypePredicate(SubType.CLERIC)); } public RotlungReanimator(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RushOfBattle.java b/Mage.Sets/src/mage/cards/r/RushOfBattle.java index 8ec258ad954..f6d34bc74e9 100644 --- a/Mage.Sets/src/mage/cards/r/RushOfBattle.java +++ b/Mage.Sets/src/mage/cards/r/RushOfBattle.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class RushOfBattle extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(); static { - filter.add(new SubtypePredicate("Warrior")); + filter.add(new SubtypePredicate(SubType.WARRIOR)); } public RushOfBattle(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RustsporeRam.java b/Mage.Sets/src/mage/cards/r/RustsporeRam.java index 15c485756b6..60df2364978 100644 --- a/Mage.Sets/src/mage/cards/r/RustsporeRam.java +++ b/Mage.Sets/src/mage/cards/r/RustsporeRam.java @@ -35,6 +35,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; @@ -48,7 +49,7 @@ public class RustsporeRam extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Equipment"); static { - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public RustsporeRam(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SachiDaughterOfSeshiro.java b/Mage.Sets/src/mage/cards/s/SachiDaughterOfSeshiro.java index 91a0d5a8708..d286eee0435 100644 --- a/Mage.Sets/src/mage/cards/s/SachiDaughterOfSeshiro.java +++ b/Mage.Sets/src/mage/cards/s/SachiDaughterOfSeshiro.java @@ -37,10 +37,7 @@ import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,8 +51,8 @@ public class SachiDaughterOfSeshiro extends CardImpl { private static final FilterPermanent shamanFilter = new FilterPermanent("Shamans"); static { - snakeFilter.add(new SubtypePredicate("Snake")); - shamanFilter.add(new SubtypePredicate("Shaman")); + snakeFilter.add(new SubtypePredicate(SubType.SNAKE)); + shamanFilter.add(new SubtypePredicate(SubType.SHAMAN)); } public SachiDaughterOfSeshiro(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SagesReverie.java b/Mage.Sets/src/mage/cards/s/SagesReverie.java index 7d27d57a9f4..b1087b37cbf 100644 --- a/Mage.Sets/src/mage/cards/s/SagesReverie.java +++ b/Mage.Sets/src/mage/cards/s/SagesReverie.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicate; @@ -57,7 +58,7 @@ public class SagesReverie extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("aura you control that's attached to a creature"); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); filter.add(new SagesReveriePredicate()); } diff --git a/Mage.Sets/src/mage/cards/s/SaprazzanLegate.java b/Mage.Sets/src/mage/cards/s/SaprazzanLegate.java index 33a618f4e1f..e451e3c3051 100644 --- a/Mage.Sets/src/mage/cards/s/SaprazzanLegate.java +++ b/Mage.Sets/src/mage/cards/s/SaprazzanLegate.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,8 +52,8 @@ public class SaprazzanLegate extends CardImpl { private static final FilterPermanent filterIsland = new FilterPermanent(); static { - filterMountain.add(new SubtypePredicate(("Mountain"))); - filterIsland.add(new SubtypePredicate(("Island"))); + filterMountain.add(new SubtypePredicate((SubType.MOUNTAIN))); + filterIsland.add(new SubtypePredicate((SubType.ISLAND))); } public SaprazzanLegate(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/Sarcomancy.java b/Mage.Sets/src/mage/cards/s/Sarcomancy.java index ba18ffe7674..fa50511df0e 100644 --- a/Mage.Sets/src/mage/cards/s/Sarcomancy.java +++ b/Mage.Sets/src/mage/cards/s/Sarcomancy.java @@ -29,7 +29,7 @@ package mage.cards.s; import java.util.UUID; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; @@ -38,9 +38,6 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DamageControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.TargetController; -import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.game.permanent.token.ZombieToken; @@ -59,7 +56,7 @@ public class Sarcomancy extends CardImpl { // At the beginning of your upkeep, if there are no Zombies on the battlefield, Sarcomancy deals 1 damage to you. this.addAbility(new ConditionalTriggeredAbility( new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new DamageControllerEffect(1), TargetController.YOU, false), - new PermanentsOnTheBattlefieldCondition(new FilterPermanent("Zombie", "Zombies"), ComparisonType.EQUAL_TO, 0, false), + new PermanentsOnTheBattlefieldCondition(new FilterPermanent(SubType.ZOMBIE, "Zombies"), ComparisonType.EQUAL_TO, 0, false), "At the beginning of your upkeep, if there are no Zombies on the battlefield, {this} deals 1 damage to you.")); } diff --git a/Mage.Sets/src/mage/cards/s/SarkhanTheMad.java b/Mage.Sets/src/mage/cards/s/SarkhanTheMad.java index deca28c3f90..65b629d17d5 100644 --- a/Mage.Sets/src/mage/cards/s/SarkhanTheMad.java +++ b/Mage.Sets/src/mage/cards/s/SarkhanTheMad.java @@ -38,6 +38,7 @@ import mage.cards.CardSetInfo; import mage.cards.CardsImpl; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -165,7 +166,7 @@ class SarkhanTheMadDragonDamageEffect extends OneShotEffect { static { filter = new FilterControlledPermanent(); filter.add(new CardTypePredicate(CardType.CREATURE)); - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } SarkhanTheMadDragonDamageEffect() { diff --git a/Mage.Sets/src/mage/cards/s/SarkhanUnbroken.java b/Mage.Sets/src/mage/cards/s/SarkhanUnbroken.java index 18ff9650307..858c1bae904 100644 --- a/Mage.Sets/src/mage/cards/s/SarkhanUnbroken.java +++ b/Mage.Sets/src/mage/cards/s/SarkhanUnbroken.java @@ -43,6 +43,7 @@ import mage.choices.Choice; import mage.choices.ChoiceImpl; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -59,7 +60,7 @@ public class SarkhanUnbroken extends CardImpl { private static final FilterCard dragonFilter = new FilterCard("Dragon creature card"); static { - dragonFilter.add(new SubtypePredicate("Dragon")); + dragonFilter.add(new SubtypePredicate(SubType.DRAGON)); } public SarkhanUnbroken(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SarkhansRage.java b/Mage.Sets/src/mage/cards/s/SarkhansRage.java index 250342877e8..9e473cd3254 100644 --- a/Mage.Sets/src/mage/cards/s/SarkhansRage.java +++ b/Mage.Sets/src/mage/cards/s/SarkhansRage.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.target.common.TargetCreatureOrPlayer; @@ -53,7 +54,7 @@ public class SarkhansRage extends CardImpl { this.getSpellAbility().addEffect(new DamageTargetEffect(5)); this.getSpellAbility().addTarget(new TargetCreatureOrPlayer()); this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DamageControllerEffect(2), - new PermanentsOnTheBattlefieldCondition(new FilterControlledCreaturePermanent("Dragon","you control no Dragons"), ComparisonType.EQUAL_TO, 0) + new PermanentsOnTheBattlefieldCondition(new FilterControlledCreaturePermanent(SubType.DRAGON,"you control no Dragons"), ComparisonType.EQUAL_TO, 0) )); } diff --git a/Mage.Sets/src/mage/cards/s/SavageThallid.java b/Mage.Sets/src/mage/cards/s/SavageThallid.java index b883b9a92ca..f705a495afb 100644 --- a/Mage.Sets/src/mage/cards/s/SavageThallid.java +++ b/Mage.Sets/src/mage/cards/s/SavageThallid.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.constants.Zone; import mage.counters.CounterType; @@ -59,13 +60,13 @@ public class SavageThallid extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Fungus"); static { - filter.add(new SubtypePredicate("Fungus")); + filter.add(new SubtypePredicate(SubType.FUNGUS)); } private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("Saproling"); static { - filter2.add(new SubtypePredicate("Saproling")); + filter2.add(new SubtypePredicate(SubType.SAPROLING)); } public SavageThallid(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ScaldingTarn.java b/Mage.Sets/src/mage/cards/s/ScaldingTarn.java index bc26055809d..a94952d4941 100644 --- a/Mage.Sets/src/mage/cards/s/ScaldingTarn.java +++ b/Mage.Sets/src/mage/cards/s/ScaldingTarn.java @@ -28,12 +28,14 @@ package mage.cards.s; +import java.util.EnumSet; import java.util.UUID; import mage.ObjectColor; import mage.constants.CardType; import mage.abilities.common.FetchLandActivatedAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; /** * @@ -44,7 +46,7 @@ public class ScaldingTarn extends CardImpl { public ScaldingTarn(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.LAND},null); this.frameColor = new ObjectColor("UR"); - this.addAbility(new FetchLandActivatedAbility(new String[] {"Island", "Mountain"})); + this.addAbility(new FetchLandActivatedAbility(EnumSet.of(SubType.ISLAND, SubType.MOUNTAIN))); } public ScaldingTarn(final ScaldingTarn card) { diff --git a/Mage.Sets/src/mage/cards/s/ScorchTheFields.java b/Mage.Sets/src/mage/cards/s/ScorchTheFields.java index 8219830eb4a..d627a6f378b 100644 --- a/Mage.Sets/src/mage/cards/s/ScorchTheFields.java +++ b/Mage.Sets/src/mage/cards/s/ScorchTheFields.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetLandPermanent; @@ -46,7 +47,7 @@ public class ScorchTheFields extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human creature"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public ScorchTheFields(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ScourgeOfNumai.java b/Mage.Sets/src/mage/cards/s/ScourgeOfNumai.java index 5aeb4837f73..26d51ffffc0 100644 --- a/Mage.Sets/src/mage/cards/s/ScourgeOfNumai.java +++ b/Mage.Sets/src/mage/cards/s/ScourgeOfNumai.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; @@ -89,7 +90,7 @@ class ScourgeOfNumaiEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - if (game.getBattlefield().countAll(new FilterCreaturePermanent("Ogre", "Ogre"), source.getControllerId(), game) < 1) { + if (game.getBattlefield().countAll(new FilterCreaturePermanent(SubType.OGRE, "Ogre"), source.getControllerId(), game) < 1) { controller.loseLife(2, game, false); } return true; diff --git a/Mage.Sets/src/mage/cards/s/ScreechingSliver.java b/Mage.Sets/src/mage/cards/s/ScreechingSliver.java index 38145bf6581..f6d926c6f87 100644 --- a/Mage.Sets/src/mage/cards/s/ScreechingSliver.java +++ b/Mage.Sets/src/mage/cards/s/ScreechingSliver.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.target.TargetPlayer; @@ -48,7 +49,7 @@ import mage.target.TargetPlayer; */ public class ScreechingSliver extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("Sliver", "All Slivers"); + private static final FilterPermanent filter = new FilterPermanent(SubType.SLIVER, "All Slivers"); public ScreechingSliver(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}"); diff --git a/Mage.Sets/src/mage/cards/s/ScrollOfAvacyn.java b/Mage.Sets/src/mage/cards/s/ScrollOfAvacyn.java index 1d9b286ce00..13c0434799e 100644 --- a/Mage.Sets/src/mage/cards/s/ScrollOfAvacyn.java +++ b/Mage.Sets/src/mage/cards/s/ScrollOfAvacyn.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class ScrollOfAvacyn extends CardImpl { private static final FilterPermanent filter = new FilterPermanent(); static { - filter.add(new SubtypePredicate("Angel")); + filter.add(new SubtypePredicate(SubType.ANGEL)); } public ScrollOfAvacyn(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ScrollOfGriselbrand.java b/Mage.Sets/src/mage/cards/s/ScrollOfGriselbrand.java index b47bd78a80d..b9f3ae7266f 100644 --- a/Mage.Sets/src/mage/cards/s/ScrollOfGriselbrand.java +++ b/Mage.Sets/src/mage/cards/s/ScrollOfGriselbrand.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.discard.DiscardTargetEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class ScrollOfGriselbrand extends CardImpl { private static final FilterPermanent filter = new FilterPermanent(); static { - filter.add(new SubtypePredicate("Demon")); + filter.add(new SubtypePredicate(SubType.DEMON)); } public ScrollOfGriselbrand(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ScrybRanger.java b/Mage.Sets/src/mage/cards/s/ScrybRanger.java index 3f76167a463..d15c08ead4d 100644 --- a/Mage.Sets/src/mage/cards/s/ScrybRanger.java +++ b/Mage.Sets/src/mage/cards/s/ScrybRanger.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,7 +55,7 @@ public class ScrybRanger extends CardImpl { private static final FilterControlledLandPermanent filterForest = new FilterControlledLandPermanent("Forest"); static { - filterForest.add(new SubtypePredicate("Forest")); + filterForest.add(new SubtypePredicate(SubType.FOREST)); } public ScrybRanger(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SeaMonster.java b/Mage.Sets/src/mage/cards/s/SeaMonster.java index da2e66abc26..f83a5e23062 100644 --- a/Mage.Sets/src/mage/cards/s/SeaMonster.java +++ b/Mage.Sets/src/mage/cards/s/SeaMonster.java @@ -29,6 +29,7 @@ package mage.cards.s; import java.util.UUID; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; @@ -51,7 +52,7 @@ import mage.filter.common.FilterLandPermanent; this.toughness = new MageInt(6); // Sea Monster can't attack unless defending player controls an Island. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island","an Island")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.ISLAND,"an Island")))); } public SeaMonster(final SeaMonster card) { diff --git a/Mage.Sets/src/mage/cards/s/SeaSerpent.java b/Mage.Sets/src/mage/cards/s/SeaSerpent.java index 097c8c7a00c..54a7d3668ac 100644 --- a/Mage.Sets/src/mage/cards/s/SeaSerpent.java +++ b/Mage.Sets/src/mage/cards/s/SeaSerpent.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.combat.CantAttackUnlessDefenderControllsPer import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class SeaSerpent extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("an Island"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public SeaSerpent(UUID ownerId, CardSetInfo setInfo) { @@ -66,7 +67,7 @@ public class SeaSerpent extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(filter))); // When you control no Islands, sacrifice Sea Serpent. this.addAbility(new ControlsPermanentsControllerTriggeredAbility( - new FilterLandPermanent("Island", "no Islands"), ComparisonType.EQUAL_TO, 0, + new FilterLandPermanent(SubType.ISLAND, "no Islands"), ComparisonType.EQUAL_TO, 0, new SacrificeSourceEffect())); } diff --git a/Mage.Sets/src/mage/cards/s/SeascapeAerialist.java b/Mage.Sets/src/mage/cards/s/SeascapeAerialist.java index ca941817cd5..2139ae2bbfb 100644 --- a/Mage.Sets/src/mage/cards/s/SeascapeAerialist.java +++ b/Mage.Sets/src/mage/cards/s/SeascapeAerialist.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class SeascapeAerialist extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Ally creatures you control"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/s/SeasideHaven.java b/Mage.Sets/src/mage/cards/s/SeasideHaven.java index a0e64e6683b..3da80184d3a 100644 --- a/Mage.Sets/src/mage/cards/s/SeasideHaven.java +++ b/Mage.Sets/src/mage/cards/s/SeasideHaven.java @@ -38,6 +38,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class SeasideHaven extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Bird"); static{ - filter.add(new SubtypePredicate("Bird")); + filter.add(new SubtypePredicate(SubType.BIRD)); } public SeasideHaven(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/Seasinger.java b/Mage.Sets/src/mage/cards/s/Seasinger.java index f5a11c31649..44aace37b93 100644 --- a/Mage.Sets/src/mage/cards/s/Seasinger.java +++ b/Mage.Sets/src/mage/cards/s/Seasinger.java @@ -29,7 +29,7 @@ package mage.cards.s; import mage.MageInt; import mage.abilities.Ability; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.common.ControlsPermanentsControllerTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SkipUntapOptionalAbility; @@ -41,10 +41,6 @@ import mage.abilities.effects.common.SacrificeSourceEffect; import mage.abilities.effects.common.continuous.GainControlTargetEffect; 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.FilterCreaturePermanent; import mage.filter.common.FilterLandPermanent; @@ -67,7 +63,7 @@ public class Seasinger extends CardImpl { private static final FilterCreaturePermanent creatureWhoseControllerControlsIsland = new FilterCreaturePermanent("creature whose controller controls an island"); static { - islandYouControl.add(new SubtypePredicate("Island")); + islandYouControl.add(new SubtypePredicate(SubType.ISLAND)); islandYouControl.add(new ControllerPredicate(TargetController.YOU)); } @@ -84,7 +80,7 @@ public class Seasinger extends CardImpl { // When you control no Islands, sacrifice Seasinger. this.addAbility(new ControlsPermanentsControllerTriggeredAbility( - new FilterLandPermanent("Island", "no Islands"), ComparisonType.EQUAL_TO, 0, + new FilterLandPermanent(SubType.ISLAND, "no Islands"), ComparisonType.EQUAL_TO, 0, new SacrificeSourceEffect())); // You may choose not to untap Seasinger during your untap step. diff --git a/Mage.Sets/src/mage/cards/s/SecludedGlen.java b/Mage.Sets/src/mage/cards/s/SecludedGlen.java index 5fbd58cfb3a..d2a9fac5aa1 100644 --- a/Mage.Sets/src/mage/cards/s/SecludedGlen.java +++ b/Mage.Sets/src/mage/cards/s/SecludedGlen.java @@ -36,6 +36,7 @@ import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.BlueManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInHand; @@ -48,7 +49,7 @@ public class SecludedGlen extends CardImpl { private static final FilterCard filter = new FilterCard("a Faerie from your hand"); static { - filter.add(new SubtypePredicate("Faerie")); + filter.add(new SubtypePredicate(SubType.FAERIE)); } public SecludedGlen(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SedgeSliver.java b/Mage.Sets/src/mage/cards/s/SedgeSliver.java index a3535867d4a..cb6d8ee9646 100644 --- a/Mage.Sets/src/mage/cards/s/SedgeSliver.java +++ b/Mage.Sets/src/mage/cards/s/SedgeSliver.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -50,11 +51,11 @@ import mage.filter.common.FilterCreaturePermanent; */ public class SedgeSliver extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Sliver", "All Sliver creatures"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SLIVER, "All Sliver creatures"); - private static final FilterPermanent filterSlivers = new FilterPermanent("Sliver", "All Slivers"); + private static final FilterPermanent filterSlivers = new FilterPermanent(SubType.SLIVER, "All Slivers"); - private static final FilterPermanent filterSwamp = new FilterPermanent("Swamp", "Swamp"); + private static final FilterPermanent filterSwamp = new FilterPermanent(SubType.SWAMP, "Swamp"); public SedgeSliver(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}"); diff --git a/Mage.Sets/src/mage/cards/s/SeedlingCharm.java b/Mage.Sets/src/mage/cards/s/SeedlingCharm.java index e1c6164d4f8..2be5f726327 100644 --- a/Mage.Sets/src/mage/cards/s/SeedlingCharm.java +++ b/Mage.Sets/src/mage/cards/s/SeedlingCharm.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; @@ -56,7 +57,7 @@ public class SeedlingCharm extends CardImpl { private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("green creature"); static { - filter1.add(new SubtypePredicate("Aura")); + filter1.add(new SubtypePredicate(SubType.AURA)); filter1.add(new AttachedToPredicate(new FilterCreaturePermanent())); filter2.add(new ColorPredicate(ObjectColor.GREEN)); } diff --git a/Mage.Sets/src/mage/cards/s/SeismicStrike.java b/Mage.Sets/src/mage/cards/s/SeismicStrike.java index bd374ddf5a7..4a32a530074 100644 --- a/Mage.Sets/src/mage/cards/s/SeismicStrike.java +++ b/Mage.Sets/src/mage/cards/s/SeismicStrike.java @@ -33,6 +33,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; @@ -46,7 +47,7 @@ public class SeismicStrike extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Mountains you control"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public SeismicStrike(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SekkiSeasonsGuide.java b/Mage.Sets/src/mage/cards/s/SekkiSeasonsGuide.java index f904c9a51fa..6b3239af912 100644 --- a/Mage.Sets/src/mage/cards/s/SekkiSeasonsGuide.java +++ b/Mage.Sets/src/mage/cards/s/SekkiSeasonsGuide.java @@ -39,10 +39,7 @@ import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldEffec import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -63,7 +60,7 @@ public class SekkiSeasonsGuide extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("eight Spirits"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public SekkiSeasonsGuide(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SelfAssembler.java b/Mage.Sets/src/mage/cards/s/SelfAssembler.java index b4461550ec7..9712b092f67 100644 --- a/Mage.Sets/src/mage/cards/s/SelfAssembler.java +++ b/Mage.Sets/src/mage/cards/s/SelfAssembler.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -48,7 +49,7 @@ public class SelfAssembler extends CardImpl { private static final FilterCard filter = new FilterCard("an Assembly-Worker card"); static { - filter.add(new SubtypePredicate("Assembly-Worker")); + filter.add(new SubtypePredicate(SubType.ASSEMBLY_WORKER)); } public SelfAssembler(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SengirAutocrat.java b/Mage.Sets/src/mage/cards/s/SengirAutocrat.java index 85b6a90a1b7..2b74a363254 100644 --- a/Mage.Sets/src/mage/cards/s/SengirAutocrat.java +++ b/Mage.Sets/src/mage/cards/s/SengirAutocrat.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.ExileAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.TokenPredicate; @@ -51,7 +52,7 @@ public class SengirAutocrat extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Serf tokens"); static { - filter.add(new SubtypePredicate("Serf")); + filter.add(new SubtypePredicate(SubType.SERF)); filter.add(new TokenPredicate()); } diff --git a/Mage.Sets/src/mage/cards/s/SensorSplicer.java b/Mage.Sets/src/mage/cards/s/SensorSplicer.java index 0a92f6d22c4..801bb8a33ef 100644 --- a/Mage.Sets/src/mage/cards/s/SensorSplicer.java +++ b/Mage.Sets/src/mage/cards/s/SensorSplicer.java @@ -30,6 +30,7 @@ package mage.cards.s; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -54,7 +55,7 @@ public class SensorSplicer extends CardImpl { static { filter.add(new CardTypePredicate(CardType.CREATURE)); - filter.add(new SubtypePredicate("Golem")); + filter.add(new SubtypePredicate(SubType.GOLEM)); } public SensorSplicer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SeraphSanctuary.java b/Mage.Sets/src/mage/cards/s/SeraphSanctuary.java index 7c2d3df724a..f51e812d3d6 100644 --- a/Mage.Sets/src/mage/cards/s/SeraphSanctuary.java +++ b/Mage.Sets/src/mage/cards/s/SeraphSanctuary.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class SeraphSanctuary extends CardImpl { private static final FilterPermanent filter = new FilterControlledCreaturePermanent("an Angel"); static { - filter.add(new SubtypePredicate("Angel")); + filter.add(new SubtypePredicate(SubType.ANGEL)); } public SeraphSanctuary(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.LAND},""); diff --git a/Mage.Sets/src/mage/cards/s/SerpentOfTheEndlessSea.java b/Mage.Sets/src/mage/cards/s/SerpentOfTheEndlessSea.java index e47469dc8ee..87d69d4cca8 100644 --- a/Mage.Sets/src/mage/cards/s/SerpentOfTheEndlessSea.java +++ b/Mage.Sets/src/mage/cards/s/SerpentOfTheEndlessSea.java @@ -30,6 +30,7 @@ package mage.cards.s; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; @@ -51,7 +52,7 @@ public class SerpentOfTheEndlessSea extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Islands you control"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public SerpentOfTheEndlessSea(UUID ownerId, CardSetInfo setInfo) { @@ -64,7 +65,7 @@ public class SerpentOfTheEndlessSea extends CardImpl { // Serpent of the Endless Sea's power and toughness are each equal to the number of Islands you control. this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(filter), Duration.EndOfGame))); // Serpent of the Endless Sea can't attack unless defending player controls an Island. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island","an Island")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.ISLAND,"an Island")))); } public SerpentOfTheEndlessSea(final SerpentOfTheEndlessSea card) { diff --git a/Mage.Sets/src/mage/cards/s/SetessanStarbreaker.java b/Mage.Sets/src/mage/cards/s/SetessanStarbreaker.java index 6529562c752..86a9824e1cd 100644 --- a/Mage.Sets/src/mage/cards/s/SetessanStarbreaker.java +++ b/Mage.Sets/src/mage/cards/s/SetessanStarbreaker.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; @@ -48,7 +49,7 @@ public class SetessanStarbreaker extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Aura"); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public SetessanStarbreaker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SetonKrosanProtector.java b/Mage.Sets/src/mage/cards/s/SetonKrosanProtector.java index eb4d345b773..45cc71ff862 100644 --- a/Mage.Sets/src/mage/cards/s/SetonKrosanProtector.java +++ b/Mage.Sets/src/mage/cards/s/SetonKrosanProtector.java @@ -35,6 +35,7 @@ import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; @@ -53,7 +54,7 @@ public class SetonKrosanProtector extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Druid")); + filter.add(new SubtypePredicate(SubType.DRUID)); } public SetonKrosanProtector(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ShieldOfKaldra.java b/Mage.Sets/src/mage/cards/s/ShieldOfKaldra.java index ecfc2c9e9de..50baf269c40 100644 --- a/Mage.Sets/src/mage/cards/s/ShieldOfKaldra.java +++ b/Mage.Sets/src/mage/cards/s/ShieldOfKaldra.java @@ -53,7 +53,7 @@ public class ShieldOfKaldra extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Equipment named Sword of Kaldra, Shield of Kaldra, and Helm of Kaldra"); static { - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); filter.add(Predicates.or( new NamePredicate("Sword of Kaldra"), new NamePredicate("Shield of Kaldra"), diff --git a/Mage.Sets/src/mage/cards/s/ShisatoWhisperingHunter.java b/Mage.Sets/src/mage/cards/s/ShisatoWhisperingHunter.java index 3a3fbe710cc..e83a844453d 100644 --- a/Mage.Sets/src/mage/cards/s/ShisatoWhisperingHunter.java +++ b/Mage.Sets/src/mage/cards/s/ShisatoWhisperingHunter.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.SkipNextPlayerUntapStepEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.TargetController; import mage.filter.common.FilterControlledCreaturePermanent; @@ -52,7 +53,7 @@ public class ShisatoWhisperingHunter extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Snake"); static { - filter.add(new SubtypePredicate("Snake")); + filter.add(new SubtypePredicate(SubType.SNAKE)); } public ShisatoWhisperingHunter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ShockTrooper.java b/Mage.Sets/src/mage/cards/s/ShockTrooper.java index d6d7b7c3021..e05f2eda9d3 100644 --- a/Mage.Sets/src/mage/cards/s/ShockTrooper.java +++ b/Mage.Sets/src/mage/cards/s/ShockTrooper.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class ShockTrooper extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures"); static { - filter.add(new SubtypePredicate("Trooper")); + filter.add(new SubtypePredicate(SubType.TROOPER)); } public ShockTrooper(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ShorelineSalvager.java b/Mage.Sets/src/mage/cards/s/ShorelineSalvager.java index a1c5ce4cf7a..edd8e6e6697 100644 --- a/Mage.Sets/src/mage/cards/s/ShorelineSalvager.java +++ b/Mage.Sets/src/mage/cards/s/ShorelineSalvager.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class ShorelineSalvager extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public ShorelineSalvager(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/Sideswipe.java b/Mage.Sets/src/mage/cards/s/Sideswipe.java index 2a91e987928..991a04157a8 100644 --- a/Mage.Sets/src/mage/cards/s/Sideswipe.java +++ b/Mage.Sets/src/mage/cards/s/Sideswipe.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.ChooseNewTargetsTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterSpell; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetSpell; @@ -45,7 +46,7 @@ public class Sideswipe extends CardImpl { private static final FilterSpell filter = new FilterSpell("Arcane spell"); static { - filter.add(new SubtypePredicate("Arcane")); + filter.add(new SubtypePredicate(SubType.ARCANE)); } public Sideswipe(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SiegeGangCommander.java b/Mage.Sets/src/mage/cards/s/SiegeGangCommander.java index 86bc1b10d5c..d03e68da5a4 100644 --- a/Mage.Sets/src/mage/cards/s/SiegeGangCommander.java +++ b/Mage.Sets/src/mage/cards/s/SiegeGangCommander.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -56,7 +57,7 @@ public class SiegeGangCommander extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Goblin"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public SiegeGangCommander(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SiegeOfTowers.java b/Mage.Sets/src/mage/cards/s/SiegeOfTowers.java index 67d74973845..5b77a51ff92 100644 --- a/Mage.Sets/src/mage/cards/s/SiegeOfTowers.java +++ b/Mage.Sets/src/mage/cards/s/SiegeOfTowers.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; @@ -50,7 +51,7 @@ public class SiegeOfTowers extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public SiegeOfTowers(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SigardianPriest.java b/Mage.Sets/src/mage/cards/s/SigardianPriest.java index db3ecc72726..0cb8869eb53 100644 --- a/Mage.Sets/src/mage/cards/s/SigardianPriest.java +++ b/Mage.Sets/src/mage/cards/s/SigardianPriest.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.TapTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -52,7 +53,7 @@ public class SigardianPriest extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Human creature"); static { - filter.add(Predicates.not(new SubtypePredicate("Human"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.HUMAN))); } public SigardianPriest(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SigilTracer.java b/Mage.Sets/src/mage/cards/s/SigilTracer.java index 3183b2d16bf..4db7443ecef 100644 --- a/Mage.Sets/src/mage/cards/s/SigilTracer.java +++ b/Mage.Sets/src/mage/cards/s/SigilTracer.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.CopyTargetSpellEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterSpell; import mage.filter.common.FilterControlledCreaturePermanent; @@ -57,7 +58,7 @@ public class SigilTracer extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Wizard")); + filter.add(new SubtypePredicate(SubType.WIZARD)); filterInstorSorc.add(Predicates.or( new CardTypePredicate(CardType.INSTANT), new CardTypePredicate(CardType.SORCERY))); diff --git a/Mage.Sets/src/mage/cards/s/SilumgarsScorn.java b/Mage.Sets/src/mage/cards/s/SilumgarsScorn.java index d54fdac63fe..4c6ff303420 100644 --- a/Mage.Sets/src/mage/cards/s/SilumgarsScorn.java +++ b/Mage.Sets/src/mage/cards/s/SilumgarsScorn.java @@ -40,6 +40,7 @@ import mage.cards.CardSetInfo; import mage.constants.AbilityType; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -58,7 +59,7 @@ public class SilumgarsScorn extends CardImpl { private static final FilterCard filter = new FilterCard("a Dragon card from your hand (you don't have to)"); static { - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public SilumgarsScorn(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SilvergillAdept.java b/Mage.Sets/src/mage/cards/s/SilvergillAdept.java index 10364ade1af..edd2970b2ec 100644 --- a/Mage.Sets/src/mage/cards/s/SilvergillAdept.java +++ b/Mage.Sets/src/mage/cards/s/SilvergillAdept.java @@ -41,6 +41,7 @@ import mage.cards.CardSetInfo; import mage.cards.CardsImpl; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -83,7 +84,7 @@ class SilvergillAdeptCost extends CostImpl { private GenericManaCost mana = new GenericManaCost(3); static { - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK)); } public SilvergillAdeptCost() { diff --git a/Mage.Sets/src/mage/cards/s/SinewSliver.java b/Mage.Sets/src/mage/cards/s/SinewSliver.java index 06d446185ec..59c77864e29 100644 --- a/Mage.Sets/src/mage/cards/s/SinewSliver.java +++ b/Mage.Sets/src/mage/cards/s/SinewSliver.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; @@ -52,7 +53,7 @@ public class SinewSliver extends CardImpl { this.toughness = new MageInt(1); // All Sliver creatures get +1/+1. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, new FilterCreaturePermanent("Sliver", "All Sliver creatures"), false))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, new FilterCreaturePermanent(SubType.SLIVER, "All Sliver creatures"), false))); } public SinewSliver(final SinewSliver card) { diff --git a/Mage.Sets/src/mage/cards/s/SinkIntoTakenuma.java b/Mage.Sets/src/mage/cards/s/SinkIntoTakenuma.java index 4f14bd6b2b6..c94e8ea49f5 100644 --- a/Mage.Sets/src/mage/cards/s/SinkIntoTakenuma.java +++ b/Mage.Sets/src/mage/cards/s/SinkIntoTakenuma.java @@ -35,6 +35,7 @@ import mage.abilities.effects.keyword.SweepEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.target.TargetPlayer; /** @@ -49,7 +50,7 @@ public class SinkIntoTakenuma extends CardImpl { // Sweep - Return any number of Swamps you control to their owner's hand. Target player discards a card for each Swamp returned this way. - this.getSpellAbility().addEffect(new SweepEffect("Swamp")); + this.getSpellAbility().addEffect(new SweepEffect(SubType.SWAMP)); DynamicValue sweepValue = new SweepNumber("Swamp", false); this.getSpellAbility().addEffect(new DiscardTargetEffect(sweepValue)); this.getSpellAbility().addTarget(new TargetPlayer()); diff --git a/Mage.Sets/src/mage/cards/s/SithRuins.java b/Mage.Sets/src/mage/cards/s/SithRuins.java index e123722f666..e4e6a986dbe 100644 --- a/Mage.Sets/src/mage/cards/s/SithRuins.java +++ b/Mage.Sets/src/mage/cards/s/SithRuins.java @@ -35,10 +35,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterCard; import mage.filter.predicate.Predicate; import mage.filter.predicate.Predicates; @@ -89,9 +86,9 @@ public class SithRuins extends CardImpl { FilterCard filter = new FilterCard("basic Island, Swamp or Mountain"); filter.add(new CardTypePredicate(CardType.LAND)); ArrayList> subtypePredicates = new ArrayList<>(); - subtypePredicates.add(new SubtypePredicate("Swamp")); - subtypePredicates.add(new SubtypePredicate("Mountain")); - subtypePredicates.add(new SubtypePredicate("Island")); + subtypePredicates.add(new SubtypePredicate(SubType.SWAMP)); + subtypePredicates.add(new SubtypePredicate(SubType.MOUNTAIN)); + subtypePredicates.add(new SubtypePredicate(SubType.ISLAND)); filter.add(Predicates.or(subtypePredicates)); filter.add(new SupertypePredicate(SuperType.BASIC)); TargetCardInLibrary target = new TargetCardInLibrary(filter); diff --git a/Mage.Sets/src/mage/cards/s/SivvisRuse.java b/Mage.Sets/src/mage/cards/s/SivvisRuse.java index a0c7d01a1d2..a3d9829f2a6 100644 --- a/Mage.Sets/src/mage/cards/s/SivvisRuse.java +++ b/Mage.Sets/src/mage/cards/s/SivvisRuse.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledCreatureInPlay; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,8 +53,8 @@ public class SivvisRuse extends CardImpl { private static final FilterPermanent filterPlains = new FilterPermanent(); static { - filterMountain.add(new SubtypePredicate(("Mountain"))); - filterPlains.add(new SubtypePredicate(("Plains"))); + filterMountain.add(new SubtypePredicate((SubType.MOUNTAIN))); + filterPlains.add(new SubtypePredicate((SubType.PLAINS))); } public SivvisRuse(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SkeletalVampire.java b/Mage.Sets/src/mage/cards/s/SkeletalVampire.java index 60925bde554..aea6088d702 100644 --- a/Mage.Sets/src/mage/cards/s/SkeletalVampire.java +++ b/Mage.Sets/src/mage/cards/s/SkeletalVampire.java @@ -40,11 +40,13 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.BatToken; import mage.target.common.TargetControlledCreaturePermanent; +import org.omg.CORBA.BAD_TYPECODE; /** * @@ -55,7 +57,7 @@ public class SkeletalVampire extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Bat"); static { - filter.add(new SubtypePredicate("Bat")); + filter.add(new SubtypePredicate(SubType.BAT)); } public SkeletalVampire(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SkeletonShip.java b/Mage.Sets/src/mage/cards/s/SkeletonShip.java index 8c7107e414b..68d4d994e69 100644 --- a/Mage.Sets/src/mage/cards/s/SkeletonShip.java +++ b/Mage.Sets/src/mage/cards/s/SkeletonShip.java @@ -29,7 +29,7 @@ package mage.cards.s; import mage.MageInt; import mage.abilities.Ability; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.common.ControlsPermanentsControllerTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; @@ -37,9 +37,6 @@ import mage.abilities.effects.common.SacrificeSourceEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SuperType; -import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterLandPermanent; import mage.target.common.TargetCreaturePermanent; @@ -61,7 +58,7 @@ public class SkeletonShip extends CardImpl { // When you control no Islands, sacrifice Skeleton Ship. this.addAbility(new ControlsPermanentsControllerTriggeredAbility( - new FilterLandPermanent("Island", "no Islands"), ComparisonType.EQUAL_TO, 0, + new FilterLandPermanent(SubType.ISLAND, "no Islands"), ComparisonType.EQUAL_TO, 0, new SacrificeSourceEffect())); // {tap}: Put a -1/-1 counter on target creature. diff --git a/Mage.Sets/src/mage/cards/s/SkirkFireMarshal.java b/Mage.Sets/src/mage/cards/s/SkirkFireMarshal.java index 42733cf0586..9da268a5ee2 100644 --- a/Mage.Sets/src/mage/cards/s/SkirkFireMarshal.java +++ b/Mage.Sets/src/mage/cards/s/SkirkFireMarshal.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; @@ -55,7 +56,7 @@ public class SkirkFireMarshal extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public SkirkFireMarshal(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SkirkVolcanist.java b/Mage.Sets/src/mage/cards/s/SkirkVolcanist.java index 9f8d2bb3651..258f8ac3e5f 100644 --- a/Mage.Sets/src/mage/cards/s/SkirkVolcanist.java +++ b/Mage.Sets/src/mage/cards/s/SkirkVolcanist.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.MorphAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; @@ -52,7 +53,7 @@ public class SkirkVolcanist extends CardImpl { private static final FilterControlledLandPermanent filterSacrifice = new FilterControlledLandPermanent("two Mountains"); static { - filterSacrifice.add(new SubtypePredicate("Mountain")); + filterSacrifice.add(new SubtypePredicate(SubType.MOUNTAIN)); } public SkirkVolcanist(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudClaim.java b/Mage.Sets/src/mage/cards/s/SkyshroudClaim.java index dd70efbd36b..7d89a7ad52a 100644 --- a/Mage.Sets/src/mage/cards/s/SkyshroudClaim.java +++ b/Mage.Sets/src/mage/cards/s/SkyshroudClaim.java @@ -32,6 +32,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterLandCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -44,7 +45,7 @@ public class SkyshroudClaim extends CardImpl { private static final FilterLandCard filter = new FilterLandCard("Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public SkyshroudClaim(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{G}"); diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudCutter.java b/Mage.Sets/src/mage/cards/s/SkyshroudCutter.java index 71ca8fe67f1..5fe8149b274 100644 --- a/Mage.Sets/src/mage/cards/s/SkyshroudCutter.java +++ b/Mage.Sets/src/mage/cards/s/SkyshroudCutter.java @@ -35,6 +35,7 @@ import mage.abilities.costs.common.GainLifePlayersCost; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class SkyshroudCutter extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("If you control a Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public SkyshroudCutter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SlayerOfTheWicked.java b/Mage.Sets/src/mage/cards/s/SlayerOfTheWicked.java index ff42ecfce99..eed45d2c9e1 100644 --- a/Mage.Sets/src/mage/cards/s/SlayerOfTheWicked.java +++ b/Mage.Sets/src/mage/cards/s/SlayerOfTheWicked.java @@ -35,6 +35,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,9 +51,9 @@ public class SlayerOfTheWicked extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Vampire"), - new SubtypePredicate("Werewolf"), - new SubtypePredicate("Zombie"))); + new SubtypePredicate(SubType.VAMPIRE), + new SubtypePredicate(SubType.WEREWOLF), + new SubtypePredicate(SubType.WEREWOLF))); } public SlayerOfTheWicked(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SlipstreamSerpent.java b/Mage.Sets/src/mage/cards/s/SlipstreamSerpent.java index 25b89997ef9..635407b7f17 100644 --- a/Mage.Sets/src/mage/cards/s/SlipstreamSerpent.java +++ b/Mage.Sets/src/mage/cards/s/SlipstreamSerpent.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.MorphAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; @@ -56,11 +57,11 @@ public class SlipstreamSerpent extends CardImpl { this.toughness = new MageInt(6); // Slipstream Serpent can't attack unless defending player controls an Island. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island", "an Island")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.ISLAND, "an Island")))); // When you control no Islands, sacrifice Slipstream Serpent. this.addAbility(new ControlsPermanentsControllerTriggeredAbility( - new FilterLandPermanent("Island", "no Islands"), ComparisonType.EQUAL_TO, 0, + new FilterLandPermanent(SubType.ISLAND, "no Islands"), ComparisonType.EQUAL_TO, 0, new SacrificeSourceEffect())); // Morph {5}{U} diff --git a/Mage.Sets/src/mage/cards/s/SliverLegion.java b/Mage.Sets/src/mage/cards/s/SliverLegion.java index bc5b0a970ea..c68a84198f8 100644 --- a/Mage.Sets/src/mage/cards/s/SliverLegion.java +++ b/Mage.Sets/src/mage/cards/s/SliverLegion.java @@ -33,10 +33,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continuous.BoostAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.AnotherPredicate; @@ -50,8 +47,8 @@ import java.util.UUID; */ public class SliverLegion extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Sliver", "All Sliver creatures"); - private static final FilterPermanent countfilter = new FilterPermanent("Sliver", "other Sliver on the battlefield"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SLIVER, "All Sliver creatures"); + private static final FilterPermanent countfilter = new FilterPermanent(SubType.SLIVER, "other Sliver on the battlefield"); static { countfilter.add(new AnotherPredicate()); diff --git a/Mage.Sets/src/mage/cards/s/SliverOverlord.java b/Mage.Sets/src/mage/cards/s/SliverOverlord.java index b003d7dafdd..712a053cdb2 100644 --- a/Mage.Sets/src/mage/cards/s/SliverOverlord.java +++ b/Mage.Sets/src/mage/cards/s/SliverOverlord.java @@ -35,10 +35,7 @@ import mage.abilities.effects.common.continuous.GainControlTargetEffect; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -74,7 +71,7 @@ public class SliverOverlord extends CardImpl { // {3}: Gain control of target Sliver. Ability ability = (new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainControlTargetEffect(Duration.EndOfGame), new ManaCostsImpl("{3}"))); - Target target = new TargetPermanent(new FilterCreaturePermanent("Sliver","Sliver")); + Target target = new TargetPermanent(new FilterCreaturePermanent(SubType.SLIVER,"Sliver")); ability.addTarget(target); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SoldeviExcavations.java b/Mage.Sets/src/mage/cards/s/SoldeviExcavations.java index ede80eb8df0..76d6fce8825 100644 --- a/Mage.Sets/src/mage/cards/s/SoldeviExcavations.java +++ b/Mage.Sets/src/mage/cards/s/SoldeviExcavations.java @@ -41,6 +41,7 @@ import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -57,7 +58,7 @@ public class SoldeviExcavations extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Island"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/s/SoullessOne.java b/Mage.Sets/src/mage/cards/s/SoullessOne.java index 0dd51c0cc2e..5b865f968b8 100644 --- a/Mage.Sets/src/mage/cards/s/SoullessOne.java +++ b/Mage.Sets/src/mage/cards/s/SoullessOne.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.FilterPermanent; @@ -80,8 +81,8 @@ class SoullessOneDynamicCount implements DynamicValue { public int calculate(Game game, Ability sourceAbility, Effect effect) { FilterPermanent zombiesBattlefield = new FilterPermanent("Zombies on the battlefield"); FilterCard zombiesInGraveyard = new FilterCard("Zombie cards in all graveyards"); - zombiesBattlefield.add(new SubtypePredicate("Zombie")); - zombiesInGraveyard.add(new SubtypePredicate("Zombie")); + zombiesBattlefield.add(new SubtypePredicate(SubType.ZOMBIE)); + zombiesInGraveyard.add(new SubtypePredicate(SubType.ZOMBIE)); int count = game.getBattlefield().count(zombiesBattlefield, sourceAbility.getSourceId(), sourceAbility.getControllerId(), game); for (UUID playerId : game.getState().getPlayersInRange(sourceAbility.getControllerId(), game)) { diff --git a/Mage.Sets/src/mage/cards/s/Sparksmith.java b/Mage.Sets/src/mage/cards/s/Sparksmith.java index afeab312079..88243878e46 100644 --- a/Mage.Sets/src/mage/cards/s/Sparksmith.java +++ b/Mage.Sets/src/mage/cards/s/Sparksmith.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.DamageControllerEffect; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class Sparksmith extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Goblins on the battlefield"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public Sparksmith(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SpiritOfTheHunt.java b/Mage.Sets/src/mage/cards/s/SpiritOfTheHunt.java index ed23848bbb0..d050ed2ce10 100644 --- a/Mage.Sets/src/mage/cards/s/SpiritOfTheHunt.java +++ b/Mage.Sets/src/mage/cards/s/SpiritOfTheHunt.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,8 +51,8 @@ public class SpiritOfTheHunt extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("each other creature you control that's a Wolf or Werewolf"); static { - filter.add(Predicates.or(new SubtypePredicate("Wolf"), - new SubtypePredicate("Werewolf"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.WOLF), + new SubtypePredicate(SubType.WEREWOLF))); } public SpiritOfTheHunt(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SpittingEarth.java b/Mage.Sets/src/mage/cards/s/SpittingEarth.java index a078a6405be..0688afad543 100644 --- a/Mage.Sets/src/mage/cards/s/SpittingEarth.java +++ b/Mage.Sets/src/mage/cards/s/SpittingEarth.java @@ -33,6 +33,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; @@ -46,7 +47,7 @@ public class SpittingEarth extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Mountain you control"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public SpittingEarth(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SpoilsOfVictory.java b/Mage.Sets/src/mage/cards/s/SpoilsOfVictory.java index e583b1442d6..0d1f7b53635 100644 --- a/Mage.Sets/src/mage/cards/s/SpoilsOfVictory.java +++ b/Mage.Sets/src/mage/cards/s/SpoilsOfVictory.java @@ -33,6 +33,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,11 +48,11 @@ public class SpoilsOfVictory extends CardImpl { private static final FilterCard filter = new FilterCard("Plains, Island, Swamp, Mountain, or Forest card"); static { filter.add(Predicates.or( - new SubtypePredicate("Plains"), - new SubtypePredicate("Island"), - new SubtypePredicate("Swamp"), - new SubtypePredicate("Mountain"), - new SubtypePredicate("Forest"))); + new SubtypePredicate(SubType.PLAINS), + new SubtypePredicate(SubType.ISLAND), + new SubtypePredicate(SubType.SWAMP), + new SubtypePredicate(SubType.MOUNTAIN), + new SubtypePredicate(SubType.FOREST))); } public SpoilsOfVictory(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SpreadingAlgae.java b/Mage.Sets/src/mage/cards/s/SpreadingAlgae.java index c1cce017b31..b866be74319 100644 --- a/Mage.Sets/src/mage/cards/s/SpreadingAlgae.java +++ b/Mage.Sets/src/mage/cards/s/SpreadingAlgae.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; @@ -52,7 +53,7 @@ public class SpreadingAlgae extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Swamp"); static{ - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public SpreadingAlgae(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StaffOfTheDeathMagus.java b/Mage.Sets/src/mage/cards/s/StaffOfTheDeathMagus.java index 97284848f8b..c1e6b2eb6cc 100644 --- a/Mage.Sets/src/mage/cards/s/StaffOfTheDeathMagus.java +++ b/Mage.Sets/src/mage/cards/s/StaffOfTheDeathMagus.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterSpell; import mage.filter.common.FilterLandPermanent; @@ -52,7 +53,7 @@ public class StaffOfTheDeathMagus extends CardImpl { static { filterSpell.add(new ColorPredicate(ObjectColor.BLACK)); - filterLand.add(new SubtypePredicate("Swamp")); + filterLand.add(new SubtypePredicate(SubType.SWAMP)); } public StaffOfTheDeathMagus(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StaffOfTheFlameMagus.java b/Mage.Sets/src/mage/cards/s/StaffOfTheFlameMagus.java index 7fdf68dccd0..6f44bdff051 100644 --- a/Mage.Sets/src/mage/cards/s/StaffOfTheFlameMagus.java +++ b/Mage.Sets/src/mage/cards/s/StaffOfTheFlameMagus.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterSpell; import mage.filter.common.FilterLandPermanent; @@ -52,7 +53,7 @@ public class StaffOfTheFlameMagus extends CardImpl { static { filterSpell.add(new ColorPredicate(ObjectColor.RED)); - filterLand.add(new SubtypePredicate("Mountain")); + filterLand.add(new SubtypePredicate(SubType.MOUNTAIN)); } public StaffOfTheFlameMagus(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StaffOfTheSunMagus.java b/Mage.Sets/src/mage/cards/s/StaffOfTheSunMagus.java index 6c96be9f78f..9c6666271c8 100644 --- a/Mage.Sets/src/mage/cards/s/StaffOfTheSunMagus.java +++ b/Mage.Sets/src/mage/cards/s/StaffOfTheSunMagus.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterSpell; import mage.filter.common.FilterLandPermanent; @@ -52,7 +53,7 @@ public class StaffOfTheSunMagus extends CardImpl { static { filterSpell.add(new ColorPredicate(ObjectColor.WHITE)); - filterLand.add(new SubtypePredicate("Plains")); + filterLand.add(new SubtypePredicate(SubType.PLAINS)); } public StaffOfTheSunMagus(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StandardBearer.java b/Mage.Sets/src/mage/cards/s/StandardBearer.java index 111bc6b1d64..612383f31d4 100644 --- a/Mage.Sets/src/mage/cards/s/StandardBearer.java +++ b/Mage.Sets/src/mage/cards/s/StandardBearer.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.ruleModifying.TargetsHaveToTargetPermanentI import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; @@ -52,7 +53,7 @@ public class StandardBearer extends CardImpl { this.toughness = new MageInt(1); // While choosing targets as part of casting a spell or activating an ability, your opponents must choose at least one Flagbearer on the battlefield if able. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new TargetsHaveToTargetPermanentIfAbleEffect(new FilterPermanent("Flagbearer", "one Flagbearer")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new TargetsHaveToTargetPermanentIfAbleEffect(new FilterPermanent(SubType.FLAGBEARER, "one Flagbearer")))); } public StandardBearer(final StandardBearer card) { diff --git a/Mage.Sets/src/mage/cards/s/StarlitSanctum.java b/Mage.Sets/src/mage/cards/s/StarlitSanctum.java index 1caded637bb..9dbe820e082 100644 --- a/Mage.Sets/src/mage/cards/s/StarlitSanctum.java +++ b/Mage.Sets/src/mage/cards/s/StarlitSanctum.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.game.Game; @@ -52,7 +53,7 @@ import mage.target.common.TargetControlledCreaturePermanent; */ public class StarlitSanctum extends CardImpl { - private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Cleric", "a Cleric creature"); + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.CLERIC, "a Cleric creature"); public StarlitSanctum(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.LAND},""); diff --git a/Mage.Sets/src/mage/cards/s/SteamFrigate.java b/Mage.Sets/src/mage/cards/s/SteamFrigate.java index a654a51557c..250fb6649da 100644 --- a/Mage.Sets/src/mage/cards/s/SteamFrigate.java +++ b/Mage.Sets/src/mage/cards/s/SteamFrigate.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.combat.CantAttackUnlessDefenderControllsPer import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; @@ -51,7 +52,7 @@ public class SteamFrigate extends CardImpl { this.toughness = new MageInt(3); // Steam Frigate can't attack unless defending player controls an Island. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island","an Island")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.ISLAND,"an Island")))); } public SteamFrigate(final SteamFrigate card) { diff --git a/Mage.Sets/src/mage/cards/s/Stenchskipper.java b/Mage.Sets/src/mage/cards/s/Stenchskipper.java index a0d57145eee..b37925324cd 100644 --- a/Mage.Sets/src/mage/cards/s/Stenchskipper.java +++ b/Mage.Sets/src/mage/cards/s/Stenchskipper.java @@ -29,16 +29,13 @@ package mage.cards.s; import java.util.UUID; import mage.MageInt; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.common.BeginningOfEndStepTriggeredAbility; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.effects.common.SacrificeSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.TargetController; -import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; /** @@ -62,7 +59,7 @@ public class Stenchskipper extends CardImpl { new SacrificeSourceEffect(), TargetController.ANY, new PermanentsOnTheBattlefieldCondition( - new FilterControlledCreaturePermanent("Goblin", "if you control no Goblins"), + new FilterControlledCreaturePermanent(SubType.GOBLIN, "if you control no Goblins"), ComparisonType.FEWER_THAN, 1), false)); diff --git a/Mage.Sets/src/mage/cards/s/StinkdrinkerBandit.java b/Mage.Sets/src/mage/cards/s/StinkdrinkerBandit.java index 24409457a97..50389ad6f1a 100644 --- a/Mage.Sets/src/mage/cards/s/StinkdrinkerBandit.java +++ b/Mage.Sets/src/mage/cards/s/StinkdrinkerBandit.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -56,7 +57,7 @@ public class StinkdrinkerBandit extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Rogue"); static { - filter.add(new SubtypePredicate("Rogue")); + filter.add(new SubtypePredicate(SubType.ROGUE)); } public StinkdrinkerBandit(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StoneforgeMystic.java b/Mage.Sets/src/mage/cards/s/StoneforgeMystic.java index 3b753f31b13..1d3c6c6f865 100644 --- a/Mage.Sets/src/mage/cards/s/StoneforgeMystic.java +++ b/Mage.Sets/src/mage/cards/s/StoneforgeMystic.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class StoneforgeMystic extends CardImpl { private static final FilterCard filter = new FilterCard("an Equipment card"); static { - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public StoneforgeMystic(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StrandsOfNight.java b/Mage.Sets/src/mage/cards/s/StrandsOfNight.java index bddef0065f3..f737bb36512 100644 --- a/Mage.Sets/src/mage/cards/s/StrandsOfNight.java +++ b/Mage.Sets/src/mage/cards/s/StrandsOfNight.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffec import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreatureCard; @@ -53,7 +54,7 @@ public class StrandsOfNight extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Swamp"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public StrandsOfNight(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StreamOfUnconsciousness.java b/Mage.Sets/src/mage/cards/s/StreamOfUnconsciousness.java index 1ec4db6ffe8..e8e66517d84 100644 --- a/Mage.Sets/src/mage/cards/s/StreamOfUnconsciousness.java +++ b/Mage.Sets/src/mage/cards/s/StreamOfUnconsciousness.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; @@ -49,7 +50,7 @@ public class StreamOfUnconsciousness extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Wizard"); static { - filter.add(new SubtypePredicate("Wizard")); + filter.add(new SubtypePredicate(SubType.WIZARD)); } public StreamOfUnconsciousness(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StreambedAquitects.java b/Mage.Sets/src/mage/cards/s/StreambedAquitects.java index c50a89de79c..d17fe78f7c0 100644 --- a/Mage.Sets/src/mage/cards/s/StreambedAquitects.java +++ b/Mage.Sets/src/mage/cards/s/StreambedAquitects.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -55,7 +56,7 @@ public class StreambedAquitects extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Merfolk creature"); static { - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK)); } public StreambedAquitects(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/Submerge.java b/Mage.Sets/src/mage/cards/s/Submerge.java index 14ebc4d2065..ac4fc799e4f 100644 --- a/Mage.Sets/src/mage/cards/s/Submerge.java +++ b/Mage.Sets/src/mage/cards/s/Submerge.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.PutOnLibraryTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; @@ -51,8 +52,8 @@ public class Submerge extends CardImpl { private static final FilterPermanent filterIsland = new FilterPermanent(); static { - filterForest.add(new SubtypePredicate(("Forest"))); - filterIsland.add(new SubtypePredicate(("Island"))); + filterForest.add(new SubtypePredicate((SubType.FOREST))); + filterIsland.add(new SubtypePredicate((SubType.ISLAND))); } public Submerge(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SulfurFalls.java b/Mage.Sets/src/mage/cards/s/SulfurFalls.java index 84ae46a19fe..7586c9f6048 100644 --- a/Mage.Sets/src/mage/cards/s/SulfurFalls.java +++ b/Mage.Sets/src/mage/cards/s/SulfurFalls.java @@ -40,6 +40,7 @@ import mage.abilities.mana.BlueManaAbility; import mage.abilities.mana.RedManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,7 +55,7 @@ public class SulfurFalls extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.add(Predicates.or(new SubtypePredicate("Island"), new SubtypePredicate("Mountain"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.ISLAND), new SubtypePredicate(SubType.MOUNTAIN))); } public SulfurFalls(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SummitApes.java b/Mage.Sets/src/mage/cards/s/SummitApes.java index 89c678e0937..b01b56ddee1 100644 --- a/Mage.Sets/src/mage/cards/s/SummitApes.java +++ b/Mage.Sets/src/mage/cards/s/SummitApes.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.MenaceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class SummitApes extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("a Mountain"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public SummitApes(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SunderingTitan.java b/Mage.Sets/src/mage/cards/s/SunderingTitan.java index 26f093240d1..f67ef096204 100644 --- a/Mage.Sets/src/mage/cards/s/SunderingTitan.java +++ b/Mage.Sets/src/mage/cards/s/SunderingTitan.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -95,9 +96,9 @@ class SunderingTitanDestroyLandEffect extends OneShotEffect { Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); Set lands = new HashSet<>(); if (controller != null && sourcePermanent != null) { - for (String landName : new String[]{"Forest", "Island", "Mountain", "Plains", "Swamp"}) { + for (String landName : SubType.getBasicLands(false)) { FilterLandPermanent filter = new FilterLandPermanent(landName + " to destroy"); - filter.add(new SubtypePredicate(landName)); + filter.add(new SubtypePredicate(SubType.byDescription(landName))); Target target = new TargetLandPermanent(1, 1, filter, true); if (target.canChoose(source.getSourceId(), source.getControllerId(), game)) { controller.chooseTarget(outcome, target, source, game); diff --git a/Mage.Sets/src/mage/cards/s/SunflareShaman.java b/Mage.Sets/src/mage/cards/s/SunflareShaman.java index 7f8b79d4727..3607938c052 100644 --- a/Mage.Sets/src/mage/cards/s/SunflareShaman.java +++ b/Mage.Sets/src/mage/cards/s/SunflareShaman.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -83,7 +84,7 @@ class SunflareShamanEffect extends OneShotEffect { private static final FilterCard filter = new FilterCard("Elemental"); static { - filter.add(new SubtypePredicate("Elemental")); + filter.add(new SubtypePredicate(SubType.ELEMENTAL)); } public SunflareShamanEffect() { diff --git a/Mage.Sets/src/mage/cards/s/SunpetalGrove.java b/Mage.Sets/src/mage/cards/s/SunpetalGrove.java index 07842502233..2181154f76e 100644 --- a/Mage.Sets/src/mage/cards/s/SunpetalGrove.java +++ b/Mage.Sets/src/mage/cards/s/SunpetalGrove.java @@ -42,6 +42,7 @@ import mage.abilities.mana.GreenManaAbility; import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -55,7 +56,7 @@ public class SunpetalGrove extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.add(Predicates.or(new SubtypePredicate("Forest"), new SubtypePredicate("Plains"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.FOREST), new SubtypePredicate(SubType.PLAINS))); } public SunpetalGrove(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SunriseSovereign.java b/Mage.Sets/src/mage/cards/s/SunriseSovereign.java index c7a8ed15a9f..850f4c43b63 100644 --- a/Mage.Sets/src/mage/cards/s/SunriseSovereign.java +++ b/Mage.Sets/src/mage/cards/s/SunriseSovereign.java @@ -36,6 +36,7 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class SunriseSovereign extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Giant"); static { - filter.add(new SubtypePredicate("Giant")); + filter.add(new SubtypePredicate(SubType.GIANT)); } public SunriseSovereign(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SunspireGatekeepers.java b/Mage.Sets/src/mage/cards/s/SunspireGatekeepers.java index 57d9223d059..d072fc9dd67 100644 --- a/Mage.Sets/src/mage/cards/s/SunspireGatekeepers.java +++ b/Mage.Sets/src/mage/cards/s/SunspireGatekeepers.java @@ -39,6 +39,7 @@ import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.KnightToken; @@ -53,7 +54,7 @@ public class SunspireGatekeepers extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent(); static { - filter.add(new SubtypePredicate("Gate")); + filter.add(new SubtypePredicate(SubType.GATE)); } public SunspireGatekeepers (UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/Swarmyard.java b/Mage.Sets/src/mage/cards/s/Swarmyard.java index 5e3ade041b7..4d83cdce23d 100644 --- a/Mage.Sets/src/mage/cards/s/Swarmyard.java +++ b/Mage.Sets/src/mage/cards/s/Swarmyard.java @@ -36,6 +36,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -52,10 +53,10 @@ public class Swarmyard extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Insect"), - new SubtypePredicate("Rat"), - new SubtypePredicate("Spider"), - new SubtypePredicate("Squirrel") + new SubtypePredicate(SubType.INSECT), + new SubtypePredicate(SubType.RAT), + new SubtypePredicate(SubType.SPIDER), + new SubtypePredicate(SubType.SQUIRREL) )); } diff --git a/Mage.Sets/src/mage/cards/s/SyggRiverGuide.java b/Mage.Sets/src/mage/cards/s/SyggRiverGuide.java index 0212163687f..470783e0af7 100644 --- a/Mage.Sets/src/mage/cards/s/SyggRiverGuide.java +++ b/Mage.Sets/src/mage/cards/s/SyggRiverGuide.java @@ -35,10 +35,7 @@ import mage.abilities.effects.common.continuous.GainProtectionFromColorTargetEff import mage.abilities.keyword.IslandwalkAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.Target; @@ -55,7 +52,7 @@ public class SyggRiverGuide extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Merfolk you control"); static { - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK)); } public SyggRiverGuide(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SylvanMessenger.java b/Mage.Sets/src/mage/cards/s/SylvanMessenger.java index b72f4f3d4ee..d3d1c3cef2b 100644 --- a/Mage.Sets/src/mage/cards/s/SylvanMessenger.java +++ b/Mage.Sets/src/mage/cards/s/SylvanMessenger.java @@ -35,6 +35,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.RevealLibraryPutIntoHandEffect; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class SylvanMessenger extends CardImpl { private static final FilterCard filter = new FilterCard("Elf cards"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public SylvanMessenger(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SynapseSliver.java b/Mage.Sets/src/mage/cards/s/SynapseSliver.java index 922c9a793d3..e664a365b7d 100644 --- a/Mage.Sets/src/mage/cards/s/SynapseSliver.java +++ b/Mage.Sets/src/mage/cards/s/SynapseSliver.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SetTargetPointer; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; /** @@ -55,7 +56,7 @@ public class SynapseSliver extends CardImpl { Effect effect = new DrawCardTargetEffect(1); effect.setText("its controller may draw a card"); this.addAbility(new DealsDamageToAPlayerAllTriggeredAbility(effect, - new FilterCreaturePermanent("Sliver", "a Sliver"), + new FilterCreaturePermanent(SubType.SLIVER, "a Sliver"), true, SetTargetPointer.PLAYER, true)); } diff --git a/Mage.Sets/src/mage/cards/t/TaintedField.java b/Mage.Sets/src/mage/cards/t/TaintedField.java index 00074fe3dee..e3690fddbac 100644 --- a/Mage.Sets/src/mage/cards/t/TaintedField.java +++ b/Mage.Sets/src/mage/cards/t/TaintedField.java @@ -39,6 +39,7 @@ import mage.abilities.mana.ActivateIfConditionManaAbility; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class TaintedField extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("you control a swamp"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public TaintedField(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TaintedPeak.java b/Mage.Sets/src/mage/cards/t/TaintedPeak.java index 2e0fc869383..8e64bb9e522 100644 --- a/Mage.Sets/src/mage/cards/t/TaintedPeak.java +++ b/Mage.Sets/src/mage/cards/t/TaintedPeak.java @@ -39,6 +39,7 @@ import mage.abilities.mana.ActivateIfConditionManaAbility; import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class TaintedPeak extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("you control a swamp"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public TaintedPeak(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TajNarSwordsmith.java b/Mage.Sets/src/mage/cards/t/TajNarSwordsmith.java index 370eebcc0c4..30cff5cc0df 100644 --- a/Mage.Sets/src/mage/cards/t/TajNarSwordsmith.java +++ b/Mage.Sets/src/mage/cards/t/TajNarSwordsmith.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -99,7 +100,7 @@ class TajNarSwordsmithEffect extends OneShotEffect { Cost cost = new GenericManaCost(costX); if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) { FilterCard filter = new FilterCard("Equipment card with converted mana cost " + costX + " or less"); - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, costX + 1)); new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, filter), false, true).apply(game, source); return true; diff --git a/Mage.Sets/src/mage/cards/t/TakenumaBleeder.java b/Mage.Sets/src/mage/cards/t/TakenumaBleeder.java index 571fcfe36fd..d386ef2b5cc 100644 --- a/Mage.Sets/src/mage/cards/t/TakenumaBleeder.java +++ b/Mage.Sets/src/mage/cards/t/TakenumaBleeder.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.players.Player; @@ -89,7 +90,7 @@ class TakenumaBleederEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - if (game.getBattlefield().countAll(new FilterCreaturePermanent("Demon", "Demon"), source.getControllerId(), game) < 1) { + if (game.getBattlefield().countAll(new FilterCreaturePermanent(SubType.DEMON, "Demon"), source.getControllerId(), game) < 1) { controller.loseLife(1, game, false); } return true; diff --git a/Mage.Sets/src/mage/cards/t/TalusPaladin.java b/Mage.Sets/src/mage/cards/t/TalusPaladin.java index 55890323695..80f85a9f759 100644 --- a/Mage.Sets/src/mage/cards/t/TalusPaladin.java +++ b/Mage.Sets/src/mage/cards/t/TalusPaladin.java @@ -36,10 +36,7 @@ import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.keyword.LifelinkAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.counters.CounterType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -84,7 +81,7 @@ class TalusPaladinTriggeredAbility extends TriggeredAbilityImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("all allies you control"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); } TalusPaladinTriggeredAbility() { diff --git a/Mage.Sets/src/mage/cards/t/TamiyosJournal.java b/Mage.Sets/src/mage/cards/t/TamiyosJournal.java index f6b025f8f6b..d96f8470e4b 100644 --- a/Mage.Sets/src/mage/cards/t/TamiyosJournal.java +++ b/Mage.Sets/src/mage/cards/t/TamiyosJournal.java @@ -36,10 +36,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.abilities.effects.keyword.InvestigateEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SuperType; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -56,7 +53,7 @@ public class TamiyosJournal extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("three Clues"); static { - filter.add(new SubtypePredicate("Clue")); + filter.add(new SubtypePredicate(SubType.CLUE)); } public TamiyosJournal(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TangleGolem.java b/Mage.Sets/src/mage/cards/t/TangleGolem.java index 79dc60cfe61..7e6eced91b6 100644 --- a/Mage.Sets/src/mage/cards/t/TangleGolem.java +++ b/Mage.Sets/src/mage/cards/t/TangleGolem.java @@ -33,6 +33,7 @@ import mage.abilities.keyword.AffinityForLandTypeAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; /** * @@ -47,7 +48,7 @@ public class TangleGolem extends CardImpl { this.toughness = new MageInt(4); // Affinity for Forests - this.addAbility(new AffinityForLandTypeAbility("Forest", "Forests")); + this.addAbility(new AffinityForLandTypeAbility(SubType.FOREST, "Forests")); } public TangleGolem(final TangleGolem card) { diff --git a/Mage.Sets/src/mage/cards/t/TelekineticSliver.java b/Mage.Sets/src/mage/cards/t/TelekineticSliver.java index 507bcefb330..d0e3858d1fc 100644 --- a/Mage.Sets/src/mage/cards/t/TelekineticSliver.java +++ b/Mage.Sets/src/mage/cards/t/TelekineticSliver.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.target.TargetPermanent; @@ -49,7 +50,7 @@ import mage.target.TargetPermanent; */ public class TelekineticSliver extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("Sliver", "All Slivers"); + private static final FilterPermanent filter = new FilterPermanent(SubType.SLIVER, "All Slivers"); public TelekineticSliver(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}{U}"); diff --git a/Mage.Sets/src/mage/cards/t/TerrorOfKruinPass.java b/Mage.Sets/src/mage/cards/t/TerrorOfKruinPass.java index 1e8a93ebbe3..5f60e62a492 100644 --- a/Mage.Sets/src/mage/cards/t/TerrorOfKruinPass.java +++ b/Mage.Sets/src/mage/cards/t/TerrorOfKruinPass.java @@ -44,10 +44,7 @@ import mage.abilities.keyword.MenaceAbility; import mage.abilities.keyword.TransformAbility; 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.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.ControllerPredicate; @@ -62,7 +59,7 @@ public class TerrorOfKruinPass extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf you control"); static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Werewolf")); + filter.add(new SubtypePredicate(SubType.WEREWOLF)); } public TerrorOfKruinPass(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TezzeretsSimulacrum.java b/Mage.Sets/src/mage/cards/t/TezzeretsSimulacrum.java index 31df0d66112..dd373e99a3b 100644 --- a/Mage.Sets/src/mage/cards/t/TezzeretsSimulacrum.java +++ b/Mage.Sets/src/mage/cards/t/TezzeretsSimulacrum.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterPlaneswalkerPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -58,7 +59,7 @@ public class TezzeretsSimulacrum extends CardImpl { // {T}: Target opponent loses 1 life. If you control a Tezzeret planeswalker, that player loses 3 life instead. FilterPlaneswalkerPermanent filter = new FilterPlaneswalkerPermanent(); - filter.add(new SubtypePredicate("Tezzeret")); + filter.add(new SubtypePredicate(SubType.TEZZERET)); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ConditionalOneShotEffect(new LoseLifeTargetEffect(3), new LoseLifeTargetEffect(1), new PermanentsOnTheBattlefieldCondition(filter), diff --git a/Mage.Sets/src/mage/cards/t/ThopterAssembly.java b/Mage.Sets/src/mage/cards/t/ThopterAssembly.java index 41ac58d9af7..f0b00a98ba5 100644 --- a/Mage.Sets/src/mage/cards/t/ThopterAssembly.java +++ b/Mage.Sets/src/mage/cards/t/ThopterAssembly.java @@ -36,6 +36,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -81,7 +82,7 @@ class ThopterAssemblyTriggeredAbility extends TriggeredAbilityImpl { private static final FilterPermanent filter = new FilterPermanent(); static { - filter.add(new SubtypePredicate("Thopter")); + filter.add(new SubtypePredicate(SubType.THOPTER)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/t/ThorntoothWitch.java b/Mage.Sets/src/mage/cards/t/ThorntoothWitch.java index 8e3ae3dbd53..659a18a881d 100644 --- a/Mage.Sets/src/mage/cards/t/ThorntoothWitch.java +++ b/Mage.Sets/src/mage/cards/t/ThorntoothWitch.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.FilterSpell; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; @@ -50,7 +51,7 @@ public class ThorntoothWitch extends CardImpl { private static final FilterSpell filter = new FilterSpell("Treefolk"); static { - filter.add(new SubtypePredicate("Treefolk")); + filter.add(new SubtypePredicate(SubType.TREEFOLK)); } public ThorntoothWitch(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/ThoughtweftTrio.java b/Mage.Sets/src/mage/cards/t/ThoughtweftTrio.java index db9299a27c3..6ef008351b1 100644 --- a/Mage.Sets/src/mage/cards/t/ThoughtweftTrio.java +++ b/Mage.Sets/src/mage/cards/t/ThoughtweftTrio.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; /** @@ -59,7 +60,7 @@ public class ThoughtweftTrio extends CardImpl { this.addAbility(VigilanceAbility.getInstance()); // Champion a Kithkin - this.addAbility(new ChampionAbility(this, "Kithkin", false)); + this.addAbility(new ChampionAbility(this, SubType.KITHKIN, false)); // Thoughtweft Trio can block any number of creatures. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockAdditionalCreatureEffect(0))); diff --git a/Mage.Sets/src/mage/cards/t/ThreeDreams.java b/Mage.Sets/src/mage/cards/t/ThreeDreams.java index ce491f56850..fb31d19920f 100644 --- a/Mage.Sets/src/mage/cards/t/ThreeDreams.java +++ b/Mage.Sets/src/mage/cards/t/ThreeDreams.java @@ -34,6 +34,7 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.cards.Cards; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -67,7 +68,7 @@ class ThreeDreamsTarget extends TargetCardInLibrary { private static final FilterCard aurafilter = new FilterCard("Aura cards with different names"); static { - aurafilter.add(new SubtypePredicate("Aura")); + aurafilter.add(new SubtypePredicate(SubType.AURA)); } public ThreeDreamsTarget() { diff --git a/Mage.Sets/src/mage/cards/t/ThreeVisits.java b/Mage.Sets/src/mage/cards/t/ThreeVisits.java index 854d09b37e4..9ce72fbdcba 100644 --- a/Mage.Sets/src/mage/cards/t/ThreeVisits.java +++ b/Mage.Sets/src/mage/cards/t/ThreeVisits.java @@ -32,6 +32,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterLandCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -44,7 +45,7 @@ public class ThreeVisits extends CardImpl { private static final FilterLandCard filter = new FilterLandCard("Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public ThreeVisits(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/ThundercloudShaman.java b/Mage.Sets/src/mage/cards/t/ThundercloudShaman.java index 1984ae017b3..24e140fe2c2 100644 --- a/Mage.Sets/src/mage/cards/t/ThundercloudShaman.java +++ b/Mage.Sets/src/mage/cards/t/ThundercloudShaman.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.DamageAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -52,8 +53,8 @@ public class ThundercloudShaman extends CardImpl { private static final FilterCreaturePermanent filterNonGiants = new FilterCreaturePermanent("non-Giant creature"); static { filterGiants.add(new ControllerPredicate(TargetController.YOU)); - filterGiants.add(new SubtypePredicate("Giant")); - filterNonGiants.add(Predicates.not(new SubtypePredicate("Giant"))); + filterGiants.add(new SubtypePredicate(SubType.GIANT)); + filterNonGiants.add(Predicates.not(new SubtypePredicate(SubType.GIANT))); } public ThundercloudShaman(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TidalCourier.java b/Mage.Sets/src/mage/cards/t/TidalCourier.java index 5deed7bce74..51b07f67966 100644 --- a/Mage.Sets/src/mage/cards/t/TidalCourier.java +++ b/Mage.Sets/src/mage/cards/t/TidalCourier.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.RevealLibraryPutIntoHandEffect; @@ -52,7 +53,7 @@ public class TidalCourier extends CardImpl { private static final FilterCard filter = new FilterCard("Merfolk cards"); static { - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK)); } public TidalCourier(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TimberProtector.java b/Mage.Sets/src/mage/cards/t/TimberProtector.java index 19323c56c56..cc07d608062 100644 --- a/Mage.Sets/src/mage/cards/t/TimberProtector.java +++ b/Mage.Sets/src/mage/cards/t/TimberProtector.java @@ -30,6 +30,7 @@ package mage.cards.t; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; @@ -55,10 +56,10 @@ public class TimberProtector extends CardImpl { private static final FilterControlledPermanent filterBoth = new FilterControlledPermanent("Other Treefolk and Forests you control"); static { - filterTreefolk.add(new SubtypePredicate("Treefolk")); + filterTreefolk.add(new SubtypePredicate(SubType.TREEFOLK)); filterBoth.add(Predicates.or( - new SubtypePredicate("Treefolk"), - new SubtypePredicate("Forest"))); + new SubtypePredicate(SubType.TREEFOLK), + new SubtypePredicate(SubType.FOREST))); filterBoth.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/t/TirelessTracker.java b/Mage.Sets/src/mage/cards/t/TirelessTracker.java index bde2ae80e28..865316682ee 100644 --- a/Mage.Sets/src/mage/cards/t/TirelessTracker.java +++ b/Mage.Sets/src/mage/cards/t/TirelessTracker.java @@ -36,6 +36,7 @@ import mage.abilities.effects.keyword.InvestigateEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterControlledLandPermanent; @@ -54,7 +55,7 @@ public class TirelessTracker extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Clue"); static { - filter.add(new SubtypePredicate("Clue")); + filter.add(new SubtypePredicate(SubType.CLUE)); } public TirelessTracker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TitanOfEternalFire.java b/Mage.Sets/src/mage/cards/t/TitanOfEternalFire.java index 3c45ab8922d..24381fad891 100644 --- a/Mage.Sets/src/mage/cards/t/TitanOfEternalFire.java +++ b/Mage.Sets/src/mage/cards/t/TitanOfEternalFire.java @@ -41,6 +41,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.target.common.TargetCreatureOrPlayer; @@ -62,7 +63,7 @@ public class TitanOfEternalFire extends CardImpl { Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new ManaCostsImpl("{R}")); ability.addCost(new TapSourceCost()); ability.addTarget(new TargetCreatureOrPlayer()); - Effect effect = new GainAbilityControlledEffect(ability, Duration.WhileOnBattlefield, new FilterCreaturePermanent("Human", "Each Human creature")); + Effect effect = new GainAbilityControlledEffect(ability, Duration.WhileOnBattlefield, new FilterCreaturePermanent(SubType.HUMAN, "Each Human creature")); effect.setText("Each Human creature you control has \"{R}, {T}: This creature deals 1 damage to target creature or player.\""); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/cards/t/ToxinSliver.java b/Mage.Sets/src/mage/cards/t/ToxinSliver.java index 74dd074377c..23a5b17bad0 100644 --- a/Mage.Sets/src/mage/cards/t/ToxinSliver.java +++ b/Mage.Sets/src/mage/cards/t/ToxinSliver.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SetTargetPointer; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; /** @@ -53,7 +54,7 @@ public class ToxinSliver extends CardImpl { // Whenever a Sliver deals combat damage to a creature, destroy that creature. It can't be regenerated. this.addAbility(new DealsDamageToACreatureAllTriggeredAbility( new DestroyTargetEffect(true), false, - new FilterCreaturePermanent("Sliver","a Sliver"), + new FilterCreaturePermanent(SubType.SLIVER,"a Sliver"), SetTargetPointer.PERMANENT, true)); } diff --git a/Mage.Sets/src/mage/cards/t/TreefolkHarbinger.java b/Mage.Sets/src/mage/cards/t/TreefolkHarbinger.java index a5e752204f6..3a6a537f5c7 100644 --- a/Mage.Sets/src/mage/cards/t/TreefolkHarbinger.java +++ b/Mage.Sets/src/mage/cards/t/TreefolkHarbinger.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutOnLibraryEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class TreefolkHarbinger extends CardImpl { private static final FilterCard filter = new FilterCard("a Treefolk or Forest card"); static { - filter.add(Predicates.or(new SubtypePredicate("Treefolk"), new SubtypePredicate("Forest"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.TREEFOLK), new SubtypePredicate(SubType.FOREST))); } public TreefolkHarbinger(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TreefolkSeedlings.java b/Mage.Sets/src/mage/cards/t/TreefolkSeedlings.java index 34827a754d8..fc342c60ad9 100644 --- a/Mage.Sets/src/mage/cards/t/TreefolkSeedlings.java +++ b/Mage.Sets/src/mage/cards/t/TreefolkSeedlings.java @@ -30,6 +30,7 @@ package mage.cards.t; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; @@ -49,7 +50,7 @@ public class TreefolkSeedlings extends CardImpl { final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control"); static { - filterLands.add(new SubtypePredicate("Forest")); + filterLands.add(new SubtypePredicate(SubType.FOREST)); } public TreefolkSeedlings(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TrevasRuins.java b/Mage.Sets/src/mage/cards/t/TrevasRuins.java index eb42111f022..61f0f71e477 100644 --- a/Mage.Sets/src/mage/cards/t/TrevasRuins.java +++ b/Mage.Sets/src/mage/cards/t/TrevasRuins.java @@ -37,6 +37,7 @@ import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class TrevasRuins extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("non-Lair land"); static{ - filter.add(Predicates.not(new SubtypePredicate("Lair"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.LAIR))); } public TrevasRuins(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TrialOfKnowledge.java b/Mage.Sets/src/mage/cards/t/TrialOfKnowledge.java index 90533602571..028049e832c 100644 --- a/Mage.Sets/src/mage/cards/t/TrialOfKnowledge.java +++ b/Mage.Sets/src/mage/cards/t/TrialOfKnowledge.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class TrialOfKnowledge extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Cartouche"); static { - filter.add(new SubtypePredicate("Cartouche")); + filter.add(new SubtypePredicate(SubType.CARTOUCHE)); } public TrialOfKnowledge(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TrialOfSolidarity.java b/Mage.Sets/src/mage/cards/t/TrialOfSolidarity.java index 27eb2fe9288..e9892dabbd4 100644 --- a/Mage.Sets/src/mage/cards/t/TrialOfSolidarity.java +++ b/Mage.Sets/src/mage/cards/t/TrialOfSolidarity.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class TrialOfSolidarity extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Cartouche"); static { - filter.add(new SubtypePredicate("Cartouche")); + filter.add(new SubtypePredicate(SubType.CARTOUCHE)); } public TrialOfSolidarity(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TrialOfStrength.java b/Mage.Sets/src/mage/cards/t/TrialOfStrength.java index 649c3ac3413..265ced956ac 100644 --- a/Mage.Sets/src/mage/cards/t/TrialOfStrength.java +++ b/Mage.Sets/src/mage/cards/t/TrialOfStrength.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.ReturnToHandSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.BeastToken3; @@ -48,7 +49,7 @@ public class TrialOfStrength extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Cartouche"); static { - filter.add(new SubtypePredicate("Cartouche")); + filter.add(new SubtypePredicate(SubType.CARTOUCHE)); } public TrialOfStrength(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TribalUnity.java b/Mage.Sets/src/mage/cards/t/TribalUnity.java index ed0a1e1f111..43d2602aa09 100644 --- a/Mage.Sets/src/mage/cards/t/TribalUnity.java +++ b/Mage.Sets/src/mage/cards/t/TribalUnity.java @@ -42,6 +42,7 @@ import mage.choices.ChoiceImpl; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -94,7 +95,7 @@ class TribalUnityEffect extends OneShotEffect { if (player != null) { Choice typeChoice = new ChoiceImpl(true); typeChoice.setMessage("Choose a creature type:"); - typeChoice.setChoices(CardRepository.instance.getCreatureTypes()); + typeChoice.setChoices(SubType.getCreatureTypes(false)); while (!player.choose(outcome, typeChoice, game)) { if (!player.canRespond()) { return false; @@ -104,7 +105,7 @@ class TribalUnityEffect extends OneShotEffect { game.informPlayers(sourceObject.getLogName() + " chosen type: " + typeChoice.getChoice()); } FilterCreaturePermanent filterCreaturePermanent = new FilterCreaturePermanent(); - filterCreaturePermanent.add(new SubtypePredicate(typeChoice.getChoice())); + filterCreaturePermanent.add(new SubtypePredicate(SubType.byDescription(typeChoice.getChoice()))); game.addEffect(new BoostAllEffect( boost, boost, Duration.EndOfTurn, filterCreaturePermanent, false), source); return true; diff --git a/Mage.Sets/src/mage/cards/t/TrooperArmor.java b/Mage.Sets/src/mage/cards/t/TrooperArmor.java index 3b48b2c7f5e..9a36018faad 100644 --- a/Mage.Sets/src/mage/cards/t/TrooperArmor.java +++ b/Mage.Sets/src/mage/cards/t/TrooperArmor.java @@ -37,12 +37,7 @@ import mage.abilities.effects.common.continuous.BoostEquippedEffect; import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AttachmentType; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.SetTargetPointer; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; /** @@ -63,7 +58,7 @@ public class TrooperArmor extends CardImpl { this.addAbility(new EntersBattlefieldControlledTriggeredAbility( Zone.BATTLEFIELD, new AttachEffect(Outcome.BoostCreature, "attach {this} to it"), - new FilterPermanent("Trooper", "Trooper"), + new FilterPermanent(SubType.TROOPER, "Trooper"), true, SetTargetPointer.PERMANENT, null)); diff --git a/Mage.Sets/src/mage/cards/t/TrooperCommando.java b/Mage.Sets/src/mage/cards/t/TrooperCommando.java index 23230b89f6e..e51ec8322a8 100644 --- a/Mage.Sets/src/mage/cards/t/TrooperCommando.java +++ b/Mage.Sets/src/mage/cards/t/TrooperCommando.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class TrooperCommando extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures"); static { - filter.add(new SubtypePredicate("Trooper")); + filter.add(new SubtypePredicate(SubType.TROOPER)); } public TrooperCommando(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TsabosDecree.java b/Mage.Sets/src/mage/cards/t/TsabosDecree.java index 577cbf22ed5..8b3db974347 100644 --- a/Mage.Sets/src/mage/cards/t/TsabosDecree.java +++ b/Mage.Sets/src/mage/cards/t/TsabosDecree.java @@ -41,6 +41,7 @@ import mage.choices.Choice; import mage.choices.ChoiceImpl; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -92,7 +93,7 @@ class TsabosDecreeEffect extends OneShotEffect { if (player != null) { Choice typeChoice = new ChoiceImpl(true); typeChoice.setMessage("Choose a creature type:"); - typeChoice.setChoices(CardRepository.instance.getCreatureTypes()); + typeChoice.setChoices(SubType.getCreatureTypes(false)); while (!player.choose(outcome, typeChoice, game)) { if (!player.canRespond()) { return false; @@ -103,7 +104,7 @@ class TsabosDecreeEffect extends OneShotEffect { } targetPlayer.revealCards("hand of " + targetPlayer.getName(), targetPlayer.getHand(), game); FilterCard filterCard = new FilterCard(); - filterCard.add(new SubtypePredicate(typeChoice.getChoice())); + filterCard.add(new SubtypePredicate(SubType.byDescription(typeChoice.getChoice()))); List toDiscard = new ArrayList<>(); for (Card card : targetPlayer.getHand().getCards(game)) { if(filterCard.match(card, game)) { @@ -114,7 +115,7 @@ class TsabosDecreeEffect extends OneShotEffect { targetPlayer.discard(card, source, game); } FilterCreaturePermanent filterCreaturePermanent = new FilterCreaturePermanent(); - filterCreaturePermanent.add(new SubtypePredicate(typeChoice.getChoice())); + filterCreaturePermanent.add(new SubtypePredicate(SubType.byDescription(typeChoice.getChoice()))); for (Permanent creature : game.getBattlefield().getActivePermanents(filterCreaturePermanent, source.getSourceId(), game)) { if (creature.getControllerId().equals(targetPlayer.getId())) { creature.destroy(source.getSourceId(), game, true); diff --git a/Mage.Sets/src/mage/cards/t/TuktukScrapper.java b/Mage.Sets/src/mage/cards/t/TuktukScrapper.java index d63cce6dc92..b8d66149c41 100644 --- a/Mage.Sets/src/mage/cards/t/TuktukScrapper.java +++ b/Mage.Sets/src/mage/cards/t/TuktukScrapper.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -126,7 +127,7 @@ class TuktukScrapperEffect extends OneShotEffect { private static final FilterControlledPermanent filter = new FilterControlledPermanent(); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); } public TuktukScrapperEffect() { diff --git a/Mage.Sets/src/mage/cards/t/Tunnel.java b/Mage.Sets/src/mage/cards/t/Tunnel.java index 5352281e464..45b912e9d9f 100644 --- a/Mage.Sets/src/mage/cards/t/Tunnel.java +++ b/Mage.Sets/src/mage/cards/t/Tunnel.java @@ -32,6 +32,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; @@ -45,7 +46,7 @@ public class Tunnel extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Wall"); static { - filter.add(new SubtypePredicate("Wall")); + filter.add(new SubtypePredicate(SubType.WALL)); } public Tunnel(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/u/UlrichUncontestedAlpha.java b/Mage.Sets/src/mage/cards/u/UlrichUncontestedAlpha.java index 7b2f5da4f7b..2332fa04435 100644 --- a/Mage.Sets/src/mage/cards/u/UlrichUncontestedAlpha.java +++ b/Mage.Sets/src/mage/cards/u/UlrichUncontestedAlpha.java @@ -38,10 +38,7 @@ import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SuperType; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -96,7 +93,7 @@ class UlrichUncontestedAlphaAbility extends TriggeredAbilityImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Werewolf creature you don't control"); static { - filter.add(Predicates.not(new SubtypePredicate("Werewolf"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.WEREWOLF))); filter.add(new ControllerPredicate(TargetController.NOT_YOU)); } diff --git a/Mage.Sets/src/mage/cards/u/UlrichsKindred.java b/Mage.Sets/src/mage/cards/u/UlrichsKindred.java index 309fb2158d1..7b6d46e9b0d 100644 --- a/Mage.Sets/src/mage/cards/u/UlrichsKindred.java +++ b/Mage.Sets/src/mage/cards/u/UlrichsKindred.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -54,7 +55,7 @@ public class UlrichsKindred extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking Wolf or Werewolf"); static { - filter.add(Predicates.or(new SubtypePredicate("Wolf"), new SubtypePredicate("Werewolf"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.WOLF), new SubtypePredicate(SubType.WEREWOLF))); filter.add(new AttackingPredicate()); } diff --git a/Mage.Sets/src/mage/cards/u/UlvenwaldMysteries.java b/Mage.Sets/src/mage/cards/u/UlvenwaldMysteries.java index f7dc392fb5b..a18776a2ff5 100644 --- a/Mage.Sets/src/mage/cards/u/UlvenwaldMysteries.java +++ b/Mage.Sets/src/mage/cards/u/UlvenwaldMysteries.java @@ -35,6 +35,7 @@ import mage.abilities.effects.keyword.InvestigateEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; @@ -60,7 +61,7 @@ public class UlvenwaldMysteries extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); filter.add(Predicates.not(new TokenPredicate())); - filterClue.add(new SubtypePredicate("Clue")); + filterClue.add(new SubtypePredicate(SubType.CLUE)); } public UlvenwaldMysteries(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/u/UndeadSlayer.java b/Mage.Sets/src/mage/cards/u/UndeadSlayer.java index a73e342cc4f..4f0e6ce8611 100644 --- a/Mage.Sets/src/mage/cards/u/UndeadSlayer.java +++ b/Mage.Sets/src/mage/cards/u/UndeadSlayer.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.ColoredManaSymbol; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.Predicates; @@ -55,9 +56,9 @@ public class UndeadSlayer extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Skeleton"), - new SubtypePredicate("Vampire"), - new SubtypePredicate("Zombie"))); + new SubtypePredicate(SubType.SKELETON), + new SubtypePredicate(SubType.VAMPIRE), + new SubtypePredicate(SubType.ZOMBIE))); } public UndeadSlayer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/u/UnstoppableAsh.java b/Mage.Sets/src/mage/cards/u/UnstoppableAsh.java index cf7cd7cf123..a7d0acdd2fe 100644 --- a/Mage.Sets/src/mage/cards/u/UnstoppableAsh.java +++ b/Mage.Sets/src/mage/cards/u/UnstoppableAsh.java @@ -27,6 +27,7 @@ */ package mage.cards.u; +import java.util.EnumSet; import java.util.UUID; import mage.MageInt; import mage.abilities.common.BecomesBlockedAllTriggeredAbility; @@ -38,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.ControllerPredicate; @@ -67,7 +69,7 @@ public class UnstoppableAsh extends CardImpl { this.addAbility(TrampleAbility.getInstance()); // Champion a Treefolk or Warrior - this.addAbility(new ChampionAbility(this, new String[]{"Treefolk", "Warrior"}, false)); + this.addAbility(new ChampionAbility(this, EnumSet.of(SubType.TREEFOLK, SubType.WARRIOR), false)); // Whenever a creature you control becomes blocked, it gets +0/+5 until end of turn. Effect effect = new BoostTargetEffect(0, 5, Duration.EndOfTurn); diff --git a/Mage.Sets/src/mage/cards/u/UtopiaSprawl.java b/Mage.Sets/src/mage/cards/u/UtopiaSprawl.java index f14d8ebe06f..7aaf46d503c 100644 --- a/Mage.Sets/src/mage/cards/u/UtopiaSprawl.java +++ b/Mage.Sets/src/mage/cards/u/UtopiaSprawl.java @@ -39,10 +39,7 @@ import mage.abilities.keyword.EnchantAbility; import mage.abilities.mana.TriggeredManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.ColoredManaSymbol; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterLandPermanent; import mage.game.Game; import mage.game.events.GameEvent; @@ -58,7 +55,7 @@ import mage.target.common.TargetLandPermanent; */ public class UtopiaSprawl extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("Forest", "Forest"); + private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.FOREST, "Forest"); public UtopiaSprawl(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{G}"); diff --git a/Mage.Sets/src/mage/cards/v/Valleymaker.java b/Mage.Sets/src/mage/cards/v/Valleymaker.java index 53cda433c37..6947b6180fa 100644 --- a/Mage.Sets/src/mage/cards/v/Valleymaker.java +++ b/Mage.Sets/src/mage/cards/v/Valleymaker.java @@ -40,6 +40,7 @@ import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -56,8 +57,8 @@ public class Valleymaker extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Mountain"); private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("a Forest"); static { - filter.add(new SubtypePredicate("Mountain")); - filter2.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); + filter2.add(new SubtypePredicate(SubType.FOREST)); } public Valleymaker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/Valor.java b/Mage.Sets/src/mage/cards/v/Valor.java index e71e8b28ccb..07cd413756e 100644 --- a/Mage.Sets/src/mage/cards/v/Valor.java +++ b/Mage.Sets/src/mage/cards/v/Valor.java @@ -39,6 +39,7 @@ import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -57,7 +58,7 @@ public class Valor extends CardImpl { static { filter.add(new CardTypePredicate(CardType.LAND)); - filter.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.PLAINS)); } public Valor(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VampireNocturnus.java b/Mage.Sets/src/mage/cards/v/VampireNocturnus.java index ef90a7a9056..44b90b6e466 100644 --- a/Mage.Sets/src/mage/cards/v/VampireNocturnus.java +++ b/Mage.Sets/src/mage/cards/v/VampireNocturnus.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; @@ -85,7 +86,7 @@ class VampireNocturnusAbility extends StaticAbility { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); } public VampireNocturnusAbility() { diff --git a/Mage.Sets/src/mage/cards/v/VedalkenAethermage.java b/Mage.Sets/src/mage/cards/v/VedalkenAethermage.java index 938740a4139..35aafe1d40b 100644 --- a/Mage.Sets/src/mage/cards/v/VedalkenAethermage.java +++ b/Mage.Sets/src/mage/cards/v/VedalkenAethermage.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.FlashAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,8 +54,8 @@ public class VedalkenAethermage extends CardImpl { private static final FilterCard filter2 = new FilterCard("Wizard"); static { - filter.add(new SubtypePredicate("Sliver")); - filter2.add(new SubtypePredicate("Wizard")); + filter.add(new SubtypePredicate(SubType.SLIVER)); + filter2.add(new SubtypePredicate(SubType.WIZARD)); } public VedalkenAethermage(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VeilbornGhoul.java b/Mage.Sets/src/mage/cards/v/VeilbornGhoul.java index 32fd85a8551..8250da283fa 100644 --- a/Mage.Sets/src/mage/cards/v/VeilbornGhoul.java +++ b/Mage.Sets/src/mage/cards/v/VeilbornGhoul.java @@ -29,6 +29,7 @@ package mage.cards.v; import java.util.UUID; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.CantBlockAbility; @@ -48,7 +49,7 @@ public class VeilbornGhoul extends CardImpl { private static final FilterPermanent filter = new FilterControlledLandPermanent("a Swamp"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public VeilbornGhoul(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VerdantCatacombs.java b/Mage.Sets/src/mage/cards/v/VerdantCatacombs.java index daa230d6aa8..0460d8c9859 100644 --- a/Mage.Sets/src/mage/cards/v/VerdantCatacombs.java +++ b/Mage.Sets/src/mage/cards/v/VerdantCatacombs.java @@ -28,12 +28,14 @@ package mage.cards.v; +import java.util.EnumSet; import java.util.UUID; import mage.ObjectColor; import mage.constants.CardType; import mage.abilities.common.FetchLandActivatedAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; /** * @@ -44,7 +46,7 @@ public class VerdantCatacombs extends CardImpl { public VerdantCatacombs(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.LAND},null); this.frameColor = new ObjectColor("BG"); - this.addAbility(new FetchLandActivatedAbility(new String[] {"Forest", "Swamp"})); + this.addAbility(new FetchLandActivatedAbility(EnumSet.of(SubType.FOREST, SubType.SWAMP))); } public VerdantCatacombs(final VerdantCatacombs card) { diff --git a/Mage.Sets/src/mage/cards/v/VernalBloom.java b/Mage.Sets/src/mage/cards/v/VernalBloom.java index a7ac4b5bd13..a3b6b961352 100644 --- a/Mage.Sets/src/mage/cards/v/VernalBloom.java +++ b/Mage.Sets/src/mage/cards/v/VernalBloom.java @@ -36,6 +36,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.ColoredManaSymbol; import mage.constants.SetTargetPointer; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class VernalBloom extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public VernalBloom(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}"); diff --git a/Mage.Sets/src/mage/cards/v/VeteranCathar.java b/Mage.Sets/src/mage/cards/v/VeteranCathar.java index 3d23c146ff5..dbe95b00779 100644 --- a/Mage.Sets/src/mage/cards/v/VeteranCathar.java +++ b/Mage.Sets/src/mage/cards/v/VeteranCathar.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -57,7 +58,7 @@ public class VeteranCathar extends CardImpl { // {3}{W}: Target Human gains double strike until end of turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{3}{W}")); - ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("Human", "Human"))); + ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent(SubType.HUMAN, "Human"))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/v/VeteranSwordsmith.java b/Mage.Sets/src/mage/cards/v/VeteranSwordsmith.java index 6e6c7d730ea..c2eae10b4f8 100644 --- a/Mage.Sets/src/mage/cards/v/VeteranSwordsmith.java +++ b/Mage.Sets/src/mage/cards/v/VeteranSwordsmith.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class VeteranSwordsmith extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier"); static { - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public VeteranSwordsmith(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VeteranWarleader.java b/Mage.Sets/src/mage/cards/v/VeteranWarleader.java index 0d6dd26f592..70f55a19fd2 100644 --- a/Mage.Sets/src/mage/cards/v/VeteranWarleader.java +++ b/Mage.Sets/src/mage/cards/v/VeteranWarleader.java @@ -48,10 +48,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.choices.Choice; import mage.choices.ChoiceImpl; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; @@ -69,7 +66,7 @@ public class VeteranWarleader extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); } public VeteranWarleader(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VictimOfNight.java b/Mage.Sets/src/mage/cards/v/VictimOfNight.java index e0f06e35268..ec27696a35f 100644 --- a/Mage.Sets/src/mage/cards/v/VictimOfNight.java +++ b/Mage.Sets/src/mage/cards/v/VictimOfNight.java @@ -32,6 +32,7 @@ import mage.constants.CardType; import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -46,9 +47,9 @@ public class VictimOfNight extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Vampire, non-Werewolf, non-Zombie creature"); static { - filter.add(Predicates.not(new SubtypePredicate("Vampire"))); - filter.add(Predicates.not(new SubtypePredicate("Werewolf"))); - filter.add(Predicates.not(new SubtypePredicate("Zombie"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.VAMPIRE))); + filter.add(Predicates.not(new SubtypePredicate(SubType.WEREWOLF))); + filter.add(Predicates.not(new SubtypePredicate(SubType.ZOMBIE))); } public VictimOfNight(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VigilanteJustice.java b/Mage.Sets/src/mage/cards/v/VigilanteJustice.java index bdfebf32821..d253d78e505 100644 --- a/Mage.Sets/src/mage/cards/v/VigilanteJustice.java +++ b/Mage.Sets/src/mage/cards/v/VigilanteJustice.java @@ -29,6 +29,7 @@ package mage.cards.v; import java.util.UUID; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.abilities.Ability; import mage.abilities.common.CreatureEntersBattlefieldTriggeredAbility; @@ -48,7 +49,7 @@ public class VigilanteJustice extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public VigilanteJustice(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VildinPackAlpha.java b/Mage.Sets/src/mage/cards/v/VildinPackAlpha.java index e974d1b7ce6..9ad08bebfd5 100644 --- a/Mage.Sets/src/mage/cards/v/VildinPackAlpha.java +++ b/Mage.Sets/src/mage/cards/v/VildinPackAlpha.java @@ -40,11 +40,7 @@ import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.SetTargetPointer; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; @@ -67,7 +63,7 @@ public class VildinPackAlpha extends CardImpl { this.nightCard = true; // Whenever a Werewolf enters the battlefield under your control, you may transform it. - this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new VildinPackAlphaEffect(), new FilterCreaturePermanent("Werewolf", "a Werewolf"), true, SetTargetPointer.PERMANENT, null)); + this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new VildinPackAlphaEffect(), new FilterCreaturePermanent(SubType.WEREWOLF, "a Werewolf"), true, SetTargetPointer.PERMANENT, null)); // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Vildin-Pack Alpha. TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new TransformSourceEffect(false), TargetController.ANY, false); diff --git a/Mage.Sets/src/mage/cards/v/VindictiveMob.java b/Mage.Sets/src/mage/cards/v/VindictiveMob.java index 15e7f7be95d..68cdae91a2b 100644 --- a/Mage.Sets/src/mage/cards/v/VindictiveMob.java +++ b/Mage.Sets/src/mage/cards/v/VindictiveMob.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class VindictiveMob extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("can't be blocked by Saprolings"); static { - filter.add(new SubtypePredicate("Saproling")); + filter.add(new SubtypePredicate(SubType.SAPROLING)); } public VindictiveMob(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VitasporeThallid.java b/Mage.Sets/src/mage/cards/v/VitasporeThallid.java index 74089f530b4..4bb902070cd 100644 --- a/Mage.Sets/src/mage/cards/v/VitasporeThallid.java +++ b/Mage.Sets/src/mage/cards/v/VitasporeThallid.java @@ -40,10 +40,7 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.HasteAbility; 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.constants.*; import mage.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -59,7 +56,7 @@ public class VitasporeThallid extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Saproling"); static { - filter.add(new SubtypePredicate("Saproling")); + filter.add(new SubtypePredicate(SubType.SAPROLING)); } public VitasporeThallid(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VodalianKnights.java b/Mage.Sets/src/mage/cards/v/VodalianKnights.java index 929f27ceb32..74975b4ee61 100644 --- a/Mage.Sets/src/mage/cards/v/VodalianKnights.java +++ b/Mage.Sets/src/mage/cards/v/VodalianKnights.java @@ -28,7 +28,7 @@ package mage.cards.v; import mage.MageInt; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.common.ControlsPermanentsControllerTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; @@ -40,9 +40,6 @@ import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; import java.util.UUID; @@ -64,11 +61,11 @@ public class VodalianKnights extends CardImpl { this.addAbility(FirstStrikeAbility.getInstance()); // Vodalian Knights can't attack unless defending player controls an Island. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island", "an Island")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.ISLAND, "an Island")))); // When you control no Islands, sacrifice Vodalian Knights. this.addAbility(new ControlsPermanentsControllerTriggeredAbility( - new FilterLandPermanent("Island", "no Islands"), ComparisonType.EQUAL_TO, 0, + new FilterLandPermanent(SubType.ISLAND, "no Islands"), ComparisonType.EQUAL_TO, 0, new SacrificeSourceEffect())); // {U}: Vodalian Knights gains flying until end of turn. diff --git a/Mage.Sets/src/mage/cards/v/VodalianSerpent.java b/Mage.Sets/src/mage/cards/v/VodalianSerpent.java index 289f6ec3ab0..4ae56481f25 100644 --- a/Mage.Sets/src/mage/cards/v/VodalianSerpent.java +++ b/Mage.Sets/src/mage/cards/v/VodalianSerpent.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.KickerAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterLandPermanent; @@ -58,7 +59,7 @@ public class VodalianSerpent extends CardImpl { // Kicker {2} this.addAbility(new KickerAbility("{2}")); // Vodalian Serpent can't attack unless defending player controls an Island. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island", "an Island")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.ISLAND, "an Island")))); // If Vodalian Serpent was kicked, it enters the battlefield with four +1/+1 counters on it. this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(4)), KickedCondition.instance, "If {this} was kicked, it enters the battlefield with four +1/+1 counters on it.", "")); diff --git a/Mage.Sets/src/mage/cards/v/VolcanicEruption.java b/Mage.Sets/src/mage/cards/v/VolcanicEruption.java index 5b45b976af6..b96d9a9a71d 100644 --- a/Mage.Sets/src/mage/cards/v/VolcanicEruption.java +++ b/Mage.Sets/src/mage/cards/v/VolcanicEruption.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterLandPermanent; @@ -50,7 +51,7 @@ import mage.target.common.TargetLandPermanent; */ public class VolcanicEruption extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain", "Mountain"); + private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.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/v/VulshokBattlemaster.java b/Mage.Sets/src/mage/cards/v/VulshokBattlemaster.java index 4c91e350389..adcc29788a9 100644 --- a/Mage.Sets/src/mage/cards/v/VulshokBattlemaster.java +++ b/Mage.Sets/src/mage/cards/v/VulshokBattlemaster.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -92,7 +93,7 @@ public class VulshokBattlemaster extends CardImpl { Permanent battlemaster = game.getPermanent(source.getSourceId()); if (battlemaster != null) { FilterPermanent filter = new FilterPermanent(); - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); for (Permanent equipment : game.getBattlefield().getAllActivePermanents(filter, game)) { if (equipment != null) { //If an Equipment can’t equip Vulshok Battlemaster, it isn’t attached to the Battlemaster, and it doesn’t become unattached (if it’s attached to a creature). (http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=48125) diff --git a/Mage.Sets/src/mage/cards/w/WalkingDesecration.java b/Mage.Sets/src/mage/cards/w/WalkingDesecration.java index b1223abe533..37c753a675e 100644 --- a/Mage.Sets/src/mage/cards/w/WalkingDesecration.java +++ b/Mage.Sets/src/mage/cards/w/WalkingDesecration.java @@ -42,10 +42,7 @@ import mage.cards.CardSetInfo; import mage.cards.repository.CardRepository; import mage.choices.Choice; import mage.choices.ChoiceImpl; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -97,7 +94,7 @@ class WalkingDesecrationEffect extends OneShotEffect { if (player != null) { Choice typeChoice = new ChoiceImpl(true); typeChoice.setMessage("Choose a creature type:"); - typeChoice.setChoices(CardRepository.instance.getCreatureTypes()); + typeChoice.setChoices(SubType.getCreatureTypes(false)); while (!player.choose(outcome, typeChoice, game)) { if (!player.canRespond()) { return false; @@ -107,7 +104,7 @@ class WalkingDesecrationEffect extends OneShotEffect { game.informPlayers(sourceObject.getLogName() + " chosen type: " + typeChoice.getChoice()); } FilterCreaturePermanent filter = new FilterCreaturePermanent(); - filter.add(new SubtypePredicate(typeChoice.getChoice())); + filter.add(new SubtypePredicate(SubType.byDescription(typeChoice.getChoice()))); RequirementEffect effect = new AttacksIfAbleAllEffect(filter, Duration.EndOfTurn); game.addEffect(effect, source); return true; diff --git a/Mage.Sets/src/mage/cards/w/WanderingMage.java b/Mage.Sets/src/mage/cards/w/WanderingMage.java index 649bf7cf2dc..a8f4cfda518 100644 --- a/Mage.Sets/src/mage/cards/w/WanderingMage.java +++ b/Mage.Sets/src/mage/cards/w/WanderingMage.java @@ -40,6 +40,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; @@ -62,8 +63,8 @@ public class WanderingMage extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Cleric"), - new SubtypePredicate("Wizard"))); + new SubtypePredicate(SubType.CLERIC), + new SubtypePredicate(SubType.WIZARD))); } public WanderingMage(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WanderwineProphets.java b/Mage.Sets/src/mage/cards/w/WanderwineProphets.java index 145e24626c3..ac8a812ac60 100644 --- a/Mage.Sets/src/mage/cards/w/WanderwineProphets.java +++ b/Mage.Sets/src/mage/cards/w/WanderwineProphets.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.ChampionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; @@ -62,7 +63,7 @@ public class WanderwineProphets extends CardImpl { this.toughness = new MageInt(4); // Champion a Merfolk - this.addAbility(new ChampionAbility(this, "Merfolk", false)); + this.addAbility(new ChampionAbility(this, SubType.MERCENARY, false)); // Whenever Wanderwine Prophets deals combat damage to a player, you may sacrifice a Merfolk. If you do, take an extra turn after this one. Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new AddExtraTurnControllerEffect(), true); ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(1, 1, filter, true))); diff --git a/Mage.Sets/src/mage/cards/w/WardSliver.java b/Mage.Sets/src/mage/cards/w/WardSliver.java index 21fe8439d77..6965735f4aa 100644 --- a/Mage.Sets/src/mage/cards/w/WardSliver.java +++ b/Mage.Sets/src/mage/cards/w/WardSliver.java @@ -38,12 +38,7 @@ import mage.abilities.effects.common.ChooseColorEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; @@ -91,7 +86,7 @@ class WardSliverGainAbilityControlledEffect extends ContinuousEffectImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Slivers"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } protected FilterPermanent protectionFilter; diff --git a/Mage.Sets/src/mage/cards/w/WatcherSliver.java b/Mage.Sets/src/mage/cards/w/WatcherSliver.java index 947aba24de9..1b5a7791f76 100644 --- a/Mage.Sets/src/mage/cards/w/WatcherSliver.java +++ b/Mage.Sets/src/mage/cards/w/WatcherSliver.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; @@ -44,7 +45,7 @@ import mage.filter.common.FilterCreaturePermanent; */ public class WatcherSliver extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Sliver", "All Sliver creatures"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SLIVER, "All Sliver creatures"); public WatcherSliver(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}"); diff --git a/Mage.Sets/src/mage/cards/w/WaterWurm.java b/Mage.Sets/src/mage/cards/w/WaterWurm.java index 05e602a81df..5ade8cf312e 100644 --- a/Mage.Sets/src/mage/cards/w/WaterWurm.java +++ b/Mage.Sets/src/mage/cards/w/WaterWurm.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; @@ -46,7 +47,7 @@ import mage.filter.FilterPermanent; */ public class WaterWurm extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("Island", "Island"); + private static final FilterPermanent filter = new FilterPermanent(SubType.ISLAND, "Island"); public WaterWurm(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}"); diff --git a/Mage.Sets/src/mage/cards/w/WaxingMoon.java b/Mage.Sets/src/mage/cards/w/WaxingMoon.java index 7e881be28e1..2df2a789860 100644 --- a/Mage.Sets/src/mage/cards/w/WaxingMoon.java +++ b/Mage.Sets/src/mage/cards/w/WaxingMoon.java @@ -36,6 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; @@ -52,7 +53,7 @@ public class WaxingMoon extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf you control"); static { - filter.add(new SubtypePredicate("Werewolf")); + filter.add(new SubtypePredicate(SubType.WEREWOLF)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/w/WeaponsTrainer.java b/Mage.Sets/src/mage/cards/w/WeaponsTrainer.java index 3105af123a2..c5d21db64cf 100644 --- a/Mage.Sets/src/mage/cards/w/WeaponsTrainer.java +++ b/Mage.Sets/src/mage/cards/w/WeaponsTrainer.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class WeaponsTrainer extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("an Equipment"); static { - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public WeaponsTrainer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WeightOfConscience.java b/Mage.Sets/src/mage/cards/w/WeightOfConscience.java index b77db39c7b7..04f48c5cf57 100644 --- a/Mage.Sets/src/mage/cards/w/WeightOfConscience.java +++ b/Mage.Sets/src/mage/cards/w/WeightOfConscience.java @@ -37,10 +37,7 @@ import mage.abilities.effects.common.combat.CantAttackAttachedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AttachmentType; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.TappedPredicate; @@ -146,7 +143,7 @@ class WeightOfConscienceTarget extends TargetControlledCreaturePermanent { for (Permanent permanent : game.getBattlefield().getActivePermanents(filterUntapped, sourceControllerId, game)) { for (String subtype : permanent.getSubtype(game)) { if (!CardUtil.isNonCreatureSubtype(subtype)) { - if (game.getBattlefield().contains(new FilterControlledCreaturePermanent(subtype, subtype), sourceControllerId, game, 2)) { + if (game.getBattlefield().contains(new FilterControlledCreaturePermanent(SubType.byDescription(subtype), subtype), sourceControllerId, game, 2)) { possibleTargets.add(permanent.getId()); } } @@ -190,7 +187,7 @@ class WeightOfConscienceTarget extends TargetControlledCreaturePermanent { for (Permanent permanent : game.getBattlefield().getActivePermanents(filterUntapped, source.getControllerId(), game)) { for (String subtype : permanent.getSubtype(game)) { if (!CardUtil.isNonCreatureSubtype(subtype)) { - if (game.getBattlefield().contains(new FilterControlledCreaturePermanent(subtype, subtype), source.getControllerId(), game, 2)) { + if (game.getBattlefield().contains(new FilterControlledCreaturePermanent(SubType.byDescription(subtype), subtype), source.getControllerId(), game, 2)) { return true; } } diff --git a/Mage.Sets/src/mage/cards/w/WindsweptHeath.java b/Mage.Sets/src/mage/cards/w/WindsweptHeath.java index 359970e50ab..d87e4a79ac5 100644 --- a/Mage.Sets/src/mage/cards/w/WindsweptHeath.java +++ b/Mage.Sets/src/mage/cards/w/WindsweptHeath.java @@ -27,12 +27,14 @@ */ package mage.cards.w; +import java.util.EnumSet; import java.util.UUID; import mage.ObjectColor; import mage.constants.CardType; import mage.abilities.common.FetchLandActivatedAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; /** * @@ -45,7 +47,7 @@ public class WindsweptHeath extends CardImpl { this.frameColor = new ObjectColor("GW"); // {tap}, Pay 1 life, Sacrifice Windswept Heath: Search your library for a Forest or Plains card and put it onto the battlefield. Then shuffle your library. - this.addAbility(new FetchLandActivatedAbility(new String[]{"Forest", "Plains"})); + this.addAbility(new FetchLandActivatedAbility(EnumSet.of(SubType.FOREST, SubType.PLAINS))); } public WindsweptHeath(final WindsweptHeath card) { diff --git a/Mage.Sets/src/mage/cards/w/WirewoodChanneler.java b/Mage.Sets/src/mage/cards/w/WirewoodChanneler.java index c32f35d3370..44db9ef1f94 100644 --- a/Mage.Sets/src/mage/cards/w/WirewoodChanneler.java +++ b/Mage.Sets/src/mage/cards/w/WirewoodChanneler.java @@ -36,6 +36,7 @@ import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class WirewoodChanneler extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Elves"); static { - filter.add(new SubtypePredicate(("Elf"))); + filter.add(new SubtypePredicate((SubType.ELF))); } public WirewoodChanneler(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WirewoodHerald.java b/Mage.Sets/src/mage/cards/w/WirewoodHerald.java index d3b0f75a0d1..0392d894ccf 100644 --- a/Mage.Sets/src/mage/cards/w/WirewoodHerald.java +++ b/Mage.Sets/src/mage/cards/w/WirewoodHerald.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -47,7 +48,7 @@ public class WirewoodHerald extends CardImpl { private static final FilterCard filter = new FilterCard("Elf card"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public WirewoodHerald(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WirewoodHivemaster.java b/Mage.Sets/src/mage/cards/w/WirewoodHivemaster.java index 1b279352080..4402dc0a4e5 100644 --- a/Mage.Sets/src/mage/cards/w/WirewoodHivemaster.java +++ b/Mage.Sets/src/mage/cards/w/WirewoodHivemaster.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -50,7 +51,7 @@ public class WirewoodHivemaster extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another nontoken Elf"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); filter.add(new AnotherPredicate()); filter.add(Predicates.not(new TokenPredicate())); } diff --git a/Mage.Sets/src/mage/cards/w/WirewoodLodge.java b/Mage.Sets/src/mage/cards/w/WirewoodLodge.java index 9a3f2fb76a5..69ab06ef63d 100644 --- a/Mage.Sets/src/mage/cards/w/WirewoodLodge.java +++ b/Mage.Sets/src/mage/cards/w/WirewoodLodge.java @@ -37,6 +37,7 @@ import mage.abilities.mana.ColorlessManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class WirewoodLodge extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Elf"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public WirewoodLodge(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WirewoodPride.java b/Mage.Sets/src/mage/cards/w/WirewoodPride.java index 74bf4f679d0..40b9fbbfe98 100644 --- a/Mage.Sets/src/mage/cards/w/WirewoodPride.java +++ b/Mage.Sets/src/mage/cards/w/WirewoodPride.java @@ -35,6 +35,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; @@ -47,7 +48,7 @@ public class WirewoodPride extends CardImpl { private static final FilterCreaturePermanent elfCount = new FilterCreaturePermanent("Elves"); static { - elfCount.add(new SubtypePredicate("Elf")); + elfCount.add(new SubtypePredicate(SubType.ELF)); } public WirewoodPride(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WirewoodSavage.java b/Mage.Sets/src/mage/cards/w/WirewoodSavage.java index 6184a9ac70a..445a01d7e1e 100644 --- a/Mage.Sets/src/mage/cards/w/WirewoodSavage.java +++ b/Mage.Sets/src/mage/cards/w/WirewoodSavage.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class WirewoodSavage extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("a Beast"); static { - filter.add(new SubtypePredicate("Beast")); + filter.add(new SubtypePredicate(SubType.BEAST)); } public WirewoodSavage(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WirewoodSymbiote.java b/Mage.Sets/src/mage/cards/w/WirewoodSymbiote.java index 0f0afe6e9cc..b9a71cd8efd 100644 --- a/Mage.Sets/src/mage/cards/w/WirewoodSymbiote.java +++ b/Mage.Sets/src/mage/cards/w/WirewoodSymbiote.java @@ -29,6 +29,7 @@ package mage.cards.w; import java.util.UUID; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; @@ -51,7 +52,7 @@ public class WirewoodSymbiote extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Elf"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public WirewoodSymbiote(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WitheringGaze.java b/Mage.Sets/src/mage/cards/w/WitheringGaze.java index 9de0caf83c4..1280f782f90 100644 --- a/Mage.Sets/src/mage/cards/w/WitheringGaze.java +++ b/Mage.Sets/src/mage/cards/w/WitheringGaze.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; @@ -76,7 +77,7 @@ class WitheringGazeEffect extends OneShotEffect { private static final FilterCard filter = new FilterCard("Forest or green card"); static { - filter.add(Predicates.or(new SubtypePredicate("Forest"), + filter.add(Predicates.or(new SubtypePredicate(SubType.FOREST), new ColorPredicate(ObjectColor.GREEN))); } diff --git a/Mage.Sets/src/mage/cards/w/WizenedCenn.java b/Mage.Sets/src/mage/cards/w/WizenedCenn.java index ba4d4cc144f..cdb6a538799 100644 --- a/Mage.Sets/src/mage/cards/w/WizenedCenn.java +++ b/Mage.Sets/src/mage/cards/w/WizenedCenn.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class WizenedCenn extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Kithkin creatures"); static { - filter.add(new SubtypePredicate("Kithkin")); + filter.add(new SubtypePredicate(SubType.KITHKIN)); } public WizenedCenn(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WolfhuntersQuiver.java b/Mage.Sets/src/mage/cards/w/WolfhuntersQuiver.java index 65d61aed484..da28ef6f9da 100644 --- a/Mage.Sets/src/mage/cards/w/WolfhuntersQuiver.java +++ b/Mage.Sets/src/mage/cards/w/WolfhuntersQuiver.java @@ -29,10 +29,7 @@ package mage.cards.w; import java.util.UUID; import mage.abilities.Ability; -import mage.constants.AttachmentType; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.TapSourceCost; @@ -57,7 +54,7 @@ public class WolfhuntersQuiver extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf creature"); static { - filter.add(new SubtypePredicate("Werewolf")); + filter.add(new SubtypePredicate(SubType.WEREWOLF)); } public WolfhuntersQuiver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/Wonder.java b/Mage.Sets/src/mage/cards/w/Wonder.java index 0abdf43ecb3..bec9b9315fb 100644 --- a/Mage.Sets/src/mage/cards/w/Wonder.java +++ b/Mage.Sets/src/mage/cards/w/Wonder.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -58,7 +59,7 @@ public class Wonder extends CardImpl { static { filter.add(new CardTypePredicate(CardType.LAND)); - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public Wonder(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WoodElves.java b/Mage.Sets/src/mage/cards/w/WoodElves.java index 60e337a8c3e..a9bb3643cd2 100644 --- a/Mage.Sets/src/mage/cards/w/WoodElves.java +++ b/Mage.Sets/src/mage/cards/w/WoodElves.java @@ -34,6 +34,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterLandCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -46,7 +47,7 @@ public class WoodElves extends CardImpl { private static final FilterLandCard filter = new FilterLandCard("Forest"); static{ - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public WoodElves(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WoodedFoothills.java b/Mage.Sets/src/mage/cards/w/WoodedFoothills.java index e94cd5a5132..6dda0ad0851 100644 --- a/Mage.Sets/src/mage/cards/w/WoodedFoothills.java +++ b/Mage.Sets/src/mage/cards/w/WoodedFoothills.java @@ -27,12 +27,14 @@ */ package mage.cards.w; +import java.util.EnumSet; import java.util.UUID; import mage.ObjectColor; import mage.constants.CardType; import mage.abilities.common.FetchLandActivatedAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; /** * @@ -45,7 +47,7 @@ public class WoodedFoothills extends CardImpl { this.frameColor = new ObjectColor("RG"); // {tap}, Pay 1 life, Sacrifice Wooded Foothills: Search your library for a Mountain or Forest card and put it onto the battlefield. Then shuffle your library. - this.addAbility(new FetchLandActivatedAbility(new String[]{"Mountain", "Forest"})); + this.addAbility(new FetchLandActivatedAbility(EnumSet.of(SubType.MOUNTAIN, SubType.FOREST))); } public WoodedFoothills(final WoodedFoothills card) { diff --git a/Mage.Sets/src/mage/cards/w/WoodlandCemetery.java b/Mage.Sets/src/mage/cards/w/WoodlandCemetery.java index 6da88f127fc..242ca9076e6 100644 --- a/Mage.Sets/src/mage/cards/w/WoodlandCemetery.java +++ b/Mage.Sets/src/mage/cards/w/WoodlandCemetery.java @@ -40,6 +40,7 @@ import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.GreenManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,7 +55,7 @@ public class WoodlandCemetery extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.add(Predicates.or(new SubtypePredicate("Forest"), new SubtypePredicate("Swamp"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.FOREST), new SubtypePredicate(SubType.SWAMP))); } public WoodlandCemetery(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WoodlandGuidance.java b/Mage.Sets/src/mage/cards/w/WoodlandGuidance.java index 8d466ed4071..a503c22a4bf 100644 --- a/Mage.Sets/src/mage/cards/w/WoodlandGuidance.java +++ b/Mage.Sets/src/mage/cards/w/WoodlandGuidance.java @@ -35,6 +35,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.abilities.effects.common.UntapAllLandsControllerEffect; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.target.common.TargetCardInYourGraveyard; @@ -52,7 +53,7 @@ public class WoodlandGuidance extends CardImpl { this.getSpellAbility().addTarget(new TargetCardInYourGraveyard()); // Clash with an opponent. If you win, untap all Forest you control - this.getSpellAbility().addEffect(new DoIfClashWonEffect(new UntapAllLandsControllerEffect(new FilterLandPermanent("Forest", "Forests")))); + this.getSpellAbility().addEffect(new DoIfClashWonEffect(new UntapAllLandsControllerEffect(new FilterLandPermanent(SubType.FOREST, "Forests")))); // Remove WoodlandGuidance from the game this.getSpellAbility().addEffect(ExileSpellEffect.getInstance()); diff --git a/Mage.Sets/src/mage/cards/w/WoodwraithCorrupter.java b/Mage.Sets/src/mage/cards/w/WoodwraithCorrupter.java index bbee4b3786b..e4b3a67be60 100644 --- a/Mage.Sets/src/mage/cards/w/WoodwraithCorrupter.java +++ b/Mage.Sets/src/mage/cards/w/WoodwraithCorrupter.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,7 +55,7 @@ public class WoodwraithCorrupter extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public WoodwraithCorrupter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WordOfBlasting.java b/Mage.Sets/src/mage/cards/w/WordOfBlasting.java index 7ba1959bdf9..7a501b7afeb 100644 --- a/Mage.Sets/src/mage/cards/w/WordOfBlasting.java +++ b/Mage.Sets/src/mage/cards/w/WordOfBlasting.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; @@ -48,7 +49,7 @@ public class WordOfBlasting extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Wall"); static { - filter.add(new SubtypePredicate("Wall")); + filter.add(new SubtypePredicate(SubType.WALL)); } public WordOfBlasting(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WortBoggartAuntie.java b/Mage.Sets/src/mage/cards/w/WortBoggartAuntie.java index 021d3e5293c..35b2e472f40 100644 --- a/Mage.Sets/src/mage/cards/w/WortBoggartAuntie.java +++ b/Mage.Sets/src/mage/cards/w/WortBoggartAuntie.java @@ -35,6 +35,7 @@ import mage.abilities.keyword.FearAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.constants.TargetController; import mage.filter.FilterCard; @@ -52,7 +53,7 @@ public class WortBoggartAuntie extends CardImpl { private static final FilterCard filter = new FilterCard("Goblin card from your graveyard"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public WortBoggartAuntie(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WrensRunPackmaster.java b/Mage.Sets/src/mage/cards/w/WrensRunPackmaster.java index 3d75f732fe4..1bc3159c48c 100644 --- a/Mage.Sets/src/mage/cards/w/WrensRunPackmaster.java +++ b/Mage.Sets/src/mage/cards/w/WrensRunPackmaster.java @@ -39,10 +39,7 @@ import mage.abilities.keyword.ChampionAbility; import mage.abilities.keyword.DeathtouchAbility; 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.constants.*; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.ControllerPredicate; @@ -69,7 +66,7 @@ public class WrensRunPackmaster extends CardImpl { this.toughness = new MageInt(5); // Champion an Elf - this.addAbility(new ChampionAbility(this, "Elf", false)); + this.addAbility(new ChampionAbility(this, SubType.ELF, false)); // {2}{G}: Create a 2/2 green Wolf creature token. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new WolfToken("LRW")), new ManaCostsImpl<>("{2}{G}"))); diff --git a/Mage.Sets/src/mage/cards/w/WuAdmiral.java b/Mage.Sets/src/mage/cards/w/WuAdmiral.java index 01321ff435a..ff6d1d47425 100644 --- a/Mage.Sets/src/mage/cards/w/WuAdmiral.java +++ b/Mage.Sets/src/mage/cards/w/WuAdmiral.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; @@ -46,7 +47,7 @@ import mage.filter.FilterPermanent; */ public class WuAdmiral extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("Island", "Island"); + private static final FilterPermanent filter = new FilterPermanent(SubType.ISLAND, "Island"); public WuAdmiral(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}"); diff --git a/Mage.Sets/src/mage/cards/w/WuWarship.java b/Mage.Sets/src/mage/cards/w/WuWarship.java index 26c73689b7d..b7657a87c3f 100644 --- a/Mage.Sets/src/mage/cards/w/WuWarship.java +++ b/Mage.Sets/src/mage/cards/w/WuWarship.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.combat.CantAttackUnlessDefenderControllsPer import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; @@ -51,7 +52,7 @@ public class WuWarship extends CardImpl { this.toughness = new MageInt(3); // Wu Warship can't attack unless defending player controls an Island. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island","an Island")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent(SubType.ISLAND,"an Island")))); } public WuWarship(final WuWarship card) { diff --git a/Mage.Sets/src/mage/cards/z/ZadasCommando.java b/Mage.Sets/src/mage/cards/z/ZadasCommando.java index 6f91f8570d0..9105802eef4 100644 --- a/Mage.Sets/src/mage/cards/z/ZadasCommando.java +++ b/Mage.Sets/src/mage/cards/z/ZadasCommando.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -56,7 +57,7 @@ public class ZadasCommando extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Ally you control"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/z/ZhalfirinCommander.java b/Mage.Sets/src/mage/cards/z/ZhalfirinCommander.java index f6daad40325..55c1da48ef0 100644 --- a/Mage.Sets/src/mage/cards/z/ZhalfirinCommander.java +++ b/Mage.Sets/src/mage/cards/z/ZhalfirinCommander.java @@ -39,6 +39,7 @@ import mage.abilities.keyword.FlankingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class ZhalfirinCommander extends CardImpl { static final private FilterCreaturePermanent filter = new FilterCreaturePermanent("Knight creature"); static{ - filter.add(new SubtypePredicate("Knight")); + filter.add(new SubtypePredicate(SubType.KNIGHT)); } public ZhalfirinCommander(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/z/ZirilanOfTheClaw.java b/Mage.Sets/src/mage/cards/z/ZirilanOfTheClaw.java index 38d15c06569..9d69e9baf19 100644 --- a/Mage.Sets/src/mage/cards/z/ZirilanOfTheClaw.java +++ b/Mage.Sets/src/mage/cards/z/ZirilanOfTheClaw.java @@ -106,7 +106,7 @@ class ZirilanOfTheClawEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { FilterPermanentCard filter = new FilterPermanentCard("a Dragon permanent card"); - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); TargetCardInLibrary target = new TargetCardInLibrary(filter); if (controller.searchLibrary(target, game)) { Card card = controller.getLibrary().getCard(target.getFirstTarget(), game); diff --git a/Mage.Sets/src/mage/cards/z/ZombieApocalypse.java b/Mage.Sets/src/mage/cards/z/ZombieApocalypse.java index fa5b1495ab6..b85b2e2f8d7 100644 --- a/Mage.Sets/src/mage/cards/z/ZombieApocalypse.java +++ b/Mage.Sets/src/mage/cards/z/ZombieApocalypse.java @@ -36,6 +36,7 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; @@ -74,8 +75,8 @@ class ZombieApocalypseEffect extends OneShotEffect { private static final FilterCreaturePermanent filterHuman = new FilterCreaturePermanent(); static { - filterZombie.add(new SubtypePredicate("Zombie")); - filterHuman.add(new SubtypePredicate("Human")); + filterZombie.add(new SubtypePredicate(SubType.ZOMBIE)); + filterHuman.add(new SubtypePredicate(SubType.HUMAN)); } public ZombieApocalypseEffect() { diff --git a/Mage.Sets/src/mage/cards/z/ZuberiGoldenFeather.java b/Mage.Sets/src/mage/cards/z/ZuberiGoldenFeather.java index 055235b3971..084aa258bca 100644 --- a/Mage.Sets/src/mage/cards/z/ZuberiGoldenFeather.java +++ b/Mage.Sets/src/mage/cards/z/ZuberiGoldenFeather.java @@ -33,10 +33,7 @@ import mage.abilities.effects.common.continuous.BoostAllEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import java.util.UUID; @@ -47,7 +44,7 @@ import java.util.UUID; */ public class ZuberiGoldenFeather extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Griffin", "Griffin creatures"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.GRIFFIN, "Griffin creatures"); public ZuberiGoldenFeather(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}"); diff --git a/Mage.Sets/src/mage/cards/z/ZulaportChainmage.java b/Mage.Sets/src/mage/cards/z/ZulaportChainmage.java index d2e998f382a..db946887f31 100644 --- a/Mage.Sets/src/mage/cards/z/ZulaportChainmage.java +++ b/Mage.Sets/src/mage/cards/z/ZulaportChainmage.java @@ -37,6 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; @@ -54,7 +55,7 @@ public class ZulaportChainmage extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Ally you control"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage/src/main/java/mage/abilities/common/FetchLandActivatedAbility.java b/Mage/src/main/java/mage/abilities/common/FetchLandActivatedAbility.java index 4185dc26efe..9ebf0cb8b42 100644 --- a/Mage/src/main/java/mage/abilities/common/FetchLandActivatedAbility.java +++ b/Mage/src/main/java/mage/abilities/common/FetchLandActivatedAbility.java @@ -83,7 +83,7 @@ public class FetchLandActivatedAbility extends ActivatedAbilityImpl { private String subTypeNames(Set subTypes) { StringBuilder sb = new StringBuilder(); for (SubType subType: subTypes) { - sb.append(subType).append(" or "); + sb.append(subType.getDescription()).append(" or "); } return sb.substring(0, sb.length() - 4); } diff --git a/Mage/src/main/java/mage/constants/SubType.java b/Mage/src/main/java/mage/constants/SubType.java index da8a5994e19..6a691255f61 100644 --- a/Mage/src/main/java/mage/constants/SubType.java +++ b/Mage/src/main/java/mage/constants/SubType.java @@ -6,92 +6,133 @@ import java.util.Set; import java.util.stream.Collectors; public enum SubType { - ARCANE("Arcane", SubTypeSet.SpellType), - TRAP("Trap", SubTypeSet.SpellType), + ARCANE("Arcane", SubTypeSet.SpellType, false), + TRAP("Trap", SubTypeSet.SpellType, false), - FOREST("Forest", SubTypeSet.BasicLandType), - ISLAND("Island", SubTypeSet.BasicLandType), - MOUNTAIN("Mountain", SubTypeSet.BasicLandType), - PLAINS("Plains", SubTypeSet.BasicLandType), - SWAMP("Swamp", SubTypeSet.BasicLandType), - DESERT("Desert", SubTypeSet.NonBasicLandType), - GATE("Gate", SubTypeSet.NonBasicLandType), - LOCUS("Locus", SubTypeSet.NonBasicLandType), - URZAS("Urza's", SubTypeSet.NonBasicLandType), - MINE("Mine", SubTypeSet.NonBasicLandType), - POWER_PLANT("Power-Plant", SubTypeSet.NonBasicLandType), - TOWER("Tower", SubTypeSet.NonBasicLandType), + FOREST("Forest", SubTypeSet.BasicLandType, false), + ISLAND("Island", SubTypeSet.BasicLandType, false), + MOUNTAIN("Mountain", SubTypeSet.BasicLandType, false), + PLAINS("Plains", SubTypeSet.BasicLandType, false), + SWAMP("Swamp", SubTypeSet.BasicLandType, false), + DESERT("Desert", SubTypeSet.NonBasicLandType, false), + GATE("Gate", SubTypeSet.NonBasicLandType, false), + LAIR("Lair", SubTypeSet.NonBasicLandType, false), + LOCUS("Locus", SubTypeSet.NonBasicLandType, false), + URZAS("Urza's", SubTypeSet.NonBasicLandType, false), + MINE("Mine", SubTypeSet.NonBasicLandType, false), + POWER_PLANT("Power-Plant", SubTypeSet.NonBasicLandType, false), + TOWER("Tower", SubTypeSet.NonBasicLandType, false), - AURA("Aura", SubTypeSet.EchanemtType), - CARTOUCHE("Cartouche", SubTypeSet.EchanemtType), - SHRINE("Shrine", SubTypeSet.EchanemtType), + AURA("Aura", SubTypeSet.EnchantmentType, false), + CARTOUCHE("Cartouche", SubTypeSet.EnchantmentType, false), + CURSE("Curse", SubTypeSet.EnchantmentType, false), + SHRINE("Shrine", SubTypeSet.EnchantmentType, false), - EQUIPMENT("Equipment", SubTypeSet.ArtifactType), - FORTIFICATION("Fortification", SubTypeSet.ArtifactType), - VEHICLE("Vehicle", SubTypeSet.ArtifactType), + CLUE("Clue", SubTypeSet.ArtifactType, false), + EQUIPMENT("Equipment", SubTypeSet.ArtifactType, false), + FORTIFICATION("Fortification", SubTypeSet.ArtifactType, false), + VEHICLE("Vehicle", SubTypeSet.ArtifactType, false), - ALLY("Ally", SubTypeSet.CreatureType), - ARTIFICER("Artificer", SubTypeSet.CreatureType), - ASSASSIN("Assassin", SubTypeSet.CreatureType), - BARBARION("Barbarian", SubTypeSet.CreatureType), - BEAST("Beast", SubTypeSet.CreatureType), - BERSERKER("Berserker", SubTypeSet.CreatureType), - BIRD("Bird", SubTypeSet.CreatureType), - CAT("Cat", SubTypeSet.CreatureType), - CEPHALID("Cephalid", SubTypeSet.CreatureType), - CLERIC("Cleric", SubTypeSet.CreatureType), - DEMON("Demon", SubTypeSet.CreatureType), - DRAGON("Dragon", SubTypeSet.CreatureType), - DROID("Droid", SubTypeSet.CreatureType), - DWARF("Dwarf", SubTypeSet.CreatureType), - ELDRAZI("Eldrazi", SubTypeSet.CreatureType), - ELEMENTAL("Elemental", SubTypeSet.CreatureType), - ELF("Elf", SubTypeSet.CreatureType), - FAERIE("Faerie", SubTypeSet.CreatureType), - FOX("Fox", SubTypeSet.CreatureType), - FUNGUS("Fungus", SubTypeSet.CreatureType), - GIANT("Giant", SubTypeSet.CreatureType), - GOAT("Goat", SubTypeSet.CreatureType), - GOBLIN("Goblin", SubTypeSet.CreatureType), - GORGON("Gorgon", SubTypeSet.CreatureType), - HUMAN("Human", SubTypeSet.CreatureType), - KITHKIN("Kithkin", SubTypeSet.CreatureType), - KNIGHT("Knight", SubTypeSet.CreatureType), - KOBOLD("Kobold", SubTypeSet.CreatureType), - GOLEM("Golem", SubTypeSet.CreatureType), - KAVU("Kavu", SubTypeSet.CreatureType), - MERCENARY("Mercenary", SubTypeSet.CreatureType), - MERFOLK("Merfolk", SubTypeSet.CreatureType), - MINION("Minion", SubTypeSet.CreatureType), - MYR("Myr", SubTypeSet.CreatureType), - NINJA("Ninja",SubTypeSet.CreatureType), - OGRE("Ogre", SubTypeSet.CreatureType), - ORC("Orc", SubTypeSet.CreatureType), - PENTAVITE("Pentavite", SubTypeSet.CreatureType), - PRISM("Prism", SubTypeSet.CreatureType), - RAT("Rat", SubTypeSet.CreatureType), - REBEL("Rebel", SubTypeSet.CreatureType), - SAPROLING("Saproling", SubTypeSet.CreatureType), - SCION("Scion", SubTypeSet.CreatureType), - SERVO("Servo", SubTypeSet.CreatureType), - SHAMAN("Shaman", SubTypeSet.CreatureType), - SKELETON("Skeleton", SubTypeSet.CreatureType), - SLIVER("Sliver", SubTypeSet.CreatureType), - SNAKE("Snake", SubTypeSet.CreatureType), - SOLDIER("Soldier", SubTypeSet.CreatureType), - SPIRIT("Spirit", SubTypeSet.CreatureType), - SQUIRREL("Squirrel", SubTypeSet.CreatureType), - THOPTER("Thopter", SubTypeSet.CreatureType), - THRULL("Thrull", SubTypeSet.CreatureType), - TREEFOLK("Treefolk", SubTypeSet.CreatureType), - TROOPER("Trooper", SubTypeSet.CreatureType), - VAMPIRE("Vampire", SubTypeSet.CreatureType), - WALL("Wall", SubTypeSet.CreatureType), - WARRIOR("Warrior", SubTypeSet.CreatureType), - WEREWOLF("Werewolf", SubTypeSet.CreatureType), - WIZARD("Wizard", SubTypeSet.CreatureType), - WOLF("Wolf", SubTypeSet.CreatureType), - ZOMBIE("Zombie", SubTypeSet.CreatureType); + ALLY("Ally", SubTypeSet.CreatureType, false), + ANGEL("Angel", SubTypeSet.CreatureType, false), + ARTIFICER("Artificer", SubTypeSet.CreatureType, false), + ASSEMBLY_WORKER("Assembly-Worker", SubTypeSet.CreatureType, false), + ASSASSIN("Assassin", SubTypeSet.CreatureType, false), + ATOG("Atog", SubTypeSet.CreatureType, false), + AUROCHS("Aurochs", SubTypeSet.CreatureType, false), + BARBARIAN("Barbarian", SubTypeSet.CreatureType, false), + BAT("Bat", SubTypeSet.CreatureType, false), + BEAST("Beast", SubTypeSet.CreatureType, false), + BERSERKER("Berserker", SubTypeSet.CreatureType, false), + BIRD("Bird", SubTypeSet.CreatureType, false), + BLINKMOTH("Blinkmoth", SubTypeSet.CreatureType, false), + CARIBOU("Caribou", SubTypeSet.CreatureType, false), + CAT("Cat", SubTypeSet.CreatureType, false), + CEPHALID("Cephalid", SubTypeSet.CreatureType, false), + CENTAUR("Centaur" ,SubTypeSet.CreatureType, false), + CLERIC("Cleric", SubTypeSet.CreatureType, false), + DEMON("Demon", SubTypeSet.CreatureType, false), + DRAGON("Dragon", SubTypeSet.CreatureType, false), + DRUID("Druid", SubTypeSet.CreatureType, false), + DROID("Droid", SubTypeSet.CreatureType, true), + DWARF("Dwarf", SubTypeSet.CreatureType, false), + ELDRAZI("Eldrazi", SubTypeSet.CreatureType, false), + ELEMENTAL("Elemental", SubTypeSet.CreatureType, false), + ELEPHANT("Elephant", SubTypeSet.CreatureType, false), + ELF("Elf", SubTypeSet.CreatureType, false), + FAERIE("Faerie", SubTypeSet.CreatureType, false), + FLAGBEARER("Flagbearer", SubTypeSet.CreatureType, false), + FOX("Fox", SubTypeSet.CreatureType, false), + FUNGUS("Fungus", SubTypeSet.CreatureType, false), + GIANT("Giant", SubTypeSet.CreatureType, false), + GOAT("Goat", SubTypeSet.CreatureType, false), + GOBLIN("Goblin", SubTypeSet.CreatureType, false), + GORGON("Gorgon", SubTypeSet.CreatureType, false), + GRIFFIN("Griffin", SubTypeSet.CreatureType, false), + HOMUNCULUS("Homunculus", SubTypeSet.CreatureType, false), + HORROR("Horror", SubTypeSet.CreatureType, false), + HUMAN("Human", SubTypeSet.CreatureType, false), + HUNTER("Hunter", SubTypeSet.CreatureType, false), + INSECT("Insect", SubTypeSet.CreatureType, false), + JEDI("Jedi", SubTypeSet.CreatureType, true), + KITHKIN("Kithkin", SubTypeSet.CreatureType, false), + KNIGHT("Knight", SubTypeSet.CreatureType, false), + KOBOLD("Kobold", SubTypeSet.CreatureType, false), + KOR("Kor", SubTypeSet.CreatureType, false), + GOLEM("Golem", SubTypeSet.CreatureType, false), + KAVU("Kavu", SubTypeSet.CreatureType, false), + MERCENARY("Mercenary", SubTypeSet.CreatureType, false), + MERFOLK("Merfolk", SubTypeSet.CreatureType, false), + MINION("Minion", SubTypeSet.CreatureType, false), + MINOTAUR("Minotaur", SubTypeSet.CreatureType, false), + MOONFOLK("Moonfolk", SubTypeSet.CreatureType, false), + MYR("Myr", SubTypeSet.CreatureType, false), + NINJA("Ninja", SubTypeSet.CreatureType, false), + OGRE("Ogre", SubTypeSet.CreatureType, false), + ORC("Orc", SubTypeSet.CreatureType, false), + PENTAVITE("Pentavite", SubTypeSet.CreatureType, false), + PLANT("Plant", SubTypeSet.CreatureType, false), + PRISM("Prism", SubTypeSet.CreatureType, false), + RAT("Rat", SubTypeSet.CreatureType, false), + REBEL("Rebel", SubTypeSet.CreatureType, false), + ROGUE("Rogue", SubTypeSet.CreatureType, false), + SAPROLING("Saproling", SubTypeSet.CreatureType, false), + SAMURAI("Samurai", SubTypeSet.CreatureType, false), + SCARECROW("Scarecrow", SubTypeSet.CreatureType, false), + SCION("Scion", SubTypeSet.CreatureType, false), + SERF("Serf", SubTypeSet.CreatureType, false), + SERVO("Servo", SubTypeSet.CreatureType, false), + SHAMAN("Shaman", SubTypeSet.CreatureType, false), + SKELETON("Skeleton", SubTypeSet.CreatureType, false), + SLIVER("Sliver", SubTypeSet.CreatureType, false), + SNAKE("Snake", SubTypeSet.CreatureType, false), + SOLDIER("Soldier", SubTypeSet.CreatureType, false), + SPIDER("Spider", SubTypeSet.CreatureType, false), + SPIRIT("Spirit", SubTypeSet.CreatureType, false), + SQUIRREL("Squirrel", SubTypeSet.CreatureType, false), + STARSHIP("Starship", SubTypeSet.CreatureType, true), + THOPTER("Thopter", SubTypeSet.CreatureType, false), + THRULL("Thrull", SubTypeSet.CreatureType, false), + TREEFOLK("Treefolk", SubTypeSet.CreatureType, false), + TROOPER("Trooper", SubTypeSet.CreatureType, true), + VAMPIRE("Vampire", SubTypeSet.CreatureType, false), + WALL("Wall", SubTypeSet.CreatureType, false), + WARRIOR("Warrior", SubTypeSet.CreatureType, false), + WEREWOLF("Werewolf", SubTypeSet.CreatureType, false), + WIZARD("Wizard", SubTypeSet.CreatureType, false), + WOLF("Wolf", SubTypeSet.CreatureType, false), + ZOMBIE("Zombie", SubTypeSet.CreatureType, false), + + AJANI("Ajani", SubTypeSet.PlaneswalkerType, false), + CHANDRA("Chandra", SubTypeSet.PlaneswalkerType, false), + GIDEON("Gideon", SubTypeSet.PlaneswalkerType, false), + JACE("Jace", SubTypeSet.PlaneswalkerType, false), + KARN("Karn", SubTypeSet.PlaneswalkerType, false), + LILIANA("Liliana", SubTypeSet.PlaneswalkerType, false), + NISSA("Nissa", SubTypeSet.PlaneswalkerType, false), + TAMIYO("Tamiyo", SubTypeSet.PlaneswalkerType, false), + TEZZERET("Tezzeret", SubTypeSet.PlaneswalkerType, false), + UGIN("Ugin", SubTypeSet.PlaneswalkerType, false); private final SubTypeSet subTypeSet; @@ -101,27 +142,34 @@ public enum SubType { private final String description; - SubType(String description, SubTypeSet subTypeSet) { + private final boolean customSet; + + SubType(String description, SubTypeSet subTypeSet, boolean customSet) { this.description = description; this.subTypeSet = subTypeSet; + this.customSet = customSet; } - public static SubType byDescription(String subtype) { + public static SubType byDescription(String subType) { for (SubType s : values()) { - if (s.getDescription().equals(subtype)) { + if (s.getDescription().equals(subType)) { return s; } } - throw new IllegalArgumentException("no subtype for " + subtype + " exists"); + throw new IllegalArgumentException("no subtype for " + subType + " exists"); } public SubTypeSet getSubTypeSet() { return subTypeSet; } - public static Set getCreatureTypes() { + public static Set getCreatureTypes(boolean customSet) { - return Arrays.stream(values()).filter(p -> p.getSubTypeSet() == SubTypeSet.CreatureType).map(SubType::getDescription).collect(Collectors.toSet()); + return Arrays.stream(values()).filter(s -> s.customSet == customSet).filter(p -> p.getSubTypeSet() == SubTypeSet.CreatureType).map(SubType::getDescription).collect(Collectors.toSet()); + } + + public static Set getBasicLands(boolean customSet) { + return Arrays.stream(values()).filter(s->s.customSet == customSet).filter(p->p.getSubTypeSet() == SubTypeSet.BasicLandType).map(SubType::getDescription).collect(Collectors.toSet()); } } diff --git a/Mage/src/main/java/mage/constants/SubTypeSet.java b/Mage/src/main/java/mage/constants/SubTypeSet.java index bd58c9217c7..840b2ca2825 100644 --- a/Mage/src/main/java/mage/constants/SubTypeSet.java +++ b/Mage/src/main/java/mage/constants/SubTypeSet.java @@ -5,6 +5,7 @@ public enum SubTypeSet { SpellType, BasicLandType, NonBasicLandType, - EchanemtType, - ArtifactType + EnchantmentType, + ArtifactType, + PlaneswalkerType } \ No newline at end of file diff --git a/Mage/src/main/java/mage/filter/predicate/mageobject/SubtypePredicate.java b/Mage/src/main/java/mage/filter/predicate/mageobject/SubtypePredicate.java index ea2776b2772..720dc3fd460 100644 --- a/Mage/src/main/java/mage/filter/predicate/mageobject/SubtypePredicate.java +++ b/Mage/src/main/java/mage/filter/predicate/mageobject/SubtypePredicate.java @@ -44,6 +44,10 @@ public class SubtypePredicate implements Predicate { this.subtype = subtype; } + public SubtypePredicate(String subtype){ + this.subtype = SubType.byDescription(subtype); + } + @Override public boolean apply(MageObject input, Game game) { return input.hasSubtype(subtype.getDescription(), game);