From c44c301f5b1860a433aacd5167d3e6ecab97c022 Mon Sep 17 00:00:00 2001 From: igoudt Date: Tue, 16 May 2017 22:11:47 +0200 Subject: [PATCH 1/6] subtypes #1 --- .../mage/cards/a/AboshanCephalidEmperor.java | 3 +- .../src/mage/cards/a/AcidSpewerDragon.java | 3 +- .../src/mage/cards/a/AdvocateOfTheBeast.java | 3 +- .../src/mage/cards/a/AkoumFlameseeker.java | 7 +- Mage.Sets/src/mage/cards/a/AmrouScout.java | 3 +- .../src/mage/cards/a/AncientAmphitheater.java | 3 +- .../mage/cards/a/AngelOfFlightAlabaster.java | 3 +- .../src/mage/cards/a/ApothecaryGeist.java | 3 +- .../src/mage/cards/a/ArmoredAscension.java | 2 +- .../src/mage/cards/a/ArmoredGalleon.java | 3 +- Mage.Sets/src/mage/cards/a/ArmsDealer.java | 3 +- .../src/mage/cards/a/AuriokWindwalker.java | 3 +- Mage.Sets/src/mage/cards/a/AvenBrigadier.java | 5 +- .../src/mage/cards/a/AzamiLadyOfScrolls.java | 3 +- .../src/mage/cards/b/BalthorTheDefiled.java | 2 +- .../src/mage/cards/b/BaneslayerAngel.java | 3 +- .../src/mage/cards/b/BattlegroundGeist.java | 3 +- .../src/mage/cards/b/BelltollDragon.java | 3 +- .../src/mage/cards/b/BenalishCommander.java | 3 +- .../src/mage/cards/b/BirchloreRangers.java | 3 +- .../src/mage/cards/b/BladewingTheRisen.java | 9 +- .../src/mage/cards/b/BloodChinRager.java | 3 +- .../src/mage/cards/b/BloodlordOfVaasgoth.java | 2 +- .../src/mage/cards/b/BoggartLoggers.java | 5 +- Mage.Sets/src/mage/cards/b/BoilingSeas.java | 3 +- .../src/mage/cards/b/BoonweaverGiant.java | 3 +- Mage.Sets/src/mage/cards/b/BrassSquire.java | 3 +- Mage.Sets/src/mage/cards/b/BubblingMuck.java | 3 +- Mage.Sets/src/mage/cards/c/CabalCoffers.java | 3 +- Mage.Sets/src/mage/cards/c/CabalSlaver.java | 3 +- .../src/mage/cards/c/CallToTheGrave.java | 3 +- .../src/mage/cards/c/CaptainOfTheWatch.java | 3 +- Mage.Sets/src/mage/cards/c/CateranBrute.java | 2 +- .../src/mage/cards/c/CateranSummons.java | 3 +- .../src/mage/cards/c/CaterwaulingBoggart.java | 5 +- .../src/mage/cards/c/CaughtInTheBrights.java | 2 +- Mage.Sets/src/mage/cards/c/CennsHeir.java | 3 +- .../src/mage/cards/c/ChangelingTitan.java | 4 +- .../src/mage/cards/c/ChosenOfMarkov.java | 3 +- .../src/mage/cards/c/ClawsOfValakut.java | 2 +- Mage.Sets/src/mage/cards/c/CommanderCody.java | 2 +- .../src/mage/cards/c/ConsumingBonfire.java | 5 +- .../src/mage/cards/c/CorruptedRoots.java | 5 +- .../src/mage/cards/c/CrystallineSliver.java | 3 +- Mage.Sets/src/mage/cards/c/CyclopeanTomb.java | 2 +- .../src/mage/cards/d/DaruEncampment.java | 3 +- Mage.Sets/src/mage/cards/d/DeathBaron.java | 5 +- .../src/mage/cards/d/DeepSeaSerpent.java | 3 +- Mage.Sets/src/mage/cards/d/DefiantFalcon.java | 3 +- .../src/mage/cards/d/DiamondKaleidoscope.java | 3 +- Mage.Sets/src/mage/cards/d/DraconicRoar.java | 3 +- Mage.Sets/src/mage/cards/d/DragonHunter.java | 2 +- .../src/mage/cards/d/DragonlordsServant.java | 3 +- .../src/mage/cards/d/DragonspeakerShaman.java | 3 +- Mage.Sets/src/mage/cards/d/Dragonstalker.java | 3 +- Mage.Sets/src/mage/cards/d/Dreamwinder.java | 5 +- .../src/mage/cards/d/DrogskolCavalry.java | 3 +- .../src/mage/cards/d/DrunauCorpseTrawler.java | 3 +- .../src/mage/cards/d/DwarvenBloodboiler.java | 3 +- Mage.Sets/src/mage/cards/e/EarthServant.java | 7 +- .../src/mage/cards/e/EliteInquisitor.java | 7 +- Mage.Sets/src/mage/cards/e/ElvenRiders.java | 3 +- .../src/mage/cards/e/ElvishArchdruid.java | 5 +- .../src/mage/cards/e/ElvishVanguard.java | 3 +- .../src/mage/cards/e/EmbalmersTools.java | 10 +- .../mage/cards/e/EndrekSahrMasterBreeder.java | 8 +- .../src/mage/cards/e/EraOfInnovation.java | 3 +- Mage.Sets/src/mage/cards/e/EyeOfUgin.java | 3 +- Mage.Sets/src/mage/cards/f/FathomSeer.java | 3 +- Mage.Sets/src/mage/cards/f/FeedingFrenzy.java | 3 +- Mage.Sets/src/mage/cards/f/Fireblast.java | 3 +- .../src/mage/cards/f/FirewakeSliver.java | 5 +- .../src/mage/cards/f/FlamekinHarbinger.java | 3 +- Mage.Sets/src/mage/cards/f/Flickerform.java | 5 +- Mage.Sets/src/mage/cards/f/Foil.java | 3 +- Mage.Sets/src/mage/cards/f/Foratog.java | 3 +- .../src/mage/cards/f/FortifiedVillage.java | 5 +- Mage.Sets/src/mage/cards/f/FrenzySliver.java | 5 +- Mage.Sets/src/mage/cards/f/FullMoonsRise.java | 7 +- Mage.Sets/src/mage/cards/g/GaeasBounty.java | 3 +- .../src/mage/cards/g/GauntletOfMight.java | 2 +- .../src/mage/cards/g/GempalmIncinerator.java | 3 +- Mage.Sets/src/mage/cards/g/GeneralTazri.java | 11 +- .../src/mage/cards/g/GenjuOfTheSpires.java | 7 +- .../src/mage/cards/g/GlacialCrevasses.java | 7 +- Mage.Sets/src/mage/cards/g/Glimmerpost.java | 3 +- Mage.Sets/src/mage/cards/g/GlobalRuin.java | 31 +- Mage.Sets/src/mage/cards/g/Goatnapper.java | 3 +- Mage.Sets/src/mage/cards/g/GoblinGrenade.java | 3 +- Mage.Sets/src/mage/cards/g/GoblinMatron.java | 3 +- .../src/mage/cards/g/GoblinRabblemaster.java | 9 +- .../src/mage/cards/g/GoblinTurncoat.java | 3 +- Mage.Sets/src/mage/cards/g/GoblinWarrens.java | 3 +- Mage.Sets/src/mage/cards/g/GrafHarvest.java | 3 +- Mage.Sets/src/mage/cards/g/Grasslands.java | 7 +- Mage.Sets/src/mage/cards/g/GuardianBeast.java | 7 +- Mage.Sets/src/mage/cards/h/HeritageDruid.java | 3 +- .../src/mage/cards/h/HigureTheStillWind.java | 5 +- .../src/mage/cards/h/HisokasDefiance.java | 3 +- Mage.Sets/src/mage/cards/h/HoldTheGates.java | 3 +- .../mage/cards/h/HondenOfInfiniteRage.java | 3 +- .../src/mage/cards/h/HordeOfNotions.java | 7 +- Mage.Sets/src/mage/cards/h/HuntedGhoul.java | 3 +- .../src/mage/cards/h/HythoniaTheCruel.java | 3 +- .../mage/cards/i/ImmaculateMagistrate.java | 3 +- .../src/mage/cards/j/JaggedScarArchers.java | 3 +- Mage.Sets/src/mage/cards/j/JundPanorama.java | 11 +- Mage.Sets/src/mage/cards/k/KavuHowler.java | 3 +- .../src/mage/cards/k/KeeperOfProgenitus.java | 7 +- .../src/mage/cards/k/KeepsakeGorgon.java | 3 +- Mage.Sets/src/mage/cards/k/KeldonWarlord.java | 3 +- .../src/mage/cards/k/KithkinGreatheart.java | 7 +- .../src/mage/cards/k/KithkinHarbinger.java | 3 +- .../src/mage/cards/k/KitsuneDiviner.java | 3 +- .../src/mage/cards/k/KitsuneRiftwalker.java | 3 +- .../mage/cards/k/KnightOfTheWhiteOrchid.java | 3 +- .../src/mage/cards/k/KoboldTaskmaster.java | 7 +- Mage.Sets/src/mage/cards/k/KorCastigator.java | 5 +- .../src/mage/cards/k/KrakenOfTheStraits.java | 3 +- Mage.Sets/src/mage/cards/k/KrenkoMobBoss.java | 3 +- .../src/mage/cards/k/KukemssaSerpent.java | 12 +- Mage.Sets/src/mage/cards/l/Lashwrithe.java | 8 +- .../src/mage/cards/l/LeechingSliver.java | 3 +- Mage.Sets/src/mage/cards/l/Lifespinner.java | 5 +- Mage.Sets/src/mage/cards/l/LivingLands.java | 7 +- Mage.Sets/src/mage/cards/l/LordOfLineage.java | 3 +- .../src/mage/cards/l/LovisaColdeyes.java | 7 +- .../src/mage/cards/l/LuminescentRain.java | 12 +- Mage.Sets/src/mage/cards/m/MagmaSliver.java | 3 +- Mage.Sets/src/mage/cards/m/MantaRay.java | 9 +- .../src/mage/cards/m/MarchOfTheDroids.java | 3 +- .../src/mage/cards/m/MarshdrinkerGiant.java | 5 +- .../src/mage/cards/m/MasterOfTheWildHunt.java | 3 +- Mage.Sets/src/mage/cards/m/MasterSplicer.java | 3 +- .../src/mage/cards/m/MasterTrinketeer.java | 5 +- .../src/mage/cards/m/MausoleumWanderer.java | 7 +- .../src/mage/cards/m/MilitantInquisitor.java | 3 +- .../src/mage/cards/m/MistyRainforest.java | 4 +- Mage.Sets/src/mage/cards/m/MoggRaider.java | 3 +- Mage.Sets/src/mage/cards/m/MoldDemon.java | 3 +- Mage.Sets/src/mage/cards/m/MoonlightHunt.java | 3 +- Mage.Sets/src/mage/cards/m/MuscleSliver.java | 3 +- Mage.Sets/src/mage/cards/m/MyrReservoir.java | 3 +- Mage.Sets/src/mage/cards/m/MyrTurbine.java | 5 +- .../mage/cards/n/NahiriTheLithomancer.java | 5 +- Mage.Sets/src/mage/cards/n/NayaPanorama.java | 11 +- Mage.Sets/src/mage/cards/n/NightmareLash.java | 2 +- .../src/mage/cards/n/NissaWorldwaker.java | 7 +- .../src/mage/cards/o/OliviaVoldaren.java | 2 +- .../src/mage/cards/o/OpalLakeGatekeepers.java | 3 +- Mage.Sets/src/mage/cards/o/OpalineSliver.java | 3 +- Mage.Sets/src/mage/cards/o/OrcishCaptain.java | 7 +- Mage.Sets/src/mage/cards/o/Outbreak.java | 13 +- .../src/mage/cards/p/PainwrackerOni.java | 3 +- .../src/mage/cards/p/PallidMycoderm.java | 9 +- .../src/mage/cards/p/PatronOfTheKitsune.java | 3 +- .../src/mage/cards/p/PatronOfTheOrochi.java | 9 +- Mage.Sets/src/mage/cards/p/PeakEruption.java | 3 +- Mage.Sets/src/mage/cards/p/PeerPressure.java | 7 +- Mage.Sets/src/mage/cards/p/Pentavus.java | 3 +- Mage.Sets/src/mage/cards/p/PlagueBelcher.java | 3 +- .../src/mage/cards/p/PrecursorGolem.java | 3 +- .../src/mage/cards/p/PriestOfTitania.java | 3 +- Mage.Sets/src/mage/cards/p/PrimevalForce.java | 3 +- Mage.Sets/src/mage/cards/p/Pyramids.java | 3 +- Mage.Sets/src/mage/cards/q/QuilledSliver.java | 3 +- .../src/mage/cards/r/RaisedByWolves.java | 7 +- .../src/mage/cards/r/RamosianRevivalist.java | 3 +- Mage.Sets/src/mage/cards/r/Ratcatcher.java | 3 +- .../src/mage/cards/r/RavingOniSlave.java | 3 +- Mage.Sets/src/mage/cards/r/RazorGolem.java | 3 +- .../src/mage/cards/r/RedCliffsArmada.java | 3 +- Mage.Sets/src/mage/cards/r/ReflexSliver.java | 3 +- .../src/mage/cards/r/RiptideBiologist.java | 3 +- .../src/mage/cards/r/RisenExecutioner.java | 9 +- .../src/mage/cards/r/RockslideAmbush.java | 3 +- Mage.Sets/src/mage/cards/r/RockyTarPit.java | 5 +- Mage.Sets/src/mage/cards/r/RogueElephant.java | 3 +- Mage.Sets/src/mage/cards/r/RollingStones.java | 3 +- .../src/mage/cards/s/SafewrightQuest.java | 3 +- Mage.Sets/src/mage/cards/s/Sanctimony.java | 3 +- Mage.Sets/src/mage/cards/s/SandTrooper.java | 3 +- .../src/mage/cards/s/SarkhansTriumph.java | 3 +- .../src/mage/cards/s/ScarbladeElite.java | 3 +- .../src/mage/cards/s/ScarredVinebreeder.java | 3 +- .../src/mage/cards/s/SealockMonster.java | 9 +- Mage.Sets/src/mage/cards/s/SeedguideAsh.java | 3 +- .../src/mage/cards/s/SeethingPathblazer.java | 3 +- Mage.Sets/src/mage/cards/s/SejiriMerfolk.java | 3 +- .../src/mage/cards/s/SentinelSliver.java | 3 +- .../src/mage/cards/s/ShadowbornApostle.java | 3 +- Mage.Sets/src/mage/cards/s/ShefetMonitor.java | 3 +- .../src/mage/cards/s/ShieldhideDragon.java | 3 +- .../src/mage/cards/s/SilvergillDouser.java | 3 +- .../src/mage/cards/s/SkirkDrillSergeant.java | 5 +- .../src/mage/cards/s/SkirkProspector.java | 3 +- .../src/mage/cards/s/SkirsdagFlayer.java | 3 +- Mage.Sets/src/mage/cards/s/SlipstreamEel.java | 3 +- .../src/mage/cards/s/SlumberingTora.java | 2 +- .../mage/cards/s/SmeltWardGatekeepers.java | 7 +- .../src/mage/cards/s/SnarlingUndorak.java | 3 +- Mage.Sets/src/mage/cards/s/SnowTrooper.java | 3 +- Mage.Sets/src/mage/cards/s/SnuffOut.java | 3 +- .../src/mage/cards/s/SoulcatchersAerie.java | 5 +- Mage.Sets/src/mage/cards/s/SpareFromEvil.java | 3 +- .../src/mage/cards/s/SpellstutterSprite.java | 7 +- Mage.Sets/src/mage/cards/s/SpireBarrage.java | 3 +- Mage.Sets/src/mage/cards/s/SpireGolem.java | 3 +- .../src/mage/cards/s/SporesowerThallid.java | 3 +- .../src/mage/cards/s/SpringjackPasture.java | 3 +- .../src/mage/cards/s/SquirrelWrangler.java | 3 +- .../src/mage/cards/s/StaffOfTheWildMagus.java | 3 +- .../src/mage/cards/s/StensiaBanquet.java | 3 +- .../src/mage/cards/s/StoneforgeAcolyte.java | 5 +- .../src/mage/cards/s/StrengthOfNight.java | 3 +- .../src/mage/cards/s/StromkirkCondemned.java | 7 +- .../src/mage/cards/s/StromkirkMentor.java | 3 +- Mage.Sets/src/mage/cards/s/SunbladeElf.java | 3 +- .../src/mage/cards/s/SupremeExemplar.java | 5 +- Mage.Sets/src/mage/cards/s/SwarmOfRats.java | 3 +- .../src/mage/cards/s/SynchronousSliver.java | 3 +- Mage.Sets/src/mage/cards/t/TajuruArcher.java | 3 +- Mage.Sets/src/mage/cards/t/Tallowisp.java | 3 +- .../mage/cards/t/TendrilsOfCorruption.java | 3 +- .../src/mage/cards/t/ThallidGerminator.java | 7 +- .../src/mage/cards/t/ThelonOfHavenwood.java | 6 +- .../src/mage/cards/t/ThopterSquadron.java | 3 +- .../src/mage/cards/t/ThornbiteStaff.java | 9 +- .../src/mage/cards/t/ThrullChampion.java | 3 +- .../src/mage/cards/t/ThunderbreakRegent.java | 3 +- Mage.Sets/src/mage/cards/t/TidalBore.java | 3 +- .../src/mage/cards/t/TivadarOfThorn.java | 3 +- .../src/mage/cards/t/TivadarsCrusade.java | 3 +- .../src/mage/cards/t/TorrentOfStone.java | 3 +- .../mage/cards/t/TotemGuideHartebeest.java | 3 +- .../src/mage/cards/t/TrapmakersSnare.java | 3 +- Mage.Sets/src/mage/cards/t/TraprootKami.java | 3 +- .../src/mage/cards/t/TrialOfAmbition.java | 3 +- Mage.Sets/src/mage/cards/t/TrialOfZeal.java | 3 +- Mage.Sets/src/mage/cards/t/Tsunami.java | 3 +- Mage.Sets/src/mage/cards/t/TurnToDust.java | 3 +- .../src/mage/cards/u/UbulSarGatekeepers.java | 7 +- .../src/mage/cards/u/UnbreathingHorde.java | 9 +- .../cards/v/ValakutTheMoltenPinnacle.java | 3 +- Mage.Sets/src/mage/cards/v/VampiricFury.java | 3 +- .../src/mage/cards/v/VampiricSliver.java | 3 +- Mage.Sets/src/mage/cards/v/VengefulDead.java | 3 +- .../src/mage/cards/v/VeteranArmorsmith.java | 3 +- .../src/mage/cards/v/VeteransArmaments.java | 10 +- Mage.Sets/src/mage/cards/v/VileDeacon.java | 3 +- Mage.Sets/src/mage/cards/v/VillageElder.java | 3 +- .../src/mage/cards/v/VillainousOgre.java | 3 +- Mage.Sets/src/mage/cards/v/VitalityCharm.java | 3 +- Mage.Sets/src/mage/cards/w/WanderwineHub.java | 3 +- .../src/mage/cards/w/WeirdingShaman.java | 3 +- .../mage/cards/w/WellgabberApothecary.java | 3 +- Mage.Sets/src/mage/cards/w/WingSplicer.java | 3 +- .../mage/cards/z/ZhouYuChiefCommander.java | 3 +- .../common/FetchLandActivatedAbility.java | 13 +- .../EnchantedCreatureSubtypeCondition.java | 3 +- .../dynamicvalue/common/UrzaTerrainValue.java | 13 +- .../effects/common/AmplifyEffect.java | 3 +- .../effects/keyword/SweepEffect.java | 7 +- .../keyword/AffinityForLandTypeAbility.java | 7 +- .../abilities/keyword/AuraSwapAbility.java | 3 +- .../abilities/keyword/ChampionAbility.java | 18 +- .../keyword/ForestcyclingAbility.java | 3 +- .../abilities/keyword/ForestwalkAbility.java | 3 +- .../keyword/IslandcyclingAbility.java | 3 +- .../abilities/keyword/IslandwalkAbility.java | 3 +- .../keyword/MountaincyclingAbility.java | 3 +- .../keyword/MountainwalkAbility.java | 3 +- .../abilities/keyword/OfferingAbility.java | 10 +- .../keyword/PlainscyclingAbility.java | 3 +- .../abilities/keyword/PlainswalkAbility.java | 3 +- .../abilities/keyword/SoulshiftAbility.java | 3 +- .../keyword/SwampcyclingAbility.java | 3 +- .../abilities/keyword/SwampwalkAbility.java | 3 +- .../src/main/java/mage/constants/SubType.java | 127 ++ .../main/java/mage/constants/SubTypeSet.java | 10 + .../java/mage/filter/FilterPermanent.java | 4 +- .../main/java/mage/filter/StaticFilters.java | 5 +- .../filter/common/FilterBySubtypeCard.java | 3 +- .../FilterControlledCreaturePermanent.java | 3 +- .../common/FilterCreaturePermanent.java | 3 +- .../filter/common/FilterLandPermanent.java | 3 +- .../FilterOpponentsCreaturePermanent.java | 3 +- .../common/FilterSpiritOrArcaneCard.java | 3 +- .../mageobject/SubtypePredicate.java | 7 +- .../ControllerControlsIslandPredicate.java | 3 +- Mage/src/main/java/mage/game/GameImpl.java | 8 +- ...heBattlefieldWhileSpellWasCastWatcher.java | 3 +- mageadmin.log | 1478 +++++++++++++++++ 293 files changed, 2291 insertions(+), 550 deletions(-) create mode 100644 Mage/src/main/java/mage/constants/SubType.java create mode 100644 Mage/src/main/java/mage/constants/SubTypeSet.java create mode 100644 mageadmin.log diff --git a/Mage.Sets/src/mage/cards/a/AboshanCephalidEmperor.java b/Mage.Sets/src/mage/cards/a/AboshanCephalidEmperor.java index cccd1cc477..1d92ba4fad 100644 --- a/Mage.Sets/src/mage/cards/a/AboshanCephalidEmperor.java +++ b/Mage.Sets/src/mage/cards/a/AboshanCephalidEmperor.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.SuperType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; @@ -60,7 +61,7 @@ static final FilterControlledCreaturePermanent filter1 = new FilterControlledCre static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creatures without flying"); static { - filter1.add(new SubtypePredicate("Cephalid")); + filter1.add(new SubtypePredicate(SubType.CEPHALID)); filter2.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); } diff --git a/Mage.Sets/src/mage/cards/a/AcidSpewerDragon.java b/Mage.Sets/src/mage/cards/a/AcidSpewerDragon.java index ecd6c1c9e1..4804688476 100644 --- a/Mage.Sets/src/mage/cards/a/AcidSpewerDragon.java +++ b/Mage.Sets/src/mage/cards/a/AcidSpewerDragon.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.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,7 +55,7 @@ public class AcidSpewerDragon extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public AcidSpewerDragon(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AdvocateOfTheBeast.java b/Mage.Sets/src/mage/cards/a/AdvocateOfTheBeast.java index 20a547dfcf..a384011695 100644 --- a/Mage.Sets/src/mage/cards/a/AdvocateOfTheBeast.java +++ b/Mage.Sets/src/mage/cards/a/AdvocateOfTheBeast.java @@ -34,6 +34,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.TargetController; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; @@ -53,7 +54,7 @@ public class AdvocateOfTheBeast extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Beast creature you control"); static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Beast")); + filter.add(new SubtypePredicate(SubType.BEAST)); } public AdvocateOfTheBeast(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AkoumFlameseeker.java b/Mage.Sets/src/mage/cards/a/AkoumFlameseeker.java index 9f32be2015..be2220a011 100644 --- a/Mage.Sets/src/mage/cards/a/AkoumFlameseeker.java +++ b/Mage.Sets/src/mage/cards/a/AkoumFlameseeker.java @@ -36,10 +36,7 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.cards.Cards; -import mage.constants.AbilityWord; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -59,7 +56,7 @@ public class AkoumFlameseeker 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/a/AmrouScout.java b/Mage.Sets/src/mage/cards/a/AmrouScout.java index 9fa6bc606f..11f43fc98b 100644 --- a/Mage.Sets/src/mage/cards/a/AmrouScout.java +++ b/Mage.Sets/src/mage/cards/a/AmrouScout.java @@ -36,6 +36,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; @@ -52,7 +53,7 @@ public class AmrouScout 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/a/AncientAmphitheater.java b/Mage.Sets/src/mage/cards/a/AncientAmphitheater.java index 1497719a09..85652d4677 100644 --- a/Mage.Sets/src/mage/cards/a/AncientAmphitheater.java +++ b/Mage.Sets/src/mage/cards/a/AncientAmphitheater.java @@ -35,6 +35,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.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInHand; @@ -49,7 +50,7 @@ public class AncientAmphitheater extends CardImpl { private static final FilterCard filter = new FilterCard("a Giant from your hand"); static { - filter.add(new SubtypePredicate("Giant")); + filter.add(new SubtypePredicate(SubType.GIANT)); } public AncientAmphitheater(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AngelOfFlightAlabaster.java b/Mage.Sets/src/mage/cards/a/AngelOfFlightAlabaster.java index 9a9860d423..59130ab309 100644 --- a/Mage.Sets/src/mage/cards/a/AngelOfFlightAlabaster.java +++ b/Mage.Sets/src/mage/cards/a/AngelOfFlightAlabaster.java @@ -8,6 +8,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.TargetController; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -20,7 +21,7 @@ public class AngelOfFlightAlabaster extends CardImpl { private static final FilterCard filter = new FilterCard("Spirit card from your graveyard"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public AngelOfFlightAlabaster(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/ApothecaryGeist.java b/Mage.Sets/src/mage/cards/a/ApothecaryGeist.java index cc10a547b4..f3c4161d3f 100644 --- a/Mage.Sets/src/mage/cards/a/ApothecaryGeist.java +++ b/Mage.Sets/src/mage/cards/a/ApothecaryGeist.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.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; @@ -54,7 +55,7 @@ public class ApothecaryGeist extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public ApothecaryGeist(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/ArmoredAscension.java b/Mage.Sets/src/mage/cards/a/ArmoredAscension.java index faf7d9b04c..5558bccf45 100644 --- a/Mage.Sets/src/mage/cards/a/ArmoredAscension.java +++ b/Mage.Sets/src/mage/cards/a/ArmoredAscension.java @@ -54,7 +54,7 @@ public class ArmoredAscension extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Plains you control"); static { - filter.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.PLAINS)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/a/ArmoredGalleon.java b/Mage.Sets/src/mage/cards/a/ArmoredGalleon.java index 28415e942d..85e72ba0cb 100644 --- a/Mage.Sets/src/mage/cards/a/ArmoredGalleon.java +++ b/Mage.Sets/src/mage/cards/a/ArmoredGalleon.java @@ -33,6 +33,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; @@ -52,7 +53,7 @@ public class ArmoredGalleon extends CardImpl { this.toughness = new MageInt(4); // Armored Galleon 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 ArmoredGalleon(final ArmoredGalleon card) { diff --git a/Mage.Sets/src/mage/cards/a/ArmsDealer.java b/Mage.Sets/src/mage/cards/a/ArmsDealer.java index 47ddc230ee..7ba7f9c1f0 100644 --- a/Mage.Sets/src/mage/cards/a/ArmsDealer.java +++ b/Mage.Sets/src/mage/cards/a/ArmsDealer.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; @@ -52,7 +53,7 @@ public class ArmsDealer extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Goblin"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public ArmsDealer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AuriokWindwalker.java b/Mage.Sets/src/mage/cards/a/AuriokWindwalker.java index 9d3e49dd0a..0ae6b177c1 100644 --- a/Mage.Sets/src/mage/cards/a/AuriokWindwalker.java +++ b/Mage.Sets/src/mage/cards/a/AuriokWindwalker.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.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -56,7 +57,7 @@ public class AuriokWindwalker 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 AuriokWindwalker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AvenBrigadier.java b/Mage.Sets/src/mage/cards/a/AvenBrigadier.java index 9da1cf4917..29c830979a 100644 --- a/Mage.Sets/src/mage/cards/a/AvenBrigadier.java +++ b/Mage.Sets/src/mage/cards/a/AvenBrigadier.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; @@ -51,8 +52,8 @@ public class AvenBrigadier extends CardImpl { private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Soldier creatures"); static { - filter1.add(new SubtypePredicate("Bird")); - filter2.add(new SubtypePredicate("Soldier")); + filter1.add(new SubtypePredicate(SubType.BIRD)); + filter2.add(new SubtypePredicate(SubType.SOLDIER)); } public AvenBrigadier(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/a/AzamiLadyOfScrolls.java b/Mage.Sets/src/mage/cards/a/AzamiLadyOfScrolls.java index 3471a480ac..c74c37d5da 100644 --- a/Mage.Sets/src/mage/cards/a/AzamiLadyOfScrolls.java +++ b/Mage.Sets/src/mage/cards/a/AzamiLadyOfScrolls.java @@ -35,6 +35,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.Zone; import mage.filter.common.FilterControlledCreaturePermanent; @@ -54,7 +55,7 @@ public class AzamiLadyOfScrolls extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Wizard")); + filter.add(new SubtypePredicate(SubType.WIZARD)); } public AzamiLadyOfScrolls(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BalthorTheDefiled.java b/Mage.Sets/src/mage/cards/b/BalthorTheDefiled.java index 098072c954..b23d479577 100644 --- a/Mage.Sets/src/mage/cards/b/BalthorTheDefiled.java +++ b/Mage.Sets/src/mage/cards/b/BalthorTheDefiled.java @@ -66,7 +66,7 @@ public class BalthorTheDefiled extends CardImpl { // Minion creatures get +1/+1. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, - new FilterCreaturePermanent("Minion", "Minion creatures"), false))); + new FilterCreaturePermanent(SubType.MINION, "Minion creatures"), false))); // {B}{B}{B}, Exile Balthor the Defiled: Each player returns all black and all red creature cards from his or her graveyard to the battlefield. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BalthorTheDefiledEffect(), new ManaCostsImpl("{B}{B}{B}")); diff --git a/Mage.Sets/src/mage/cards/b/BaneslayerAngel.java b/Mage.Sets/src/mage/cards/b/BaneslayerAngel.java index a7cfa0f1e6..401dce38a5 100644 --- a/Mage.Sets/src/mage/cards/b/BaneslayerAngel.java +++ b/Mage.Sets/src/mage/cards/b/BaneslayerAngel.java @@ -36,6 +36,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.Predicates; @@ -52,7 +53,7 @@ public class BaneslayerAngel extends CardImpl { private static final FilterPermanent filter = new FilterCreaturePermanent("Demons and from Dragons"); static { - filter.add(Predicates.or(new SubtypePredicate("Demon"), new SubtypePredicate("Dragon"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.DEMON), new SubtypePredicate(SubType.DRAGON))); } public BaneslayerAngel(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BattlegroundGeist.java b/Mage.Sets/src/mage/cards/b/BattlegroundGeist.java index 5cb4cd4972..44213deb59 100644 --- a/Mage.Sets/src/mage/cards/b/BattlegroundGeist.java +++ b/Mage.Sets/src/mage/cards/b/BattlegroundGeist.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; @@ -49,7 +50,7 @@ public class BattlegroundGeist extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Spirit creatures"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public BattlegroundGeist(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BelltollDragon.java b/Mage.Sets/src/mage/cards/b/BelltollDragon.java index eaddc06ec8..5c59f786b5 100644 --- a/Mage.Sets/src/mage/cards/b/BelltollDragon.java +++ b/Mage.Sets/src/mage/cards/b/BelltollDragon.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.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,7 +55,7 @@ public class BelltollDragon extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public BelltollDragon(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BenalishCommander.java b/Mage.Sets/src/mage/cards/b/BenalishCommander.java index a068861886..e8a2614f31 100644 --- a/Mage.Sets/src/mage/cards/b/BenalishCommander.java +++ b/Mage.Sets/src/mage/cards/b/BenalishCommander.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.counters.CounterType; import mage.filter.common.FilterControlledPermanent; @@ -59,7 +60,7 @@ public class BenalishCommander extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Soldiers you control"); static { - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public BenalishCommander(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BirchloreRangers.java b/Mage.Sets/src/mage/cards/b/BirchloreRangers.java index c84cc40f35..82859a2233 100644 --- a/Mage.Sets/src/mage/cards/b/BirchloreRangers.java +++ b/Mage.Sets/src/mage/cards/b/BirchloreRangers.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.common.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class BirchloreRangers extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public BirchloreRangers(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BladewingTheRisen.java b/Mage.Sets/src/mage/cards/b/BladewingTheRisen.java index 31692c3314..1a81eb7eeb 100644 --- a/Mage.Sets/src/mage/cards/b/BladewingTheRisen.java +++ b/Mage.Sets/src/mage/cards/b/BladewingTheRisen.java @@ -37,10 +37,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 mage.filter.common.FilterPermanentCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -58,8 +55,8 @@ public class BladewingTheRisen extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Dragon creatures"); private static final FilterPermanentCard filterCard = new FilterPermanentCard("Dragon permanent card from your graveyard"); static { - filter.add(new SubtypePredicate("Dragon")); - filterCard.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); + filterCard.add(new SubtypePredicate(SubType.DRAGON)); } public BladewingTheRisen(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BloodChinRager.java b/Mage.Sets/src/mage/cards/b/BloodChinRager.java index 51e0c08b7c..137b235729 100644 --- a/Mage.Sets/src/mage/cards/b/BloodChinRager.java +++ b/Mage.Sets/src/mage/cards/b/BloodChinRager.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.permanent.ControllerPredicate; @@ -47,7 +48,7 @@ import java.util.UUID; */ public class BloodChinRager extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Warrior","Warrior creatures you control"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.WARRIOR,"Warrior creatures you control"); static { filter.add(new ControllerPredicate(TargetController.YOU)); diff --git a/Mage.Sets/src/mage/cards/b/BloodlordOfVaasgoth.java b/Mage.Sets/src/mage/cards/b/BloodlordOfVaasgoth.java index 9d28a12269..217d808f5b 100644 --- a/Mage.Sets/src/mage/cards/b/BloodlordOfVaasgoth.java +++ b/Mage.Sets/src/mage/cards/b/BloodlordOfVaasgoth.java @@ -54,7 +54,7 @@ public class BloodlordOfVaasgoth extends CardImpl { static { filter.add(new CardTypePredicate(CardType.CREATURE)); - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); } public BloodlordOfVaasgoth(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BoggartLoggers.java b/Mage.Sets/src/mage/cards/b/BoggartLoggers.java index fe98900060..c6f2b557f9 100644 --- a/Mage.Sets/src/mage/cards/b/BoggartLoggers.java +++ b/Mage.Sets/src/mage/cards/b/BoggartLoggers.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.ForestwalkAbility; 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 BoggartLoggers extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Treefolk"), - new SubtypePredicate("Forest"))); + new SubtypePredicate(SubType.TREEFOLK), + new SubtypePredicate(SubType.FOREST))); } public BoggartLoggers(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BoilingSeas.java b/Mage.Sets/src/mage/cards/b/BoilingSeas.java index c248ccfa3e..89b410ab66 100644 --- a/Mage.Sets/src/mage/cards/b/BoilingSeas.java +++ b/Mage.Sets/src/mage/cards/b/BoilingSeas.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 BoilingSeas extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Islands"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public BoilingSeas(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BoonweaverGiant.java b/Mage.Sets/src/mage/cards/b/BoonweaverGiant.java index b45ec16ef2..ebcad3e796 100644 --- a/Mage.Sets/src/mage/cards/b/BoonweaverGiant.java +++ b/Mage.Sets/src/mage/cards/b/BoonweaverGiant.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.CardTypePredicate; @@ -104,7 +105,7 @@ class BoonweaverGiantEffect extends OneShotEffect { FilterCard filter = new FilterCard("Aura card"); filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); Card card = null; Zone zone = null; diff --git a/Mage.Sets/src/mage/cards/b/BrassSquire.java b/Mage.Sets/src/mage/cards/b/BrassSquire.java index 5350d17c7d..0da23667f9 100644 --- a/Mage.Sets/src/mage/cards/b/BrassSquire.java +++ b/Mage.Sets/src/mage/cards/b/BrassSquire.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; @@ -55,7 +56,7 @@ public class BrassSquire 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 BrassSquire(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BubblingMuck.java b/Mage.Sets/src/mage/cards/b/BubblingMuck.java index 4e7d72a941..ba0cb18f32 100644 --- a/Mage.Sets/src/mage/cards/b/BubblingMuck.java +++ b/Mage.Sets/src/mage/cards/b/BubblingMuck.java @@ -37,6 +37,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.ColoredManaSymbol; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -75,7 +76,7 @@ class BubblingMuckTriggeredAbility extends DelayedTriggeredManaAbility { private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public BubblingMuckTriggeredAbility() { diff --git a/Mage.Sets/src/mage/cards/c/CabalCoffers.java b/Mage.Sets/src/mage/cards/c/CabalCoffers.java index f16c8d5697..ccc00e6029 100644 --- a/Mage.Sets/src/mage/cards/c/CabalCoffers.java +++ b/Mage.Sets/src/mage/cards/c/CabalCoffers.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.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class CabalCoffers 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 CabalCoffers(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CabalSlaver.java b/Mage.Sets/src/mage/cards/c/CabalSlaver.java index e33af6e6c0..9c6c7b4f39 100644 --- a/Mage.Sets/src/mage/cards/c/CabalSlaver.java +++ b/Mage.Sets/src/mage/cards/c/CabalSlaver.java @@ -34,6 +34,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SetTargetPointer; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class CabalSlaver extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("a Goblin"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public CabalSlaver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CallToTheGrave.java b/Mage.Sets/src/mage/cards/c/CallToTheGrave.java index 0301e0dc30..dec95a73ed 100644 --- a/Mage.Sets/src/mage/cards/c/CallToTheGrave.java +++ b/Mage.Sets/src/mage/cards/c/CallToTheGrave.java @@ -38,6 +38,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.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -56,7 +57,7 @@ public class CallToTheGrave extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a non-Zombie creature"); static { - filter.add(Predicates.not(new SubtypePredicate("Zombie"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.ZOMBIE))); } public CallToTheGrave(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CaptainOfTheWatch.java b/Mage.Sets/src/mage/cards/c/CaptainOfTheWatch.java index 7e73b465d1..e2fb5e4f51 100644 --- a/Mage.Sets/src/mage/cards/c/CaptainOfTheWatch.java +++ b/Mage.Sets/src/mage/cards/c/CaptainOfTheWatch.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; @@ -54,7 +55,7 @@ public class CaptainOfTheWatch extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures"); static { - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public CaptainOfTheWatch(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CateranBrute.java b/Mage.Sets/src/mage/cards/c/CateranBrute.java index feba5fdb9b..1f40866cb0 100644 --- a/Mage.Sets/src/mage/cards/c/CateranBrute.java +++ b/Mage.Sets/src/mage/cards/c/CateranBrute.java @@ -55,7 +55,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("Mercenary")); + filter.add(new SubtypePredicate()); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 3)); } diff --git a/Mage.Sets/src/mage/cards/c/CateranSummons.java b/Mage.Sets/src/mage/cards/c/CateranSummons.java index 337978b295..cc95f39790 100644 --- a/Mage.Sets/src/mage/cards/c/CateranSummons.java +++ b/Mage.Sets/src/mage/cards/c/CateranSummons.java @@ -32,6 +32,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.FilterCreatureCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class CateranSummons extends CardImpl { private static final FilterCard filter = new FilterCreatureCard("Mercenary card"); static { - filter.add(new SubtypePredicate("Mercenary")); + filter.add(new SubtypePredicate(SubType.MERCENARY)); } public CateranSummons(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CaterwaulingBoggart.java b/Mage.Sets/src/mage/cards/c/CaterwaulingBoggart.java index 9af18616a7..0f5b574711 100644 --- a/Mage.Sets/src/mage/cards/c/CaterwaulingBoggart.java +++ b/Mage.Sets/src/mage/cards/c/CaterwaulingBoggart.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.FilterPermanent; import mage.filter.common.FilterControlledCreaturePermanent; @@ -52,8 +53,8 @@ public class CaterwaulingBoggart extends CardImpl { private static final FilterPermanent filterElemental = new FilterControlledCreaturePermanent("Elemental"); static { - filterGoblin.add(new SubtypePredicate("Goblin")); - filterElemental.add(new SubtypePredicate("Elemental")); + filterGoblin.add(new SubtypePredicate(SubType.GOBLIN)); + filterElemental.add(new SubtypePredicate(SubType.ELEMENTAL)); } public CaterwaulingBoggart(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CaughtInTheBrights.java b/Mage.Sets/src/mage/cards/c/CaughtInTheBrights.java index 6342320da9..6cdd5d7e57 100644 --- a/Mage.Sets/src/mage/cards/c/CaughtInTheBrights.java +++ b/Mage.Sets/src/mage/cards/c/CaughtInTheBrights.java @@ -55,7 +55,7 @@ public class CaughtInTheBrights extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Vehicle")); + filter.add(new SubtypePredicate(SubType.VEHICLE)); } public CaughtInTheBrights(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CennsHeir.java b/Mage.Sets/src/mage/cards/c/CennsHeir.java index 36ed9359a5..ae5a7552fa 100644 --- a/Mage.Sets/src/mage/cards/c/CennsHeir.java +++ b/Mage.Sets/src/mage/cards/c/CennsHeir.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.FilterAttackingCreature; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; @@ -50,7 +51,7 @@ public class CennsHeir extends CardImpl { private static final FilterAttackingCreature filter = new FilterAttackingCreature("other attacking Kithkin"); static { - filter.add(new SubtypePredicate("Kithkin")); + filter.add(new SubtypePredicate(SubType.KITHKIN)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/c/ChangelingTitan.java b/Mage.Sets/src/mage/cards/c/ChangelingTitan.java index c2d997bd92..9b84ed2123 100644 --- a/Mage.Sets/src/mage/cards/c/ChangelingTitan.java +++ b/Mage.Sets/src/mage/cards/c/ChangelingTitan.java @@ -50,9 +50,9 @@ public class ChangelingTitan extends CardImpl { // Changeling this.addAbility(ChangelingAbility.getInstance()); - + // Champion a creature - this.addAbility(new ChampionAbility(this, "", true)); + this.addAbility(new ChampionAbility(this, true)); } public ChangelingTitan(final ChangelingTitan card) { diff --git a/Mage.Sets/src/mage/cards/c/ChosenOfMarkov.java b/Mage.Sets/src/mage/cards/c/ChosenOfMarkov.java index 3963fca37f..951cae1418 100644 --- a/Mage.Sets/src/mage/cards/c/ChosenOfMarkov.java +++ b/Mage.Sets/src/mage/cards/c/ChosenOfMarkov.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.cards.m.MarkovsServant; 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 ChosenOfMarkov extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); } public ChosenOfMarkov(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/ClawsOfValakut.java b/Mage.Sets/src/mage/cards/c/ClawsOfValakut.java index 368d5037e0..a20f61cf9f 100644 --- a/Mage.Sets/src/mage/cards/c/ClawsOfValakut.java +++ b/Mage.Sets/src/mage/cards/c/ClawsOfValakut.java @@ -55,7 +55,7 @@ public class ClawsOfValakut extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain you control"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/c/CommanderCody.java b/Mage.Sets/src/mage/cards/c/CommanderCody.java index a405deb48d..902db7b15c 100644 --- a/Mage.Sets/src/mage/cards/c/CommanderCody.java +++ b/Mage.Sets/src/mage/cards/c/CommanderCody.java @@ -53,7 +53,7 @@ public class CommanderCody extends CardImpl { static { filter.add(Predicates.not(new TokenPredicate())); - filter.add(new SubtypePredicate("Trooper")); + filter.add(new SubtypePredicate(SubType.TROOPER)); } public CommanderCody(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/ConsumingBonfire.java b/Mage.Sets/src/mage/cards/c/ConsumingBonfire.java index 1c411efec0..ea450a8cbd 100644 --- a/Mage.Sets/src/mage/cards/c/ConsumingBonfire.java +++ b/Mage.Sets/src/mage/cards/c/ConsumingBonfire.java @@ -32,6 +32,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.FilterPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -52,9 +53,9 @@ public class ConsumingBonfire extends CardImpl { static { filter.add(new CardTypePredicate(CardType.CREATURE)); - filter.add(Predicates.not(new SubtypePredicate("Elemental"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.ELEMENTAL))); filter2.add(new CardTypePredicate(CardType.CREATURE)); - filter2.add(new SubtypePredicate("Treefolk")); + filter2.add(new SubtypePredicate(SubType.TREEFOLK)); } public ConsumingBonfire(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CorruptedRoots.java b/Mage.Sets/src/mage/cards/c/CorruptedRoots.java index c4ffe02400..5f177535a8 100644 --- a/Mage.Sets/src/mage/cards/c/CorruptedRoots.java +++ b/Mage.Sets/src/mage/cards/c/CorruptedRoots.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.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,8 +54,8 @@ public class CorruptedRoots extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Forest"), - new SubtypePredicate("Plains"))); + new SubtypePredicate(SubType.FOREST), + new SubtypePredicate(SubType.PLAINS))); } public CorruptedRoots(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CrystallineSliver.java b/Mage.Sets/src/mage/cards/c/CrystallineSliver.java index abe0cc4d71..9117961373 100644 --- a/Mage.Sets/src/mage/cards/c/CrystallineSliver.java +++ b/Mage.Sets/src/mage/cards/c/CrystallineSliver.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.FilterPermanent; @@ -54,7 +55,7 @@ public class CrystallineSliver extends CardImpl { this.toughness = new MageInt(2); // All Slivers have shroud. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(ShroudAbility.getInstance(), Duration.WhileOnBattlefield, new FilterPermanent("Sliver", "All Slivers")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(ShroudAbility.getInstance(), Duration.WhileOnBattlefield, new FilterPermanent(SubType.SLIVER, "All Slivers")))); } public CrystallineSliver(final CrystallineSliver card) { diff --git a/Mage.Sets/src/mage/cards/c/CyclopeanTomb.java b/Mage.Sets/src/mage/cards/c/CyclopeanTomb.java index 78d9765e80..32060a49a5 100644 --- a/Mage.Sets/src/mage/cards/c/CyclopeanTomb.java +++ b/Mage.Sets/src/mage/cards/c/CyclopeanTomb.java @@ -71,7 +71,7 @@ public class CyclopeanTomb extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.add(Predicates.not(new SubtypePredicate("Swamp"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.SWAMP))); } public CyclopeanTomb(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DaruEncampment.java b/Mage.Sets/src/mage/cards/d/DaruEncampment.java index b8e42e6ea5..5aaf7de95e 100644 --- a/Mage.Sets/src/mage/cards/d/DaruEncampment.java +++ b/Mage.Sets/src/mage/cards/d/DaruEncampment.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 DaruEncampment extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creature"); static { - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public DaruEncampment(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DeathBaron.java b/Mage.Sets/src/mage/cards/d/DeathBaron.java index eb2202db8b..42a05e023a 100644 --- a/Mage.Sets/src/mage/cards/d/DeathBaron.java +++ b/Mage.Sets/src/mage/cards/d/DeathBaron.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,8 +54,8 @@ public class DeathBaron extends CardImpl { private static final FilterCreaturePermanent filterZombie = new FilterCreaturePermanent("Zombie creatures"); static { - filterSkeletons.add(new SubtypePredicate("Skeleton")); - filterZombie.add(new SubtypePredicate("Zombie")); + filterSkeletons.add(new SubtypePredicate(SubType.SKELETON)); + filterZombie.add(new SubtypePredicate(SubType.ZOMBIE)); } public DeathBaron(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DeepSeaSerpent.java b/Mage.Sets/src/mage/cards/d/DeepSeaSerpent.java index fb9da7d9fc..a2bf7d90ce 100644 --- a/Mage.Sets/src/mage/cards/d/DeepSeaSerpent.java +++ b/Mage.Sets/src/mage/cards/d/DeepSeaSerpent.java @@ -33,6 +33,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 DeepSeaSerpent extends CardImpl { this.toughness = new MageInt(5); // Deep-Sea 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")))); } public DeepSeaSerpent(final DeepSeaSerpent card) { diff --git a/Mage.Sets/src/mage/cards/d/DefiantFalcon.java b/Mage.Sets/src/mage/cards/d/DefiantFalcon.java index 10db4288bf..9f9aab4f98 100644 --- a/Mage.Sets/src/mage/cards/d/DefiantFalcon.java +++ b/Mage.Sets/src/mage/cards/d/DefiantFalcon.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.FilterPermanentCard; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -54,7 +55,7 @@ public class DefiantFalcon 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/d/DiamondKaleidoscope.java b/Mage.Sets/src/mage/cards/d/DiamondKaleidoscope.java index f5e188466b..752763c5a3 100644 --- a/Mage.Sets/src/mage/cards/d/DiamondKaleidoscope.java +++ b/Mage.Sets/src/mage/cards/d/DiamondKaleidoscope.java @@ -37,6 +37,7 @@ import mage.abilities.mana.AnyColorManaAbility; 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 DiamondKaleidoscope extends CardImpl { static { filter.add(new TokenPredicate()); - filter.add(new SubtypePredicate("Prism")); + filter.add(new SubtypePredicate(SubType.PRISM)); } public DiamondKaleidoscope(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DraconicRoar.java b/Mage.Sets/src/mage/cards/d/DraconicRoar.java index ee8fb30c20..e440b9b634 100644 --- a/Mage.Sets/src/mage/cards/d/DraconicRoar.java +++ b/Mage.Sets/src/mage/cards/d/DraconicRoar.java @@ -37,6 +37,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; @@ -57,7 +58,7 @@ public class DraconicRoar 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 DraconicRoar(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DragonHunter.java b/Mage.Sets/src/mage/cards/d/DragonHunter.java index 195d243a32..42b5195944 100644 --- a/Mage.Sets/src/mage/cards/d/DragonHunter.java +++ b/Mage.Sets/src/mage/cards/d/DragonHunter.java @@ -54,7 +54,7 @@ public class DragonHunter extends CardImpl { this.toughness = new MageInt(1); // Protection from Dragons - this.addAbility(new ProtectionAbility(new FilterPermanent("Dragon", "Dragons"))); + this.addAbility(new ProtectionAbility(new FilterPermanent(SubType.DRAGON, "Dragons"))); // Dragon Hunter can block Dragons as though it had reach. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockDragonsAsThoughtIthadReachEffect(Duration.WhileOnBattlefield))); diff --git a/Mage.Sets/src/mage/cards/d/DragonlordsServant.java b/Mage.Sets/src/mage/cards/d/DragonlordsServant.java index 68ea832961..c2acd8cbde 100644 --- a/Mage.Sets/src/mage/cards/d/DragonlordsServant.java +++ b/Mage.Sets/src/mage/cards/d/DragonlordsServant.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.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class DragonlordsServant extends CardImpl { private static final FilterCard filter = new FilterCard("Dragon spells"); static { - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public DragonlordsServant(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DragonspeakerShaman.java b/Mage.Sets/src/mage/cards/d/DragonspeakerShaman.java index c52396b878..8ed4c6d6f2 100644 --- a/Mage.Sets/src/mage/cards/d/DragonspeakerShaman.java +++ b/Mage.Sets/src/mage/cards/d/DragonspeakerShaman.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.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class DragonspeakerShaman extends CardImpl { private static final FilterCard filter = new FilterCard("Dragon spells"); static { - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public DragonspeakerShaman(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/Dragonstalker.java b/Mage.Sets/src/mage/cards/d/Dragonstalker.java index 4eabf83f1e..8cceeb0fbb 100644 --- a/Mage.Sets/src/mage/cards/d/Dragonstalker.java +++ b/Mage.Sets/src/mage/cards/d/Dragonstalker.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 java.util.UUID; @@ -53,7 +54,7 @@ public class Dragonstalker extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // protection from Dragons - this.addAbility(new ProtectionAbility(new FilterPermanent("Dragon", "Dragons"))); + this.addAbility(new ProtectionAbility(new FilterPermanent(SubType.DRAGON, "Dragons"))); } public Dragonstalker(final Dragonstalker card) { diff --git a/Mage.Sets/src/mage/cards/d/Dreamwinder.java b/Mage.Sets/src/mage/cards/d/Dreamwinder.java index 350ccb244f..e9e492b14f 100644 --- a/Mage.Sets/src/mage/cards/d/Dreamwinder.java +++ b/Mage.Sets/src/mage/cards/d/Dreamwinder.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.common.FilterLandPermanent; @@ -63,13 +64,13 @@ public class Dreamwinder extends CardImpl { this.toughness = new MageInt(3); // Dreamwinder 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}, Sacrifice an Island: Target land becomes an Island until end of turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesBasicLandTargetEffect(Duration.EndOfTurn, "Island"), new ManaCostsImpl("{U}")); Target target = new TargetLandPermanent(); ability.addTarget(target); FilterControlledLandPermanent filter = new FilterControlledLandPermanent("an Island"); - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(1, 1, filter, true))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DrogskolCavalry.java b/Mage.Sets/src/mage/cards/d/DrogskolCavalry.java index cf84bd5683..4e7d2eab6b 100644 --- a/Mage.Sets/src/mage/cards/d/DrogskolCavalry.java +++ b/Mage.Sets/src/mage/cards/d/DrogskolCavalry.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.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -55,7 +56,7 @@ public class DrogskolCavalry extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public DrogskolCavalry(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DrunauCorpseTrawler.java b/Mage.Sets/src/mage/cards/d/DrunauCorpseTrawler.java index dab5473457..907f363e43 100644 --- a/Mage.Sets/src/mage/cards/d/DrunauCorpseTrawler.java +++ b/Mage.Sets/src/mage/cards/d/DrunauCorpseTrawler.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.game.permanent.token.ZombieToken; @@ -63,7 +64,7 @@ public class DrunauCorpseTrawler extends CardImpl { // {2}{B}: Target Zombie gains deathtouch until end of turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityTargetEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl<>("{2}{B}")); - ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("Zombie", "Zombie"))); + ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent(SubType.ZOMBIE, "Zombie"))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DwarvenBloodboiler.java b/Mage.Sets/src/mage/cards/d/DwarvenBloodboiler.java index 720a2c134f..481f6f59b6 100644 --- a/Mage.Sets/src/mage/cards/d/DwarvenBloodboiler.java +++ b/Mage.Sets/src/mage/cards/d/DwarvenBloodboiler.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; @@ -56,7 +57,7 @@ public class DwarvenBloodboiler extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Dwarf")); + filter.add(new SubtypePredicate(SubType.DWARF)); } public DwarvenBloodboiler(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/EarthServant.java b/Mage.Sets/src/mage/cards/e/EarthServant.java index d76d184bd1..ef0f9f8717 100644 --- a/Mage.Sets/src/mage/cards/e/EarthServant.java +++ b/Mage.Sets/src/mage/cards/e/EarthServant.java @@ -34,10 +34,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; 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.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 EarthServant extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain you control"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/e/EliteInquisitor.java b/Mage.Sets/src/mage/cards/e/EliteInquisitor.java index 1af223c28a..645b4294aa 100644 --- a/Mage.Sets/src/mage/cards/e/EliteInquisitor.java +++ b/Mage.Sets/src/mage/cards/e/EliteInquisitor.java @@ -34,6 +34,7 @@ import mage.abilities.keyword.VigilanceAbility; 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.Predicates; @@ -49,9 +50,9 @@ public class EliteInquisitor extends CardImpl { private static final FilterPermanent filter = new FilterCreaturePermanent("Vampires, from Werewolves, and from Zombies"); 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.ZOMBIE) )); } diff --git a/Mage.Sets/src/mage/cards/e/ElvenRiders.java b/Mage.Sets/src/mage/cards/e/ElvenRiders.java index 05a87e62ff..074355ddd5 100644 --- a/Mage.Sets/src/mage/cards/e/ElvenRiders.java +++ b/Mage.Sets/src/mage/cards/e/ElvenRiders.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.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; @@ -51,7 +52,7 @@ public class ElvenRiders extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("except by Walls and/or creatures with flying"); static { - filter.add(Predicates.not(Predicates.or(new SubtypePredicate("Wall"), new AbilityPredicate(FlyingAbility.class)))); + filter.add(Predicates.not(Predicates.or(new SubtypePredicate(SubType.WALL), new AbilityPredicate(FlyingAbility.class)))); } public ElvenRiders(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/ElvishArchdruid.java b/Mage.Sets/src/mage/cards/e/ElvishArchdruid.java index 4dc8557ce1..94df4a8890 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishArchdruid.java +++ b/Mage.Sets/src/mage/cards/e/ElvishArchdruid.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.common.FilterCreaturePermanent; @@ -55,8 +56,8 @@ public class ElvishArchdruid extends CardImpl { private static final FilterControlledCreaturePermanent filterCount = new FilterControlledCreaturePermanent("Elf you control"); static { - filter.add(new SubtypePredicate("Elf")); - filterCount.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); + filterCount.add(new SubtypePredicate(SubType.ELF)); } public ElvishArchdruid(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/ElvishVanguard.java b/Mage.Sets/src/mage/cards/e/ElvishVanguard.java index 00487f2bf8..e55c780ff3 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishVanguard.java +++ b/Mage.Sets/src/mage/cards/e/ElvishVanguard.java @@ -33,6 +33,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.CounterType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class ElvishVanguard extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("another Elf"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/e/EmbalmersTools.java b/Mage.Sets/src/mage/cards/e/EmbalmersTools.java index 389fe73f9d..2505908159 100644 --- a/Mage.Sets/src/mage/cards/e/EmbalmersTools.java +++ b/Mage.Sets/src/mage/cards/e/EmbalmersTools.java @@ -39,13 +39,7 @@ import mage.abilities.effects.common.cost.CostModificationEffectImpl; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AbilityType; -import mage.constants.CardType; -import mage.constants.CostModificationType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.Predicates; @@ -68,7 +62,7 @@ public class EmbalmersTools extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public EmbalmersTools(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/EndrekSahrMasterBreeder.java b/Mage.Sets/src/mage/cards/e/EndrekSahrMasterBreeder.java index 6f5f9957b7..dcd496e7eb 100644 --- a/Mage.Sets/src/mage/cards/e/EndrekSahrMasterBreeder.java +++ b/Mage.Sets/src/mage/cards/e/EndrekSahrMasterBreeder.java @@ -29,7 +29,7 @@ package mage.cards.e; import mage.MageInt; import mage.abilities.Ability; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.common.ControlsPermanentsControllerTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.effects.OneShotEffect; @@ -37,10 +37,6 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.SacrificeSourceEffect; 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.filter.StaticFilters; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; @@ -68,7 +64,7 @@ public class EndrekSahrMasterBreeder extends CardImpl { this.addAbility(new SpellCastControllerTriggeredAbility(new EndrekSahrMasterBreederEffect(), StaticFilters.FILTER_SPELL_A_CREATURE, false, true)); // When you control seven or more Thrulls, sacrifice Endrek Sahr, Master Breeder. this.addAbility(new ControlsPermanentsControllerTriggeredAbility( - new FilterCreaturePermanent("Thrull", "seven or more Thrulls"), ComparisonType.MORE_THAN, 6, + new FilterCreaturePermanent(SubType.THRULL, "seven or more Thrulls"), ComparisonType.MORE_THAN, 6, new SacrificeSourceEffect())); } diff --git a/Mage.Sets/src/mage/cards/e/EraOfInnovation.java b/Mage.Sets/src/mage/cards/e/EraOfInnovation.java index 03c06a99e6..c43fab399b 100644 --- a/Mage.Sets/src/mage/cards/e/EraOfInnovation.java +++ b/Mage.Sets/src/mage/cards/e/EraOfInnovation.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect; 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; @@ -58,7 +59,7 @@ public class EraOfInnovation extends CardImpl { static { filter.add(Predicates.or(new CardTypePredicate(CardType.ARTIFACT), - new SubtypePredicate("Artificer"))); + new SubtypePredicate(SubType.ARTIFICER))); } public EraOfInnovation(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/EyeOfUgin.java b/Mage.Sets/src/mage/cards/e/EyeOfUgin.java index 850ac9e1ee..1b8f664d1c 100644 --- a/Mage.Sets/src/mage/cards/e/EyeOfUgin.java +++ b/Mage.Sets/src/mage/cards/e/EyeOfUgin.java @@ -38,6 +38,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.SuperType; import mage.constants.Zone; import mage.filter.FilterCard; @@ -59,7 +60,7 @@ public class EyeOfUgin extends CardImpl { static { filter.add(new ColorlessPredicate()); filterSpells.add(new ColorlessPredicate()); - filterSpells.add(new SubtypePredicate("Eldrazi")); + filterSpells.add(new SubtypePredicate(SubType.ELDRAZI)); } public EyeOfUgin(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FathomSeer.java b/Mage.Sets/src/mage/cards/f/FathomSeer.java index e2eb4e81e5..92ab0b7a60 100644 --- a/Mage.Sets/src/mage/cards/f/FathomSeer.java +++ b/Mage.Sets/src/mage/cards/f/FathomSeer.java @@ -35,6 +35,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.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; @@ -50,7 +51,7 @@ public class FathomSeer extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Islands"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public FathomSeer(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{U}"); diff --git a/Mage.Sets/src/mage/cards/f/FeedingFrenzy.java b/Mage.Sets/src/mage/cards/f/FeedingFrenzy.java index 00834c43c9..97a8390265 100644 --- a/Mage.Sets/src/mage/cards/f/FeedingFrenzy.java +++ b/Mage.Sets/src/mage/cards/f/FeedingFrenzy.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.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; @@ -50,7 +51,7 @@ public class FeedingFrenzy extends CardImpl { private static final FilterPermanent filter = new FilterPermanent(); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public FeedingFrenzy(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/Fireblast.java b/Mage.Sets/src/mage/cards/f/Fireblast.java index fecd1ee315..8d3b16f8cc 100644 --- a/Mage.Sets/src/mage/cards/f/Fireblast.java +++ b/Mage.Sets/src/mage/cards/f/Fireblast.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.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; @@ -50,7 +51,7 @@ public class Fireblast extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("two Mountains"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public Fireblast(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FirewakeSliver.java b/Mage.Sets/src/mage/cards/f/FirewakeSliver.java index 784bbe1ced..244174f524 100644 --- a/Mage.Sets/src/mage/cards/f/FirewakeSliver.java +++ b/Mage.Sets/src/mage/cards/f/FirewakeSliver.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; @@ -57,8 +58,8 @@ public class FirewakeSliver extends CardImpl { private static final FilterCreaturePermanent targetSliverFilter = new FilterCreaturePermanent("Sliver"); static { - filter.add(new SubtypePredicate("Sliver")); - targetSliverFilter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); + targetSliverFilter.add(new SubtypePredicate(SubType.SLIVER)); } public FirewakeSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FlamekinHarbinger.java b/Mage.Sets/src/mage/cards/f/FlamekinHarbinger.java index f603a17184..5f8f56c3f7 100644 --- a/Mage.Sets/src/mage/cards/f/FlamekinHarbinger.java +++ b/Mage.Sets/src/mage/cards/f/FlamekinHarbinger.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; @@ -48,7 +49,7 @@ public class FlamekinHarbinger extends CardImpl { private static final FilterCard filter = new FilterCard("Elemental card"); static { - filter.add(new SubtypePredicate("Elemental")); + filter.add(new SubtypePredicate(SubType.ELEMENTAL)); } public FlamekinHarbinger(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/Flickerform.java b/Mage.Sets/src/mage/cards/f/Flickerform.java index fb40569ccd..23d2fd6a8e 100644 --- a/Mage.Sets/src/mage/cards/f/Flickerform.java +++ b/Mage.Sets/src/mage/cards/f/Flickerform.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.Filter; import mage.filter.FilterCard; @@ -91,7 +92,7 @@ class FlickerformEffect extends OneShotEffect { private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent(); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public FlickerformEffect() { @@ -147,7 +148,7 @@ class FlickerformReturnEffect extends OneShotEffect { static { filterAura.add(new CardTypePredicate(CardType.ENCHANTMENT)); - filterAura.add(new SubtypePredicate("Aura")); + filterAura.add(new SubtypePredicate(SubType.AURA)); } private final UUID enchantedCardId; diff --git a/Mage.Sets/src/mage/cards/f/Foil.java b/Mage.Sets/src/mage/cards/f/Foil.java index 649ed59877..f9e8dab3fb 100644 --- a/Mage.Sets/src/mage/cards/f/Foil.java +++ b/Mage.Sets/src/mage/cards/f/Foil.java @@ -34,6 +34,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.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetSpell; @@ -49,7 +50,7 @@ public class Foil extends CardImpl { private static final FilterCard filter = new FilterCard("an Island card"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public Foil(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/Foratog.java b/Mage.Sets/src/mage/cards/f/Foratog.java index 993c841362..6f442ba77b 100644 --- a/Mage.Sets/src/mage/cards/f/Foratog.java +++ b/Mage.Sets/src/mage/cards/f/Foratog.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.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class Foratog extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("a Forest"); static{ - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public Foratog(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}"); diff --git a/Mage.Sets/src/mage/cards/f/FortifiedVillage.java b/Mage.Sets/src/mage/cards/f/FortifiedVillage.java index cebad51600..793fa8ede2 100644 --- a/Mage.Sets/src/mage/cards/f/FortifiedVillage.java +++ b/Mage.Sets/src/mage/cards/f/FortifiedVillage.java @@ -35,6 +35,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.FilterCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,8 +52,8 @@ public class FortifiedVillage extends CardImpl { private static final FilterCard filter = new FilterCard("a Forest or Plains card from your hand"); static { - filter.add(Predicates.or(new SubtypePredicate("Forest"), - new SubtypePredicate("Plains"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.FOREST), + new SubtypePredicate(SubType.PLAINS))); } public FortifiedVillage(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FrenzySliver.java b/Mage.Sets/src/mage/cards/f/FrenzySliver.java index 623a925290..99d4808f74 100644 --- a/Mage.Sets/src/mage/cards/f/FrenzySliver.java +++ b/Mage.Sets/src/mage/cards/f/FrenzySliver.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; @@ -58,8 +59,8 @@ public class FrenzySliver extends CardImpl { private static final FilterCreaturePermanent targetSliverFilter = new FilterCreaturePermanent("Sliver"); static { - filter.add(new SubtypePredicate("Sliver")); - targetSliverFilter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); + targetSliverFilter.add(new SubtypePredicate(SubType.SLIVER)); } public FrenzySliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FullMoonsRise.java b/Mage.Sets/src/mage/cards/f/FullMoonsRise.java index 6a85d2c018..f1efae174d 100644 --- a/Mage.Sets/src/mage/cards/f/FullMoonsRise.java +++ b/Mage.Sets/src/mage/cards/f/FullMoonsRise.java @@ -40,10 +40,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.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -61,7 +58,7 @@ public class FullMoonsRise extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Werewolf creatures"); static { - filter.add(new SubtypePredicate("Werewolf")); + filter.add(new SubtypePredicate(SubType.WEREWOLF)); } public FullMoonsRise(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GaeasBounty.java b/Mage.Sets/src/mage/cards/g/GaeasBounty.java index 1485fa8298..8c6d7fa130 100644 --- a/Mage.Sets/src/mage/cards/g/GaeasBounty.java +++ b/Mage.Sets/src/mage/cards/g/GaeasBounty.java @@ -31,6 +31,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.common.FilterLandCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -46,7 +47,7 @@ public class GaeasBounty extends CardImpl { private static final FilterLandCard filter = new FilterLandCard("Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public GaeasBounty(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GauntletOfMight.java b/Mage.Sets/src/mage/cards/g/GauntletOfMight.java index 9f96294169..efa4010f95 100644 --- a/Mage.Sets/src/mage/cards/g/GauntletOfMight.java +++ b/Mage.Sets/src/mage/cards/g/GauntletOfMight.java @@ -55,7 +55,7 @@ public class GauntletOfMight extends CardImpl { static { filter.add(new ColorPredicate(ObjectColor.RED)); - filterMountain.add(new SubtypePredicate("Mountain")); + filterMountain.add(new SubtypePredicate(SubType.MOUNTAIN)); } public GauntletOfMight(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GempalmIncinerator.java b/Mage.Sets/src/mage/cards/g/GempalmIncinerator.java index eed3d91131..e4ce39dd4d 100644 --- a/Mage.Sets/src/mage/cards/g/GempalmIncinerator.java +++ b/Mage.Sets/src/mage/cards/g/GempalmIncinerator.java @@ -37,6 +37,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.common.TargetCreaturePermanent; @@ -51,7 +52,7 @@ public class GempalmIncinerator 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 GempalmIncinerator(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GeneralTazri.java b/Mage.Sets/src/mage/cards/g/GeneralTazri.java index 4aa9994266..009dd82a6d 100644 --- a/Mage.Sets/src/mage/cards/g/GeneralTazri.java +++ b/Mage.Sets/src/mage/cards/g/GeneralTazri.java @@ -39,10 +39,7 @@ import mage.abilities.effects.common.continuous.BoostControlledEffect; 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.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -61,7 +58,7 @@ public class GeneralTazri extends CardImpl { private static final FilterCreatureCard filter = new FilterCreatureCard("an Ally creature card"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); } public GeneralTazri(UUID ownerId, CardSetInfo setInfo) { @@ -79,7 +76,7 @@ public class GeneralTazri extends CardImpl { DynamicValue xValue = new GeneralTazriColorCount(); this.addAbility(new SimpleActivatedAbility( Zone.BATTLEFIELD, - new BoostControlledEffect(xValue, xValue, Duration.EndOfTurn, new FilterCreaturePermanent("Ally", "Ally creatures"), false), + new BoostControlledEffect(xValue, xValue, Duration.EndOfTurn, new FilterCreaturePermanent(SubType.ALLY, "Ally creatures"), false), new ManaCostsImpl("{W}{U}{B}{R}{G}"))); } @@ -99,7 +96,7 @@ class GeneralTazriColorCount implements DynamicValue { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.add(new SubtypePredicate(("Ally"))); + filter.add(new SubtypePredicate((SubType.ALLY))); } @Override diff --git a/Mage.Sets/src/mage/cards/g/GenjuOfTheSpires.java b/Mage.Sets/src/mage/cards/g/GenjuOfTheSpires.java index 0779c3f60a..46be362354 100644 --- a/Mage.Sets/src/mage/cards/g/GenjuOfTheSpires.java +++ b/Mage.Sets/src/mage/cards/g/GenjuOfTheSpires.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.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; @@ -55,7 +52,7 @@ import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActiv */ public class GenjuOfTheSpires extends CardImpl { - private static final FilterLandPermanent FILTER = new FilterLandPermanent("Mountain", "Mountain"); + private static final FilterLandPermanent FILTER = new FilterLandPermanent(SubType.MOUNTAIN, "Mountain"); public GenjuOfTheSpires(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{R}"); diff --git a/Mage.Sets/src/mage/cards/g/GlacialCrevasses.java b/Mage.Sets/src/mage/cards/g/GlacialCrevasses.java index 7191b238b5..a572cb7f79 100644 --- a/Mage.Sets/src/mage/cards/g/GlacialCrevasses.java +++ b/Mage.Sets/src/mage/cards/g/GlacialCrevasses.java @@ -34,10 +34,7 @@ import mage.abilities.effects.Effect; import mage.abilities.effects.common.PreventAllDamageByAllPermanentsEffect; 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.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; @@ -54,7 +51,7 @@ public class GlacialCrevasses extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("a snow Mountain"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); filter.add(new SupertypePredicate(SuperType.SNOW)); } diff --git a/Mage.Sets/src/mage/cards/g/Glimmerpost.java b/Mage.Sets/src/mage/cards/g/Glimmerpost.java index 00d34eb632..afee9759ef 100644 --- a/Mage.Sets/src/mage/cards/g/Glimmerpost.java +++ b/Mage.Sets/src/mage/cards/g/Glimmerpost.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; @@ -75,7 +76,7 @@ class GlimmerpostEffect extends OneShotEffect { private static final FilterPermanent filter = new FilterPermanent(); static { - filter.add(new SubtypePredicate("Locus")); + filter.add(new SubtypePredicate(SubType.LOCUS)); } public GlimmerpostEffect() { diff --git a/Mage.Sets/src/mage/cards/g/GlobalRuin.java b/Mage.Sets/src/mage/cards/g/GlobalRuin.java index 5475b9bb28..0bc382a915 100644 --- a/Mage.Sets/src/mage/cards/g/GlobalRuin.java +++ b/Mage.Sets/src/mage/cards/g/GlobalRuin.java @@ -33,6 +33,8 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; +import mage.constants.SubTypeSet; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -42,18 +44,19 @@ import mage.players.Player; import mage.target.Target; import mage.target.common.TargetControlledPermanent; +import java.util.Arrays; import java.util.HashSet; import java.util.Set; import java.util.UUID; +import java.util.stream.Collectors; /** - * * @author Markedagain */ public class GlobalRuin extends CardImpl { public GlobalRuin(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{W}"); // Each player chooses from the lands he or she controls a land of each basic land type, then sacrifices the rest. this.getSpellAbility().addEffect(new GlobalRuinDestroyLandEffect()); @@ -88,21 +91,21 @@ class GlobalRuinDestroyLandEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Set lands = new HashSet<>(); - + for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) { Player player = game.getPlayer(playerId); - for (String landName : new String[]{"Forest", "Island", "Mountain", "Plains", "Swamp"}) { - FilterControlledLandPermanent filter = new FilterControlledLandPermanent(landName + " you control"); - filter.add(new SubtypePredicate(landName)); - Target target = new TargetControlledPermanent(1, 1, filter, true); - if (target.canChoose(player.getId(), game)) { - player.chooseTarget(outcome, target, source, game); - lands.add(target.getFirstTarget()); - } - } + for (SubType landName : Arrays.stream(SubType.values()).filter(p -> p.getSubTypeSet() == SubTypeSet.BasicLandType).collect(Collectors.toSet())) { + FilterControlledLandPermanent filter = new FilterControlledLandPermanent(landName + " you control"); + filter.add(new SubtypePredicate(landName)); + Target target = new TargetControlledPermanent(1, 1, filter, true); + if (target.canChoose(player.getId(), game)) { + player.chooseTarget(outcome, target, source, game); + lands.add(target.getFirstTarget()); + } + } } - for (Permanent permanent : game.getBattlefield().getAllActivePermanents(new FilterLandPermanent(), game)){ - if (!lands.contains(permanent.getId())){ + for (Permanent permanent : game.getBattlefield().getAllActivePermanents(new FilterLandPermanent(), game)) { + if (!lands.contains(permanent.getId())) { permanent.sacrifice(permanent.getId(), game); } } diff --git a/Mage.Sets/src/mage/cards/g/Goatnapper.java b/Mage.Sets/src/mage/cards/g/Goatnapper.java index 735cb80815..231c37679c 100644 --- a/Mage.Sets/src/mage/cards/g/Goatnapper.java +++ b/Mage.Sets/src/mage/cards/g/Goatnapper.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; import mage.target.TargetPermanent; @@ -53,7 +54,7 @@ public class Goatnapper extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Goat"); static { - filter.add(new SubtypePredicate("Goat")); + filter.add(new SubtypePredicate(SubType.GOAT)); } public Goatnapper(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinGrenade.java b/Mage.Sets/src/mage/cards/g/GoblinGrenade.java index fea70d4cc7..ff4e4a986e 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinGrenade.java +++ b/Mage.Sets/src/mage/cards/g/GoblinGrenade.java @@ -32,6 +32,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.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; @@ -47,7 +48,7 @@ public class GoblinGrenade extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Goblin"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public GoblinGrenade(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinMatron.java b/Mage.Sets/src/mage/cards/g/GoblinMatron.java index 1284b4f729..88ba79a6b1 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinMatron.java +++ b/Mage.Sets/src/mage/cards/g/GoblinMatron.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.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -48,7 +49,7 @@ public class GoblinMatron extends CardImpl { private static final FilterCard filter = new FilterCard("Goblin card"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public GoblinMatron(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinRabblemaster.java b/Mage.Sets/src/mage/cards/g/GoblinRabblemaster.java index e6175a3e84..653f295b3c 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinRabblemaster.java +++ b/Mage.Sets/src/mage/cards/g/GoblinRabblemaster.java @@ -39,10 +39,7 @@ import mage.abilities.effects.common.combat.AttacksIfAbleAllEffect; 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.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.AnotherPredicate; import mage.filter.predicate.permanent.AttackingPredicate; @@ -58,8 +55,8 @@ import java.util.UUID; */ public class GoblinRabblemaster extends CardImpl { - private static final FilterCreaturePermanent otherGoblinFilter = new FilterCreaturePermanent("Goblin", "Other Goblin creatures you control"); - private static final FilterCreaturePermanent attackingFilter = new FilterCreaturePermanent("Goblin", "other attacking Goblin"); + private static final FilterCreaturePermanent otherGoblinFilter = new FilterCreaturePermanent(SubType.GOBLIN, "Other Goblin creatures you control"); + private static final FilterCreaturePermanent attackingFilter = new FilterCreaturePermanent(SubType.GOBLIN, "other attacking Goblin"); static { otherGoblinFilter.add(new AnotherPredicate()); diff --git a/Mage.Sets/src/mage/cards/g/GoblinTurncoat.java b/Mage.Sets/src/mage/cards/g/GoblinTurncoat.java index e18775adbc..1829377c05 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinTurncoat.java +++ b/Mage.Sets/src/mage/cards/g/GoblinTurncoat.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.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class GoblinTurncoat extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Goblin"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public GoblinTurncoat(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinWarrens.java b/Mage.Sets/src/mage/cards/g/GoblinWarrens.java index 8e2381b666..bf2460c31e 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinWarrens.java +++ b/Mage.Sets/src/mage/cards/g/GoblinWarrens.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.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.game.permanent.token.GoblinToken; @@ -48,7 +49,7 @@ import java.util.UUID; */ public class GoblinWarrens extends CardImpl { - private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Goblin", "Goblins"); + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(SubType.GOBLIN, "Goblins"); public GoblinWarrens(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{R}"); diff --git a/Mage.Sets/src/mage/cards/g/GrafHarvest.java b/Mage.Sets/src/mage/cards/g/GrafHarvest.java index 47669f222a..466c9c549f 100644 --- a/Mage.Sets/src/mage/cards/g/GrafHarvest.java +++ b/Mage.Sets/src/mage/cards/g/GrafHarvest.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.common.FilterCreatureCard; @@ -58,7 +59,7 @@ public class GrafHarvest extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Zombies you control"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public GrafHarvest(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/Grasslands.java b/Mage.Sets/src/mage/cards/g/Grasslands.java index c7d36828ca..1c2cdacc40 100644 --- a/Mage.Sets/src/mage/cards/g/Grasslands.java +++ b/Mage.Sets/src/mage/cards/g/Grasslands.java @@ -32,22 +32,23 @@ 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; /** - * * @author LevelX2 */ public class Grasslands extends CardImpl { public Grasslands(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.LAND},""); + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); // Grasslands enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); // {tap}, Sacrifice Grasslands: Search your library for a Forest or Plains card and put it onto the battlefield. Then shuffle your library. - this.addAbility(new FetchLandActivatedAbility(false, new String[]{"Forest", "Plains"})); + this.addAbility(new FetchLandActivatedAbility(false, EnumSet.of(SubType.FOREST, SubType.PLAINS))); } public Grasslands(final Grasslands card) { diff --git a/Mage.Sets/src/mage/cards/g/GuardianBeast.java b/Mage.Sets/src/mage/cards/g/GuardianBeast.java index ef0a0fcc57..4bba16c1a8 100644 --- a/Mage.Sets/src/mage/cards/g/GuardianBeast.java +++ b/Mage.Sets/src/mage/cards/g/GuardianBeast.java @@ -39,10 +39,7 @@ import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.keyword.IndestructibleAbility; 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.FilterObject; import mage.filter.FilterStackObject; import mage.filter.common.FilterControlledArtifactPermanent; @@ -69,7 +66,7 @@ public class GuardianBeast extends CardImpl { static { filterAura.add(new CardTypePredicate(CardType.ENCHANTMENT)); - filterAura.add(new SubtypePredicate("Aura")); + filterAura.add(new SubtypePredicate(SubType.AURA)); filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); } diff --git a/Mage.Sets/src/mage/cards/h/HeritageDruid.java b/Mage.Sets/src/mage/cards/h/HeritageDruid.java index 1f6e23815e..ece03c40eb 100644 --- a/Mage.Sets/src/mage/cards/h/HeritageDruid.java +++ b/Mage.Sets/src/mage/cards/h/HeritageDruid.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.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -51,7 +52,7 @@ public class HeritageDruid extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public HeritageDruid(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HigureTheStillWind.java b/Mage.Sets/src/mage/cards/h/HigureTheStillWind.java index e8e1dbbfae..cce7fc6090 100644 --- a/Mage.Sets/src/mage/cards/h/HigureTheStillWind.java +++ b/Mage.Sets/src/mage/cards/h/HigureTheStillWind.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.NinjutsuAbility; 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 HigureTheStillWind extends CardImpl { private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("Ninja creature"); static { - filter.add(new SubtypePredicate("Ninja")); - filterCreature.add((new SubtypePredicate("Ninja"))); + filter.add(new SubtypePredicate(SubType.NINJA)); + filterCreature.add((new SubtypePredicate(SubType.NINJA))); } public HigureTheStillWind(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HisokasDefiance.java b/Mage.Sets/src/mage/cards/h/HisokasDefiance.java index c1c40054b4..a8ad15bc6a 100644 --- a/Mage.Sets/src/mage/cards/h/HisokasDefiance.java +++ b/Mage.Sets/src/mage/cards/h/HisokasDefiance.java @@ -34,6 +34,7 @@ import mage.constants.CardType; import mage.abilities.effects.common.CounterTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.FilterSpell; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class HisokasDefiance extends CardImpl { private static final FilterSpell filter = new FilterSpell("Spirit or Arcane spell"); static { - filter.add(Predicates.or(new SubtypePredicate("Spirit"), new SubtypePredicate("Arcane"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.SPIRIT), new SubtypePredicate(SubType.ARCANE))); } public HisokasDefiance(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HoldTheGates.java b/Mage.Sets/src/mage/cards/h/HoldTheGates.java index e019c90605..d706d59611 100644 --- a/Mage.Sets/src/mage/cards/h/HoldTheGates.java +++ b/Mage.Sets/src/mage/cards/h/HoldTheGates.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledCreaturePermanent; @@ -55,7 +56,7 @@ public class HoldTheGates extends CardImpl { private static final FilterPermanent filter = new FilterControlledPermanent(); static { - filter.add(new SubtypePredicate("Gate")); + filter.add(new SubtypePredicate(SubType.GATE)); } public HoldTheGates(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HondenOfInfiniteRage.java b/Mage.Sets/src/mage/cards/h/HondenOfInfiniteRage.java index ffdaf406ff..ab9cfa3659 100644 --- a/Mage.Sets/src/mage/cards/h/HondenOfInfiniteRage.java +++ b/Mage.Sets/src/mage/cards/h/HondenOfInfiniteRage.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.SuperType; import mage.constants.TargetController; import mage.filter.common.FilterControlledPermanent; @@ -52,7 +53,7 @@ public class HondenOfInfiniteRage extends CardImpl { final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine"); static { - filter.add(new SubtypePredicate("Shrine")); + filter.add(new SubtypePredicate(SubType.SHRINE)); } public HondenOfInfiniteRage (UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HordeOfNotions.java b/Mage.Sets/src/mage/cards/h/HordeOfNotions.java index 606aaebb9c..0708c30c2f 100644 --- a/Mage.Sets/src/mage/cards/h/HordeOfNotions.java +++ b/Mage.Sets/src/mage/cards/h/HordeOfNotions.java @@ -38,10 +38,7 @@ import mage.abilities.keyword.VigilanceAbility; import mage.cards.Card; 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.mageobject.SubtypePredicate; import mage.game.Game; @@ -59,7 +56,7 @@ public class HordeOfNotions extends CardImpl { private final static FilterCard filter = new FilterCard("Elemental card from your graveyard"); static { - filter.add(new SubtypePredicate("Elemental")); + filter.add(new SubtypePredicate(SubType.ELEMENTAL)); } public HordeOfNotions(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HuntedGhoul.java b/Mage.Sets/src/mage/cards/h/HuntedGhoul.java index da29322b1a..fc38855d1b 100644 --- a/Mage.Sets/src/mage/cards/h/HuntedGhoul.java +++ b/Mage.Sets/src/mage/cards/h/HuntedGhoul.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.combat.CantBlockCreaturesSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; /** @@ -49,7 +50,7 @@ public class HuntedGhoul extends CardImpl { this.toughness = new MageInt(2); // Hunted Ghoul can't block Humans. - this.addAbility(new SimpleEvasionAbility(new CantBlockCreaturesSourceEffect(new FilterCreaturePermanent("Human", "Humans")))); + this.addAbility(new SimpleEvasionAbility(new CantBlockCreaturesSourceEffect(new FilterCreaturePermanent(SubType.HUMAN, "Humans")))); } public HuntedGhoul(final HuntedGhoul card) { diff --git a/Mage.Sets/src/mage/cards/h/HythoniaTheCruel.java b/Mage.Sets/src/mage/cards/h/HythoniaTheCruel.java index fcc98c527a..06369f7fb0 100644 --- a/Mage.Sets/src/mage/cards/h/HythoniaTheCruel.java +++ b/Mage.Sets/src/mage/cards/h/HythoniaTheCruel.java @@ -35,6 +35,7 @@ import mage.abilities.keyword.MonstrosityAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -50,7 +51,7 @@ public class HythoniaTheCruel extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Gorgon creatures"); static { - filter.add(Predicates.not(new SubtypePredicate("Gorgon"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.GORGON))); } public HythoniaTheCruel(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/ImmaculateMagistrate.java b/Mage.Sets/src/mage/cards/i/ImmaculateMagistrate.java index d1041acc7d..61cb88e2f1 100644 --- a/Mage.Sets/src/mage/cards/i/ImmaculateMagistrate.java +++ b/Mage.Sets/src/mage/cards/i/ImmaculateMagistrate.java @@ -29,6 +29,7 @@ package mage.cards.i; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; @@ -81,7 +82,7 @@ public class ImmaculateMagistrate extends CardImpl { class ImmaculateMagistrateEffect extends OneShotEffect { static final FilterControlledPermanent filter = new FilterControlledPermanent("Elf"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public ImmaculateMagistrateEffect() { super(Outcome.BoostCreature); diff --git a/Mage.Sets/src/mage/cards/j/JaggedScarArchers.java b/Mage.Sets/src/mage/cards/j/JaggedScarArchers.java index c303d4736d..d567471fa8 100644 --- a/Mage.Sets/src/mage/cards/j/JaggedScarArchers.java +++ b/Mage.Sets/src/mage/cards/j/JaggedScarArchers.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.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -59,7 +60,7 @@ public class JaggedScarArchers extends CardImpl { private static final FilterControlledPermanent controlledElvesFilter = new FilterControlledPermanent("Elves you control"); static { flyingCreatureFilter.add(new AbilityPredicate(FlyingAbility.class)); - controlledElvesFilter.add(new SubtypePredicate("Elf")); + controlledElvesFilter.add(new SubtypePredicate(SubType.ELF)); } public JaggedScarArchers(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/j/JundPanorama.java b/Mage.Sets/src/mage/cards/j/JundPanorama.java index e99774d771..35e74ba8c4 100644 --- a/Mage.Sets/src/mage/cards/j/JundPanorama.java +++ b/Mage.Sets/src/mage/cards/j/JundPanorama.java @@ -37,10 +37,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; @@ -62,9 +59,9 @@ public class JundPanorama extends CardImpl { filter.add(new CardTypePredicate(CardType.LAND)); filter.add(new SupertypePredicate(SuperType.BASIC)); filter.add(Predicates.or( - new SubtypePredicate("Swamp"), - new SubtypePredicate("Mountain"), - new SubtypePredicate("Forest"))); + new SubtypePredicate(SubType.SWAMP), + new SubtypePredicate(SubType.MOUNTAIN), + new SubtypePredicate(SubType.FOREST))); } public JundPanorama(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KavuHowler.java b/Mage.Sets/src/mage/cards/k/KavuHowler.java index 93a9522a94..50e4208dec 100644 --- a/Mage.Sets/src/mage/cards/k/KavuHowler.java +++ b/Mage.Sets/src/mage/cards/k/KavuHowler.java @@ -34,6 +34,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; @@ -47,7 +48,7 @@ public class KavuHowler extends CardImpl { private static final FilterCard filter = new FilterCard("Kavu cards"); static { - filter.add(new SubtypePredicate("Kavu")); + filter.add(new SubtypePredicate(SubType.KAVU)); } public KavuHowler(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KeeperOfProgenitus.java b/Mage.Sets/src/mage/cards/k/KeeperOfProgenitus.java index a934f904bb..ed5c85aca3 100644 --- a/Mage.Sets/src/mage/cards/k/KeeperOfProgenitus.java +++ b/Mage.Sets/src/mage/cards/k/KeeperOfProgenitus.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.FilterLandPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,9 +50,9 @@ public class KeeperOfProgenitus extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Mountain"), - new SubtypePredicate("Forest"), - new SubtypePredicate("Plains") + new SubtypePredicate(SubType.MOUNTAIN), + new SubtypePredicate(SubType.FOREST), + new SubtypePredicate(SubType.PLAINS) )); } diff --git a/Mage.Sets/src/mage/cards/k/KeepsakeGorgon.java b/Mage.Sets/src/mage/cards/k/KeepsakeGorgon.java index 20dd3ac64f..c970cc04e2 100644 --- a/Mage.Sets/src/mage/cards/k/KeepsakeGorgon.java +++ b/Mage.Sets/src/mage/cards/k/KeepsakeGorgon.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.MonstrosityAbility; 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; @@ -53,7 +54,7 @@ public class KeepsakeGorgon extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Gorgon creature an opponent controls"); static { - filter.add(Predicates.not(new SubtypePredicate("Gorgon"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.GORGON))); filter.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/k/KeldonWarlord.java b/Mage.Sets/src/mage/cards/k/KeldonWarlord.java index 213463a7d1..75b7e6e626 100644 --- a/Mage.Sets/src/mage/cards/k/KeldonWarlord.java +++ b/Mage.Sets/src/mage/cards/k/KeldonWarlord.java @@ -32,6 +32,7 @@ import mage.MageInt; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.abilities.common.SimpleStaticAbility; @@ -50,7 +51,7 @@ public class KeldonWarlord extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Wall creatures you control."); static { - filter.add(Predicates.not(new SubtypePredicate("Wall"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.WALL))); } public KeldonWarlord(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KithkinGreatheart.java b/Mage.Sets/src/mage/cards/k/KithkinGreatheart.java index de0eef723c..3a3532b4b6 100644 --- a/Mage.Sets/src/mage/cards/k/KithkinGreatheart.java +++ b/Mage.Sets/src/mage/cards/k/KithkinGreatheart.java @@ -38,10 +38,7 @@ import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.keyword.FirstStrikeAbility; 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 KithkinGreatheart extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Giant"); static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Giant")); + filter.add(new SubtypePredicate(SubType.GIANT)); } private static final String rule2 = "As long as you control a Giant, {this} has first strike"; diff --git a/Mage.Sets/src/mage/cards/k/KithkinHarbinger.java b/Mage.Sets/src/mage/cards/k/KithkinHarbinger.java index 218a5030cd..6b3538ec4c 100644 --- a/Mage.Sets/src/mage/cards/k/KithkinHarbinger.java +++ b/Mage.Sets/src/mage/cards/k/KithkinHarbinger.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.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -47,7 +48,7 @@ public class KithkinHarbinger extends CardImpl { public static final FilterCard filter = new FilterCard("Kithkin card"); static { - filter.add(new SubtypePredicate("Kithkin")); + filter.add(new SubtypePredicate(SubType.KITHKIN)); } public KithkinHarbinger(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KitsuneDiviner.java b/Mage.Sets/src/mage/cards/k/KitsuneDiviner.java index 5bac1d5a94..cfdbb1558d 100644 --- a/Mage.Sets/src/mage/cards/k/KitsuneDiviner.java +++ b/Mage.Sets/src/mage/cards/k/KitsuneDiviner.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.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class KitsuneDiviner extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Spirit"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public KitsuneDiviner (UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KitsuneRiftwalker.java b/Mage.Sets/src/mage/cards/k/KitsuneRiftwalker.java index d94345cace..63a9168ef0 100644 --- a/Mage.Sets/src/mage/cards/k/KitsuneRiftwalker.java +++ b/Mage.Sets/src/mage/cards/k/KitsuneRiftwalker.java @@ -33,6 +33,7 @@ import mage.MageInt; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -46,7 +47,7 @@ public class KitsuneRiftwalker extends CardImpl { private static final FilterCard filter = new FilterCard("Spirits and from Arcane"); static { - filter.add(Predicates.or(new SubtypePredicate("Arcane"), new SubtypePredicate("Spirit"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.ARCANE), new SubtypePredicate(SubType.SPIRIT))); } public KitsuneRiftwalker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KnightOfTheWhiteOrchid.java b/Mage.Sets/src/mage/cards/k/KnightOfTheWhiteOrchid.java index 3c615307ff..54ecc74240 100644 --- a/Mage.Sets/src/mage/cards/k/KnightOfTheWhiteOrchid.java +++ b/Mage.Sets/src/mage/cards/k/KnightOfTheWhiteOrchid.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterBySubtypeCard; import mage.filter.common.FilterLandPermanent; import mage.target.common.TargetCardInLibrary; @@ -61,7 +62,7 @@ public class KnightOfTheWhiteOrchid extends CardImpl { // When Knight of the White Orchid enters the battlefield, if an opponent controls more lands than you, you may search your library for a Plains card, put it onto the battlefield, then shuffle your library. this.addAbility(new ConditionalTriggeredAbility( - new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, new FilterBySubtypeCard("Plains")), false), true), + new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, new FilterBySubtypeCard(SubType.PLAINS)), false), true), new OpponentControlsMoreCondition(new FilterLandPermanent("lands")), "When {this} enters the battlefield, if an opponent controls more lands than you, you may search your library for a Plains card, put it onto the battlefield, then shuffle your library")); diff --git a/Mage.Sets/src/mage/cards/k/KoboldTaskmaster.java b/Mage.Sets/src/mage/cards/k/KoboldTaskmaster.java index 6966ea766f..79597e38e4 100644 --- a/Mage.Sets/src/mage/cards/k/KoboldTaskmaster.java +++ b/Mage.Sets/src/mage/cards/k/KoboldTaskmaster.java @@ -33,10 +33,7 @@ import mage.abilities.common.SimpleStaticAbility; 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.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; @@ -51,7 +48,7 @@ public class KoboldTaskmaster extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Kobold")); + filter.add(new SubtypePredicate(SubType.KOBOLD)); } public KoboldTaskmaster(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KorCastigator.java b/Mage.Sets/src/mage/cards/k/KorCastigator.java index 0addcae14c..af2289d202 100644 --- a/Mage.Sets/src/mage/cards/k/KorCastigator.java +++ b/Mage.Sets/src/mage/cards/k/KorCastigator.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; @@ -47,8 +48,8 @@ public class KorCastigator extends CardImpl { private static final FilterCreaturePermanent FILTER = new FilterCreaturePermanent("Eldrazi Scions"); static { - FILTER.add(new SubtypePredicate("Eldrazi")); - FILTER.add(new SubtypePredicate("Scion")); + FILTER.add(new SubtypePredicate(SubType.ELDRAZI)); + FILTER.add(new SubtypePredicate(SubType.SCION)); } public KorCastigator(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KrakenOfTheStraits.java b/Mage.Sets/src/mage/cards/k/KrakenOfTheStraits.java index 23d872b521..d7939796e5 100644 --- a/Mage.Sets/src/mage/cards/k/KrakenOfTheStraits.java +++ b/Mage.Sets/src/mage/cards/k/KrakenOfTheStraits.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.predicate.mageobject.SubtypePredicate; @@ -76,7 +77,7 @@ class CantBeBlockedByCreaturesWithLessPowerEffect extends RestrictionEffect { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Islands"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } private final DynamicValue dynamicValue = new PermanentsOnBattlefieldCount(filter); diff --git a/Mage.Sets/src/mage/cards/k/KrenkoMobBoss.java b/Mage.Sets/src/mage/cards/k/KrenkoMobBoss.java index aee626317f..881f20bcae 100644 --- a/Mage.Sets/src/mage/cards/k/KrenkoMobBoss.java +++ b/Mage.Sets/src/mage/cards/k/KrenkoMobBoss.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.constants.SuperType; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; @@ -52,7 +53,7 @@ public class KrenkoMobBoss extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("the number of Goblins you control"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public KrenkoMobBoss(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KukemssaSerpent.java b/Mage.Sets/src/mage/cards/k/KukemssaSerpent.java index 9ee5ce3e49..209dc081fe 100644 --- a/Mage.Sets/src/mage/cards/k/KukemssaSerpent.java +++ b/Mage.Sets/src/mage/cards/k/KukemssaSerpent.java @@ -29,7 +29,7 @@ package mage.cards.k; 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; @@ -40,10 +40,6 @@ import mage.abilities.effects.common.combat.CantAttackUnlessDefenderControllsPer import mage.abilities.effects.common.continuous.BecomesBasicLandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.TargetController; -import mage.constants.Zone; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -64,7 +60,7 @@ public class KukemssaSerpent extends CardImpl { static { filterOpponentLand.add(new ControllerPredicate(TargetController.OPPONENT)); - filterControlledLand.add(new SubtypePredicate("Island")); + filterControlledLand.add(new SubtypePredicate(SubType.ISLAND)); } public KukemssaSerpent(UUID ownerId, CardSetInfo setInfo) { @@ -74,7 +70,7 @@ public class KukemssaSerpent extends CardImpl { this.toughness = new MageInt(3); // Kukemssa 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")))); // {U}, Sacrifice an Island: Target land an opponent controls becomes an Island until end of turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesBasicLandTargetEffect(Duration.EndOfTurn, "Island"), new ManaCostsImpl("{U}")); @@ -84,7 +80,7 @@ public class KukemssaSerpent extends CardImpl { // When you control no Islands, sacrifice Kukemssa 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/l/Lashwrithe.java b/Mage.Sets/src/mage/cards/l/Lashwrithe.java index ddc499ae16..d23e2289d4 100644 --- a/Mage.Sets/src/mage/cards/l/Lashwrithe.java +++ b/Mage.Sets/src/mage/cards/l/Lashwrithe.java @@ -28,10 +28,8 @@ package mage.cards.l; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.TargetController; -import mage.constants.Zone; + +import mage.constants.*; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; @@ -53,7 +51,7 @@ public class Lashwrithe extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp you control"); 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/l/LeechingSliver.java b/Mage.Sets/src/mage/cards/l/LeechingSliver.java index 338e56720f..50d668c71d 100644 --- a/Mage.Sets/src/mage/cards/l/LeechingSliver.java +++ b/Mage.Sets/src/mage/cards/l/LeechingSliver.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.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class LeechingSliver extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public LeechingSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/Lifespinner.java b/Mage.Sets/src/mage/cards/l/Lifespinner.java index 76173a3f37..d0cfad65dc 100644 --- a/Mage.Sets/src/mage/cards/l/Lifespinner.java +++ b/Mage.Sets/src/mage/cards/l/Lifespinner.java @@ -35,6 +35,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.common.FilterControlledCreaturePermanent; @@ -56,7 +57,7 @@ public class Lifespinner extends CardImpl { static { filter.add(new SupertypePredicate(SuperType.LEGENDARY)); - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public Lifespinner(UUID ownerId, CardSetInfo setInfo) { @@ -70,7 +71,7 @@ public class Lifespinner extends CardImpl { SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)), new TapSourceCost()); - ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(3, 3, new FilterControlledCreaturePermanent("Spirit", "three Spirits"), false))); + ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(3, 3, new FilterControlledCreaturePermanent(SubType.SPIRIT, "three Spirits"), false))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/l/LivingLands.java b/Mage.Sets/src/mage/cards/l/LivingLands.java index c774684532..b6abf372ea 100644 --- a/Mage.Sets/src/mage/cards/l/LivingLands.java +++ b/Mage.Sets/src/mage/cards/l/LivingLands.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.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; @@ -51,7 +48,7 @@ public class LivingLands extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("All Forests"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public LivingLands(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LordOfLineage.java b/Mage.Sets/src/mage/cards/l/LordOfLineage.java index 58ae0f6938..77099cabf8 100644 --- a/Mage.Sets/src/mage/cards/l/LordOfLineage.java +++ b/Mage.Sets/src/mage/cards/l/LordOfLineage.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; @@ -53,7 +54,7 @@ public class LordOfLineage extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Other Vampire creatures"); static { - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); } public LordOfLineage(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LovisaColdeyes.java b/Mage.Sets/src/mage/cards/l/LovisaColdeyes.java index 565341cbdd..f85d6f98a7 100644 --- a/Mage.Sets/src/mage/cards/l/LovisaColdeyes.java +++ b/Mage.Sets/src/mage/cards/l/LovisaColdeyes.java @@ -36,10 +36,7 @@ import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.keyword.HasteAbility; 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; @@ -55,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("Barbarian"), new SubtypePredicate("Warrior"), new SubtypePredicate("Berserker"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.BARBARION), new SubtypePredicate(SubType.WARRIOR), new SubtypePredicate(SubType.BERSERKER))); } public LovisaColdeyes(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LuminescentRain.java b/Mage.Sets/src/mage/cards/l/LuminescentRain.java index 83d6e59927..9a9d341e79 100644 --- a/Mage.Sets/src/mage/cards/l/LuminescentRain.java +++ b/Mage.Sets/src/mage/cards/l/LuminescentRain.java @@ -27,23 +27,24 @@ */ package mage.cards.l; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.cards.repository.CardRepository; 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; import mage.players.Player; +import java.util.UUID; + /** * * @author michael.napoleon@gmail.com @@ -83,19 +84,20 @@ class LuminescentRainEffect extends OneShotEffect { return new LuminescentRainEffect(this); } - @Override public boolean apply(Game game, Ability source) { + @Override + public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); if (player != null) { Choice typeChoice = new ChoiceImpl(true); typeChoice.setMessage("Choose a creature type:"); - typeChoice.setChoices(CardRepository.instance.getCreatureTypes()); + typeChoice.setChoices(SubType.getCreatureTypes()); while (!player.choose(Outcome.BoostCreature, 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 GainLifeEffect(new PermanentsOnBattlefieldCount(filter, 2)).apply(game, source); } return false; diff --git a/Mage.Sets/src/mage/cards/m/MagmaSliver.java b/Mage.Sets/src/mage/cards/m/MagmaSliver.java index cc8fc203a1..655db5d5c6 100644 --- a/Mage.Sets/src/mage/cards/m/MagmaSliver.java +++ b/Mage.Sets/src/mage/cards/m/MagmaSliver.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.StaticFilters; import mage.filter.common.FilterCreaturePermanent; @@ -62,7 +63,7 @@ public class MagmaSliver extends CardImpl { // All Slivers have "{tap}: Target Sliver creature gets +X/+0 until end of turn, where X is the number of Slivers on the battlefield." Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(new PermanentsOnBattlefieldCount(StaticFilters.FILTER_PERMANENT_CREATURE_SLIVERS), new StaticValue(0), Duration.EndOfTurn), new TapSourceCost()); - Target target = new TargetCreaturePermanent(new FilterCreaturePermanent("Sliver", "Sliver creature")); + Target target = new TargetCreaturePermanent(new FilterCreaturePermanent(SubType.SLIVER, "Sliver creature")); ability.addTarget(target); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(ability, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURE_SLIVERS))); } diff --git a/Mage.Sets/src/mage/cards/m/MantaRay.java b/Mage.Sets/src/mage/cards/m/MantaRay.java index e4cb1a060c..ad665473a7 100644 --- a/Mage.Sets/src/mage/cards/m/MantaRay.java +++ b/Mage.Sets/src/mage/cards/m/MantaRay.java @@ -29,7 +29,7 @@ package mage.cards.m; import mage.MageInt; import mage.ObjectColor; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.common.ControlsPermanentsControllerTriggeredAbility; import mage.abilities.common.SimpleEvasionAbility; import mage.abilities.common.SimpleStaticAbility; @@ -38,9 +38,6 @@ import mage.abilities.effects.common.combat.CantAttackUnlessDefenderControllsPer import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.Predicates; @@ -67,14 +64,14 @@ public class MantaRay extends CardImpl { this.toughness = new MageInt(3); // Manta Ray 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")))); // Manta Ray can't be blocked except by blue creatures. this.addAbility(new SimpleEvasionAbility(new CantBeBlockedByCreaturesSourceEffect(filter, Duration.WhileOnBattlefield))); // When you control no Islands, sacrifice Manta Ray. 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/MarchOfTheDroids.java b/Mage.Sets/src/mage/cards/m/MarchOfTheDroids.java index 8e6d99d0b2..4ea357833c 100644 --- a/Mage.Sets/src/mage/cards/m/MarchOfTheDroids.java +++ b/Mage.Sets/src/mage/cards/m/MarchOfTheDroids.java @@ -39,6 +39,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.counters.CounterType; import mage.filter.FilterPermanent; @@ -59,7 +60,7 @@ public class MarchOfTheDroids extends CardImpl { this.getSpellAbility().addEffect(new MarchOfTheDroidsEffect()); // Create 1/1 colorles Droid artifact creature token for each Droid you control. - this.getSpellAbility().addEffect(new CreateTokenEffect(new DroidToken(), new PermanentsOnBattlefieldCount(new FilterPermanent("Droid", "Droid you control")))); + this.getSpellAbility().addEffect(new CreateTokenEffect(new DroidToken(), new PermanentsOnBattlefieldCount(new FilterPermanent(SubType.DROID, "Droid you control")))); } public MarchOfTheDroids(final MarchOfTheDroids card) { diff --git a/Mage.Sets/src/mage/cards/m/MarshdrinkerGiant.java b/Mage.Sets/src/mage/cards/m/MarshdrinkerGiant.java index 003c7d9356..d69d9b7f3d 100644 --- a/Mage.Sets/src/mage/cards/m/MarshdrinkerGiant.java +++ b/Mage.Sets/src/mage/cards/m/MarshdrinkerGiant.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.TargetController; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.Predicates; @@ -52,8 +53,8 @@ public class MarshdrinkerGiant extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Island"), - new SubtypePredicate("Swamp"))); + new SubtypePredicate(SubType.ISLAND), + new SubtypePredicate(SubType.SWAMP))); filter.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/m/MasterOfTheWildHunt.java b/Mage.Sets/src/mage/cards/m/MasterOfTheWildHunt.java index a1e619860f..9a82b1b219 100644 --- a/Mage.Sets/src/mage/cards/m/MasterOfTheWildHunt.java +++ b/Mage.Sets/src/mage/cards/m/MasterOfTheWildHunt.java @@ -41,6 +41,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.predicate.Predicates; @@ -93,7 +94,7 @@ class MasterOfTheWildHuntEffect extends OneShotEffect { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.add(new SubtypePredicate("Wolf")); + filter.add(new SubtypePredicate(SubType.WOLF)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/m/MasterSplicer.java b/Mage.Sets/src/mage/cards/m/MasterSplicer.java index ee8a5bcba8..814d0db0e1 100644 --- a/Mage.Sets/src/mage/cards/m/MasterSplicer.java +++ b/Mage.Sets/src/mage/cards/m/MasterSplicer.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; @@ -51,7 +52,7 @@ public class MasterSplicer extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Golem creatures"); static { - filter.add(new SubtypePredicate("Golem")); + filter.add(new SubtypePredicate(SubType.GOLEM)); } public MasterSplicer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MasterTrinketeer.java b/Mage.Sets/src/mage/cards/m/MasterTrinketeer.java index 98bddd86fa..afcf2ab54c 100644 --- a/Mage.Sets/src/mage/cards/m/MasterTrinketeer.java +++ b/Mage.Sets/src/mage/cards/m/MasterTrinketeer.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; @@ -53,8 +54,8 @@ public class MasterTrinketeer extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Servo and Thopter creatures"); static { - filter.add(Predicates.or(new SubtypePredicate("Servo"), - new SubtypePredicate("Thopter"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.SERVO), + new SubtypePredicate(SubType.THOPTER))); } public MasterTrinketeer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MausoleumWanderer.java b/Mage.Sets/src/mage/cards/m/MausoleumWanderer.java index 3194fb3fd7..380bbb361a 100644 --- a/Mage.Sets/src/mage/cards/m/MausoleumWanderer.java +++ b/Mage.Sets/src/mage/cards/m/MausoleumWanderer.java @@ -39,10 +39,7 @@ 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.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.common.FilterInstantOrSorcerySpell; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -61,7 +58,7 @@ public class MausoleumWanderer extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public MausoleumWanderer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MilitantInquisitor.java b/Mage.Sets/src/mage/cards/m/MilitantInquisitor.java index eb98dddfc9..fd5b93d460 100644 --- a/Mage.Sets/src/mage/cards/m/MilitantInquisitor.java +++ b/Mage.Sets/src/mage/cards/m/MilitantInquisitor.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.CardTypePredicate; @@ -52,7 +53,7 @@ public class MilitantInquisitor extends CardImpl { static { filter.add(new CardTypePredicate(CardType.ARTIFACT)); - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public MilitantInquisitor(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MistyRainforest.java b/Mage.Sets/src/mage/cards/m/MistyRainforest.java index 778e893f59..6ff509d4f4 100644 --- a/Mage.Sets/src/mage/cards/m/MistyRainforest.java +++ b/Mage.Sets/src/mage/cards/m/MistyRainforest.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 MistyRainforest extends CardImpl { public MistyRainforest(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.LAND},null); this.frameColor = new ObjectColor("UG"); - this.addAbility(new FetchLandActivatedAbility(new String[] {"Forest", "Island"})); + this.addAbility(new FetchLandActivatedAbility(EnumSet.of(SubType.FOREST, SubType.ISLAND))); } public MistyRainforest(final MistyRainforest card) { diff --git a/Mage.Sets/src/mage/cards/m/MoggRaider.java b/Mage.Sets/src/mage/cards/m/MoggRaider.java index 9f372030a4..a7c1eab447 100644 --- a/Mage.Sets/src/mage/cards/m/MoggRaider.java +++ b/Mage.Sets/src/mage/cards/m/MoggRaider.java @@ -38,6 +38,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.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class MoggRaider extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Goblin"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public MoggRaider(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MoldDemon.java b/Mage.Sets/src/mage/cards/m/MoldDemon.java index 36c5a7f8c5..6985dc0010 100644 --- a/Mage.Sets/src/mage/cards/m/MoldDemon.java +++ b/Mage.Sets/src/mage/cards/m/MoldDemon.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 MoldDemon extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("two Swamps"); static{ - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public MoldDemon(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MoonlightHunt.java b/Mage.Sets/src/mage/cards/m/MoonlightHunt.java index b7be0d86aa..1eecf5b0ac 100644 --- a/Mage.Sets/src/mage/cards/m/MoonlightHunt.java +++ b/Mage.Sets/src/mage/cards/m/MoonlightHunt.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.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -79,7 +80,7 @@ class MoonlightHuntEffect extends OneShotEffect { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.add(Predicates.or(new SubtypePredicate("Wolf"), new SubtypePredicate("Werewolf"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.WOLF), new SubtypePredicate(SubType.WEREWOLF))); } public MoonlightHuntEffect() { diff --git a/Mage.Sets/src/mage/cards/m/MuscleSliver.java b/Mage.Sets/src/mage/cards/m/MuscleSliver.java index 01b4f1b3c1..9ee61caa77 100644 --- a/Mage.Sets/src/mage/cards/m/MuscleSliver.java +++ b/Mage.Sets/src/mage/cards/m/MuscleSliver.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; @@ -47,7 +48,7 @@ public class MuscleSliver extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public MuscleSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MyrReservoir.java b/Mage.Sets/src/mage/cards/m/MyrReservoir.java index cee739e904..02cbfcec6d 100644 --- a/Mage.Sets/src/mage/cards/m/MyrReservoir.java +++ b/Mage.Sets/src/mage/cards/m/MyrReservoir.java @@ -42,6 +42,7 @@ import mage.abilities.mana.BasicManaAbility; 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; @@ -56,7 +57,7 @@ public class MyrReservoir extends CardImpl { private static final FilterCard myrCardFilter = new FilterCard("Myr card from your graveyard"); static { - myrCardFilter.add(new SubtypePredicate("Myr")); + myrCardFilter.add(new SubtypePredicate(SubType.MYR)); } public MyrReservoir(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MyrTurbine.java b/Mage.Sets/src/mage/cards/m/MyrTurbine.java index 0b4c7a8b7e..012763a7e5 100644 --- a/Mage.Sets/src/mage/cards/m/MyrTurbine.java +++ b/Mage.Sets/src/mage/cards/m/MyrTurbine.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.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; @@ -54,8 +55,8 @@ public class MyrTurbine extends CardImpl { private static final FilterControlledPermanent filterMyr = new FilterControlledPermanent("Myr you control"); static { - filterCard.add(new SubtypePredicate("Myr")); - filterMyr.add(new SubtypePredicate("Myr")); + filterCard.add(new SubtypePredicate(SubType.MYR)); + filterMyr.add(new SubtypePredicate(SubType.MYR)); } diff --git a/Mage.Sets/src/mage/cards/n/NahiriTheLithomancer.java b/Mage.Sets/src/mage/cards/n/NahiriTheLithomancer.java index 342142832a..522fe6d24a 100644 --- a/Mage.Sets/src/mage/cards/n/NahiriTheLithomancer.java +++ b/Mage.Sets/src/mage/cards/n/NahiriTheLithomancer.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.common.FilterControlledPermanent; @@ -97,7 +98,7 @@ class NahiriTheLithomancerFirstAbilityEffect extends OneShotEffect { private static final FilterControlledPermanent filter = new FilterControlledPermanent("an Equipment you control"); static { - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } NahiriTheLithomancerFirstAbilityEffect() { @@ -153,7 +154,7 @@ class NahiriTheLithomancerSecondAbilityEffect extends OneShotEffect { private static final FilterCard filter = new FilterCard("an Equipment"); static { - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } NahiriTheLithomancerSecondAbilityEffect() { diff --git a/Mage.Sets/src/mage/cards/n/NayaPanorama.java b/Mage.Sets/src/mage/cards/n/NayaPanorama.java index 7a670f975c..646ccd04ad 100644 --- a/Mage.Sets/src/mage/cards/n/NayaPanorama.java +++ b/Mage.Sets/src/mage/cards/n/NayaPanorama.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; @@ -62,9 +59,9 @@ public class NayaPanorama extends CardImpl { filter.add(new CardTypePredicate(CardType.LAND)); filter.add(new SupertypePredicate(SuperType.BASIC)); filter.add(Predicates.or( - new SubtypePredicate("Mountain"), - new SubtypePredicate("Forest"), - new SubtypePredicate("Plains"))); + new SubtypePredicate(SubType.MOUNTAIN), + new SubtypePredicate(SubType.FOREST), + new SubtypePredicate(SubType.PLAINS))); } public NayaPanorama(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NightmareLash.java b/Mage.Sets/src/mage/cards/n/NightmareLash.java index 26df745def..4810d41a67 100644 --- a/Mage.Sets/src/mage/cards/n/NightmareLash.java +++ b/Mage.Sets/src/mage/cards/n/NightmareLash.java @@ -49,7 +49,7 @@ public class NightmareLash extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp you control"); 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/n/NissaWorldwaker.java b/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java index 7cb8b2589a..6e6d81e379 100644 --- a/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java +++ b/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java @@ -40,10 +40,7 @@ import mage.abilities.keyword.TrampleAbility; 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.FilterPermanent; import mage.filter.common.FilterBasicLandCard; import mage.filter.common.FilterControlledLandPermanent; @@ -61,7 +58,7 @@ import mage.target.targetpointer.FixedTarget; */ public class NissaWorldwaker extends CardImpl { - private static final FilterPermanent filterForest = new FilterPermanent("Forest", "Forest"); + private static final FilterPermanent filterForest = new FilterPermanent(SubType.FOREST, "Forest"); public NissaWorldwaker(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.PLANESWALKER},"{3}{G}{G}"); diff --git a/Mage.Sets/src/mage/cards/o/OliviaVoldaren.java b/Mage.Sets/src/mage/cards/o/OliviaVoldaren.java index d5f26f8e04..3d5d2c4ee8 100644 --- a/Mage.Sets/src/mage/cards/o/OliviaVoldaren.java +++ b/Mage.Sets/src/mage/cards/o/OliviaVoldaren.java @@ -63,7 +63,7 @@ public class OliviaVoldaren extends CardImpl { static { filter.add(new AnotherPredicate()); - vampireFilter.add(new SubtypePredicate("Vampire")); + vampireFilter.add(new SubtypePredicate(SubType.VAMPIRE)); } public OliviaVoldaren(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/o/OpalLakeGatekeepers.java b/Mage.Sets/src/mage/cards/o/OpalLakeGatekeepers.java index 93c017c3dd..fe2f59216b 100644 --- a/Mage.Sets/src/mage/cards/o/OpalLakeGatekeepers.java +++ b/Mage.Sets/src/mage/cards/o/OpalLakeGatekeepers.java @@ -39,6 +39,7 @@ import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class OpalLakeGatekeepers extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent(); static { - filter.add(new SubtypePredicate("Gate")); + filter.add(new SubtypePredicate(SubType.GATE)); } public OpalLakeGatekeepers (UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/o/OpalineSliver.java b/Mage.Sets/src/mage/cards/o/OpalineSliver.java index 82e40410dc..2f1047cf27 100644 --- a/Mage.Sets/src/mage/cards/o/OpalineSliver.java +++ b/Mage.Sets/src/mage/cards/o/OpalineSliver.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.FilterSpell; @@ -55,7 +56,7 @@ public class OpalineSliver extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("All Slivers"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public OpalineSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/o/OrcishCaptain.java b/Mage.Sets/src/mage/cards/o/OrcishCaptain.java index 112c796671..95fc494ae7 100644 --- a/Mage.Sets/src/mage/cards/o/OrcishCaptain.java +++ b/Mage.Sets/src/mage/cards/o/OrcishCaptain.java @@ -36,10 +36,7 @@ import mage.abilities.effects.OneShotEffect; 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.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -56,7 +53,7 @@ public class OrcishCaptain extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Orc creature"); static { - filter.add(new SubtypePredicate("Orc")); + filter.add(new SubtypePredicate(SubType.ORC)); } public OrcishCaptain(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/o/Outbreak.java b/Mage.Sets/src/mage/cards/o/Outbreak.java index bb43d8f2e6..ad1e7c600a 100644 --- a/Mage.Sets/src/mage/cards/o/Outbreak.java +++ b/Mage.Sets/src/mage/cards/o/Outbreak.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.FilterCard; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,11 +55,11 @@ import mage.target.common.TargetCardInHand; * @author fireshoes */ public class Outbreak extends CardImpl { - + private static final FilterCard filterLand = new FilterCard("a Swamp card"); - + static { - filterLand.add(new SubtypePredicate("Swamp")); + filterLand.add(new SubtypePredicate(SubType.SWAMP)); } public Outbreak(UUID ownerId, CardSetInfo setInfo) { @@ -66,7 +67,7 @@ public class Outbreak extends CardImpl { // You may discard a Swamp card rather than pay Outbreak's mana cost. this.addAbility(new AlternativeCostSourceAbility(new DiscardTargetCost(new TargetCardInHand(filterLand)))); - + // Choose a creature type. All creatures of that type get -1/-1 until end of turn. this.getSpellAbility().addEffect(new OutbreakEffect()); } @@ -98,7 +99,7 @@ class OutbreakEffect 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()); while (!player.choose(outcome, typeChoice, game)) { if (!player.canRespond()) { return false; @@ -108,7 +109,7 @@ class OutbreakEffect extends OneShotEffect { game.informPlayers(player.getLogName() + " has chosen " + typeChoice.getChoice()); } FilterCreaturePermanent filter = new FilterCreaturePermanent("All creatures of the chosen type"); - filter.add(new SubtypePredicate(typeChoice.getChoice())); + filter.add(new SubtypePredicate(SubType.byDescription(typeChoice.getChoice()))); ContinuousEffect effect = new BoostAllEffect(-1, -1, Duration.WhileOnBattlefield, filter, false); game.addEffect(effect, source); } diff --git a/Mage.Sets/src/mage/cards/p/PainwrackerOni.java b/Mage.Sets/src/mage/cards/p/PainwrackerOni.java index 74cf986aab..b55f82d98b 100644 --- a/Mage.Sets/src/mage/cards/p/PainwrackerOni.java +++ b/Mage.Sets/src/mage/cards/p/PainwrackerOni.java @@ -37,6 +37,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.TargetController; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledCreaturePermanent; @@ -93,7 +94,7 @@ class PainwrackerOniEffect extends SacrificeControllerEffect { @Override public boolean apply(Game game, Ability source) { - 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) { return super.apply(game, source); } return true; diff --git a/Mage.Sets/src/mage/cards/p/PallidMycoderm.java b/Mage.Sets/src/mage/cards/p/PallidMycoderm.java index e522e707cf..e622407efe 100644 --- a/Mage.Sets/src/mage/cards/p/PallidMycoderm.java +++ b/Mage.Sets/src/mage/cards/p/PallidMycoderm.java @@ -29,10 +29,7 @@ package mage.cards.p; 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.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; @@ -62,8 +59,8 @@ public class PallidMycoderm extends CardImpl { private static final FilterControlledCreaturePermanent filterSaproling = new FilterControlledCreaturePermanent("a Saproling"); static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(Predicates.or(new SubtypePredicate("Fungus"), new SubtypePredicate("Saproling"))); - filterSaproling.add(new SubtypePredicate("Saproling")); + filter.add(Predicates.or(new SubtypePredicate(SubType.FUNGUS), new SubtypePredicate(SubType.SAPROLING))); + filterSaproling.add(new SubtypePredicate(SubType.SAPROLING)); } public PallidMycoderm(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheKitsune.java b/Mage.Sets/src/mage/cards/p/PatronOfTheKitsune.java index 90e96cb743..6a9502d9df 100644 --- a/Mage.Sets/src/mage/cards/p/PatronOfTheKitsune.java +++ b/Mage.Sets/src/mage/cards/p/PatronOfTheKitsune.java @@ -34,6 +34,7 @@ import mage.abilities.keyword.OfferingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import java.util.UUID; @@ -52,7 +53,7 @@ public class PatronOfTheKitsune extends CardImpl { this.toughness = new MageInt(6); // Fox offering (You may cast this card any time you could cast an instant by sacrificing a Fox and paying the difference in mana costs between this and the sacrificed Fox. Mana cost includes color.) - this.addAbility(new OfferingAbility("Fox")); + this.addAbility(new OfferingAbility(SubType.FOX)); // Whenever a creature attacks, you may gain 1 life. this.addAbility(new AttacksAllTriggeredAbility(new GainLifeEffect(1), true)); diff --git a/Mage.Sets/src/mage/cards/p/PatronOfTheOrochi.java b/Mage.Sets/src/mage/cards/p/PatronOfTheOrochi.java index f0491230c2..af4b6222bc 100644 --- a/Mage.Sets/src/mage/cards/p/PatronOfTheOrochi.java +++ b/Mage.Sets/src/mage/cards/p/PatronOfTheOrochi.java @@ -36,10 +36,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.OfferingAbility; 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.FilterPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -66,7 +63,7 @@ public class PatronOfTheOrochi extends CardImpl { this.toughness = new MageInt(7); // Snake offering (You may cast this card any time you could cast an instant by sacrificing a Snake and paying the difference in mana costs between this and the sacrificed Snake. Mana cost includes color.) - this.addAbility(new OfferingAbility("Snake")); + this.addAbility(new OfferingAbility(SubType.SNAKE)); // {T}: Untap all Forests and all green creatures. Activate this ability only once each turn. this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new PatronOfTheOrochiEffect(), new TapSourceCost())); @@ -87,7 +84,7 @@ class PatronOfTheOrochiEffect extends OneShotEffect { private static final FilterPermanent filter = new FilterPermanent(); static { - filter.add(Predicates.or( new SubtypePredicate("Forest"), + filter.add(Predicates.or( new SubtypePredicate(SubType.FOREST), Predicates.and(new CardTypePredicate(CardType.CREATURE), new ColorPredicate(ObjectColor.GREEN)) )); diff --git a/Mage.Sets/src/mage/cards/p/PeakEruption.java b/Mage.Sets/src/mage/cards/p/PeakEruption.java index 01e2988781..009397ca22 100644 --- a/Mage.Sets/src/mage/cards/p/PeakEruption.java +++ b/Mage.Sets/src/mage/cards/p/PeakEruption.java @@ -34,6 +34,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.TargetLandPermanent; @@ -47,7 +48,7 @@ public class PeakEruption extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain"); static{ - filter.add(new SubtypePredicate(("Mountain"))); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public PeakEruption(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 9aa9bd0996..a0dccc9b8b 100644 --- a/Mage.Sets/src/mage/cards/p/PeerPressure.java +++ b/Mage.Sets/src/mage/cards/p/PeerPressure.java @@ -41,6 +41,7 @@ import mage.choices.ChoiceImpl; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.permanent.ControllerIdPredicate; @@ -94,7 +95,7 @@ class PeerPressureEffect extends OneShotEffect { if (controller != null) { Choice choice = new ChoiceImpl(true); choice.setMessage("Choose creature type"); - choice.setChoices(CardRepository.instance.getCreatureTypes()); + choice.setChoices(SubType.getCreatureTypes()); while (!controller.choose(Outcome.GainControl, choice, game)) { if (!controller.canRespond()) { return false; @@ -107,7 +108,7 @@ class PeerPressureEffect extends OneShotEffect { UUID playerWithMost = null; int maxControlled = 0; for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { - FilterPermanent filter = new FilterCreaturePermanent(chosenType, chosenType); + FilterPermanent filter = new FilterCreaturePermanent(SubType.byDescription(chosenType), chosenType); filter.add(new ControllerIdPredicate(playerId)); int controlled = new PermanentsOnBattlefieldCount(filter).calculate(game, source, this); if (controlled > maxControlled) { @@ -118,7 +119,7 @@ class PeerPressureEffect extends OneShotEffect { } } if (playerWithMost != null && playerWithMost.equals(controller.getId())) { - for (Permanent permanent : game.getBattlefield().getActivePermanents(new FilterCreaturePermanent(chosenType, chosenType), controller.getId(), source.getSourceId(), game)) { + for (Permanent permanent : game.getBattlefield().getActivePermanents(new FilterCreaturePermanent(SubType.byDescription(chosenType), chosenType), controller.getId(), source.getSourceId(), game)) { ContinuousEffect effect = new GainControlTargetEffect(Duration.EndOfGame); effect.setTargetPointer(new FixedTarget(permanent.getId())); game.addEffect(effect, source); diff --git a/Mage.Sets/src/mage/cards/p/Pentavus.java b/Mage.Sets/src/mage/cards/p/Pentavus.java index 5568b3300b..26cb3dcd5d 100644 --- a/Mage.Sets/src/mage/cards/p/Pentavus.java +++ b/Mage.Sets/src/mage/cards/p/Pentavus.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.Zone; import mage.counters.CounterType; import mage.filter.common.FilterControlledPermanent; @@ -56,7 +57,7 @@ public class Pentavus extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Pentavite"); static { - filter.add(new SubtypePredicate("Pentavite")); + filter.add(new SubtypePredicate(SubType.PENTAVITE)); } public Pentavus(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PlagueBelcher.java b/Mage.Sets/src/mage/cards/p/PlagueBelcher.java index 83a280fdd9..e45ae342b0 100644 --- a/Mage.Sets/src/mage/cards/p/PlagueBelcher.java +++ b/Mage.Sets/src/mage/cards/p/PlagueBelcher.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.TargetController; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; @@ -55,7 +56,7 @@ public class PlagueBelcher extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/p/PrecursorGolem.java b/Mage.Sets/src/mage/cards/p/PrecursorGolem.java index 19f2918a49..d112bf59a9 100644 --- a/Mage.Sets/src/mage/cards/p/PrecursorGolem.java +++ b/Mage.Sets/src/mage/cards/p/PrecursorGolem.java @@ -37,6 +37,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.FilterInPlay; import mage.filter.common.FilterCreaturePermanent; @@ -144,7 +145,7 @@ class PrecursorGolemCopyTriggeredAbility extends TriggeredAbilityImpl { class PrecursorGolemCopySpellEffect extends CopySpellForEachItCouldTargetEffect { public PrecursorGolemCopySpellEffect() { - this(new FilterCreaturePermanent("Golem", "Golem")); + this(new FilterCreaturePermanent(SubType.GOLEM, "Golem")); } public PrecursorGolemCopySpellEffect(PrecursorGolemCopySpellEffect effect) { diff --git a/Mage.Sets/src/mage/cards/p/PriestOfTitania.java b/Mage.Sets/src/mage/cards/p/PriestOfTitania.java index 79524b4f13..6065cd248b 100644 --- a/Mage.Sets/src/mage/cards/p/PriestOfTitania.java +++ b/Mage.Sets/src/mage/cards/p/PriestOfTitania.java @@ -36,6 +36,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class PriestOfTitania extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf on the battlefield"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public PriestOfTitania(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PrimevalForce.java b/Mage.Sets/src/mage/cards/p/PrimevalForce.java index a32b61c80b..2d1748d47c 100644 --- a/Mage.Sets/src/mage/cards/p/PrimevalForce.java +++ b/Mage.Sets/src/mage/cards/p/PrimevalForce.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; @@ -47,7 +48,7 @@ public class PrimevalForce extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("three Forests"); static{ - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public PrimevalForce(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/Pyramids.java b/Mage.Sets/src/mage/cards/p/Pyramids.java index 25d1250040..8047817541 100644 --- a/Mage.Sets/src/mage/cards/p/Pyramids.java +++ b/Mage.Sets/src/mage/cards/p/Pyramids.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.FilterEnchantmentPermanent; import mage.filter.predicate.ObjectPlayer; @@ -57,7 +58,7 @@ public class Pyramids extends CardImpl { private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Auras attached to a land"); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); filter.add(new PyramidsPredicate()); } diff --git a/Mage.Sets/src/mage/cards/q/QuilledSliver.java b/Mage.Sets/src/mage/cards/q/QuilledSliver.java index 1896e64787..dc2ab137ca 100644 --- a/Mage.Sets/src/mage/cards/q/QuilledSliver.java +++ b/Mage.Sets/src/mage/cards/q/QuilledSliver.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.common.TargetAttackingOrBlockingCreature; @@ -52,7 +53,7 @@ import mage.target.common.TargetAttackingOrBlockingCreature; */ public class QuilledSliver extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("Sliver", "All Slivers"); + private static final FilterPermanent filter = new FilterPermanent(SubType.SLIVER, "All Slivers"); public QuilledSliver(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); diff --git a/Mage.Sets/src/mage/cards/r/RaisedByWolves.java b/Mage.Sets/src/mage/cards/r/RaisedByWolves.java index a09b63c910..14b5d80580 100644 --- a/Mage.Sets/src/mage/cards/r/RaisedByWolves.java +++ b/Mage.Sets/src/mage/cards/r/RaisedByWolves.java @@ -39,10 +39,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.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.WolfToken; @@ -58,7 +55,7 @@ public class RaisedByWolves extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Wolf you control"); static { - filter.add(new SubtypePredicate("Wolf")); + filter.add(new SubtypePredicate(SubType.WOLF)); } public RaisedByWolves(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RamosianRevivalist.java b/Mage.Sets/src/mage/cards/r/RamosianRevivalist.java index 205b01bed6..b46e5d876c 100644 --- a/Mage.Sets/src/mage/cards/r/RamosianRevivalist.java +++ b/Mage.Sets/src/mage/cards/r/RamosianRevivalist.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.FilterPermanentCard; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -54,7 +55,7 @@ public class RamosianRevivalist extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 5 or less from your graveyard"); 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/Ratcatcher.java b/Mage.Sets/src/mage/cards/r/Ratcatcher.java index 8afc580c2d..09c57ce6ea 100644 --- a/Mage.Sets/src/mage/cards/r/Ratcatcher.java +++ b/Mage.Sets/src/mage/cards/r/Ratcatcher.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.TargetController; import mage.constants.Zone; import mage.filter.FilterCard; @@ -50,7 +51,7 @@ public class Ratcatcher extends CardImpl { private static final FilterCard filter = new FilterCard("Rat card"); static { - filter.add(new SubtypePredicate("Rat")); + filter.add(new SubtypePredicate(SubType.RAT)); } public Ratcatcher(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RavingOniSlave.java b/Mage.Sets/src/mage/cards/r/RavingOniSlave.java index af5c6f5ae5..8af800211a 100644 --- a/Mage.Sets/src/mage/cards/r/RavingOniSlave.java +++ b/Mage.Sets/src/mage/cards/r/RavingOniSlave.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; @@ -88,7 +89,7 @@ class RavingOniSlaveEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - if (game.getBattlefield().count(new FilterCreaturePermanent("Demon", "Demon"), source.getSourceId(), source.getControllerId(), game) < 1) { + if (game.getBattlefield().count(new FilterCreaturePermanent(SubType.DEMON, "Demon"), source.getSourceId(), source.getControllerId(), game) < 1) { controller.loseLife(3, game, false); } return true; diff --git a/Mage.Sets/src/mage/cards/r/RazorGolem.java b/Mage.Sets/src/mage/cards/r/RazorGolem.java index b1eba2a04c..41e5d40509 100644 --- a/Mage.Sets/src/mage/cards/r/RazorGolem.java +++ b/Mage.Sets/src/mage/cards/r/RazorGolem.java @@ -34,6 +34,7 @@ import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; /** * @@ -49,7 +50,7 @@ public class RazorGolem extends CardImpl { this.toughness = new MageInt(4); // Affinity for Plains - this.addAbility(new AffinityForLandTypeAbility("Plains", "Plains")); + this.addAbility(new AffinityForLandTypeAbility(SubType.PLAINS, "Plains")); // Vigilance this.addAbility(VigilanceAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/r/RedCliffsArmada.java b/Mage.Sets/src/mage/cards/r/RedCliffsArmada.java index 37dfcb8c04..546abe3d99 100644 --- a/Mage.Sets/src/mage/cards/r/RedCliffsArmada.java +++ b/Mage.Sets/src/mage/cards/r/RedCliffsArmada.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 RedCliffsArmada extends CardImpl { this.toughness = new MageInt(4); // Red Cliffs Armada 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 RedCliffsArmada(final RedCliffsArmada card) { diff --git a/Mage.Sets/src/mage/cards/r/ReflexSliver.java b/Mage.Sets/src/mage/cards/r/ReflexSliver.java index 0e3d39f991..b54ace95ab 100644 --- a/Mage.Sets/src/mage/cards/r/ReflexSliver.java +++ b/Mage.Sets/src/mage/cards/r/ReflexSliver.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 ReflexSliver extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public ReflexSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RiptideBiologist.java b/Mage.Sets/src/mage/cards/r/RiptideBiologist.java index d3be7cfed5..7c43c9bd35 100644 --- a/Mage.Sets/src/mage/cards/r/RiptideBiologist.java +++ b/Mage.Sets/src/mage/cards/r/RiptideBiologist.java @@ -35,6 +35,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; @@ -47,7 +48,7 @@ public class RiptideBiologist extends CardImpl { private static final FilterCard filter = new FilterCard("Beasts"); static { - filter.add(new SubtypePredicate("Beast")); + filter.add(new SubtypePredicate(SubType.BEAST)); } public RiptideBiologist(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RisenExecutioner.java b/Mage.Sets/src/mage/cards/r/RisenExecutioner.java index 595b0493d3..a6927ebd8f 100644 --- a/Mage.Sets/src/mage/cards/r/RisenExecutioner.java +++ b/Mage.Sets/src/mage/cards/r/RisenExecutioner.java @@ -38,12 +38,7 @@ import mage.abilities.effects.common.cost.CostModificationEffectImpl; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AsThoughEffectType; -import mage.constants.CardType; -import mage.constants.CostModificationType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AnotherCardPredicate; @@ -62,7 +57,7 @@ public class RisenExecutioner extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie creatures"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public RisenExecutioner(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RockslideAmbush.java b/Mage.Sets/src/mage/cards/r/RockslideAmbush.java index 93b5a0a094..71b7929a8a 100644 --- a/Mage.Sets/src/mage/cards/r/RockslideAmbush.java +++ b/Mage.Sets/src/mage/cards/r/RockslideAmbush.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.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; @@ -46,7 +47,7 @@ public class RockslideAmbush 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 RockslideAmbush(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RockyTarPit.java b/Mage.Sets/src/mage/cards/r/RockyTarPit.java index 0eaf7f3489..b5e3d0f3b9 100644 --- a/Mage.Sets/src/mage/cards/r/RockyTarPit.java +++ b/Mage.Sets/src/mage/cards/r/RockyTarPit.java @@ -27,12 +27,15 @@ */ package mage.cards.r; +import java.util.EnumMap; +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 +49,7 @@ public class RockyTarPit extends CardImpl { // Rocky Tar Pit enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); // {tap}, Sacrifice Rocky Tar Pit: Search your library for a Swamp or Mountain card and put it onto the battlefield. Then shuffle your library. - this.addAbility(new FetchLandActivatedAbility(false, new String[]{"Swamp", "Mountain"})); + this.addAbility(new FetchLandActivatedAbility(false, EnumSet.of(SubType.SWAMP, SubType.MOUNTAIN))); } public RockyTarPit(final RockyTarPit card) { diff --git a/Mage.Sets/src/mage/cards/r/RogueElephant.java b/Mage.Sets/src/mage/cards/r/RogueElephant.java index 4c12ee864f..347be19145 100644 --- a/Mage.Sets/src/mage/cards/r/RogueElephant.java +++ b/Mage.Sets/src/mage/cards/r/RogueElephant.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 RogueElephant extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("a Forest"); static{ - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public RogueElephant(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RollingStones.java b/Mage.Sets/src/mage/cards/r/RollingStones.java index 2e6d2114b2..c39cf3b0bf 100644 --- a/Mage.Sets/src/mage/cards/r/RollingStones.java +++ b/Mage.Sets/src/mage/cards/r/RollingStones.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; @@ -47,7 +48,7 @@ public class RollingStones extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wall creatures"); static { - filter.add(new SubtypePredicate("Wall")); + filter.add(new SubtypePredicate(SubType.WALL)); } public RollingStones(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SafewrightQuest.java b/Mage.Sets/src/mage/cards/s/SafewrightQuest.java index 7330fc9e86..aaeb2cae30 100644 --- a/Mage.Sets/src/mage/cards/s/SafewrightQuest.java +++ b/Mage.Sets/src/mage/cards/s/SafewrightQuest.java @@ -32,6 +32,7 @@ import mage.constants.CardType; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -46,7 +47,7 @@ public class SafewrightQuest extends CardImpl { private static final FilterCard filter = new FilterCard("Forest or Plains card"); static { - filter.add(Predicates.or(new SubtypePredicate("Forest"), new SubtypePredicate("Plains"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.FOREST), new SubtypePredicate(SubType.PLAINS))); } public SafewrightQuest(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/Sanctimony.java b/Mage.Sets/src/mage/cards/s/Sanctimony.java index 5766b60510..4693b65683 100644 --- a/Mage.Sets/src/mage/cards/s/Sanctimony.java +++ b/Mage.Sets/src/mage/cards/s/Sanctimony.java @@ -34,6 +34,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SetTargetPointer; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class Sanctimony extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.OPPONENT)); - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public Sanctimony(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SandTrooper.java b/Mage.Sets/src/mage/cards/s/SandTrooper.java index c1994085a7..d49e7f9669 100644 --- a/Mage.Sets/src/mage/cards/s/SandTrooper.java +++ b/Mage.Sets/src/mage/cards/s/SandTrooper.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 SandTrooper extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures"); static { - filter.add(new SubtypePredicate("Trooper")); + filter.add(new SubtypePredicate(SubType.TROOPER )); } public SandTrooper(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SarkhansTriumph.java b/Mage.Sets/src/mage/cards/s/SarkhansTriumph.java index 36efee3caa..9fa8b5db7a 100644 --- a/Mage.Sets/src/mage/cards/s/SarkhansTriumph.java +++ b/Mage.Sets/src/mage/cards/s/SarkhansTriumph.java @@ -32,6 +32,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.common.FilterCreatureCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -45,7 +46,7 @@ public class SarkhansTriumph extends CardImpl { private static final FilterCreatureCard filter = new FilterCreatureCard("Dragon creature card"); static { - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public SarkhansTriumph(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ScarbladeElite.java b/Mage.Sets/src/mage/cards/s/ScarbladeElite.java index 45d209b62d..ecc9e937a2 100644 --- a/Mage.Sets/src/mage/cards/s/ScarbladeElite.java +++ b/Mage.Sets/src/mage/cards/s/ScarbladeElite.java @@ -38,6 +38,7 @@ import mage.abilities.costs.common.TapSourceCost; 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.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class ScarbladeElite extends CardImpl { private static final FilterCard filter = new FilterCard("Assassin card from your graveyard"); static { - filter.add(new SubtypePredicate("Assassin")); + filter.add(new SubtypePredicate(SubType.ASSASSIN)); } public ScarbladeElite(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ScarredVinebreeder.java b/Mage.Sets/src/mage/cards/s/ScarredVinebreeder.java index 3b24b09af5..958bd99aec 100644 --- a/Mage.Sets/src/mage/cards/s/ScarredVinebreeder.java +++ b/Mage.Sets/src/mage/cards/s/ScarredVinebreeder.java @@ -29,6 +29,7 @@ package mage.cards.s; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; @@ -52,7 +53,7 @@ public class ScarredVinebreeder extends CardImpl { private static final FilterCard filter = new FilterCard("Elf card from your graveyard"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public ScarredVinebreeder(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SealockMonster.java b/Mage.Sets/src/mage/cards/s/SealockMonster.java index ebdea428e1..0e00c36e2d 100644 --- a/Mage.Sets/src/mage/cards/s/SealockMonster.java +++ b/Mage.Sets/src/mage/cards/s/SealockMonster.java @@ -38,12 +38,7 @@ import mage.abilities.keyword.MonstrosityAbility; import mage.abilities.mana.BlueManaAbility; 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.common.FilterLandPermanent; import mage.game.Game; import mage.game.permanent.Permanent; @@ -64,7 +59,7 @@ public class SealockMonster extends CardImpl { this.toughness = new MageInt(5); // Sealock 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")))); // {5}{U}{U}: Monstrosity 3. this.addAbility(new MonstrosityAbility("{5}{U}{U}",3)); // When Sealock Monster becomes monstrous, target land becomes an island in addition to its other types. diff --git a/Mage.Sets/src/mage/cards/s/SeedguideAsh.java b/Mage.Sets/src/mage/cards/s/SeedguideAsh.java index 7eea9fa6fb..2d395d45c5 100644 --- a/Mage.Sets/src/mage/cards/s/SeedguideAsh.java +++ b/Mage.Sets/src/mage/cards/s/SeedguideAsh.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Outcome; +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 SeedguideAsh extends CardImpl { private static final FilterCard filter = new FilterCard("Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public SeedguideAsh(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SeethingPathblazer.java b/Mage.Sets/src/mage/cards/s/SeethingPathblazer.java index 338dc83aa8..b17cba83b2 100644 --- a/Mage.Sets/src/mage/cards/s/SeethingPathblazer.java +++ b/Mage.Sets/src/mage/cards/s/SeethingPathblazer.java @@ -40,6 +40,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.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,7 +55,7 @@ public class SeethingPathblazer extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Elemental"); static { - filter.add(new SubtypePredicate("Elemental")); + filter.add(new SubtypePredicate(SubType.ELEMENTAL)); } public SeethingPathblazer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SejiriMerfolk.java b/Mage.Sets/src/mage/cards/s/SejiriMerfolk.java index 5e3e943dda..7dc2f055a2 100644 --- a/Mage.Sets/src/mage/cards/s/SejiriMerfolk.java +++ b/Mage.Sets/src/mage/cards/s/SejiriMerfolk.java @@ -28,6 +28,7 @@ package mage.cards.s; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; @@ -54,7 +55,7 @@ public class SejiriMerfolk extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Plains"); static { - filter.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.PLAINS)); } public SejiriMerfolk(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SentinelSliver.java b/Mage.Sets/src/mage/cards/s/SentinelSliver.java index d161e4d117..8a3dcb6402 100644 --- a/Mage.Sets/src/mage/cards/s/SentinelSliver.java +++ b/Mage.Sets/src/mage/cards/s/SentinelSliver.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.FilterControlledCreaturePermanent; @@ -53,7 +54,7 @@ public class SentinelSliver extends CardImpl { this.toughness = new MageInt(2); // Sliver creatures you control have vigilance. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(VigilanceAbility.getInstance(), Duration.WhileOnBattlefield, new FilterControlledCreaturePermanent("Sliver", "Sliver creatures you control ")))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(VigilanceAbility.getInstance(), Duration.WhileOnBattlefield, new FilterControlledCreaturePermanent(SubType.SLIVER, "Sliver creatures you control ")))); } public SentinelSliver(final SentinelSliver card) { diff --git a/Mage.Sets/src/mage/cards/s/ShadowbornApostle.java b/Mage.Sets/src/mage/cards/s/ShadowbornApostle.java index 7b77772585..6ea2f10540 100644 --- a/Mage.Sets/src/mage/cards/s/ShadowbornApostle.java +++ b/Mage.Sets/src/mage/cards/s/ShadowbornApostle.java @@ -39,6 +39,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.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreatureCard; @@ -56,7 +57,7 @@ public class ShadowbornApostle extends CardImpl { private static final FilterCreatureCard filter = new FilterCreatureCard("a Demon creature"); private static final FilterControlledCreaturePermanent filterApostle = new FilterControlledCreaturePermanent("six creatures named Shadowborn Apostle"); static { - filter.add(new SubtypePredicate("Demon")); + filter.add(new SubtypePredicate(SubType.DEMON)); filterApostle.add(new NamePredicate("Shadowborn Apostle")); } diff --git a/Mage.Sets/src/mage/cards/s/ShefetMonitor.java b/Mage.Sets/src/mage/cards/s/ShefetMonitor.java index 36856c370f..36e5258afa 100644 --- a/Mage.Sets/src/mage/cards/s/ShefetMonitor.java +++ b/Mage.Sets/src/mage/cards/s/ShefetMonitor.java @@ -36,6 +36,7 @@ import mage.abilities.keyword.CyclingAbility; 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 ShefetMonitor extends CardImpl { Predicates.and( new CardTypePredicate(CardType.LAND), new SupertypePredicate(SuperType.BASIC)), - new SubtypePredicate("Desert"))); + new SubtypePredicate(SubType.DESERT))); } public ShefetMonitor(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ShieldhideDragon.java b/Mage.Sets/src/mage/cards/s/ShieldhideDragon.java index bc5f1f61d7..b8cad46680 100644 --- a/Mage.Sets/src/mage/cards/s/ShieldhideDragon.java +++ b/Mage.Sets/src/mage/cards/s/ShieldhideDragon.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.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class ShieldhideDragon extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public ShieldhideDragon(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SilvergillDouser.java b/Mage.Sets/src/mage/cards/s/SilvergillDouser.java index de05bc73dd..88d26a2893 100644 --- a/Mage.Sets/src/mage/cards/s/SilvergillDouser.java +++ b/Mage.Sets/src/mage/cards/s/SilvergillDouser.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.Predicates; @@ -55,7 +56,7 @@ public class SilvergillDouser extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Merfolk and/or Faeries you control"); static { - filter.add(Predicates.or(new SubtypePredicate("Merfolk"), new SubtypePredicate("Faerie"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.MERFOLK), new SubtypePredicate(SubType.FAERIE))); } public SilvergillDouser(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SkirkDrillSergeant.java b/Mage.Sets/src/mage/cards/s/SkirkDrillSergeant.java index fc5f14165d..66de7c06c3 100644 --- a/Mage.Sets/src/mage/cards/s/SkirkDrillSergeant.java +++ b/Mage.Sets/src/mage/cards/s/SkirkDrillSergeant.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.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterPermanentCard; @@ -57,7 +58,7 @@ public class SkirkDrillSergeant extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("{this} or another Goblin"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public SkirkDrillSergeant(UUID ownerId, CardSetInfo setInfo) { @@ -87,7 +88,7 @@ class SkirkDrillSergeantEffect extends OneShotEffect { private static final FilterPermanentCard filter = new FilterPermanentCard("Goblin permanent card"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public SkirkDrillSergeantEffect() { diff --git a/Mage.Sets/src/mage/cards/s/SkirkProspector.java b/Mage.Sets/src/mage/cards/s/SkirkProspector.java index c2bb8582b7..859364a54a 100644 --- a/Mage.Sets/src/mage/cards/s/SkirkProspector.java +++ b/Mage.Sets/src/mage/cards/s/SkirkProspector.java @@ -36,6 +36,7 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +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 SkirkProspector extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Goblin"); static { - filter.add(new SubtypePredicate(("Goblin"))); + filter.add(new SubtypePredicate((SubType.GOBLIN))); } public SkirkProspector(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SkirsdagFlayer.java b/Mage.Sets/src/mage/cards/s/SkirsdagFlayer.java index e068d59f0d..0943baf074 100644 --- a/Mage.Sets/src/mage/cards/s/SkirsdagFlayer.java +++ b/Mage.Sets/src/mage/cards/s/SkirsdagFlayer.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.Ability; @@ -53,7 +54,7 @@ public class SkirsdagFlayer extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Human"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public SkirsdagFlayer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SlipstreamEel.java b/Mage.Sets/src/mage/cards/s/SlipstreamEel.java index aa9f454186..69cd6a8f93 100644 --- a/Mage.Sets/src/mage/cards/s/SlipstreamEel.java +++ b/Mage.Sets/src/mage/cards/s/SlipstreamEel.java @@ -36,6 +36,7 @@ import mage.abilities.keyword.CyclingAbility; 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; @@ -53,7 +54,7 @@ public class SlipstreamEel extends CardImpl { this.toughness = new MageInt(6); // Slipstream Eel 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")))); // Cycling {1}{U} this.addAbility(new CyclingAbility(new ManaCostsImpl("{1}{U}"))); diff --git a/Mage.Sets/src/mage/cards/s/SlumberingTora.java b/Mage.Sets/src/mage/cards/s/SlumberingTora.java index a6166c594d..1d3ccc5979 100644 --- a/Mage.Sets/src/mage/cards/s/SlumberingTora.java +++ b/Mage.Sets/src/mage/cards/s/SlumberingTora.java @@ -54,7 +54,7 @@ public class SlumberingTora extends CardImpl { private static final FilterCard filter = new FilterCard("Spirit or Arcane card"); static { - filter.add(Predicates.or(new SubtypePredicate("Spirit"),new SubtypePredicate("Arcane"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.SPIRIT),new SubtypePredicate(SubType.ARCANE))); } public SlumberingTora(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SmeltWardGatekeepers.java b/Mage.Sets/src/mage/cards/s/SmeltWardGatekeepers.java index 6aba6dd349..7e3bda3037 100644 --- a/Mage.Sets/src/mage/cards/s/SmeltWardGatekeepers.java +++ b/Mage.Sets/src/mage/cards/s/SmeltWardGatekeepers.java @@ -30,10 +30,7 @@ package mage.cards.s; import java.util.UUID; -import mage.constants.ComparisonType; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.TargetController; +import mage.constants.*; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -63,7 +60,7 @@ public class SmeltWardGatekeepers extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent(); private static final FilterCreaturePermanent targetFilter = new FilterCreaturePermanent("creature an opponent controls"); static { - filter.add(new SubtypePredicate("Gate")); + filter.add(new SubtypePredicate(SubType.GATE)); targetFilter.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/s/SnarlingUndorak.java b/Mage.Sets/src/mage/cards/s/SnarlingUndorak.java index f6d8dfb07d..76544dc90e 100644 --- a/Mage.Sets/src/mage/cards/s/SnarlingUndorak.java +++ b/Mage.Sets/src/mage/cards/s/SnarlingUndorak.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 SnarlingUndorak extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Beast creature"); static { - filter.add(new SubtypePredicate("Beast")); + filter.add(new SubtypePredicate(SubType.BEAST)); } public SnarlingUndorak(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SnowTrooper.java b/Mage.Sets/src/mage/cards/s/SnowTrooper.java index d13c0c638f..f91f994b1b 100644 --- a/Mage.Sets/src/mage/cards/s/SnowTrooper.java +++ b/Mage.Sets/src/mage/cards/s/SnowTrooper.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; @@ -55,7 +56,7 @@ public class SnowTrooper extends CardImpl { // Trooper creatures you control have firststrike. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield, - new FilterCreaturePermanent("Trooper", "Trooper creatures"), false))); + new FilterCreaturePermanent(SubType.TROOPER, "Trooper creatures"), false))); } public SnowTrooper(final SnowTrooper card) { diff --git a/Mage.Sets/src/mage/cards/s/SnuffOut.java b/Mage.Sets/src/mage/cards/s/SnuffOut.java index 1fb430d297..be79ecf16f 100644 --- a/Mage.Sets/src/mage/cards/s/SnuffOut.java +++ b/Mage.Sets/src/mage/cards/s/SnuffOut.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.common.FilterLandPermanent; import mage.filter.predicate.Predicates; @@ -55,7 +56,7 @@ public class SnuffOut extends CardImpl { static { filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); - filterSwamp.add(new SubtypePredicate("Swamp")); + filterSwamp.add(new SubtypePredicate(SubType.SWAMP)); } public SnuffOut(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SoulcatchersAerie.java b/Mage.Sets/src/mage/cards/s/SoulcatchersAerie.java index 0df96568c5..23866ca7ec 100644 --- a/Mage.Sets/src/mage/cards/s/SoulcatchersAerie.java +++ b/Mage.Sets/src/mage/cards/s/SoulcatchersAerie.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.counters.CounterType; import mage.filter.FilterPermanent; @@ -53,8 +54,8 @@ public class SoulcatchersAerie extends CardImpl { private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Bird creatures"); static { - filter.add(new SubtypePredicate("Bird")); - filter2.add(new SubtypePredicate("Bird")); + filter.add(new SubtypePredicate(SubType.BIRD)); + filter2.add(new SubtypePredicate(SubType.BIRD)); } public SoulcatchersAerie(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SpareFromEvil.java b/Mage.Sets/src/mage/cards/s/SpareFromEvil.java index 55b3d861e4..d962f1d6b1 100644 --- a/Mage.Sets/src/mage/cards/s/SpareFromEvil.java +++ b/Mage.Sets/src/mage/cards/s/SpareFromEvil.java @@ -33,6 +33,7 @@ import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -48,7 +49,7 @@ public class SpareFromEvil extends CardImpl { private static final FilterCreatureCard filterNonHuman = new FilterCreatureCard("non-Human creatures"); static { - filterNonHuman.add(Predicates.not(new SubtypePredicate("Human"))); + filterNonHuman.add(Predicates.not(new SubtypePredicate(SubType.HUMAN))); } public SpareFromEvil(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SpellstutterSprite.java b/Mage.Sets/src/mage/cards/s/SpellstutterSprite.java index afa9a49300..f7d5e2d187 100644 --- a/Mage.Sets/src/mage/cards/s/SpellstutterSprite.java +++ b/Mage.Sets/src/mage/cards/s/SpellstutterSprite.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.Mode; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.OneShotEffect; @@ -37,9 +37,6 @@ import mage.abilities.keyword.FlashAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.TargetController; import mage.filter.FilterPermanent; import mage.filter.FilterSpell; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -60,7 +57,7 @@ public class SpellstutterSprite extends CardImpl { public static final FilterPermanent filter = new FilterPermanent("number of Faeries you control"); static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Faerie")); + filter.add(new SubtypePredicate(SubType.FAERIE)); } public SpellstutterSprite(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SpireBarrage.java b/Mage.Sets/src/mage/cards/s/SpireBarrage.java index 9bf9467a70..a560b58397 100644 --- a/Mage.Sets/src/mage/cards/s/SpireBarrage.java +++ b/Mage.Sets/src/mage/cards/s/SpireBarrage.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.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class SpireBarrage extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain you control"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/s/SpireGolem.java b/Mage.Sets/src/mage/cards/s/SpireGolem.java index ec457de6c5..23a2d9c54e 100644 --- a/Mage.Sets/src/mage/cards/s/SpireGolem.java +++ b/Mage.Sets/src/mage/cards/s/SpireGolem.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; /** * @@ -49,7 +50,7 @@ public class SpireGolem extends CardImpl { this.toughness = new MageInt(4); // Affinity for Islands - this.addAbility(new AffinityForLandTypeAbility("Island", "Islands")); + this.addAbility(new AffinityForLandTypeAbility(SubType.ISLAND, "Islands")); // Flying this.addAbility(FlyingAbility.getInstance()); } diff --git a/Mage.Sets/src/mage/cards/s/SporesowerThallid.java b/Mage.Sets/src/mage/cards/s/SporesowerThallid.java index 077cb4e9aa..e8f686bb3c 100644 --- a/Mage.Sets/src/mage/cards/s/SporesowerThallid.java +++ b/Mage.Sets/src/mage/cards/s/SporesowerThallid.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.constants.TargetController; import mage.constants.Zone; import mage.counters.CounterType; @@ -54,7 +55,7 @@ public class SporesowerThallid extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Fungus you control"); static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Fungus")); + filter.add(new SubtypePredicate(SubType.FUNGUS)); } public SporesowerThallid(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SpringjackPasture.java b/Mage.Sets/src/mage/cards/s/SpringjackPasture.java index d2e8a7d6da..3f7f6cf18c 100644 --- a/Mage.Sets/src/mage/cards/s/SpringjackPasture.java +++ b/Mage.Sets/src/mage/cards/s/SpringjackPasture.java @@ -42,6 +42,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.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,7 +58,7 @@ public class SpringjackPasture extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Goats"); static { - filter.add(new SubtypePredicate("Goat")); + filter.add(new SubtypePredicate(SubType.GOAT)); } public SpringjackPasture(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SquirrelWrangler.java b/Mage.Sets/src/mage/cards/s/SquirrelWrangler.java index 5a2ada7ee7..4bcf6b0fa0 100644 --- a/Mage.Sets/src/mage/cards/s/SquirrelWrangler.java +++ b/Mage.Sets/src/mage/cards/s/SquirrelWrangler.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.common.FilterCreaturePermanent; @@ -51,7 +52,7 @@ import mage.target.common.TargetControlledPermanent; */ public class SquirrelWrangler extends CardImpl { - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Squirrel", "Squirrel creatures"); + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.SQUIRREL, "Squirrel creatures"); public SquirrelWrangler(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}"); diff --git a/Mage.Sets/src/mage/cards/s/StaffOfTheWildMagus.java b/Mage.Sets/src/mage/cards/s/StaffOfTheWildMagus.java index 0422d67af2..25776d465b 100644 --- a/Mage.Sets/src/mage/cards/s/StaffOfTheWildMagus.java +++ b/Mage.Sets/src/mage/cards/s/StaffOfTheWildMagus.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 StaffOfTheWildMagus extends CardImpl { static { filterSpell.add(new ColorPredicate(ObjectColor.GREEN)); - filterLand.add(new SubtypePredicate("Forest")); + filterLand.add(new SubtypePredicate(SubType.FOREST)); } public StaffOfTheWildMagus(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StensiaBanquet.java b/Mage.Sets/src/mage/cards/s/StensiaBanquet.java index f48bb6025a..03cf4b586a 100644 --- a/Mage.Sets/src/mage/cards/s/StensiaBanquet.java +++ b/Mage.Sets/src/mage/cards/s/StensiaBanquet.java @@ -35,6 +35,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.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetOpponent; @@ -48,7 +49,7 @@ public class StensiaBanquet extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Vampires you control"); static { - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); } public StensiaBanquet(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StoneforgeAcolyte.java b/Mage.Sets/src/mage/cards/s/StoneforgeAcolyte.java index cf16a1d548..e8b9ac002a 100644 --- a/Mage.Sets/src/mage/cards/s/StoneforgeAcolyte.java +++ b/Mage.Sets/src/mage/cards/s/StoneforgeAcolyte.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.FilterCard; import mage.filter.common.FilterControlledPermanent; @@ -57,9 +58,9 @@ public class StoneforgeAcolyte extends CardImpl { private static final FilterCard filterEquipment = new FilterCard("an Equipment card"); static { - filterAlly.add(new SubtypePredicate("Ally")); + filterAlly.add(new SubtypePredicate(SubType.ALLY)); filterAlly.add(Predicates.not(new TappedPredicate())); - filterEquipment.add(new SubtypePredicate("Equipment")); + filterEquipment.add(new SubtypePredicate(SubType.EQUIPMENT)); } public StoneforgeAcolyte(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StrengthOfNight.java b/Mage.Sets/src/mage/cards/s/StrengthOfNight.java index ddc29bee2a..ac8f7bc40d 100644 --- a/Mage.Sets/src/mage/cards/s/StrengthOfNight.java +++ b/Mage.Sets/src/mage/cards/s/StrengthOfNight.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.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class StrengthOfNight extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie creatures"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public StrengthOfNight(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StromkirkCondemned.java b/Mage.Sets/src/mage/cards/s/StromkirkCondemned.java index 90f17275a8..990d4ee15d 100644 --- a/Mage.Sets/src/mage/cards/s/StromkirkCondemned.java +++ b/Mage.Sets/src/mage/cards/s/StromkirkCondemned.java @@ -34,10 +34,7 @@ import mage.abilities.costs.common.DiscardCardCost; 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.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; @@ -51,7 +48,7 @@ public class StromkirkCondemned extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampires"); static { - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/s/StromkirkMentor.java b/Mage.Sets/src/mage/cards/s/StromkirkMentor.java index 2d8e300181..d625d11778 100644 --- a/Mage.Sets/src/mage/cards/s/StromkirkMentor.java +++ b/Mage.Sets/src/mage/cards/s/StromkirkMentor.java @@ -35,6 +35,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.counters.CounterType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class StromkirkMentor extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); } public StromkirkMentor(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SunbladeElf.java b/Mage.Sets/src/mage/cards/s/SunbladeElf.java index ad8ee0639b..9d8a8d18ef 100644 --- a/Mage.Sets/src/mage/cards/s/SunbladeElf.java +++ b/Mage.Sets/src/mage/cards/s/SunbladeElf.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; @@ -52,7 +53,7 @@ public class SunbladeElf extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Plains"); static { - filter.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.PLAINS)); } public SunbladeElf(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SupremeExemplar.java b/Mage.Sets/src/mage/cards/s/SupremeExemplar.java index c31ebffbd4..42ae4f3928 100644 --- a/Mage.Sets/src/mage/cards/s/SupremeExemplar.java +++ b/Mage.Sets/src/mage/cards/s/SupremeExemplar.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.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -46,7 +47,7 @@ public class SupremeExemplar extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Elemental"); static { - filter.add(new SubtypePredicate("Elemental")); + filter.add(new SubtypePredicate(SubType.ELEMENTAL)); } public SupremeExemplar(UUID ownerId, CardSetInfo setInfo) { @@ -59,7 +60,7 @@ public class SupremeExemplar extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Champion an Elemental - this.addAbility(new ChampionAbility(this, "Elemental", false)); + this.addAbility(new ChampionAbility(this, SubType.ELEMENTAL, false)); } public SupremeExemplar(final SupremeExemplar card) { diff --git a/Mage.Sets/src/mage/cards/s/SwarmOfRats.java b/Mage.Sets/src/mage/cards/s/SwarmOfRats.java index 8d5329564c..5cac2ae81a 100644 --- a/Mage.Sets/src/mage/cards/s/SwarmOfRats.java +++ b/Mage.Sets/src/mage/cards/s/SwarmOfRats.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.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class SwarmOfRats extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Rats you control"); static{ - filter.add(new SubtypePredicate("Rat")); + filter.add(new SubtypePredicate(SubType.RAT)); } public SwarmOfRats(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SynchronousSliver.java b/Mage.Sets/src/mage/cards/s/SynchronousSliver.java index eac378b157..5de1400513 100644 --- a/Mage.Sets/src/mage/cards/s/SynchronousSliver.java +++ b/Mage.Sets/src/mage/cards/s/SynchronousSliver.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; @@ -45,7 +46,7 @@ import mage.filter.common.FilterCreaturePermanent; */ public class SynchronousSliver 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 SynchronousSliver(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{U}"); diff --git a/Mage.Sets/src/mage/cards/t/TajuruArcher.java b/Mage.Sets/src/mage/cards/t/TajuruArcher.java index 6d863a772e..3fb465ebf8 100644 --- a/Mage.Sets/src/mage/cards/t/TajuruArcher.java +++ b/Mage.Sets/src/mage/cards/t/TajuruArcher.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.DamageTargetEffect; 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.AbilityPredicate; @@ -55,7 +56,7 @@ public class TajuruArcher extends CardImpl { private static final FilterCreaturePermanent filterTarget = new FilterCreaturePermanent("creature with flying"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); filter.add(new ControllerPredicate(TargetController.YOU)); filterTarget.add(new AbilityPredicate(FlyingAbility.class)); } diff --git a/Mage.Sets/src/mage/cards/t/Tallowisp.java b/Mage.Sets/src/mage/cards/t/Tallowisp.java index 14adbb7aeb..6772ae2150 100644 --- a/Mage.Sets/src/mage/cards/t/Tallowisp.java +++ b/Mage.Sets/src/mage/cards/t/Tallowisp.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.FilterSpell; import mage.filter.common.FilterSpiritOrArcaneCard; @@ -58,7 +59,7 @@ public class Tallowisp extends CardImpl { static { filterAura.add(new CardTypePredicate(CardType.ENCHANTMENT)); - filterAura.add(new SubtypePredicate("Aura")); + filterAura.add(new SubtypePredicate(SubType.AURA)); filterAura.add(new TallowispAbilityPredicate()); } diff --git a/Mage.Sets/src/mage/cards/t/TendrilsOfCorruption.java b/Mage.Sets/src/mage/cards/t/TendrilsOfCorruption.java index 8d63cea86d..78c416a64f 100644 --- a/Mage.Sets/src/mage/cards/t/TendrilsOfCorruption.java +++ b/Mage.Sets/src/mage/cards/t/TendrilsOfCorruption.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.GainLifeEffect; 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; @@ -47,7 +48,7 @@ public class TendrilsOfCorruption 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 TendrilsOfCorruption(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/ThallidGerminator.java b/Mage.Sets/src/mage/cards/t/ThallidGerminator.java index 6f1cfb1ce0..8acd0a965b 100644 --- a/Mage.Sets/src/mage/cards/t/ThallidGerminator.java +++ b/Mage.Sets/src/mage/cards/t/ThallidGerminator.java @@ -39,10 +39,7 @@ import mage.abilities.effects.common.continuous.BoostTargetEffect; 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.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -58,7 +55,7 @@ public class ThallidGerminator extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Saproling"); static { - filter.add(new SubtypePredicate("Saproling")); + filter.add(new SubtypePredicate(SubType.SAPROLING)); } public ThallidGerminator(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/ThelonOfHavenwood.java b/Mage.Sets/src/mage/cards/t/ThelonOfHavenwood.java index aa80073046..90c1b66a2b 100644 --- a/Mage.Sets/src/mage/cards/t/ThelonOfHavenwood.java +++ b/Mage.Sets/src/mage/cards/t/ThelonOfHavenwood.java @@ -58,8 +58,8 @@ public class ThelonOfHavenwood extends CardImpl { private static final FilterCard filterCard = new FilterCard("a Fungus card from a graveyard"); private static final FilterPermanent filterPermanent = new FilterPermanent("Fungus on the battlefield"); static { - filterCard.add(new SubtypePredicate("Fungus")); - filterPermanent.add(new SubtypePredicate("Fungus")); + filterCard.add(new SubtypePredicate(SubType.FUNGUS)); + filterPermanent.add(new SubtypePredicate(SubType.FUNGUS)); } public ThelonOfHavenwood(UUID ownerId, CardSetInfo setInfo) { @@ -93,7 +93,7 @@ class ThelonOfHavenwoodBoostEffect extends ContinuousEffectImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Fungus creature"); static { - filter.add(new SubtypePredicate("Fungus")); + filter.add(new SubtypePredicate(SubType.FUNGUS)); } ThelonOfHavenwoodBoostEffect() { diff --git a/Mage.Sets/src/mage/cards/t/ThopterSquadron.java b/Mage.Sets/src/mage/cards/t/ThopterSquadron.java index adbd784d87..c8fe651f26 100644 --- a/Mage.Sets/src/mage/cards/t/ThopterSquadron.java +++ b/Mage.Sets/src/mage/cards/t/ThopterSquadron.java @@ -42,6 +42,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.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; @@ -60,7 +61,7 @@ public class ThopterSquadron extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Thopter")); + filter.add(new SubtypePredicate(SubType.THOPTER)); } public ThopterSquadron(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/ThornbiteStaff.java b/Mage.Sets/src/mage/cards/t/ThornbiteStaff.java index ebf0345935..d67d3287b6 100644 --- a/Mage.Sets/src/mage/cards/t/ThornbiteStaff.java +++ b/Mage.Sets/src/mage/cards/t/ThornbiteStaff.java @@ -28,10 +28,8 @@ package mage.cards.t; 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.DiesCreatureTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; @@ -47,7 +45,6 @@ import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; 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; @@ -61,7 +58,7 @@ public class ThornbiteStaff extends CardImpl { private static final FilterPermanent filter = new FilterCreaturePermanent("a Shaman creature"); static { - filter.add(new SubtypePredicate("Shaman")); + filter.add(new SubtypePredicate(SubType.SHAMAN)); } public ThornbiteStaff(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/ThrullChampion.java b/Mage.Sets/src/mage/cards/t/ThrullChampion.java index 3857e278fd..61d8eb83a1 100644 --- a/Mage.Sets/src/mage/cards/t/ThrullChampion.java +++ b/Mage.Sets/src/mage/cards/t/ThrullChampion.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; @@ -55,7 +56,7 @@ public class ThrullChampion extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Thrull creatures"); static { - filter.add(new SubtypePredicate("Thrull")); + filter.add(new SubtypePredicate(SubType.THRULL)); } public ThrullChampion(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/ThunderbreakRegent.java b/Mage.Sets/src/mage/cards/t/ThunderbreakRegent.java index 8aa1fb1100..adf38c535d 100644 --- a/Mage.Sets/src/mage/cards/t/ThunderbreakRegent.java +++ b/Mage.Sets/src/mage/cards/t/ThunderbreakRegent.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.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -79,7 +80,7 @@ class ThunderbreakRegentTriggeredAbility extends TriggeredAbilityImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Sliver creature you control"); static { - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public ThunderbreakRegentTriggeredAbility(Effect effect) { diff --git a/Mage.Sets/src/mage/cards/t/TidalBore.java b/Mage.Sets/src/mage/cards/t/TidalBore.java index 9d62492ca4..3bbf635c58 100644 --- a/Mage.Sets/src/mage/cards/t/TidalBore.java +++ b/Mage.Sets/src/mage/cards/t/TidalBore.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.MayTapOrUntapTargetEffect; 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.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class TidalBore extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("an 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/t/TivadarOfThorn.java b/Mage.Sets/src/mage/cards/t/TivadarOfThorn.java index aec7dae19c..3cbd37e418 100644 --- a/Mage.Sets/src/mage/cards/t/TivadarOfThorn.java +++ b/Mage.Sets/src/mage/cards/t/TivadarOfThorn.java @@ -37,6 +37,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.SuperType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,7 +55,7 @@ public class TivadarOfThorn extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Goblin"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public TivadarOfThorn(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TivadarsCrusade.java b/Mage.Sets/src/mage/cards/t/TivadarsCrusade.java index ec270ba18e..0b973dc595 100644 --- a/Mage.Sets/src/mage/cards/t/TivadarsCrusade.java +++ b/Mage.Sets/src/mage/cards/t/TivadarsCrusade.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.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -44,7 +45,7 @@ public class TivadarsCrusade extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Goblins"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public TivadarsCrusade(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TorrentOfStone.java b/Mage.Sets/src/mage/cards/t/TorrentOfStone.java index 46dbe440a6..332f427b9d 100644 --- a/Mage.Sets/src/mage/cards/t/TorrentOfStone.java +++ b/Mage.Sets/src/mage/cards/t/TorrentOfStone.java @@ -34,6 +34,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.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; @@ -47,7 +48,7 @@ public class TorrentOfStone extends CardImpl { private static final FilterControlledLandPermanent filterSacrifice = new FilterControlledLandPermanent("two Mountains"); static { - filterSacrifice.add(new SubtypePredicate("Mountain")); + filterSacrifice.add(new SubtypePredicate(SubType.MOUNTAIN)); } public TorrentOfStone(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TotemGuideHartebeest.java b/Mage.Sets/src/mage/cards/t/TotemGuideHartebeest.java index adc65a27e0..7b9a8504cd 100644 --- a/Mage.Sets/src/mage/cards/t/TotemGuideHartebeest.java +++ b/Mage.Sets/src/mage/cards/t/TotemGuideHartebeest.java @@ -34,6 +34,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class TotemGuideHartebeest extends CardImpl { static { filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public TotemGuideHartebeest(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TrapmakersSnare.java b/Mage.Sets/src/mage/cards/t/TrapmakersSnare.java index 1290fbd083..768a4f202a 100644 --- a/Mage.Sets/src/mage/cards/t/TrapmakersSnare.java +++ b/Mage.Sets/src/mage/cards/t/TrapmakersSnare.java @@ -32,6 +32,7 @@ import mage.constants.CardType; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; 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.TargetCardInLibrary; @@ -45,7 +46,7 @@ public class TrapmakersSnare extends CardImpl { private static final FilterCard filter = new FilterCard("Trap card"); static { - filter.add(new SubtypePredicate("Trap")); + filter.add(new SubtypePredicate(SubType.TRAP)); } public TrapmakersSnare(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TraprootKami.java b/Mage.Sets/src/mage/cards/t/TraprootKami.java index b252e5c211..c1fe45cd21 100644 --- a/Mage.Sets/src/mage/cards/t/TraprootKami.java +++ b/Mage.Sets/src/mage/cards/t/TraprootKami.java @@ -39,6 +39,7 @@ import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class TraprootKami extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("the number of Forests on the battlefield"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public TraprootKami(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TrialOfAmbition.java b/Mage.Sets/src/mage/cards/t/TrialOfAmbition.java index 02a3f1e853..6f437bd0cf 100644 --- a/Mage.Sets/src/mage/cards/t/TrialOfAmbition.java +++ b/Mage.Sets/src/mage/cards/t/TrialOfAmbition.java @@ -36,6 +36,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.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class TrialOfAmbition extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Cartouche"); static { - filter.add(new SubtypePredicate("Cartouche")); + filter.add(new SubtypePredicate(SubType.CARTOUCHE)); } public TrialOfAmbition(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TrialOfZeal.java b/Mage.Sets/src/mage/cards/t/TrialOfZeal.java index 60af306da0..740d434734 100644 --- a/Mage.Sets/src/mage/cards/t/TrialOfZeal.java +++ b/Mage.Sets/src/mage/cards/t/TrialOfZeal.java @@ -36,6 +36,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.target.common.TargetCreatureOrPlayer; @@ -49,7 +50,7 @@ public class TrialOfZeal extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Cartouche"); static { - filter.add(new SubtypePredicate("Cartouche")); + filter.add(new SubtypePredicate(SubType.CARTOUCHE)); } public TrialOfZeal(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/Tsunami.java b/Mage.Sets/src/mage/cards/t/Tsunami.java index 1b7207de93..8a041209c4 100644 --- a/Mage.Sets/src/mage/cards/t/Tsunami.java +++ b/Mage.Sets/src/mage/cards/t/Tsunami.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.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -43,7 +44,7 @@ public class Tsunami extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Islands"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public Tsunami(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TurnToDust.java b/Mage.Sets/src/mage/cards/t/TurnToDust.java index c977672433..2c5c83d833 100644 --- a/Mage.Sets/src/mage/cards/t/TurnToDust.java +++ b/Mage.Sets/src/mage/cards/t/TurnToDust.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.BasicManaEffect; 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; @@ -47,7 +48,7 @@ public class TurnToDust extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Equipment"); static { - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public TurnToDust(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/u/UbulSarGatekeepers.java b/Mage.Sets/src/mage/cards/u/UbulSarGatekeepers.java index d48946c05d..bd14d09f02 100644 --- a/Mage.Sets/src/mage/cards/u/UbulSarGatekeepers.java +++ b/Mage.Sets/src/mage/cards/u/UbulSarGatekeepers.java @@ -30,16 +30,13 @@ package mage.cards.u; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.decorator.ConditionalTriggeredAbility; 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.TargetController; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,7 +54,7 @@ public class UbulSarGatekeepers extends CardImpl { private static final FilterCreaturePermanent targetFilter = new FilterCreaturePermanent("creature an opponent controls"); static { - filter.add(new SubtypePredicate("Gate")); + filter.add(new SubtypePredicate(SubType.GATE)); targetFilter.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/u/UnbreathingHorde.java b/Mage.Sets/src/mage/cards/u/UnbreathingHorde.java index fc02cbf241..d094681865 100644 --- a/Mage.Sets/src/mage/cards/u/UnbreathingHorde.java +++ b/Mage.Sets/src/mage/cards/u/UnbreathingHorde.java @@ -36,10 +36,7 @@ import mage.abilities.effects.OneShotEffect; 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.counters.CounterType; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; @@ -85,8 +82,8 @@ class UnbreathingHordeEffect1 extends OneShotEffect { private static final FilterCreatureCard filter2 = new FilterCreatureCard(); static { - filter1.add(new SubtypePredicate("Zombie")); - filter2.add(new SubtypePredicate("Zombie")); + filter1.add(new SubtypePredicate(SubType.ZOMBIE)); + filter2.add(new SubtypePredicate(SubType.ZOMBIE)); } public UnbreathingHordeEffect1() { diff --git a/Mage.Sets/src/mage/cards/v/ValakutTheMoltenPinnacle.java b/Mage.Sets/src/mage/cards/v/ValakutTheMoltenPinnacle.java index e84b0460ca..07077586bc 100644 --- a/Mage.Sets/src/mage/cards/v/ValakutTheMoltenPinnacle.java +++ b/Mage.Sets/src/mage/cards/v/ValakutTheMoltenPinnacle.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.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; @@ -56,7 +57,7 @@ public class ValakutTheMoltenPinnacle extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public ValakutTheMoltenPinnacle(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VampiricFury.java b/Mage.Sets/src/mage/cards/v/VampiricFury.java index 1d346f9263..c86b3a8de8 100644 --- a/Mage.Sets/src/mage/cards/v/VampiricFury.java +++ b/Mage.Sets/src/mage/cards/v/VampiricFury.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.keyword.FirstStrikeAbility; 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; @@ -49,7 +50,7 @@ public class VampiricFury extends CardImpl { private static final FilterCreaturePermanent vampires = new FilterCreaturePermanent("Vampire creatures"); static { - vampires.add(new SubtypePredicate("Vampire")); + vampires.add(new SubtypePredicate(SubType.VAMPIRE)); vampires.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/v/VampiricSliver.java b/Mage.Sets/src/mage/cards/v/VampiricSliver.java index 3e16bea886..5b7fb25cb7 100644 --- a/Mage.Sets/src/mage/cards/v/VampiricSliver.java +++ b/Mage.Sets/src/mage/cards/v/VampiricSliver.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.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; @@ -51,7 +52,7 @@ public class VampiricSliver extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public VampiricSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VengefulDead.java b/Mage.Sets/src/mage/cards/v/VengefulDead.java index f963c499af..2722cb8111 100644 --- a/Mage.Sets/src/mage/cards/v/VengefulDead.java +++ b/Mage.Sets/src/mage/cards/v/VengefulDead.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.LoseLifeOpponentsEffect; 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; @@ -46,7 +47,7 @@ public class VengefulDead extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("{this} or another Zombie"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public VengefulDead(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VeteranArmorsmith.java b/Mage.Sets/src/mage/cards/v/VeteranArmorsmith.java index 3d2b581bc4..4eeedbade2 100644 --- a/Mage.Sets/src/mage/cards/v/VeteranArmorsmith.java +++ b/Mage.Sets/src/mage/cards/v/VeteranArmorsmith.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; @@ -49,7 +50,7 @@ public class VeteranArmorsmith extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures"); static { - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public VeteranArmorsmith(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VeteransArmaments.java b/Mage.Sets/src/mage/cards/v/VeteransArmaments.java index 6e971f7635..65c07dff50 100644 --- a/Mage.Sets/src/mage/cards/v/VeteransArmaments.java +++ b/Mage.Sets/src/mage/cards/v/VeteransArmaments.java @@ -28,11 +28,8 @@ package mage.cards.v; import java.util.UUID; -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.abilities.Ability; import mage.abilities.common.AttacksOrBlocksTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; @@ -47,7 +44,6 @@ import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; 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; @@ -60,7 +56,7 @@ public class VeteransArmaments extends CardImpl { private static final FilterPermanent filter = new FilterCreaturePermanent("a Soldier creature"); static { - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public VeteransArmaments(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VileDeacon.java b/Mage.Sets/src/mage/cards/v/VileDeacon.java index 53aac7ab7f..5d6a65e2fd 100644 --- a/Mage.Sets/src/mage/cards/v/VileDeacon.java +++ b/Mage.Sets/src/mage/cards/v/VileDeacon.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 VileDeacon extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Clerics"); static { - filter.add(new SubtypePredicate("Cleric")); + filter.add(new SubtypePredicate(SubType.CLERIC)); } public VileDeacon(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VillageElder.java b/Mage.Sets/src/mage/cards/v/VillageElder.java index 556245478c..192b49c8c1 100644 --- a/Mage.Sets/src/mage/cards/v/VillageElder.java +++ b/Mage.Sets/src/mage/cards/v/VillageElder.java @@ -38,6 +38,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.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class VillageElder extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("a Forest"); static{ - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public VillageElder(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VillainousOgre.java b/Mage.Sets/src/mage/cards/v/VillainousOgre.java index fc7ac0f04c..fc304f4a0c 100644 --- a/Mage.Sets/src/mage/cards/v/VillainousOgre.java +++ b/Mage.Sets/src/mage/cards/v/VillainousOgre.java @@ -38,6 +38,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.ColoredManaSymbol; +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 VillainousOgre extends CardImpl { private static final String rule = "As long as you control a Demon, {this} has {B}: Regenerate Villainous Ogre"; private static final FilterControlledPermanent filter = new FilterControlledPermanent("Demon"); static { - filter.add(new SubtypePredicate("Demon")); + filter.add(new SubtypePredicate(SubType.DEMON)); } public VillainousOgre(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/v/VitalityCharm.java b/Mage.Sets/src/mage/cards/v/VitalityCharm.java index ae012247da..513fc982ff 100644 --- a/Mage.Sets/src/mage/cards/v/VitalityCharm.java +++ b/Mage.Sets/src/mage/cards/v/VitalityCharm.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.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.InsectToken; @@ -54,7 +55,7 @@ public class VitalityCharm extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Beast"); static { - filter.add(new SubtypePredicate("Beast")); + filter.add(new SubtypePredicate(SubType.BEAST)); } public VitalityCharm(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WanderwineHub.java b/Mage.Sets/src/mage/cards/w/WanderwineHub.java index 6d2d9972c9..42ccf208e3 100644 --- a/Mage.Sets/src/mage/cards/w/WanderwineHub.java +++ b/Mage.Sets/src/mage/cards/w/WanderwineHub.java @@ -36,6 +36,7 @@ import mage.abilities.mana.BlueManaAbility; import mage.abilities.mana.WhiteManaAbility; 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 WanderwineHub extends CardImpl { private static final FilterCard filter = new FilterCard("a Merfolk card from your hand"); static { - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK)); } public WanderwineHub(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WeirdingShaman.java b/Mage.Sets/src/mage/cards/w/WeirdingShaman.java index b139738a40..18f0a4aa38 100644 --- a/Mage.Sets/src/mage/cards/w/WeirdingShaman.java +++ b/Mage.Sets/src/mage/cards/w/WeirdingShaman.java @@ -38,6 +38,7 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.CreateTokenEffect; 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; @@ -53,7 +54,7 @@ public class WeirdingShaman extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Goblin"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public WeirdingShaman(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WellgabberApothecary.java b/Mage.Sets/src/mage/cards/w/WellgabberApothecary.java index 65d76caee6..f89078e693 100644 --- a/Mage.Sets/src/mage/cards/w/WellgabberApothecary.java +++ b/Mage.Sets/src/mage/cards/w/WellgabberApothecary.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.Predicates; @@ -53,7 +54,7 @@ public class WellgabberApothecary extends CardImpl { static { filter.add(new TappedPredicate()); - filter.add(Predicates.or(new SubtypePredicate("Merfolk"), new SubtypePredicate("Kithkin"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.MERFOLK), new SubtypePredicate(SubType.KITHKIN))); } public WellgabberApothecary(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WingSplicer.java b/Mage.Sets/src/mage/cards/w/WingSplicer.java index 0f88bdb8d1..e9303146fb 100644 --- a/Mage.Sets/src/mage/cards/w/WingSplicer.java +++ b/Mage.Sets/src/mage/cards/w/WingSplicer.java @@ -30,6 +30,7 @@ package mage.cards.w; 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 WingSplicer extends CardImpl { static { filter.add(new CardTypePredicate(CardType.CREATURE)); - filter.add(new SubtypePredicate("Golem")); + filter.add(new SubtypePredicate(SubType.GOLEM)); } public WingSplicer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/z/ZhouYuChiefCommander.java b/Mage.Sets/src/mage/cards/z/ZhouYuChiefCommander.java index 007c511f37..f1829fedee 100644 --- a/Mage.Sets/src/mage/cards/z/ZhouYuChiefCommander.java +++ b/Mage.Sets/src/mage/cards/z/ZhouYuChiefCommander.java @@ -33,6 +33,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.SuperType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; @@ -54,7 +55,7 @@ public class ZhouYuChiefCommander extends CardImpl { this.toughness = new MageInt(8); // Zhou Yu, Chief Commander 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 ZhouYuChiefCommander(final ZhouYuChiefCommander card) { diff --git a/Mage/src/main/java/mage/abilities/common/FetchLandActivatedAbility.java b/Mage/src/main/java/mage/abilities/common/FetchLandActivatedAbility.java index a5fc21bbfc..4185dc26ef 100644 --- a/Mage/src/main/java/mage/abilities/common/FetchLandActivatedAbility.java +++ b/Mage/src/main/java/mage/abilities/common/FetchLandActivatedAbility.java @@ -29,6 +29,8 @@ package mage.abilities.common; import java.util.ArrayList; +import java.util.Set; + import mage.MageObject; import mage.abilities.ActivatedAbilityImpl; import mage.abilities.costs.common.PayLifeCost; @@ -37,6 +39,7 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.Predicate; @@ -51,11 +54,11 @@ import mage.target.common.TargetCardInLibrary; */ public class FetchLandActivatedAbility extends ActivatedAbilityImpl { - public FetchLandActivatedAbility(String[] subtypes) { + public FetchLandActivatedAbility(Set subtypes) { this(true, subtypes); } - public FetchLandActivatedAbility(boolean withDamage, String[] subtypes) { + public FetchLandActivatedAbility(boolean withDamage, Set subtypes) { super(Zone.BATTLEFIELD, null); addCost(new TapSourceCost()); if (withDamage) { @@ -65,7 +68,7 @@ public class FetchLandActivatedAbility extends ActivatedAbilityImpl { FilterCard filter = new FilterCard(subTypeNames(subtypes)); filter.add(new CardTypePredicate(CardType.LAND)); ArrayList> subtypePredicates = new ArrayList<>(); - for (String subtype : subtypes) { + for (SubType subtype : subtypes) { subtypePredicates.add(new SubtypePredicate(subtype)); } filter.add(Predicates.or(subtypePredicates)); @@ -77,9 +80,9 @@ public class FetchLandActivatedAbility extends ActivatedAbilityImpl { super(ability); } - private String subTypeNames(String[] subTypes) { + private String subTypeNames(Set subTypes) { StringBuilder sb = new StringBuilder(); - for (String subType: subTypes) { + for (SubType subType: subTypes) { sb.append(subType).append(" or "); } return sb.substring(0, sb.length() - 4); diff --git a/Mage/src/main/java/mage/abilities/condition/common/EnchantedCreatureSubtypeCondition.java b/Mage/src/main/java/mage/abilities/condition/common/EnchantedCreatureSubtypeCondition.java index 40e1909907..1cb1a3d1a1 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/EnchantedCreatureSubtypeCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/EnchantedCreatureSubtypeCondition.java @@ -29,6 +29,7 @@ package mage.abilities.condition.common; import mage.abilities.Ability; import mage.abilities.condition.Condition; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -43,7 +44,7 @@ public class EnchantedCreatureSubtypeCondition implements Condition { private final FilterPermanent filter = new FilterCreaturePermanent(); - public EnchantedCreatureSubtypeCondition(String string) { + public EnchantedCreatureSubtypeCondition(SubType string) { filter.add(new SubtypePredicate(string)); } diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/UrzaTerrainValue.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/UrzaTerrainValue.java index d3dd6be074..9bf15864df 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/UrzaTerrainValue.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/UrzaTerrainValue.java @@ -3,6 +3,7 @@ package mage.abilities.dynamicvalue.common; import mage.abilities.Ability; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.effects.Effect; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -18,24 +19,24 @@ public class UrzaTerrainValue implements DynamicValue { @Override public int calculate(Game game, Ability sourceAbility, Effect effect) { FilterControlledPermanent pp = new FilterControlledPermanent("Urza's Power Plant"); - pp.add(new SubtypePredicate("Urza's")); - pp.add(new SubtypePredicate("Power-Plant")); + pp.add(new SubtypePredicate(SubType.URZAS)); + pp.add(new SubtypePredicate(SubType.POWER_PLANT)); PermanentsOnBattlefieldCount ppP = new PermanentsOnBattlefieldCount(pp); if (ppP.calculate(game, sourceAbility, effect) < 1) { return 1; } FilterControlledPermanent to = new FilterControlledPermanent("Urza's Tower"); - to.add(new SubtypePredicate("Urza's")); - to.add(new SubtypePredicate("Tower")); + to.add(new SubtypePredicate(SubType.URZAS)); + to.add(new SubtypePredicate(SubType.TOWER)); PermanentsOnBattlefieldCount toP = new PermanentsOnBattlefieldCount(to); if (toP.calculate(game, sourceAbility, effect) < 1) { return 1; } FilterControlledPermanent mi = new FilterControlledPermanent("Urza's Mine"); - mi.add(new SubtypePredicate("Urza's")); - mi.add(new SubtypePredicate("Mine")); + mi.add(new SubtypePredicate(SubType.URZAS)); + mi.add(new SubtypePredicate(SubType.MINE)); PermanentsOnBattlefieldCount miP = new PermanentsOnBattlefieldCount(mi); if (miP.calculate(game, sourceAbility, effect) < 1) { return 1; diff --git a/Mage/src/main/java/mage/abilities/effects/common/AmplifyEffect.java b/Mage/src/main/java/mage/abilities/effects/common/AmplifyEffect.java index c396579f05..fcdde7dafe 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/AmplifyEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/AmplifyEffect.java @@ -14,6 +14,7 @@ import mage.cards.Cards; import mage.cards.CardsImpl; import mage.constants.Duration; import mage.constants.Outcome; +import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.Predicates; @@ -101,7 +102,7 @@ public class AmplifyEffect extends ReplacementEffectImpl { FilterCreatureCard filter = new FilterCreatureCard("creatures cards to reveal"); List filterSubtypes = new ArrayList<>(); for (String subtype : sourceCreature.getSubtype(game)) { - filterSubtypes.add(new SubtypePredicate((subtype))); + filterSubtypes.add(new SubtypePredicate(SubType.byDescription(subtype))); } if (filterSubtypes.size() > 1) { filter.add(Predicates.or(filterSubtypes)); diff --git a/Mage/src/main/java/mage/abilities/effects/keyword/SweepEffect.java b/Mage/src/main/java/mage/abilities/effects/keyword/SweepEffect.java index 229b7d8bea..ba0f02e42b 100644 --- a/Mage/src/main/java/mage/abilities/effects/keyword/SweepEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/keyword/SweepEffect.java @@ -31,6 +31,7 @@ import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.CardsImpl; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledLandPermanent; @@ -47,12 +48,12 @@ import mage.util.CardUtil; */ public class SweepEffect extends OneShotEffect { - private final String sweepSubtype; + private final SubType sweepSubtype; - public SweepEffect(String sweepSubtype) { + public SweepEffect(SubType sweepSubtype) { super(Outcome.Benefit); this.sweepSubtype = sweepSubtype; - this.staticText = "Sweep - Return any number of " + sweepSubtype + (sweepSubtype.endsWith("s") ? "" : "s") + " you control to their owner's hand"; + this.staticText = "Sweep - Return any number of " + sweepSubtype + (sweepSubtype.getDescription().endsWith("s") ? "" : "s") + " you control to their owner's hand"; } public SweepEffect(final SweepEffect effect) { diff --git a/Mage/src/main/java/mage/abilities/keyword/AffinityForLandTypeAbility.java b/Mage/src/main/java/mage/abilities/keyword/AffinityForLandTypeAbility.java index c971500075..df20e59912 100644 --- a/Mage/src/main/java/mage/abilities/keyword/AffinityForLandTypeAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/AffinityForLandTypeAbility.java @@ -32,6 +32,7 @@ import mage.abilities.SpellAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.AdjustingSourceCosts; import mage.abilities.effects.common.AffinityEffect; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,9 +49,9 @@ public class AffinityForLandTypeAbility extends SimpleStaticAbility implements A private final FilterControlledPermanent filter; String text; - String landType; + SubType landType; - public AffinityForLandTypeAbility(String landType, String text) { + public AffinityForLandTypeAbility(SubType landType, String text) { super(Zone.OUTSIDE, new AffinityEffect(getFilter(landType))); this.filter = getFilter(landType); setRuleAtTheTop(true); @@ -58,7 +59,7 @@ public class AffinityForLandTypeAbility extends SimpleStaticAbility implements A this.landType = landType; } - private static FilterControlledPermanent getFilter(String landType) { + private static FilterControlledPermanent getFilter(SubType landType) { FilterControlledPermanent affinityfilter = new FilterControlledPermanent(); affinityfilter.add(new SubtypePredicate(landType)); return affinityfilter; diff --git a/Mage/src/main/java/mage/abilities/keyword/AuraSwapAbility.java b/Mage/src/main/java/mage/abilities/keyword/AuraSwapAbility.java index c2ae418441..5818ddcf40 100644 --- a/Mage/src/main/java/mage/abilities/keyword/AuraSwapAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/AuraSwapAbility.java @@ -33,6 +33,7 @@ import mage.abilities.costs.mana.ManaCost; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -88,7 +89,7 @@ class AuraSwapEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { FilterCard filterCardToCheck = new FilterCard(); - filterCardToCheck.add(new SubtypePredicate("Aura")); + filterCardToCheck.add(new SubtypePredicate(SubType.AURA)); Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { Permanent auraSourcePermanent = game.getPermanent(source.getSourceId()); diff --git a/Mage/src/main/java/mage/abilities/keyword/ChampionAbility.java b/Mage/src/main/java/mage/abilities/keyword/ChampionAbility.java index bb804ce83a..a97ed006d6 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ChampionAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ChampionAbility.java @@ -28,6 +28,7 @@ package mage.abilities.keyword; import java.util.ArrayList; +import java.util.EnumSet; import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; @@ -41,6 +42,7 @@ import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect; import mage.cards.Card; 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; @@ -74,11 +76,15 @@ import mage.util.CardUtil; */ public class ChampionAbility extends StaticAbility { - protected String[] subtypes; + protected EnumSet subtypes; protected String objectDescription; - public ChampionAbility(Card card, String subtype, boolean requiresCreature) { - this(card, new String[]{subtype}, requiresCreature); + public ChampionAbility(Card card, SubType subtype, boolean requiresCreature) { + this(card, EnumSet.of(subtype), requiresCreature); + } + + public ChampionAbility(Card card, boolean requiresCreature) { + this(card, EnumSet.noneOf(SubType.class), requiresCreature); } /** @@ -91,15 +97,15 @@ public class ChampionAbility extends StaticAbility { * @param requiresCreature for cards that specifically require championing * another creature */ - public ChampionAbility(Card card, String[] subtypes, boolean requiresCreature) { + public ChampionAbility(Card card, EnumSet subtypes, boolean requiresCreature) { super(Zone.BATTLEFIELD, null); this.subtypes = subtypes; StringBuilder sb = new StringBuilder("another "); ArrayList> subtypesPredicates = new ArrayList<>(); - if (!subtypes[0].isEmpty()) { + if (!subtypes.isEmpty()) { int i = 0; - for (String subtype : this.subtypes) { + for (SubType subtype : this.subtypes) { subtypesPredicates.add(new SubtypePredicate(subtype)); if (i == 0) { sb.append(subtype); diff --git a/Mage/src/main/java/mage/abilities/keyword/ForestcyclingAbility.java b/Mage/src/main/java/mage/abilities/keyword/ForestcyclingAbility.java index c276c2be1d..fc3fe49b7c 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ForestcyclingAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ForestcyclingAbility.java @@ -29,6 +29,7 @@ package mage.abilities.keyword; import mage.abilities.costs.mana.ManaCosts; +import mage.constants.SubType; import mage.filter.common.FilterLandCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -40,7 +41,7 @@ public class ForestcyclingAbility extends CyclingAbility{ private static final FilterLandCard filter = new FilterLandCard("Forest card"); private static final String text = "Forestcycling"; static{ - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public ForestcyclingAbility(ManaCosts costs) { diff --git a/Mage/src/main/java/mage/abilities/keyword/ForestwalkAbility.java b/Mage/src/main/java/mage/abilities/keyword/ForestwalkAbility.java index 7fd376b918..df6108338f 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ForestwalkAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ForestwalkAbility.java @@ -27,6 +27,7 @@ */ package mage.abilities.keyword; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -39,7 +40,7 @@ public class ForestwalkAbility extends LandwalkAbility { private static final FilterLandPermanent filter = new FilterLandPermanent("forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public ForestwalkAbility() { diff --git a/Mage/src/main/java/mage/abilities/keyword/IslandcyclingAbility.java b/Mage/src/main/java/mage/abilities/keyword/IslandcyclingAbility.java index 1fefefe029..4e16ece919 100644 --- a/Mage/src/main/java/mage/abilities/keyword/IslandcyclingAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/IslandcyclingAbility.java @@ -29,6 +29,7 @@ package mage.abilities.keyword; import mage.abilities.costs.mana.ManaCosts; +import mage.constants.SubType; import mage.filter.common.FilterLandCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -40,7 +41,7 @@ public class IslandcyclingAbility extends CyclingAbility{ private static final FilterLandCard filter = new FilterLandCard("Island card"); private static final String text = "Islandcycling"; static{ - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public IslandcyclingAbility(ManaCosts costs) { diff --git a/Mage/src/main/java/mage/abilities/keyword/IslandwalkAbility.java b/Mage/src/main/java/mage/abilities/keyword/IslandwalkAbility.java index b3d8e356a9..0722b95314 100644 --- a/Mage/src/main/java/mage/abilities/keyword/IslandwalkAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/IslandwalkAbility.java @@ -27,6 +27,7 @@ */ package mage.abilities.keyword; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -39,7 +40,7 @@ public class IslandwalkAbility extends LandwalkAbility { private static final FilterLandPermanent filter = new FilterLandPermanent("island"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public IslandwalkAbility() { diff --git a/Mage/src/main/java/mage/abilities/keyword/MountaincyclingAbility.java b/Mage/src/main/java/mage/abilities/keyword/MountaincyclingAbility.java index b17facd139..21a20ad7fe 100644 --- a/Mage/src/main/java/mage/abilities/keyword/MountaincyclingAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/MountaincyclingAbility.java @@ -29,6 +29,7 @@ package mage.abilities.keyword; import mage.abilities.costs.mana.ManaCosts; +import mage.constants.SubType; import mage.filter.common.FilterLandCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -40,7 +41,7 @@ public class MountaincyclingAbility extends CyclingAbility{ private static final FilterLandCard filter = new FilterLandCard("Mountain card"); private static final String text = "Mountaincycling"; static{ - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public MountaincyclingAbility(ManaCosts costs) { diff --git a/Mage/src/main/java/mage/abilities/keyword/MountainwalkAbility.java b/Mage/src/main/java/mage/abilities/keyword/MountainwalkAbility.java index 01a4834556..d8342399f7 100644 --- a/Mage/src/main/java/mage/abilities/keyword/MountainwalkAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/MountainwalkAbility.java @@ -27,6 +27,7 @@ */ package mage.abilities.keyword; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -39,7 +40,7 @@ public class MountainwalkAbility extends LandwalkAbility { private static final FilterLandPermanent filter = new FilterLandPermanent("mountain"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public MountainwalkAbility() { diff --git a/Mage/src/main/java/mage/abilities/keyword/OfferingAbility.java b/Mage/src/main/java/mage/abilities/keyword/OfferingAbility.java index 47e6b5e133..c0480e7774 100644 --- a/Mage/src/main/java/mage/abilities/keyword/OfferingAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/OfferingAbility.java @@ -35,11 +35,7 @@ import mage.abilities.StaticAbility; import mage.abilities.effects.AsThoughEffectImpl; import mage.abilities.effects.common.cost.CostModificationEffectImpl; import mage.cards.Card; -import mage.constants.AsThoughEffectType; -import mage.constants.CostModificationType; -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.game.Game; @@ -80,10 +76,10 @@ public class OfferingAbility extends StaticAbility { * * @param subtype name of the subtype that can be offered */ - public OfferingAbility(String subtype) { + public OfferingAbility(SubType subtype) { super(Zone.ALL, null); filter.add(new SubtypePredicate(subtype)); - filter.setMessage(subtype); + filter.setMessage(subtype.getDescription()); this.addEffect(new OfferingAsThoughEffect()); } diff --git a/Mage/src/main/java/mage/abilities/keyword/PlainscyclingAbility.java b/Mage/src/main/java/mage/abilities/keyword/PlainscyclingAbility.java index fdc23e285d..cc6d7bbeac 100644 --- a/Mage/src/main/java/mage/abilities/keyword/PlainscyclingAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/PlainscyclingAbility.java @@ -29,6 +29,7 @@ package mage.abilities.keyword; import mage.abilities.costs.mana.ManaCosts; +import mage.constants.SubType; import mage.filter.common.FilterLandCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -40,7 +41,7 @@ public class PlainscyclingAbility extends CyclingAbility{ private static final FilterLandCard filter = new FilterLandCard("Plains card"); private static final String text = "Plainscycling"; static{ - filter.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.PLAINS)); } public PlainscyclingAbility(ManaCosts costs) { diff --git a/Mage/src/main/java/mage/abilities/keyword/PlainswalkAbility.java b/Mage/src/main/java/mage/abilities/keyword/PlainswalkAbility.java index f16dfa05ff..952fc474fa 100644 --- a/Mage/src/main/java/mage/abilities/keyword/PlainswalkAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/PlainswalkAbility.java @@ -27,6 +27,7 @@ */ package mage.abilities.keyword; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -39,7 +40,7 @@ public class PlainswalkAbility extends LandwalkAbility { private static final FilterLandPermanent filter = new FilterLandPermanent("plains"); static { - filter.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.PLAINS)); } public PlainswalkAbility() { diff --git a/Mage/src/main/java/mage/abilities/keyword/SoulshiftAbility.java b/Mage/src/main/java/mage/abilities/keyword/SoulshiftAbility.java index 306d710a24..a228ec615c 100644 --- a/Mage/src/main/java/mage/abilities/keyword/SoulshiftAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/SoulshiftAbility.java @@ -33,6 +33,7 @@ import mage.abilities.common.DiesTriggeredAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.ReturnToHandTargetEffect; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -77,7 +78,7 @@ public class SoulshiftAbility extends DiesTriggeredAbility { int intValue = amount.calculate(game, this, null); FilterCard filter = new FilterCard("Spirit card with converted mana cost " + intValue + " or less from your graveyard"); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, intValue + 1)); - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); this.addTarget(new TargetCardInYourGraveyard(filter)); super.trigger(game, controllerId); //To change body of generated methods, choose Tools | Templates. } diff --git a/Mage/src/main/java/mage/abilities/keyword/SwampcyclingAbility.java b/Mage/src/main/java/mage/abilities/keyword/SwampcyclingAbility.java index 96e42a7948..af04f5fd1d 100644 --- a/Mage/src/main/java/mage/abilities/keyword/SwampcyclingAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/SwampcyclingAbility.java @@ -29,6 +29,7 @@ package mage.abilities.keyword; import mage.abilities.costs.mana.ManaCosts; +import mage.constants.SubType; import mage.filter.common.FilterLandCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -41,7 +42,7 @@ public class SwampcyclingAbility extends CyclingAbility{ private static final FilterLandCard filter = new FilterLandCard("Swamp card"); private static final String text = "Swampcycling"; static{ - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public SwampcyclingAbility(ManaCosts costs) { super(costs, filter, text); diff --git a/Mage/src/main/java/mage/abilities/keyword/SwampwalkAbility.java b/Mage/src/main/java/mage/abilities/keyword/SwampwalkAbility.java index 492ff7bb29..ad57adc45a 100644 --- a/Mage/src/main/java/mage/abilities/keyword/SwampwalkAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/SwampwalkAbility.java @@ -27,6 +27,7 @@ */ package mage.abilities.keyword; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -39,7 +40,7 @@ public class SwampwalkAbility extends LandwalkAbility { private static final FilterLandPermanent filter = new FilterLandPermanent("swamp"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public SwampwalkAbility() { diff --git a/Mage/src/main/java/mage/constants/SubType.java b/Mage/src/main/java/mage/constants/SubType.java new file mode 100644 index 0000000000..da8a5994e1 --- /dev/null +++ b/Mage/src/main/java/mage/constants/SubType.java @@ -0,0 +1,127 @@ +package mage.constants; + + +import java.util.Arrays; +import java.util.Set; +import java.util.stream.Collectors; + +public enum SubType { + ARCANE("Arcane", SubTypeSet.SpellType), + TRAP("Trap", SubTypeSet.SpellType), + + 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), + + AURA("Aura", SubTypeSet.EchanemtType), + CARTOUCHE("Cartouche", SubTypeSet.EchanemtType), + SHRINE("Shrine", SubTypeSet.EchanemtType), + + EQUIPMENT("Equipment", SubTypeSet.ArtifactType), + FORTIFICATION("Fortification", SubTypeSet.ArtifactType), + VEHICLE("Vehicle", SubTypeSet.ArtifactType), + + 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); + + private final SubTypeSet subTypeSet; + + public String getDescription() { + return description; + } + + private final String description; + + SubType(String description, SubTypeSet subTypeSet) { + this.description = description; + this.subTypeSet = subTypeSet; + } + + public static SubType byDescription(String subtype) { + for (SubType s : values()) { + if (s.getDescription().equals(subtype)) { + return s; + } + } + throw new IllegalArgumentException("no subtype for " + subtype + " exists"); + } + + public SubTypeSet getSubTypeSet() { + return subTypeSet; + } + + public static Set getCreatureTypes() { + + return Arrays.stream(values()).filter(p -> p.getSubTypeSet() == SubTypeSet.CreatureType).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 new file mode 100644 index 0000000000..bd58c9217c --- /dev/null +++ b/Mage/src/main/java/mage/constants/SubTypeSet.java @@ -0,0 +1,10 @@ +package mage.constants; + +public enum SubTypeSet { + CreatureType, + SpellType, + BasicLandType, + NonBasicLandType, + EchanemtType, + ArtifactType +} \ No newline at end of file diff --git a/Mage/src/main/java/mage/filter/FilterPermanent.java b/Mage/src/main/java/mage/filter/FilterPermanent.java index 52fe9398b5..287c4df445 100644 --- a/Mage/src/main/java/mage/filter/FilterPermanent.java +++ b/Mage/src/main/java/mage/filter/FilterPermanent.java @@ -30,6 +30,8 @@ package mage.filter; import java.util.ArrayList; import java.util.List; import java.util.UUID; + +import mage.constants.SubType; import mage.filter.predicate.ObjectPlayer; import mage.filter.predicate.ObjectPlayerPredicate; import mage.filter.predicate.ObjectSourcePlayer; @@ -59,7 +61,7 @@ public class FilterPermanent extends FilterObject implements FilterIn super(name); } - public FilterPermanent(String subtype, String name) { + public FilterPermanent(SubType subtype, String name) { super(name); this.add(new SubtypePredicate(subtype)); } diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java index 9d5ecc8360..16c520f164 100644 --- a/Mage/src/main/java/mage/filter/StaticFilters.java +++ b/Mage/src/main/java/mage/filter/StaticFilters.java @@ -6,6 +6,7 @@ package mage.filter; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterArtifactCard; import mage.filter.common.FilterArtifactCreaturePermanent; import mage.filter.common.FilterControlledArtifactPermanent; @@ -37,8 +38,8 @@ public final class StaticFilters { public static final FilterCreaturePermanent FILTER_PERMANENT_CREATURE = new FilterCreaturePermanent(); public static final FilterCreaturePermanent FILTER_PERMANENT_A_CREATURE = new FilterCreaturePermanent("a creature"); public static final FilterCreaturePermanent FILTER_PERMANENT_CREATURES = new FilterCreaturePermanent("creatures"); - public static final FilterCreaturePermanent FILTER_PERMANENT_CREATURE_GOBLINS = new FilterCreaturePermanent("Goblin", "Goblin creatures"); - public static final FilterCreaturePermanent FILTER_PERMANENT_CREATURE_SLIVERS = new FilterCreaturePermanent("Sliver", "Sliver creatures"); + public static final FilterCreaturePermanent FILTER_PERMANENT_CREATURE_GOBLINS = new FilterCreaturePermanent(SubType.GOBLIN, "Goblin creatures"); + public static final FilterCreaturePermanent FILTER_PERMANENT_CREATURE_SLIVERS = new FilterCreaturePermanent(SubType.SLIVER, "Sliver creatures"); public static final FilterCreatureSpell FILTER_SPELL_A_CREATURE = new FilterCreatureSpell("a creature spell"); public static final FilterSpell FILTER_SPELL_NON_CREATURE diff --git a/Mage/src/main/java/mage/filter/common/FilterBySubtypeCard.java b/Mage/src/main/java/mage/filter/common/FilterBySubtypeCard.java index 4061f02004..4b990a1c39 100644 --- a/Mage/src/main/java/mage/filter/common/FilterBySubtypeCard.java +++ b/Mage/src/main/java/mage/filter/common/FilterBySubtypeCard.java @@ -28,6 +28,7 @@ package mage.filter.common; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -38,7 +39,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate; public class FilterBySubtypeCard extends FilterCard { - public FilterBySubtypeCard(String subtype) { + public FilterBySubtypeCard(SubType subtype) { super(subtype + " card"); this.add(new SubtypePredicate(subtype)); } diff --git a/Mage/src/main/java/mage/filter/common/FilterControlledCreaturePermanent.java b/Mage/src/main/java/mage/filter/common/FilterControlledCreaturePermanent.java index 5831922c2f..f8fcd1a77c 100644 --- a/Mage/src/main/java/mage/filter/common/FilterControlledCreaturePermanent.java +++ b/Mage/src/main/java/mage/filter/common/FilterControlledCreaturePermanent.java @@ -29,6 +29,7 @@ package mage.filter.common; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class FilterControlledCreaturePermanent extends FilterControlledPermanent } - public FilterControlledCreaturePermanent(String subtype, String name) { + public FilterControlledCreaturePermanent(SubType subtype, String name) { super(name); this.add(new CardTypePredicate(CardType.CREATURE)); this.add(new SubtypePredicate(subtype)); diff --git a/Mage/src/main/java/mage/filter/common/FilterCreaturePermanent.java b/Mage/src/main/java/mage/filter/common/FilterCreaturePermanent.java index 290176f307..c741acefde 100644 --- a/Mage/src/main/java/mage/filter/common/FilterCreaturePermanent.java +++ b/Mage/src/main/java/mage/filter/common/FilterCreaturePermanent.java @@ -29,6 +29,7 @@ package mage.filter.common; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class FilterCreaturePermanent extends FilterPermanent { this.add(new CardTypePredicate(CardType.CREATURE)); } - public FilterCreaturePermanent(String subtype, String name) { + public FilterCreaturePermanent(SubType subtype, String name) { super(name); this.add(new CardTypePredicate(CardType.CREATURE)); this.add(new SubtypePredicate(subtype)); diff --git a/Mage/src/main/java/mage/filter/common/FilterLandPermanent.java b/Mage/src/main/java/mage/filter/common/FilterLandPermanent.java index 5bac914110..d9fea33c8a 100644 --- a/Mage/src/main/java/mage/filter/common/FilterLandPermanent.java +++ b/Mage/src/main/java/mage/filter/common/FilterLandPermanent.java @@ -29,6 +29,7 @@ package mage.filter.common; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.FilterPermanent; import mage.filter.predicate.Predicates; @@ -50,7 +51,7 @@ public class FilterLandPermanent extends FilterPermanent { this.add(new CardTypePredicate(CardType.LAND)); } - public FilterLandPermanent(String subtype, String name) { + public FilterLandPermanent(SubType subtype, String name) { super(name); this.add(new CardTypePredicate(CardType.LAND)); this.add(new SubtypePredicate(subtype)); diff --git a/Mage/src/main/java/mage/filter/common/FilterOpponentsCreaturePermanent.java b/Mage/src/main/java/mage/filter/common/FilterOpponentsCreaturePermanent.java index c3de7cc215..7876f195d0 100644 --- a/Mage/src/main/java/mage/filter/common/FilterOpponentsCreaturePermanent.java +++ b/Mage/src/main/java/mage/filter/common/FilterOpponentsCreaturePermanent.java @@ -1,5 +1,6 @@ package mage.filter.common; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.predicate.permanent.ControllerPredicate; @@ -24,7 +25,7 @@ public class FilterOpponentsCreaturePermanent extends FilterCreaturePermanent { } - public FilterOpponentsCreaturePermanent(String subtype, String name) { + public FilterOpponentsCreaturePermanent(SubType subtype, String name) { super(subtype, name); this.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage/src/main/java/mage/filter/common/FilterSpiritOrArcaneCard.java b/Mage/src/main/java/mage/filter/common/FilterSpiritOrArcaneCard.java index 579179af66..384b01ee6c 100644 --- a/Mage/src/main/java/mage/filter/common/FilterSpiritOrArcaneCard.java +++ b/Mage/src/main/java/mage/filter/common/FilterSpiritOrArcaneCard.java @@ -1,5 +1,6 @@ package mage.filter.common; +import mage.constants.SubType; import mage.filter.FilterSpell; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -12,7 +13,7 @@ public class FilterSpiritOrArcaneCard extends FilterSpell { public FilterSpiritOrArcaneCard(String name) { super(name); - this.add(Predicates.or(new SubtypePredicate("Spirit"),new SubtypePredicate("Arcane"))); + this.add(Predicates.or(new SubtypePredicate(SubType.SPIRIT),new SubtypePredicate(SubType.ARCANE))); } public FilterSpiritOrArcaneCard(final FilterSpiritOrArcaneCard filter) { 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 0bf0755905..ea2776b277 100644 --- a/Mage/src/main/java/mage/filter/predicate/mageobject/SubtypePredicate.java +++ b/Mage/src/main/java/mage/filter/predicate/mageobject/SubtypePredicate.java @@ -28,6 +28,7 @@ package mage.filter.predicate.mageobject; import mage.MageObject; +import mage.constants.SubType; import mage.filter.predicate.Predicate; import mage.game.Game; @@ -37,15 +38,15 @@ import mage.game.Game; */ public class SubtypePredicate implements Predicate { - private final String subtype; + private final SubType subtype; - public SubtypePredicate(String subtype) { + public SubtypePredicate(SubType subtype) { this.subtype = subtype; } @Override public boolean apply(MageObject input, Game game) { - return input.hasSubtype(subtype, game); + return input.hasSubtype(subtype.getDescription(), game); } @Override diff --git a/Mage/src/main/java/mage/filter/predicate/permanent/ControllerControlsIslandPredicate.java b/Mage/src/main/java/mage/filter/predicate/permanent/ControllerControlsIslandPredicate.java index 8705b89359..79bc1fc074 100644 --- a/Mage/src/main/java/mage/filter/predicate/permanent/ControllerControlsIslandPredicate.java +++ b/Mage/src/main/java/mage/filter/predicate/permanent/ControllerControlsIslandPredicate.java @@ -27,6 +27,7 @@ */ package mage.filter.predicate.permanent; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.Predicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -42,7 +43,7 @@ public class ControllerControlsIslandPredicate implements Predicate { public static final FilterLandPermanent filter = new FilterLandPermanent("Island"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } @Override diff --git a/Mage/src/main/java/mage/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java index f294dadbaa..9030dcd5df 100644 --- a/Mage/src/main/java/mage/game/GameImpl.java +++ b/Mage/src/main/java/mage/game/GameImpl.java @@ -109,13 +109,13 @@ public abstract class GameImpl implements Game, Serializable { static { FILTER_AURA.add(new CardTypePredicate(CardType.ENCHANTMENT)); - FILTER_AURA.add(new SubtypePredicate("Aura")); + FILTER_AURA.add(new SubtypePredicate(SubType.AURA)); FILTER_EQUIPMENT.add(new CardTypePredicate(CardType.ARTIFACT)); - FILTER_EQUIPMENT.add(new SubtypePredicate("Equipment")); + FILTER_EQUIPMENT.add(new SubtypePredicate(SubType.EQUIPMENT)); FILTER_FORTIFICATION.add(new CardTypePredicate(CardType.ARTIFACT)); - FILTER_FORTIFICATION.add(new SubtypePredicate("Fortification")); + FILTER_FORTIFICATION.add(new SubtypePredicate(SubType.FORTIFICATION)); FILTER_LEGENDARY.add(new SupertypePredicate(SuperType.LEGENDARY)); } @@ -1945,7 +1945,7 @@ public abstract class GameImpl implements Game, Serializable { for (Permanent planeswalker : planeswalkers) { for (String planeswalkertype : planeswalker.getSubtype(this)) { FilterPlaneswalkerPermanent filterPlaneswalker = new FilterPlaneswalkerPermanent(); - filterPlaneswalker.add(new SubtypePredicate(planeswalkertype)); + filterPlaneswalker.add(new SubtypePredicate(SubType.byDescription(planeswalkertype))); filterPlaneswalker.add(new ControllerIdPredicate(planeswalker.getControllerId())); if (getBattlefield().contains(filterPlaneswalker, planeswalker.getControllerId(), this, 2)) { Player controller = this.getPlayer(planeswalker.getControllerId()); diff --git a/Mage/src/main/java/mage/watchers/common/DragonOnTheBattlefieldWhileSpellWasCastWatcher.java b/Mage/src/main/java/mage/watchers/common/DragonOnTheBattlefieldWhileSpellWasCastWatcher.java index ec06e94af3..fa3950b2e5 100644 --- a/Mage/src/main/java/mage/watchers/common/DragonOnTheBattlefieldWhileSpellWasCastWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/DragonOnTheBattlefieldWhileSpellWasCastWatcher.java @@ -33,6 +33,7 @@ import java.util.UUID; import mage.abilities.costs.Cost; import mage.abilities.costs.common.RevealTargetFromHandCost; +import mage.constants.SubType; import mage.constants.WatcherScope; import mage.filter.FilterPermanent; import mage.game.Game; @@ -46,7 +47,7 @@ import mage.watchers.Watcher; */ public class DragonOnTheBattlefieldWhileSpellWasCastWatcher extends Watcher { - private static final FilterPermanent filter = new FilterPermanent("Dragon", "Dragons"); + private static final FilterPermanent filter = new FilterPermanent(SubType.DRAGON, "Dragons"); private final Set castWithDragonOnTheBattlefield = new HashSet<>(); diff --git a/mageadmin.log b/mageadmin.log new file mode 100644 index 0000000000..90f899eed0 --- /dev/null +++ b/mageadmin.log @@ -0,0 +1,1478 @@ +DEBUG 2017-05-12 00:41:30,044 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,049 Logging level: null =>[main] MageTestPlayerBase.init +FATAL 2017-05-12 00:41:30,841 ConfigSettings error =>[main] ConfigSettings. +javax.xml.bind.UnmarshalException + - with linked exception: +[java.io.FileNotFoundException: C:\dev\mage\config\config.xml (The system cannot find the path specified)] + at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:220) + at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:189) + at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157) + at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:162) + at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:171) + at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:189) + at mage.server.util.ConfigSettings.(ConfigSettings.java:53) + at mage.server.util.ConfigSettings.(ConfigSettings.java:44) + at org.mage.test.serverside.base.MageTestPlayerBase.init(MageTestPlayerBase.java:99) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) + at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) + at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) + at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) + at org.junit.runners.ParentRunner.run(ParentRunner.java:363) + at org.junit.runners.Suite.runChild(Suite.java:128) + at org.junit.runners.Suite.runChild(Suite.java:27) + at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) + at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) + at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) + at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) + at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) + at org.junit.runners.ParentRunner.run(ParentRunner.java:363) + at org.junit.runner.JUnitCore.run(JUnitCore.java:137) + at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) + at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51) + at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:237) + at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) +Caused by: java.io.FileNotFoundException: C:\dev\mage\config\config.xml (The system cannot find the path specified) + at java.io.FileInputStream.open0(Native Method) + at java.io.FileInputStream.open(FileInputStream.java:195) + at java.io.FileInputStream.(FileInputStream.java:138) + at java.io.FileInputStream.(FileInputStream.java:93) + at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90) + at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188) + at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:623) + at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:148) + at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:805) + at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770) + at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) + at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) + at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643) + at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:217) + ... 35 more +DEBUG 2017-05-12 00:41:30,850 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,850 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,852 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,853 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,854 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,854 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,855 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,855 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,857 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,857 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,859 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,859 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,861 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,862 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,864 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,865 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,867 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,867 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,868 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,869 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,870 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,870 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,871 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,872 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,873 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,873 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,874 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,875 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,876 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,876 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,878 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,878 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,880 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,880 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,882 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,882 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,883 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,884 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,885 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,885 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,891 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,892 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,893 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,893 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,894 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,895 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,896 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,896 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,898 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,898 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,899 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,899 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,900 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,901 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,902 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,902 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,903 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,903 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,904 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,904 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,905 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,905 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,906 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,907 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,908 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,908 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,909 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,909 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,910 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,910 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,911 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,913 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,913 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,914 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,915 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,915 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,916 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,917 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,918 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,918 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,919 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,920 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,920 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,921 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,923 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,923 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,924 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,924 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,928 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,928 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,929 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,930 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,933 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,933 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,934 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,935 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,936 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,936 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,937 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,938 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,939 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,939 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,941 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,941 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,943 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,943 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,945 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,945 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,946 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,947 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,948 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,948 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,949 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,949 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,950 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,950 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,952 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,952 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,953 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,953 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,954 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,954 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,955 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,955 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,956 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,956 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,957 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,957 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,958 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,958 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,958 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,959 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,960 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,961 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,962 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,962 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,964 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,964 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,965 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,965 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,966 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,966 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,966 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,966 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,967 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,967 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,968 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,968 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,969 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,969 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,971 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,971 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,972 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,972 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,973 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,973 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,974 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,974 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,975 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,975 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,976 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,976 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,977 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,977 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,978 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,978 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,979 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,979 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,982 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,982 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,983 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,984 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,985 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,985 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,986 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,987 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,988 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,988 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,989 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,990 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,991 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,991 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,992 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,993 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,994 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,994 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,995 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,995 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,997 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,997 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,998 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,998 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:30,999 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,000 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,001 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,001 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,008 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,008 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,009 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,010 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,013 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,014 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,014 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,015 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,016 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,017 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,019 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,019 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,020 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,020 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,020 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,021 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,021 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,021 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,022 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,022 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,023 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,023 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,024 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,024 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,025 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,025 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,025 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,025 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,026 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,026 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,027 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,027 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,027 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,028 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,028 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,028 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,029 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,029 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,030 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,030 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,031 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,031 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,032 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,032 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,033 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,033 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,033 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,034 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,034 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,034 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,035 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,035 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,036 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,036 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,036 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,037 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,038 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,038 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,039 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,039 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,040 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,040 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,041 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,041 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,042 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,042 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,043 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,043 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,043 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,043 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,044 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,044 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,045 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,045 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,046 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,046 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,047 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,047 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,048 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,048 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,049 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,049 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,050 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,050 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,050 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,050 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,051 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,051 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,052 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,052 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,052 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,053 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,053 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,053 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,054 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,054 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,055 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,055 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,056 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,056 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,057 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,057 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,057 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,058 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,058 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,058 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,059 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,059 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,059 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,059 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,060 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,060 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,061 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,061 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,061 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,062 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,062 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,063 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,063 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,063 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,064 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,064 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,065 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,065 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,066 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,066 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,067 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,067 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,068 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,068 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,069 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,069 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,070 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,070 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,071 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,071 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,072 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,072 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,073 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,073 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,074 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,074 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,075 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,075 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,076 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,076 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,077 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,077 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,078 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,078 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,078 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,078 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,079 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,079 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,080 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,080 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,081 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,081 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,081 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,081 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,082 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,082 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,083 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,083 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,083 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,084 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,084 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,084 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,086 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,086 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,087 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,087 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,088 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,088 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,089 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,089 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,089 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,090 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,090 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,090 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,091 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,092 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,093 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,093 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,096 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,099 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,100 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,101 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,102 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,102 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,103 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,103 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,105 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,105 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,105 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,106 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,107 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,107 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,108 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,108 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,108 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,109 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,110 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,110 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,111 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,111 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,114 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,114 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,115 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,115 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,116 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,116 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,117 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,117 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,118 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,118 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,119 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,119 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,120 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,120 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,122 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,122 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,127 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,127 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,128 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,128 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,130 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,130 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,131 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,131 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,164 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,165 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,165 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,166 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,166 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,166 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,167 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,167 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,167 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,167 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,168 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,168 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,168 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,168 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,169 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,169 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,170 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,170 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,171 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,171 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,171 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,171 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,172 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,172 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,173 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,173 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,173 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,173 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,174 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,174 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,175 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,175 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,176 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,177 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,178 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,178 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,179 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,179 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,180 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,180 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,182 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,182 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,183 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,183 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,187 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,187 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,188 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,188 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,204 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,204 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,205 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,205 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,220 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,220 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,221 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,221 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,229 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,229 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,230 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,230 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,242 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,242 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,243 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,243 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,243 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,243 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,244 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,244 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,245 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,245 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,246 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,246 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,247 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,247 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,248 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,248 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,248 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,249 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,249 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,249 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,250 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,250 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,251 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,251 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,252 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,252 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,253 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,253 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,253 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,254 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,254 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,254 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,255 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,255 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,255 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,255 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,260 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,260 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,261 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,261 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,262 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,263 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,263 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,263 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,264 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,264 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,264 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,265 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,265 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,266 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,266 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,266 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,267 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,267 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,268 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,268 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,269 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,269 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,270 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,270 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,271 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,271 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,272 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,272 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,273 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,273 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,274 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,274 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,275 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,275 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,275 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,275 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,276 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,276 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,277 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,277 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,278 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,278 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,279 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,279 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,280 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,280 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,281 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,281 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,282 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,282 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,283 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,283 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,284 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,284 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,284 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,284 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,285 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,285 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,290 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,290 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,291 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,291 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,292 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,292 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,293 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,293 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,293 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,293 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,295 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,295 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,295 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,295 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,296 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,297 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,297 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,297 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,298 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,298 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,301 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,302 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,302 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,302 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,303 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,303 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,303 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,304 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,304 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,305 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,305 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,305 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,306 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,306 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,306 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,306 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,307 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,308 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,308 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,308 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,309 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,310 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,310 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,310 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,311 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,311 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,312 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,312 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,313 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,313 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,314 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,314 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,315 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,315 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,315 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,315 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,316 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,317 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,318 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,318 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,319 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,319 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,319 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,319 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,320 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,321 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,321 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,321 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,322 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,322 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,323 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,323 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,324 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,324 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,324 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,325 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,328 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,328 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,329 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,329 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,330 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,330 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,330 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,330 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,331 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,331 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,331 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,332 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,332 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,333 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,333 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,333 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,334 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,334 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,335 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,335 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,335 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,335 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,336 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,336 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,337 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,337 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,338 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,338 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,339 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,339 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,339 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,339 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,340 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,340 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,341 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,341 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,342 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,342 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,343 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,343 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,344 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,344 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,345 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,345 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,345 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,345 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,346 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,347 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,348 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,348 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,348 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,348 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,349 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,349 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,350 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,350 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,351 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,351 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,351 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,351 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,352 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,352 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,353 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,353 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,354 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,354 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,355 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,355 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,355 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,355 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,357 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,357 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,358 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,359 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,359 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,359 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,360 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,360 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,361 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,361 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,362 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,362 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,363 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,363 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,364 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,364 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,365 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,365 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,366 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,366 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,367 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,367 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,368 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,369 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,369 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,369 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,371 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,372 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,373 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,373 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,376 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,376 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,377 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,377 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,379 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,380 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,382 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,383 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,391 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,392 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,403 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,403 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,405 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,405 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,406 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,406 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,407 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,408 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,408 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,408 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,409 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,409 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,412 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,412 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,417 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,441 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,442 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,442 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,450 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,450 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,451 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,466 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,467 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,467 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,691 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,691 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,692 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,692 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,693 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,693 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,694 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,694 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,752 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,752 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,752 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,753 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,753 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,754 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,754 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,754 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,755 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,755 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,756 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,756 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,766 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,766 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,766 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,767 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,774 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,774 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,775 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,775 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,780 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,780 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,780 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,780 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,781 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,781 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,782 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,782 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,784 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,784 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,785 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,785 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,786 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,786 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,787 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,787 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,793 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,793 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,793 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,793 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,797 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,797 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,799 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,801 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,802 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:31,803 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,051 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,051 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,052 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,052 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,069 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,069 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,070 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,070 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,082 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,082 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,083 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,083 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,087 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,087 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,088 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,089 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,094 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,094 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,095 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,095 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,105 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,144 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,145 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,145 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,149 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,149 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,150 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,150 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,150 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,150 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,151 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,151 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,151 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,152 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,152 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,152 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,153 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,153 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,154 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,154 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,155 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,155 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,156 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,156 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,156 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,156 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,157 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,157 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,159 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,159 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,159 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,160 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,161 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,161 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,162 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,162 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,166 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,167 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,167 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,167 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,169 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,169 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,170 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,170 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,171 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,171 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,172 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,172 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,173 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,173 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,174 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,175 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,176 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,177 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,189 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,190 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,191 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,191 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,233 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,233 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,234 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,234 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,235 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,235 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,236 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,236 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,237 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,237 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,237 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,237 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,239 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,240 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,240 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,240 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,244 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,244 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,245 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,245 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,246 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,246 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,247 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,247 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,252 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,253 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,253 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,253 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,254 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,254 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,254 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,255 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,256 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,256 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,256 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,256 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,257 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,257 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,258 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,258 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,258 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,259 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,259 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,259 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,260 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,260 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,261 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,261 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,262 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,262 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,263 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,263 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,264 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,265 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,265 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,265 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,266 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,266 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,267 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,267 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,268 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,268 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,271 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,271 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,272 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,272 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,273 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,273 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,275 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,275 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,276 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,276 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,281 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,281 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,282 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,282 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,282 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,283 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,283 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,283 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,285 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,285 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,285 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,286 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,287 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,287 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,288 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,288 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,289 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,289 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,299 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,300 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,300 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,301 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,307 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,307 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,308 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,308 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,314 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,314 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,315 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,315 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,316 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,316 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,317 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,317 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,318 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,318 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,319 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,319 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,320 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,320 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,325 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,325 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,326 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,326 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,327 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,327 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,328 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,328 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,328 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,329 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,330 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,330 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,330 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,330 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,332 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,332 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,332 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,332 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,333 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,333 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,334 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,334 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,335 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,335 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,336 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,336 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,337 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,337 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,338 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,338 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,339 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,339 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,340 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,340 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,341 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,341 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,342 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,342 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,343 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,343 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,344 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,344 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,344 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,344 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,345 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,345 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,346 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,346 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,347 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,348 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,349 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,349 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,350 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,350 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,350 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,350 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,351 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,351 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,352 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,352 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,353 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,353 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,354 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,354 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,354 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,355 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,356 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,356 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,357 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,357 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,358 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,358 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,358 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,359 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,359 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,359 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,360 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,360 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,360 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,360 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,361 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,361 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,362 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,362 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,362 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,363 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,363 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,363 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,364 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,364 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,364 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,364 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,365 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,365 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,366 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,366 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,367 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,367 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,368 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,368 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,369 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,369 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,370 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,370 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,371 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,371 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,372 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,372 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,374 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,374 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,383 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,383 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,384 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,384 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,384 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,384 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,385 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,385 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,386 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,386 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,387 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,387 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,388 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,388 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,388 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,389 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,389 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,389 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,390 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,390 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,391 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,391 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,392 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,392 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,393 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,393 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,395 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,395 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,396 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,397 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,398 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,398 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,399 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,399 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,400 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,401 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,401 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,401 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,402 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,402 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,403 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,403 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,405 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,405 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,406 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,406 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,406 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,407 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,407 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,407 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,408 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,408 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,409 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,409 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,410 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,410 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,411 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,411 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,433 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,433 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,434 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,434 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,435 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,435 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,436 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,436 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,437 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,437 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,438 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,438 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,439 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,439 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,440 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,440 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,441 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,441 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,442 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,442 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,443 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,443 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,444 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,444 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,445 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,445 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,446 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,446 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,447 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,447 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,447 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,447 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,449 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,450 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,450 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,451 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,454 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,454 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,455 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,455 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,456 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,456 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,457 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,458 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,458 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,458 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,459 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,460 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,460 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,460 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,461 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,461 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,462 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,462 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,463 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,463 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,463 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,464 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,464 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,465 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,465 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,465 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,466 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,467 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,479 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,479 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,499 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,500 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,500 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,501 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,506 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,507 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,507 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,507 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,508 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,508 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,509 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,509 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,510 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,510 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,511 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,511 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,512 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,512 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,512 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,512 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,513 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,513 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,513 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,514 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,515 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,515 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,516 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,516 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,517 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,517 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,518 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,518 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,519 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,519 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,520 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,520 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,520 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,520 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,521 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,521 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,522 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,522 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,528 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,528 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,529 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,530 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,541 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,541 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,541 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,541 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,542 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,542 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,543 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,544 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,546 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,546 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,547 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,547 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,547 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,547 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,548 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,548 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,548 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,549 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:32,665 created dao for class class mage.cards.repository.DatabaseVersion with reflection =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:32,666 creating table 'version' =>[main] Slf4jLoggingLog.log +DEBUG 2017-05-12 00:41:32,986 opened connection to jdbc:h2:file:./db/cards.h2;AUTO_SERVER=TRUE got #1201466784 =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:32,988 executed create table statement changed 0 rows: CREATE TABLE IF NOT EXISTS `version` (`entity` VARCHAR(255) , `version` BIGINT ) =>[main] Slf4jLoggingLog.log +DEBUG 2017-05-12 00:41:32,997 built statement SELECT * FROM `version` WHERE (`entity` = ? AND `version` = 51 ) =>[main] Slf4jLoggingLog.log +DEBUG 2017-05-12 00:41:33,006 prepared statement 'SELECT * FROM `version` WHERE (`entity` = ? AND `version` = 51 ) ' with 1 args =>[main] Slf4jLoggingLog.log +DEBUG 2017-05-12 00:41:33,016 starting iterator @1943634922 for 'SELECT * FROM `version` WHERE (`entity` = ? AND `version` = 51 ) ' =>[main] Slf4jLoggingLog.log +DEBUG 2017-05-12 00:41:33,016 closed iterator @1943634922 after 0 rows =>[main] Slf4jLoggingLog.log +DEBUG 2017-05-12 00:41:33,017 query of 'SELECT * FROM `version` WHERE (`entity` = ? AND `version` = 51 ) ' returned 0 results =>[main] Slf4jLoggingLog.log +DEBUG 2017-05-12 00:41:33,021 insert data with statement 'INSERT INTO `version` (`entity` ,`version` ) VALUES (?,?)' and 2 args, changed 1 rows =>[main] Slf4jLoggingLog.log +DEBUG 2017-05-12 00:41:33,026 created dao for class class mage.cards.repository.CardInfo with reflection =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:33,027 dropping table 'card' =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:33,027 dropping index 'className_index' for table 'card =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:33,027 dropping index 'name_index' for table 'card =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:33,027 dropping index 'setCode_cardNumber_index' for table 'card =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:33,032 ignoring drop error 'org.h2.jdbc.JdbcSQLException: Index "CLASSNAME_INDEX" not found; SQL statement: +DROP INDEX `className_index` [42112-187]' for statement: DROP INDEX `className_index` =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:33,033 ignoring drop error 'org.h2.jdbc.JdbcSQLException: Index "NAME_INDEX" not found; SQL statement: +DROP INDEX `name_index` [42112-187]' for statement: DROP INDEX `name_index` =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:33,034 ignoring drop error 'org.h2.jdbc.JdbcSQLException: Index "SETCODE_CARDNUMBER_INDEX" not found; SQL statement: +DROP INDEX `setCode_cardNumber_index` [42112-187]' for statement: DROP INDEX `setCode_cardNumber_index` =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:33,035 ignoring drop error 'org.h2.jdbc.JdbcSQLException: Table "CARD" not found; SQL statement: +DROP TABLE `card` [42102-187]' for statement: DROP TABLE `card` =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:33,035 creating table 'card' =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:33,036 creating index 'className_index' for table 'card =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:33,036 creating index 'name_index' for table 'card =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:33,036 creating index 'setCode_cardNumber_index' for table 'card =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:33,038 executed create table statement changed 0 rows: CREATE TABLE IF NOT EXISTS `card` (`name` VARCHAR(255) , `cardNumber` VARCHAR(255) , `setCode` VARCHAR(255) , `className` VARCHAR(255) , `power` VARCHAR(255) , `toughness` VARCHAR(255) , `startingLoyalty` VARCHAR(255) , `convertedManaCost` INTEGER , `rarity` VARCHAR(100) , `types` VARCHAR(255) , `subtypes` VARCHAR(255) , `supertypes` VARCHAR(255) , `manaCosts` VARCHAR(255) , `rules` VARCHAR(700) , `black` TINYINT(1) , `blue` TINYINT(1) , `green` TINYINT(1) , `red` TINYINT(1) , `white` TINYINT(1) , `frameColor` VARCHAR(255) , `frameStyle` VARCHAR(255) , `variousArt` TINYINT(1) , `splitCard` TINYINT(1) , `splitCardFuse` TINYINT(1) , `splitCardAftermath` TINYINT(1) , `splitCardHalf` TINYINT(1) , `flipCard` TINYINT(1) , `doubleFaced` TINYINT(1) , `nightCard` TINYINT(1) , `flipCardName` VARCHAR(255) , `secondSideName` VARCHAR(255) ) =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:33,043 executed create table statement changed 0 rows: CREATE INDEX IF NOT EXISTS `className_index` ON `card` ( `className` ) =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:33,044 executed create table statement changed 0 rows: CREATE INDEX IF NOT EXISTS `name_index` ON `card` ( `name`, `nightCard` ) =>[main] Slf4jLoggingLog.log +INFO 2017-05-12 00:41:33,045 executed create table statement changed 0 rows: CREATE INDEX IF NOT EXISTS `setCode_cardNumber_index` ON `card` ( `cardNumber`, `setCode` ) =>[main] Slf4jLoggingLog.log +DEBUG 2017-05-12 00:41:33,046 executing raw query for: select * from card where lower(name) = 'plains' =>[main] Slf4jLoggingLog.log +DEBUG 2017-05-12 00:41:33,049 starting iterator @26757919 for 'select * from card where lower(name) = 'plains'' =>[main] Slf4jLoggingLog.log +DEBUG 2017-05-12 00:41:33,049 closed iterator @26757919 after 0 rows =>[main] Slf4jLoggingLog.log +DEBUG 2017-05-12 00:41:33,051 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,052 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,054 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,055 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,058 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,060 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,061 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,061 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,062 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,062 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,062 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,063 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,065 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,065 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,066 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,066 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,067 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,067 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,067 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,068 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,069 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,070 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,070 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,071 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,071 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,071 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,072 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,072 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,073 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,074 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,074 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,074 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,075 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,076 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,076 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,077 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,078 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,078 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,078 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,079 Logging level: null =>[main] MageTestPlayerBase.init +INFO 2017-05-12 00:41:33,672 Starting MAGE tests =>[main] MageTestBase.init +INFO 2017-05-12 00:41:33,672 Logging level: null =>[main] MageTestBase.init +DEBUG 2017-05-12 00:41:33,674 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,674 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,675 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,675 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,675 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,675 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,676 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,676 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,739 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,739 Logging level: null =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,740 Starting MAGE tests =>[main] MageTestPlayerBase.init +DEBUG 2017-05-12 00:41:33,740 Logging level: null =>[main] MageTestPlayerBase.init From 19db21c672094c7bc1715e3f1ab4376d7059ab71 Mon Sep 17 00:00:00 2001 From: igoudt Date: Thu, 18 May 2017 09:59:30 +0200 Subject: [PATCH 2/6] subtypes part 2 --- Mage.Sets/src/mage/cards/a/ATST.java | 3 +- Mage.Sets/src/mage/cards/a/Abolish.java | 3 +- .../src/mage/cards/a/AcademyResearchers.java | 3 +- Mage.Sets/src/mage/cards/a/AcidRain.java | 3 +- Mage.Sets/src/mage/cards/a/AcidWebSpider.java | 3 +- Mage.Sets/src/mage/cards/a/ActiveVolcano.java | 3 +- Mage.Sets/src/mage/cards/a/AdmiralAckbar.java | 7 +- .../src/mage/cards/a/AerialModification.java | 7 +- .../src/mage/cards/a/AeronautAdmiral.java | 3 +- Mage.Sets/src/mage/cards/a/AetherCharge.java | 3 +- .../src/mage/cards/a/AetherMeltdown.java | 7 +- .../src/mage/cards/a/AetherShockwave.java | 5 +- Mage.Sets/src/mage/cards/a/AirborneAid.java | 3 +- Mage.Sets/src/mage/cards/a/AirdropCondor.java | 3 +- .../src/mage/cards/a/AjaniMentorOfHeroes.java | 3 +- Mage.Sets/src/mage/cards/a/AjanisComrade.java | 3 +- .../src/mage/cards/a/AkoumBattlesinger.java | 3 +- .../src/mage/cards/a/AkromasDevoted.java | 3 +- .../src/mage/cards/a/AkutaBornOfAsh.java | 7 +- Mage.Sets/src/mage/cards/a/AliBaba.java | 3 +- .../src/mage/cards/a/AllyEncampment.java | 5 +- Mage.Sets/src/mage/cards/a/AlphaKavu.java | 3 +- .../src/mage/cards/a/AmbushCommander.java | 9 +- Mage.Sets/src/mage/cards/a/AnabaAncestor.java | 3 +- .../src/mage/cards/a/AnabaSpiritCrafter.java | 3 +- .../src/mage/cards/a/AncestorsProphet.java | 3 +- .../src/mage/cards/a/AngelOfGlorysRise.java | 5 +- .../src/mage/cards/a/AngelicCaptain.java | 3 +- .../src/mage/cards/a/AngelicOverseer.java | 3 +- Mage.Sets/src/mage/cards/a/Anger.java | 3 +- Mage.Sets/src/mage/cards/a/AngryMob.java | 7 +- Mage.Sets/src/mage/cards/a/AnimateWall.java | 2 +- .../src/mage/cards/a/AnowonTheRuinSage.java | 3 +- .../src/mage/cards/a/AphettoDredging.java | 5 +- .../src/mage/cards/a/AphettoGrifter.java | 3 +- Mage.Sets/src/mage/cards/a/AquitectsWill.java | 7 +- .../src/mage/cards/a/Arachnogenesis.java | 3 +- .../src/mage/cards/a/ArachnusSpinner.java | 3 +- .../src/mage/cards/a/ArashinForemost.java | 3 +- Mage.Sets/src/mage/cards/a/ArborElf.java | 3 +- .../src/mage/cards/a/ArchangelAvacyn.java | 2 +- .../src/mage/cards/a/ArchdemonOfGreed.java | 3 +- .../src/mage/cards/a/ArchdemonOfUnx.java | 3 +- Mage.Sets/src/mage/cards/a/ArcticAven.java | 3 +- Mage.Sets/src/mage/cards/a/AridMesa.java | 4 +- .../src/mage/cards/a/ArmamentMaster.java | 4 +- Mage.Sets/src/mage/cards/a/ArmedResponse.java | 3 +- .../src/mage/cards/a/ArmoryAutomaton.java | 3 +- Mage.Sets/src/mage/cards/a/ArmoryGuard.java | 3 +- Mage.Sets/src/mage/cards/a/ArtificersHex.java | 7 +- Mage.Sets/src/mage/cards/a/AspectOfWolf.java | 9 +- .../src/mage/cards/a/AssemblyWorker.java | 3 +- .../src/mage/cards/a/AtarkaWorldRender.java | 7 +- Mage.Sets/src/mage/cards/a/Atogatog.java | 4 +- Mage.Sets/src/mage/cards/a/AuntiesHovel.java | 3 +- Mage.Sets/src/mage/cards/a/AuntiesSnitch.java | 3 +- Mage.Sets/src/mage/cards/a/AuraBarbs.java | 3 +- Mage.Sets/src/mage/cards/a/AuraFinesse.java | 3 +- Mage.Sets/src/mage/cards/a/AuraGnarlid.java | 3 +- Mage.Sets/src/mage/cards/a/AuraGraft.java | 3 +- .../src/mage/cards/a/AuratouchedMage.java | 3 +- .../src/mage/cards/a/AuriokSteelshaper.java | 5 +- .../src/mage/cards/a/AuriokSurvivors.java | 3 +- Mage.Sets/src/mage/cards/a/Aurochs.java | 3 +- Mage.Sets/src/mage/cards/a/AurochsHerd.java | 5 +- .../src/mage/cards/a/AvacynianPriest.java | 3 +- .../src/mage/cards/a/AvengerOfZendikar.java | 3 +- Mage.Sets/src/mage/cards/a/AvoidFate.java | 3 +- .../src/mage/cards/a/AwakenTheAncient.java | 7 +- Mage.Sets/src/mage/cards/a/AwakenerDruid.java | 7 +- Mage.Sets/src/mage/cards/a/AwokenHorror.java | 3 +- Mage.Sets/src/mage/cards/b/BadRiver.java | 4 +- .../src/mage/cards/b/BallyrushBanneret.java | 5 +- .../src/mage/cards/b/BalthorTheStout.java | 9 +- .../src/mage/cards/b/BarbarianOutcast.java | 5 +- .../src/mage/cards/b/BarrelDownSokenzan.java | 3 +- .../src/mage/cards/b/BaruFistOfKrosa.java | 2 +- .../src/mage/cards/b/BattletideAlchemist.java | 7 +- Mage.Sets/src/mage/cards/b/BindingMummy.java | 3 +- .../src/mage/cards/b/BitterheartWitch.java | 3 +- .../src/mage/cards/b/BlackMarketDealer.java | 3 +- .../src/mage/cards/b/BlackPoplarShaman.java | 3 +- .../src/mage/cards/b/BladewingsThrall.java | 5 +- .../src/mage/cards/b/BlightedShaman.java | 3 +- Mage.Sets/src/mage/cards/b/Blightspeaker.java | 3 +- .../src/mage/cards/b/BlindSpotGiant.java | 3 +- .../src/mage/cards/b/BlinkmothNexus.java | 3 +- .../src/mage/cards/b/BloodstainedMire.java | 4 +- .../src/mage/cards/b/BloodthirstyOgre.java | 3 +- Mage.Sets/src/mage/cards/b/BlurSliver.java | 3 +- Mage.Sets/src/mage/cards/b/BogRats.java | 3 +- Mage.Sets/src/mage/cards/b/BogSerpent.java | 5 +- .../src/mage/cards/b/BoggartArsonists.java | 5 +- .../src/mage/cards/b/BoggartBirthRite.java | 3 +- Mage.Sets/src/mage/cards/b/BoggartMob.java | 5 +- .../src/mage/cards/b/BoggartShenanigans.java | 3 +- .../src/mage/cards/b/BoggartSpriteChaser.java | 3 +- Mage.Sets/src/mage/cards/b/Boil.java | 3 +- .../src/mage/cards/b/BorderlandBehemoth.java | 7 +- Mage.Sets/src/mage/cards/b/BroodSliver.java | 3 +- .../src/mage/cards/b/BrunaTheFadingLight.java | 5 +- Mage.Sets/src/mage/cards/b/BullAurochs.java | 3 +- Mage.Sets/src/mage/cards/c/CallToGlory.java | 3 +- .../src/mage/cards/c/CaptainOfTheMists.java | 3 +- .../src/mage/cards/c/CaptivatingVampire.java | 4 +- Mage.Sets/src/mage/cards/c/CaribouRange.java | 7 +- .../src/mage/cards/c/CarpetOfFlowers.java | 3 +- Mage.Sets/src/mage/cards/c/CateranBrute.java | 3 +- .../src/mage/cards/c/CateranEnforcer.java | 3 +- .../src/mage/cards/c/CateranOverlord.java | 3 +- Mage.Sets/src/mage/cards/c/CateranSlaver.java | 3 +- Mage.Sets/src/mage/cards/c/CauterySliver.java | 3 +- .../src/mage/cards/c/CemeteryReaper.java | 3 +- .../src/mage/cards/c/CennsTactician.java | 7 +- .../src/mage/cards/c/ChainedToTheRocks.java | 3 +- .../src/mage/cards/c/ChangelingBerserker.java | 2 +- .../src/mage/cards/c/ChangelingHero.java | 2 +- .../mage/cards/c/ChargeAcrossTheAraba.java | 3 +- Mage.Sets/src/mage/cards/c/Choke.java | 7 +- .../src/mage/cards/c/ClashOfRealities.java | 5 +- Mage.Sets/src/mage/cards/c/Clickslither.java | 3 +- .../src/mage/cards/c/CloakOfInvisibility.java | 2 +- Mage.Sets/src/mage/cards/c/Cloudpost.java | 3 +- .../src/mage/cards/c/CloudreachCavalry.java | 3 +- .../src/mage/cards/c/ClutchOfUndeath.java | 3 +- Mage.Sets/src/mage/cards/c/CoalitionFlag.java | 2 +- .../src/mage/cards/c/CoalitionHonorGuard.java | 3 +- .../src/mage/cards/c/CoalitionVictory.java | 11 +- Mage.Sets/src/mage/cards/c/CoastalDrake.java | 3 +- Mage.Sets/src/mage/cards/c/Cockatrice.java | 3 +- .../mage/cards/c/CompellingDeterrence.java | 3 +- .../src/mage/cards/c/ConfrontTheUnknown.java | 3 +- Mage.Sets/src/mage/cards/c/Conversion.java | 2 +- Mage.Sets/src/mage/cards/c/CoralReef.java | 3 +- Mage.Sets/src/mage/cards/c/Corrupt.java | 3 +- .../src/mage/cards/c/CracklingPerimeter.java | 3 +- .../src/mage/cards/c/CrosissCatacombs.java | 3 +- .../src/mage/cards/c/CrusadingKnight.java | 7 +- .../src/mage/cards/c/CrushUnderfoot.java | 3 +- Mage.Sets/src/mage/cards/c/CruxOfFate.java | 5 +- Mage.Sets/src/mage/cards/c/Cryoclasm.java | 3 +- Mage.Sets/src/mage/cards/c/CryptSliver.java | 3 +- Mage.Sets/src/mage/cards/c/Cryptbreaker.java | 3 +- .../src/mage/cards/c/CultOfTheWaxingMoon.java | 3 +- .../src/mage/cards/c/CurseOfMisfortunes.java | 3 +- Mage.Sets/src/mage/cards/d/Dandan.java | 5 +- .../src/mage/cards/d/DarigaazsCaldera.java | 3 +- .../src/mage/cards/d/DarkSupplicant.java | 3 +- Mage.Sets/src/mage/cards/d/Deadapult.java | 3 +- Mage.Sets/src/mage/cards/d/DeathTrooper.java | 3 +- .../src/mage/cards/d/DepalaPilotExemplar.java | 6 +- .../src/mage/cards/d/DerangedHermit.java | 3 +- Mage.Sets/src/mage/cards/d/DesertNomads.java | 3 +- .../src/mage/cards/d/DesiccatedNaga.java | 3 +- Mage.Sets/src/mage/cards/d/Didgeridoo.java | 3 +- .../mage/cards/d/DiplomacyOfTheWastes.java | 3 +- Mage.Sets/src/mage/cards/d/DivinersWand.java | 2 +- Mage.Sets/src/mage/cards/d/DormantSliver.java | 5 +- .../src/mage/cards/d/DownhillCharge.java | 3 +- Mage.Sets/src/mage/cards/d/DragonTempest.java | 4 +- Mage.Sets/src/mage/cards/d/DranasChosen.java | 3 +- Mage.Sets/src/mage/cards/d/DroidFactory.java | 11 +- .../src/mage/cards/d/DromokaTheEternal.java | 3 +- Mage.Sets/src/mage/cards/d/DrossGolem.java | 3 +- Mage.Sets/src/mage/cards/d/DrownerOfHope.java | 5 +- .../src/mage/cards/d/DrownerOfSecrets.java | 3 +- Mage.Sets/src/mage/cards/d/DrudgeSpell.java | 3 +- .../src/mage/cards/d/DuergarHedgeMage.java | 5 +- .../src/mage/cards/d/DwarvenLieutenant.java | 3 +- .../src/mage/cards/d/DwarvenSoldier.java | 3 +- .../src/mage/cards/d/DwynenGiltLeafDaen.java | 9 +- .../mage/cards/e/EladamriLordOfLeaves.java | 9 +- .../src/mage/cards/e/ElephantGraveyard.java | 3 +- .../src/mage/cards/e/ElvishBranchbender.java | 9 +- Mage.Sets/src/mage/cards/e/ElvishFarmer.java | 3 +- .../src/mage/cards/e/ElvishGuidance.java | 3 +- .../src/mage/cards/e/ElvishHarbinger.java | 3 +- .../src/mage/cards/e/ElvishPathcutter.java | 3 +- .../src/mage/cards/e/ElvishPromenade.java | 3 +- .../src/mage/cards/e/ElvishSoultiller.java | 3 +- .../src/mage/cards/e/EmrakulsEvangel.java | 3 +- .../src/mage/cards/e/EmrakulsInfluence.java | 3 +- .../mage/cards/e/EndlessRanksOfTheDead.java | 3 +- .../src/mage/cards/e/EnlistmentOfficer.java | 3 +- .../src/mage/cards/e/EquestrianSkill.java | 2 +- Mage.Sets/src/mage/cards/e/EsperPanorama.java | 11 +- .../src/mage/cards/e/EtherealWhiskergill.java | 3 +- .../src/mage/cards/e/EvergloveCourier.java | 3 +- .../src/mage/cards/e/ExtricatorOfFlesh.java | 5 +- .../src/mage/cards/e/EyeblightMassacre.java | 3 +- .../src/mage/cards/e/EyeblightsEnding.java | 3 +- .../src/mage/cards/f/FaerieTrickery.java | 3 +- .../src/mage/cards/f/FalkenrathGorger.java | 2 +- Mage.Sets/src/mage/cards/f/FallenCleric.java | 3 +- .../src/mage/cards/f/FelhidePetrifier.java | 3 +- .../src/mage/cards/f/FieldOfReality.java | 2 +- .../src/mage/cards/f/FigureOfDestiny.java | 5 +- Mage.Sets/src/mage/cards/f/Flameshot.java | 3 +- Mage.Sets/src/mage/cards/f/FlashFlood.java | 3 +- Mage.Sets/src/mage/cards/f/FlinthoofBoar.java | 3 +- Mage.Sets/src/mage/cards/f/FloodPlain.java | 4 +- Mage.Sets/src/mage/cards/f/Floodchaser.java | 3 +- .../src/mage/cards/f/FloodedShoreline.java | 3 +- Mage.Sets/src/mage/cards/f/FloodedStrand.java | 4 +- Mage.Sets/src/mage/cards/f/FlowOfMaggots.java | 3 +- Mage.Sets/src/mage/cards/f/FodderLaunch.java | 3 +- Mage.Sets/src/mage/cards/f/FoothillGuide.java | 3 +- .../src/mage/cards/f/ForebodingRuins.java | 5 +- Mage.Sets/src/mage/cards/f/Fortitude.java | 7 +- .../src/mage/cards/f/FreneticSliver.java | 7 +- .../src/mage/cards/f/FrightshroudCourier.java | 3 +- .../src/mage/cards/f/FulfillContract.java | 3 +- Mage.Sets/src/mage/cards/f/FungusSliver.java | 3 +- Mage.Sets/src/mage/cards/g/GaeasLiege.java | 5 +- Mage.Sets/src/mage/cards/g/GaeasTouch.java | 2 +- .../src/mage/cards/g/GangrenousGoliath.java | 3 +- .../src/mage/cards/g/GatecreeperVine.java | 3 +- .../src/mage/cards/g/GathererOfGraces.java | 3 +- Mage.Sets/src/mage/cards/g/GemhideSliver.java | 3 +- .../src/mage/cards/g/GempalmPolluter.java | 3 +- .../src/mage/cards/g/GempalmStrider.java | 3 +- .../src/mage/cards/g/GenjuOfTheCedars.java | 7 +- .../src/mage/cards/g/GenjuOfTheFalls.java | 7 +- .../src/mage/cards/g/GenjuOfTheFens.java | 7 +- .../src/mage/cards/g/GenjuOfTheFields.java | 2 +- .../src/mage/cards/g/GhostflameSliver.java | 2 +- .../src/mage/cards/g/GhoulcallersChant.java | 3 +- Mage.Sets/src/mage/cards/g/Ghoulraiser.java | 3 +- .../src/mage/cards/g/GiantHarbinger.java | 3 +- .../src/mage/cards/g/GideonOfTheTrials.java | 2 +- Mage.Sets/src/mage/cards/g/GiftOfEstates.java | 3 +- .../src/mage/cards/g/GiltLeafArchdruid.java | 4 +- .../src/mage/cards/g/GiltLeafWinnower.java | 3 +- .../src/mage/cards/g/GlacialFortress.java | 3 +- .../src/mage/cards/g/GoblinChirurgeon.java | 3 +- .../src/mage/cards/g/GoblinClearcutter.java | 3 +- .../src/mage/cards/g/GoblinDiggingTeam.java | 3 +- .../src/mage/cards/g/GoblinPiledriver.java | 3 +- .../src/mage/cards/g/GoblinPyromancer.java | 3 +- .../src/mage/cards/g/GoblinWarchief.java | 5 +- Mage.Sets/src/mage/cards/g/GoblinWizard.java | 9 +- .../src/mage/cards/g/GoblinsOfTheFlarg.java | 3 +- .../src/mage/cards/g/GodoBanditWarlord.java | 5 +- Mage.Sets/src/mage/cards/g/GorillaPack.java | 5 +- Mage.Sets/src/mage/cards/g/GraveBramble.java | 3 +- Mage.Sets/src/mage/cards/g/GraveDefiler.java | 3 +- Mage.Sets/src/mage/cards/g/GraveSifter.java | 5 +- Mage.Sets/src/mage/cards/g/GravebornMuse.java | 3 +- Mage.Sets/src/mage/cards/g/Gravecrawler.java | 2 +- .../src/mage/cards/g/GravespawnSovereign.java | 3 +- .../src/mage/cards/g/GreensideWatcher.java | 3 +- Mage.Sets/src/mage/cards/g/GriffinCanyon.java | 7 +- Mage.Sets/src/mage/cards/g/Gush.java | 3 +- .../src/mage/cards/g/GutwrencherOni.java | 3 +- Mage.Sets/src/mage/cards/h/HaloHunter.java | 3 +- .../src/mage/cards/h/HammerheadShark.java | 3 +- Mage.Sets/src/mage/cards/h/HanaKami.java | 3 +- Mage.Sets/src/mage/cards/h/HarborSerpent.java | 3 +- .../src/mage/cards/h/HarmonicSliver.java | 3 +- Mage.Sets/src/mage/cards/h/HarpoonSniper.java | 3 +- Mage.Sets/src/mage/cards/h/HarshMercy.java | 5 +- Mage.Sets/src/mage/cards/h/HazardTrooper.java | 3 +- .../src/mage/cards/h/HeartOfYavimaya.java | 3 +- .../src/mage/cards/h/HearthcageGiant.java | 5 +- Mage.Sets/src/mage/cards/h/Hecatomb.java | 3 +- Mage.Sets/src/mage/cards/h/HedgeTroll.java | 3 +- .../src/mage/cards/h/HerdchaserDragon.java | 3 +- .../src/mage/cards/h/HeronsGraceChampion.java | 3 +- .../src/mage/cards/h/HibernationSliver.java | 3 +- .../src/mage/cards/h/HighlandBerserker.java | 3 +- .../src/mage/cards/h/HondenOfLifesWeb.java | 3 +- .../src/mage/cards/h/HondenOfSeeingWinds.java | 3 +- .../src/mage/cards/h/HopeAgainstHope.java | 8 +- Mage.Sets/src/mage/cards/h/HopeCharm.java | 3 +- .../src/mage/cards/h/HorobisWhisper.java | 3 +- .../src/mage/cards/h/HowlOfTheNightPack.java | 3 +- Mage.Sets/src/mage/cards/h/HowlpackAlpha.java | 2 +- .../src/mage/cards/h/HowlpackResurgence.java | 5 +- Mage.Sets/src/mage/cards/h/HowlpackWolf.java | 3 +- Mage.Sets/src/mage/cards/h/Hubris.java | 3 +- .../src/mage/cards/h/HuntingCheetah.java | 3 +- .../cards/i/IbHalfheartGoblinTactician.java | 4 +- .../src/mage/cards/i/IcatianLieutenant.java | 3 +- .../src/mage/cards/i/IizukaTheRuthless.java | 7 +- Mage.Sets/src/mage/cards/i/Immerwolf.java | 9 +- .../src/mage/cards/i/ImperialGunner.java | 3 +- .../src/mage/cards/i/ImperialHellkite.java | 3 +- Mage.Sets/src/mage/cards/i/InOketrasName.java | 5 +- Mage.Sets/src/mage/cards/i/InameAsOne.java | 3 +- .../mage/cards/i/IncandescentSoulstoke.java | 9 +- .../src/mage/cards/i/IndebtedSamurai.java | 3 +- .../src/mage/cards/i/InfernalCaretaker.java | 3 +- .../src/mage/cards/i/InformationDealer.java | 3 +- .../src/mage/cards/i/IntrepidProvisioner.java | 3 +- .../src/mage/cards/i/InventorsGoggles.java | 8 +- Mage.Sets/src/mage/cards/i/Invigorate.java | 3 +- .../src/mage/cards/i/IslandFishJasconius.java | 9 +- Mage.Sets/src/mage/cards/i/IxidorsWill.java | 3 +- .../mage/cards/j/JaradGolgariLichLord.java | 9 +- Mage.Sets/src/mage/cards/j/JawsOfStone.java | 3 +- .../src/mage/cards/j/JediStarfighter.java | 3 +- Mage.Sets/src/mage/cards/j/JediTraining.java | 3 +- .../src/mage/cards/j/JudgeOfCurrents.java | 3 +- Mage.Sets/src/mage/cards/j/Juggernaut.java | 3 +- Mage.Sets/src/mage/cards/j/JungleBasin.java | 3 +- Mage.Sets/src/mage/cards/k/KabiraEvangel.java | 5 +- .../src/mage/cards/k/KangeeAerieKeeper.java | 7 +- .../src/mage/cards/k/KariZevsExpertise.java | 3 +- Mage.Sets/src/mage/cards/k/Karoo.java | 3 +- .../src/mage/cards/k/KashiTribeElite.java | 7 +- Mage.Sets/src/mage/cards/k/KavuMauler.java | 3 +- Mage.Sets/src/mage/cards/k/KazuulWarlord.java | 3 +- .../mage/cards/k/KeeperOfTheNineGales.java | 3 +- .../mage/cards/k/KentaroTheSmilingCat.java | 2 +- .../src/mage/cards/k/KessigMalcontents.java | 3 +- .../mage/cards/k/KinsbaileBorderguard.java | 3 +- Mage.Sets/src/mage/cards/k/KitsuneMystic.java | 7 +- .../src/mage/cards/k/KnightCaptainOfEos.java | 3 +- .../src/mage/cards/k/KnightExemplar.java | 8 +- .../src/mage/cards/k/KnuckleboneWitch.java | 3 +- .../src/mage/cards/k/KoboldDrillSergeant.java | 3 +- .../src/mage/cards/k/KoboldOverlord.java | 3 +- .../mage/cards/k/KolaghanTheStormsFury.java | 2 +- .../src/mage/cards/k/KondasHatamoto.java | 7 +- .../src/mage/cards/k/KorCartographer.java | 3 +- Mage.Sets/src/mage/cards/k/KorOutfitter.java | 3 +- .../src/mage/cards/k/KorSpiritdancer.java | 3 +- Mage.Sets/src/mage/cards/k/KormusBell.java | 7 +- .../src/mage/cards/k/KragmaWarcaller.java | 3 +- .../src/mage/cards/k/KrosanGroundshaker.java | 3 +- Mage.Sets/src/mage/cards/k/KrosanVerge.java | 5 +- Mage.Sets/src/mage/cards/l/LakeOfTheDead.java | 3 +- .../src/mage/cards/l/LandoCalrissian.java | 7 +- Mage.Sets/src/mage/cards/l/LavaDart.java | 3 +- .../src/mage/cards/l/LavamancersSkill.java | 8 +- .../src/mage/cards/l/LightningCrafter.java | 4 +- Mage.Sets/src/mage/cards/l/LilianasShade.java | 3 +- .../mage/cards/l/LimDulTheNecromancer.java | 2 +- .../src/mage/cards/l/LinSivviDefiantHero.java | 4 +- .../src/mage/cards/l/LordOfTheAccursed.java | 3 +- .../src/mage/cards/l/LovisaColdeyes.java | 2 +- .../src/mage/cards/l/LullmageMentor.java | 3 +- .../src/mage/cards/l/LuminescentRain.java | 2 +- Mage.Sets/src/mage/cards/l/LymphSliver.java | 3 +- .../src/mage/cards/l/LysAlanaHuntmaster.java | 3 +- Mage.Sets/src/mage/cards/m/MagneticTheft.java | 3 +- .../src/mage/cards/m/MagnigothTreefolk.java | 15 +- .../src/mage/cards/m/MagusOfTheCoffers.java | 3 +- .../src/mage/cards/m/MalakirSoothsayer.java | 3 +- .../src/mage/cards/m/MaraudingKnight.java | 2 +- Mage.Sets/src/mage/cards/m/Marjhan.java | 10 +- Mage.Sets/src/mage/cards/m/MarkOfTheOni.java | 8 +- .../src/mage/cards/m/MarkovCrusader.java | 3 +- Mage.Sets/src/mage/cards/m/MarrowGnawer.java | 7 +- Mage.Sets/src/mage/cards/m/MarshFlats.java | 4 +- Mage.Sets/src/mage/cards/m/MarshLurker.java | 3 +- Mage.Sets/src/mage/cards/m/Massacre.java | 5 +- .../mage/cards/m/MasterOfThePearlTrident.java | 3 +- Mage.Sets/src/mage/cards/m/MasterOfWaves.java | 7 +- .../mage/cards/m/MasterworkOfIngenuity.java | 3 +- Mage.Sets/src/mage/cards/m/MaulSplicer.java | 3 +- .../src/mage/cards/m/MercenaryInformer.java | 3 +- Mage.Sets/src/mage/cards/m/MerchantShip.java | 5 +- .../src/mage/cards/m/MerfolkWayfinder.java | 3 +- .../src/mage/cards/m/MerrowCommerce.java | 3 +- .../src/mage/cards/m/MerrowHarbinger.java | 3 +- .../src/mage/cards/m/MesmericSliver.java | 3 +- .../src/mage/cards/m/MidnightDuelist.java | 3 +- .../mage/cards/m/MikaeusTheUnhallowed.java | 7 +- .../src/mage/cards/m/MindlashSliver.java | 3 +- Mage.Sets/src/mage/cards/m/MindlessNull.java | 3 +- .../src/mage/cards/m/MindwhipSliver.java | 3 +- .../src/mage/cards/m/MishrasFactory.java | 3 +- .../src/mage/cards/m/MistbindClique.java | 3 +- Mage.Sets/src/mage/cards/m/Mobilization.java | 3 +- Mage.Sets/src/mage/cards/m/Moggcatcher.java | 3 +- Mage.Sets/src/mage/cards/m/Moonmist.java | 3 +- .../src/mage/cards/m/MountainValley.java | 4 +- Mage.Sets/src/mage/cards/m/Mycologist.java | 3 +- .../src/mage/cards/m/MyrBattlesphere.java | 3 +- Mage.Sets/src/mage/cards/m/MyrGalvanizer.java | 7 +- .../src/mage/cards/n/NagaoBoundByHonor.java | 3 +- Mage.Sets/src/mage/cards/n/NathsBuffoon.java | 3 +- .../src/mage/cards/n/NehebTheWorthy.java | 9 +- Mage.Sets/src/mage/cards/n/NettlingImp.java | 7 +- .../src/mage/cards/n/NezumiShadowWatcher.java | 3 +- Mage.Sets/src/mage/cards/n/NightRevelers.java | 3 +- Mage.Sets/src/mage/cards/n/Nightmare.java | 3 +- .../src/mage/cards/n/NirkanaRevenant.java | 3 +- .../src/mage/cards/n/NissaVastwoodSeer.java | 3 +- .../src/mage/cards/n/NoggleHedgeMage.java | 5 +- Mage.Sets/src/mage/cards/n/NovaChaser.java | 3 +- .../src/mage/cards/o/ObsidianBattleAxe.java | 9 +- .../src/mage/cards/o/OgreJailbreaker.java | 2 +- Mage.Sets/src/mage/cards/o/OnduWarCleric.java | 3 +- Mage.Sets/src/mage/cards/o/Opalescence.java | 10 +- Mage.Sets/src/mage/cards/o/OpenTheArmory.java | 5 +- Mage.Sets/src/mage/cards/o/Ophiomancer.java | 7 +- .../src/mage/cards/o/OratorOfOjutai.java | 7 +- Mage.Sets/src/mage/cards/o/OrchardWarden.java | 7 +- .../src/mage/cards/o/OrcishLumberjack.java | 3 +- Mage.Sets/src/mage/cards/o/Oubliette.java | 5 +- Mage.Sets/src/mage/cards/o/Outbreak.java | 2 +- Mage.Sets/src/mage/cards/o/OxiddaGolem.java | 3 +- Mage.Sets/src/mage/cards/p/PackRat.java | 3 +- .../src/mage/cards/p/PatronOfTheAkki.java | 3 +- .../src/mage/cards/p/PatronOfTheMoon.java | 7 +- .../src/mage/cards/p/PatronOfTheNezumi.java | 3 +- Mage.Sets/src/mage/cards/p/PatronWizard.java | 3 +- .../src/mage/cards/p/PeacewalkerColossus.java | 3 +- Mage.Sets/src/mage/cards/p/PeerPressure.java | 2 +- .../src/mage/cards/p/PeopleOfTheWoods.java | 3 +- .../src/mage/cards/p/PheresBandWarchief.java | 7 +- Mage.Sets/src/mage/cards/p/PirateShip.java | 5 +- .../src/mage/cards/p/PlantElemental.java | 3 +- .../src/mage/cards/p/PlowThroughReito.java | 3 +- Mage.Sets/src/mage/cards/p/PollutedDelta.java | 4 +- Mage.Sets/src/mage/cards/p/PrimalBeyond.java | 3 +- .../src/mage/cards/p/PrizedElephant.java | 3 +- .../src/mage/cards/p/ProfanePrayers.java | 3 +- .../src/mage/cards/p/ProwessOfTheFair.java | 3 +- Mage.Sets/src/mage/cards/p/PsionicSliver.java | 3 +- .../src/mage/cards/p/PsychotropeThallid.java | 3 +- .../src/mage/cards/p/PulmonicSliver.java | 5 +- .../src/mage/cards/p/PuppetConjurer.java | 3 +- Mage.Sets/src/mage/cards/p/PutridRaptor.java | 3 +- .../src/mage/cards/q/QuarryColossus.java | 3 +- .../src/mage/cards/q/QuicksilverFountain.java | 8 +- .../src/mage/cards/q/QuillSlingerBoggart.java | 3 +- Mage.Sets/src/mage/cards/q/QuirionRanger.java | 3 +- Mage.Sets/src/mage/cards/r/RageForger.java | 3 +- .../src/mage/cards/r/RagebloodShaman.java | 7 +- .../src/mage/cards/r/RakshaGoldenCub.java | 2 +- .../src/mage/cards/r/RamosianCommander.java | 3 +- .../src/mage/cards/r/RamosianLieutenant.java | 3 +- .../src/mage/cards/r/RamosianSkyMarshal.java | 3 +- Mage.Sets/src/mage/cards/r/RavenousDemon.java | 3 +- .../src/mage/cards/r/ReachOfBranches.java | 3 +- Mage.Sets/src/mage/cards/r/ReaperKing.java | 9 +- Mage.Sets/src/mage/cards/r/RecklessOne.java | 3 +- Mage.Sets/src/mage/cards/r/RegalCaracal.java | 7 +- .../src/mage/cards/r/ReinsOfTheVinesteed.java | 7 +- Mage.Sets/src/mage/cards/r/RelicSeeker.java | 3 +- Mage.Sets/src/mage/cards/r/RendFlesh.java | 3 +- Mage.Sets/src/mage/cards/r/RendSpirit.java | 3 +- .../src/mage/cards/r/RenegadeFirebrand.java | 3 +- Mage.Sets/src/mage/cards/r/RequiemAngel.java | 3 +- .../src/mage/cards/r/RestorationAngel.java | 3 +- .../src/mage/cards/r/RhoxPikemaster.java | 3 +- .../src/mage/cards/r/RidersOfGavony.java | 11 +- .../src/mage/cards/r/RingOfImmortals.java | 3 +- .../src/mage/cards/r/RiptideLaboratory.java | 3 +- Mage.Sets/src/mage/cards/r/RoarOfJukai.java | 7 +- .../src/mage/cards/r/RoarOfTheCrowd.java | 5 +- Mage.Sets/src/mage/cards/r/RockBasilisk.java | 3 +- Mage.Sets/src/mage/cards/r/RocketTrooper.java | 3 +- .../cards/r/RofellosLlanowarEmissary.java | 3 +- Mage.Sets/src/mage/cards/r/RootSliver.java | 3 +- Mage.Sets/src/mage/cards/r/RootboundCrag.java | 3 +- Mage.Sets/src/mage/cards/r/Rootgrapple.java | 3 +- .../src/mage/cards/r/RootwaterAlligator.java | 3 +- .../src/mage/cards/r/RotlungReanimator.java | 3 +- Mage.Sets/src/mage/cards/r/RushOfBattle.java | 3 +- Mage.Sets/src/mage/cards/r/RustsporeRam.java | 3 +- .../mage/cards/s/SachiDaughterOfSeshiro.java | 9 +- Mage.Sets/src/mage/cards/s/SagesReverie.java | 3 +- .../src/mage/cards/s/SaprazzanLegate.java | 5 +- Mage.Sets/src/mage/cards/s/Sarcomancy.java | 7 +- Mage.Sets/src/mage/cards/s/SarkhanTheMad.java | 3 +- .../src/mage/cards/s/SarkhanUnbroken.java | 3 +- Mage.Sets/src/mage/cards/s/SarkhansRage.java | 3 +- Mage.Sets/src/mage/cards/s/SavageThallid.java | 5 +- Mage.Sets/src/mage/cards/s/ScaldingTarn.java | 4 +- .../src/mage/cards/s/ScorchTheFields.java | 3 +- .../src/mage/cards/s/ScourgeOfNumai.java | 3 +- .../src/mage/cards/s/ScreechingSliver.java | 3 +- .../src/mage/cards/s/ScrollOfAvacyn.java | 3 +- .../src/mage/cards/s/ScrollOfGriselbrand.java | 3 +- Mage.Sets/src/mage/cards/s/ScrybRanger.java | 3 +- Mage.Sets/src/mage/cards/s/SeaMonster.java | 3 +- Mage.Sets/src/mage/cards/s/SeaSerpent.java | 5 +- .../src/mage/cards/s/SeascapeAerialist.java | 3 +- Mage.Sets/src/mage/cards/s/SeasideHaven.java | 3 +- Mage.Sets/src/mage/cards/s/Seasinger.java | 10 +- Mage.Sets/src/mage/cards/s/SecludedGlen.java | 3 +- Mage.Sets/src/mage/cards/s/SedgeSliver.java | 7 +- Mage.Sets/src/mage/cards/s/SeedlingCharm.java | 3 +- Mage.Sets/src/mage/cards/s/SeismicStrike.java | 3 +- .../src/mage/cards/s/SekkiSeasonsGuide.java | 7 +- Mage.Sets/src/mage/cards/s/SelfAssembler.java | 3 +- .../src/mage/cards/s/SengirAutocrat.java | 3 +- Mage.Sets/src/mage/cards/s/SensorSplicer.java | 3 +- .../src/mage/cards/s/SeraphSanctuary.java | 3 +- .../mage/cards/s/SerpentOfTheEndlessSea.java | 5 +- .../src/mage/cards/s/SetessanStarbreaker.java | 3 +- .../mage/cards/s/SetonKrosanProtector.java | 3 +- .../src/mage/cards/s/ShieldOfKaldra.java | 2 +- .../mage/cards/s/ShisatoWhisperingHunter.java | 3 +- Mage.Sets/src/mage/cards/s/ShockTrooper.java | 3 +- .../src/mage/cards/s/ShorelineSalvager.java | 3 +- Mage.Sets/src/mage/cards/s/Sideswipe.java | 3 +- .../src/mage/cards/s/SiegeGangCommander.java | 3 +- Mage.Sets/src/mage/cards/s/SiegeOfTowers.java | 3 +- .../src/mage/cards/s/SigardianPriest.java | 3 +- Mage.Sets/src/mage/cards/s/SigilTracer.java | 3 +- .../src/mage/cards/s/SilumgarsScorn.java | 3 +- .../src/mage/cards/s/SilvergillAdept.java | 3 +- Mage.Sets/src/mage/cards/s/SinewSliver.java | 3 +- .../src/mage/cards/s/SinkIntoTakenuma.java | 3 +- Mage.Sets/src/mage/cards/s/SithRuins.java | 11 +- Mage.Sets/src/mage/cards/s/SivvisRuse.java | 5 +- .../src/mage/cards/s/SkeletalVampire.java | 4 +- Mage.Sets/src/mage/cards/s/SkeletonShip.java | 7 +- .../src/mage/cards/s/SkirkFireMarshal.java | 3 +- .../src/mage/cards/s/SkirkVolcanist.java | 3 +- .../src/mage/cards/s/SkyshroudClaim.java | 3 +- .../src/mage/cards/s/SkyshroudCutter.java | 3 +- .../src/mage/cards/s/SlayerOfTheWicked.java | 7 +- .../src/mage/cards/s/SlipstreamSerpent.java | 5 +- Mage.Sets/src/mage/cards/s/SliverLegion.java | 9 +- .../src/mage/cards/s/SliverOverlord.java | 7 +- .../src/mage/cards/s/SoldeviExcavations.java | 3 +- Mage.Sets/src/mage/cards/s/SoullessOne.java | 5 +- Mage.Sets/src/mage/cards/s/Sparksmith.java | 3 +- .../src/mage/cards/s/SpiritOfTheHunt.java | 5 +- Mage.Sets/src/mage/cards/s/SpittingEarth.java | 3 +- .../src/mage/cards/s/SpoilsOfVictory.java | 11 +- .../src/mage/cards/s/SpreadingAlgae.java | 3 +- .../mage/cards/s/StaffOfTheDeathMagus.java | 3 +- .../mage/cards/s/StaffOfTheFlameMagus.java | 3 +- .../src/mage/cards/s/StaffOfTheSunMagus.java | 3 +- .../src/mage/cards/s/StandardBearer.java | 3 +- .../src/mage/cards/s/StarlitSanctum.java | 3 +- Mage.Sets/src/mage/cards/s/SteamFrigate.java | 3 +- Mage.Sets/src/mage/cards/s/Stenchskipper.java | 7 +- .../src/mage/cards/s/StinkdrinkerBandit.java | 3 +- .../src/mage/cards/s/StoneforgeMystic.java | 3 +- .../src/mage/cards/s/StrandsOfNight.java | 3 +- .../mage/cards/s/StreamOfUnconsciousness.java | 3 +- .../src/mage/cards/s/StreambedAquitects.java | 3 +- Mage.Sets/src/mage/cards/s/Submerge.java | 5 +- Mage.Sets/src/mage/cards/s/SulfurFalls.java | 3 +- Mage.Sets/src/mage/cards/s/SummitApes.java | 3 +- .../src/mage/cards/s/SunderingTitan.java | 5 +- .../src/mage/cards/s/SunflareShaman.java | 3 +- Mage.Sets/src/mage/cards/s/SunpetalGrove.java | 3 +- .../src/mage/cards/s/SunriseSovereign.java | 3 +- .../src/mage/cards/s/SunspireGatekeepers.java | 3 +- Mage.Sets/src/mage/cards/s/Swarmyard.java | 9 +- .../src/mage/cards/s/SyggRiverGuide.java | 7 +- .../src/mage/cards/s/SylvanMessenger.java | 3 +- Mage.Sets/src/mage/cards/s/SynapseSliver.java | 3 +- Mage.Sets/src/mage/cards/t/TaintedField.java | 3 +- Mage.Sets/src/mage/cards/t/TaintedPeak.java | 3 +- .../src/mage/cards/t/TajNarSwordsmith.java | 3 +- .../src/mage/cards/t/TakenumaBleeder.java | 3 +- Mage.Sets/src/mage/cards/t/TalusPaladin.java | 7 +- .../src/mage/cards/t/TamiyosJournal.java | 7 +- Mage.Sets/src/mage/cards/t/TangleGolem.java | 3 +- .../src/mage/cards/t/TelekineticSliver.java | 3 +- .../src/mage/cards/t/TerrorOfKruinPass.java | 7 +- .../src/mage/cards/t/TezzeretsSimulacrum.java | 3 +- .../src/mage/cards/t/ThopterAssembly.java | 3 +- .../src/mage/cards/t/ThorntoothWitch.java | 3 +- .../src/mage/cards/t/ThoughtweftTrio.java | 3 +- Mage.Sets/src/mage/cards/t/ThreeDreams.java | 3 +- Mage.Sets/src/mage/cards/t/ThreeVisits.java | 3 +- .../src/mage/cards/t/ThundercloudShaman.java | 5 +- Mage.Sets/src/mage/cards/t/TidalCourier.java | 3 +- .../src/mage/cards/t/TimberProtector.java | 7 +- .../src/mage/cards/t/TirelessTracker.java | 3 +- .../src/mage/cards/t/TitanOfEternalFire.java | 3 +- Mage.Sets/src/mage/cards/t/ToxinSliver.java | 3 +- .../src/mage/cards/t/TreefolkHarbinger.java | 3 +- .../src/mage/cards/t/TreefolkSeedlings.java | 3 +- Mage.Sets/src/mage/cards/t/TrevasRuins.java | 3 +- .../src/mage/cards/t/TrialOfKnowledge.java | 3 +- .../src/mage/cards/t/TrialOfSolidarity.java | 3 +- .../src/mage/cards/t/TrialOfStrength.java | 3 +- Mage.Sets/src/mage/cards/t/TribalUnity.java | 5 +- Mage.Sets/src/mage/cards/t/TrooperArmor.java | 9 +- .../src/mage/cards/t/TrooperCommando.java | 3 +- Mage.Sets/src/mage/cards/t/TsabosDecree.java | 7 +- .../src/mage/cards/t/TuktukScrapper.java | 3 +- Mage.Sets/src/mage/cards/t/Tunnel.java | 3 +- .../mage/cards/u/UlrichUncontestedAlpha.java | 7 +- .../src/mage/cards/u/UlrichsKindred.java | 3 +- .../src/mage/cards/u/UlvenwaldMysteries.java | 3 +- Mage.Sets/src/mage/cards/u/UndeadSlayer.java | 7 +- .../src/mage/cards/u/UnstoppableAsh.java | 4 +- Mage.Sets/src/mage/cards/u/UtopiaSprawl.java | 7 +- Mage.Sets/src/mage/cards/v/Valleymaker.java | 5 +- Mage.Sets/src/mage/cards/v/Valor.java | 3 +- .../src/mage/cards/v/VampireNocturnus.java | 3 +- .../src/mage/cards/v/VedalkenAethermage.java | 5 +- Mage.Sets/src/mage/cards/v/VeilbornGhoul.java | 3 +- .../src/mage/cards/v/VerdantCatacombs.java | 4 +- Mage.Sets/src/mage/cards/v/VernalBloom.java | 3 +- Mage.Sets/src/mage/cards/v/VeteranCathar.java | 3 +- .../src/mage/cards/v/VeteranSwordsmith.java | 3 +- .../src/mage/cards/v/VeteranWarleader.java | 7 +- Mage.Sets/src/mage/cards/v/VictimOfNight.java | 7 +- .../src/mage/cards/v/VigilanteJustice.java | 3 +- .../src/mage/cards/v/VildinPackAlpha.java | 8 +- Mage.Sets/src/mage/cards/v/VindictiveMob.java | 3 +- .../src/mage/cards/v/VitasporeThallid.java | 7 +- .../src/mage/cards/v/VodalianKnights.java | 9 +- .../src/mage/cards/v/VodalianSerpent.java | 3 +- .../src/mage/cards/v/VolcanicEruption.java | 3 +- .../src/mage/cards/v/VulshokBattlemaster.java | 3 +- .../src/mage/cards/w/WalkingDesecration.java | 9 +- Mage.Sets/src/mage/cards/w/WanderingMage.java | 5 +- .../src/mage/cards/w/WanderwineProphets.java | 3 +- Mage.Sets/src/mage/cards/w/WardSliver.java | 9 +- Mage.Sets/src/mage/cards/w/WatcherSliver.java | 3 +- Mage.Sets/src/mage/cards/w/WaterWurm.java | 3 +- Mage.Sets/src/mage/cards/w/WaxingMoon.java | 3 +- .../src/mage/cards/w/WeaponsTrainer.java | 3 +- .../src/mage/cards/w/WeightOfConscience.java | 9 +- .../src/mage/cards/w/WindsweptHeath.java | 4 +- .../src/mage/cards/w/WirewoodChanneler.java | 3 +- .../src/mage/cards/w/WirewoodHerald.java | 3 +- .../src/mage/cards/w/WirewoodHivemaster.java | 3 +- Mage.Sets/src/mage/cards/w/WirewoodLodge.java | 3 +- Mage.Sets/src/mage/cards/w/WirewoodPride.java | 3 +- .../src/mage/cards/w/WirewoodSavage.java | 3 +- .../src/mage/cards/w/WirewoodSymbiote.java | 3 +- Mage.Sets/src/mage/cards/w/WitheringGaze.java | 3 +- Mage.Sets/src/mage/cards/w/WizenedCenn.java | 3 +- .../src/mage/cards/w/WolfhuntersQuiver.java | 7 +- Mage.Sets/src/mage/cards/w/Wonder.java | 3 +- Mage.Sets/src/mage/cards/w/WoodElves.java | 3 +- .../src/mage/cards/w/WoodedFoothills.java | 4 +- .../src/mage/cards/w/WoodlandCemetery.java | 3 +- .../src/mage/cards/w/WoodlandGuidance.java | 3 +- .../src/mage/cards/w/WoodwraithCorrupter.java | 3 +- .../src/mage/cards/w/WordOfBlasting.java | 3 +- .../src/mage/cards/w/WortBoggartAuntie.java | 3 +- .../src/mage/cards/w/WrensRunPackmaster.java | 7 +- Mage.Sets/src/mage/cards/w/WuAdmiral.java | 3 +- Mage.Sets/src/mage/cards/w/WuWarship.java | 3 +- Mage.Sets/src/mage/cards/z/ZadasCommando.java | 3 +- .../src/mage/cards/z/ZhalfirinCommander.java | 3 +- .../src/mage/cards/z/ZirilanOfTheClaw.java | 2 +- .../src/mage/cards/z/ZombieApocalypse.java | 5 +- .../src/mage/cards/z/ZuberiGoldenFeather.java | 7 +- .../src/mage/cards/z/ZulaportChainmage.java | 3 +- .../common/FetchLandActivatedAbility.java | 2 +- .../src/main/java/mage/constants/SubType.java | 224 +++++++++++------- .../main/java/mage/constants/SubTypeSet.java | 5 +- .../mageobject/SubtypePredicate.java | 4 + 651 files changed, 1538 insertions(+), 1255 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/ATST.java b/Mage.Sets/src/mage/cards/a/ATST.java index ff6646cddb..160ab562cd 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 45bb47ca80..fa283196e4 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 e3437097ad..bfb2059ae2 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 ca7bb414e4..5143b3073e 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 478f0647e0..012d4d558b 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 b260c74dc9..dc69e50387 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 2a68d0b34a..08f02712be 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 b68f29e0dc..9bf90f8a29 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 c055ab8db1..319ba97a68 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 b95db50cb6..73ba83cbc6 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 f855c4bfe4..e0d31d12bd 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 a54e3f076d..fa7eab64e0 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 73b1f416d8..dc2ffd51e0 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 73b468bca6..12549667c8 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 b320b17432..07748b176f 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 581196d08b..a77b909449 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 b7f79253d2..e6ddb37fa9 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 1babd98c50..fdf77245f2 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 3d38e0cd67..d555d24c2f 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 a1f83576b5..e2deda92e1 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 2b6d256789..14968f98fa 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 d039a68529..21328e62ab 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 da00e062d6..70cf5fbd85 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 a7a1fc3973..24b6954688 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 5840ddbd16..453ddd254c 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 dce451a6e0..14bd1186cd 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 c0be93aad6..654c8c5c55 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 87260f921e..d220ba06eb 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 69b9df6345..1bdaf8df4c 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 b8ac2a50ff..b5c4d17a05 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 af5bd0c180..53b736b94e 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 aed2c8b488..2b6c15a5a8 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 9263e699b5..2df61452a0 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 51cb31efe5..fa92e01c0f 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 61d641d645..976c591495 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 46ad85d7c1..d3bdac1840 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 5a91103fce..64059925a9 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 f8f543987d..f4563ce448 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 d5df7bf0a3..2d963e36d8 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 c5bc1f38f5..697b9fef0c 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 8e6c6c7622..ec1697841f 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 7d49377f72..4e1d1340ab 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 360062f562..e814c533a9 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 8cee410fd3..9a47e298d7 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 83d03045b3..acab30dbab 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 45ef3f245b..e47445b2af 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 1afba191dd..3d25e00fc2 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 8f2b5fc537..f3d57297a5 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 eb3a9ec325..f5db6983c5 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 a2aa387e6c..23a7315d17 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 7c148f12e9..b8dd286bcf 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 591d7d26d8..f16d3f5977 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 a9c52bd851..991449be2f 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 68bed27c6c..3350331414 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 531b5f84c6..42908f3970 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 0064d5a142..7f5af6d844 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 e821f9e69a..ed9f5f8408 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 ba55e2d411..1408e0b134 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 0dfa3bb3b1..d09f186f63 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 1da1d74629..251be7d799 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 529f1416ca..4b5e408593 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 4b64b7a615..c0c5b2df4a 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 cb844ed05c..9d5e63cc0b 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 d25d339659..19c7b32f3b 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 4ed5f1f3f9..87863f6a86 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 8ab7e35dde..3e386e8b00 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 749ef54465..1de50c2863 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 76ae7f4932..93a314b3b3 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 2157bd326e..a3c6e9c1da 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 ea9cdc8955..cd02f2b0da 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 1b2e644b91..fcf1591a30 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 482e937006..2458963f43 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 4c353c670c..8596ad42a2 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 32aac8c25d..829c070801 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 9c8d623ba8..e1a278ca6c 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 f03adc21b5..9078977bca 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 44adad6d64..fdfec51f6a 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 133671858e..4bce62cb80 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 e84f8dbf91..8b445ce21e 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 1927e3db14..f264ea7cbe 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 0a17c645da..09c7392e93 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 06335ea3b7..a166fba0ac 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 18649626f3..570e13f230 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 903d30ec10..d1efb96c5d 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 6700fcacc6..2212c508b0 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 63f9bf9909..a29967da01 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 3a386d36f2..387864e7a2 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 fcf584bd20..d30b55d900 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 90ca2567e8..3e28d9d7ea 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 d78e0568c6..860895f063 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 2a3c675ac4..1343691344 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 30974bfbbe..95ddfe5b5c 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 c03dbfb4de..8cce17bffa 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 1e83479996..c54fa192c4 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 a2c74a4857..0173a4ff08 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 618bf9549a..eff1860c1f 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 24fd2c94d3..def4ee7fd5 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 8277110020..e2d8e71fa2 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 bf8476f5be..304ced8c80 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 52aac00a44..7e75197137 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 72ce3556ca..0246366f9d 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 1342ae8f8c..3dabd1b0d0 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 18ed6672a0..670e7d108c 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 fa028ce56c..b91e33d7be 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 cd2a49fa26..9a9cfb45b1 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 ecd11db88a..3e6684f4da 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 f12eb0b784..381af1aea3 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 1f40866cb0..a0fdee6b3a 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 486c294c45..5cab7f219a 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 75a81adfbc..7b32174292 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 8457a86e0c..2c0e9ff669 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 4962a7a17e..00c4bb3048 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 6c2760d1d3..9bca51506b 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 6e3fc0fda5..6b71c48926 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 b1730aef3d..83c3ace546 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 b63553a4d0..e8dbce9dbe 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 b80c5ad866..8e18fc821c 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 b9ffcdbdc1..789309bfad 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 199c54169a..c89d204217 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 f8d9af36ac..263d2743d5 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 60737a36b8..c8410a28c5 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 7172a9e1aa..b82ecf5c83 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 c32e8c56ce..1a18b4d445 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 0bc0acb27c..a404405ca0 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 2d7c390abd..4cf3e125ea 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 2008070314..a428eece45 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 bd20e61a0b..558860aeba 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 625cb91e0d..f35ef28e3f 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 80e6181c76..a3b777bc39 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 41b2415706..f9f40c6843 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 92f39b93d9..3872d248f0 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 ee87e137c2..7de2e78df4 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 34bb28a0fb..8989f3119b 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 599aa06f87..459551fa94 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 6198667f3e..13fa2834bc 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 97d2a1d59e..451a6b0de2 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 2b11167046..e88f241084 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 e0cfb75341..7425146f4c 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 3832a0d606..4afeec81f3 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 ac387dcf82..38e2cbc7d6 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 7fa9325946..b23263b0c6 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 eaf7b709dd..3b09118df3 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 cf799bf372..40b72b8953 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 4de9acd7ce..aafa15ca23 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 d1f1eb3bbb..c11d557830 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 415f07de46..de5fa01966 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 bc39942388..1cb1135696 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 7edc3dd951..165076a75c 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 b212867a1b..b0551bc739 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 2d919a0f79..d1d17530ad 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 949ea88af5..611e3df720 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 62f7f33c90..463be2fd35 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 99e18ef32e..57eafb699b 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 747f1bd0cf..0c48479c05 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 081baed532..e5d109214c 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 0c14795974..6f5d772df2 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 847a8355a9..68e83b63b0 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 0b405c3cbb..1d05d49d0a 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 b015c3b8b0..3b6ddb4919 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 06264220b7..d3966cb3aa 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 3d75436ad7..164c04c0d7 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 929ebbaff0..5a5b3beb93 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 ffff611ef1..44588d3179 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 e7cf055ee2..529dcaf02d 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 ef4ad1490d..b8597750ba 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 b42cfe77b1..dc4e4a2fb0 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 126a7ca3d3..eb033bb7ff 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 61da9dcb5e..770a225ab1 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 fb064024d3..05669e3b6c 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 3a77f999ec..fe3602495c 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 52ab518159..bf3bd80704 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 feeb309a19..d943d59006 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 c7f4add9b3..40f3940893 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 7399baac16..43346bc2d7 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 aa0f24877e..28520db880 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 847686aa3c..91576e169b 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 c3115e1e60..95b0b3511a 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 fa320f4439..ac2a9630e7 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 c11c8f82f2..e934f163e1 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 e27498add3..0a15f7bf28 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 ae82b51f2a..332f51896d 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 9fefeb18e5..8221db9f89 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 4faf8f1143..eb7df23212 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 d14ed14755..d289081b9a 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 0fb3fd20ce..7d43f880ae 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 85d542b29e..f7ae8cf88c 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 fdbe8508c8..58075dbbde 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 e9b82a00d4..58c04b4d23 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 5c8ce724d8..a64899e8cc 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 5ab768fb84..db956729f1 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 024efef4ed..63a5d36b28 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 e548746e97..48fdf8e820 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 b7b6afabd2..db280a01c2 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 63ac31911c..0811d88426 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 a9452c97c1..786b90541f 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 e2a6c49c5c..caf2a57cd7 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 1a7b5e0518..d98fac023b 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 89d543fb4f..cb1371d743 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 d372d731f2..d2c250752e 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 b8e2008a1e..357e09d60b 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 3ebaadca18..73b0bec93a 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 6af53363bb..b4a3afb3b7 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 75070b8b00..31f95d9f4f 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 f4d8eb56c3..2269b8a8bf 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 5219f9929b..2e44afe1a5 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 6e49334736..3a4bcc2035 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 8c18bf0396..808b23f8cf 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 6108d48ece..593fcce083 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 7c8f9944d3..0cb3e3d210 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 8446358101..d503c439c9 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 cb94ff13b4..19cd4260ce 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 fbbf3ad6dc..d1dc1668cf 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 4368c90fea..4115026676 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 13dcdc17c3..897fda501e 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 6b7306504f..1214133301 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 0bca24643c..9bf830e168 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 c81c89f48f..83b7a4fe0c 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 4dc4434393..dd552a61bd 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 5779e908d4..bbbd0d5a9e 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 e4fd1c03e2..66f980342a 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 ffca714067..cfca830aff 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 8c8c23f37e..3791205abc 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 7af016f127..5b9efe6ec4 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 a2ab0041d8..88c8b22f4b 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 c8b28c4520..06fb9583a8 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 d26111b083..c8c5bcffd1 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 f5dfc6d830..3c420d9679 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 b1f9fae365..d7e398fd61 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 5fecc600c3..21cde0053c 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 166b9f92d7..96f475d41f 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 fe0f6b7df5..1d29a6303b 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 9a74931478..43e8951c60 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 23c992ad67..3817875337 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 b37642ca6b..5a63b43c94 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 d007e0428d..5d048a6237 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 ecf54069cf..f14551c9bb 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 f7946b2e54..e4573efbc8 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 955096f50b..cfe0247117 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 4055ca5036..0de07fa057 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 33d442beb6..50c905c37e 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 1f5a308f5b..03aaf5cbdd 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 7bb36b7d65..da43be763b 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 16a0bae7c5..d10dc4bb13 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 338b286a0b..4fbc7173cb 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 0034df0dcd..49fdc8feb0 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 d7830bc7cd..c77c801c55 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 509f0cfb39..f6e17eba43 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 f3a0a2349a..e98c781718 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 1412ae8bb1..ba09b84354 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 dab0b98335..c638d6a792 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 f5ec865716..92aa168c6c 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 98f83d1b4f..d9bca4841a 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 4292f00597..d9f58ea9b8 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 6497775e97..2014bc1d87 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 4df7dbd655..4ce9a57574 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 8de3046d68..b9083c2ac2 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 8404e09a29..dd583dd15e 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 a8e15a72f4..9f8dffed90 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 a6bd50d671..1802e8a921 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 b1efa1f6e8..0949c7f7bf 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 3473aff725..0843bec0ff 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 2a5308f2a2..ec5b6f79ac 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 029bdc9b98..3d74bc8379 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 b0048dfafe..227515f3a4 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 5de876c083..1017619b1f 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 41a2c879b9..757f53be4f 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 9ff335180d..34a845e1d4 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 72ec7c8260..062a0c57d3 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 cd783dcb26..8711f199d5 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 653aca89c1..36192bd3f5 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 254cef86d7..dda8cab954 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 5021fedeee..96c34e2d94 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 bc8e3dec13..c883b8cd08 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 077a8e9dbb..892ba64773 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 3a6f43ccdf..b190d7cf19 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 f4698dbb4d..d8b811c9d4 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 453ede1fdd..d0c0207ff6 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 27140fc1da..ccdd72b0b3 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 67de0b9062..11a2789ab9 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 f7d468d50b..0c8751cc88 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 b96dcaeb29..899b334c6a 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 7221d443b1..daae3519f0 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 67bcdd2ef8..77b34a1d67 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 1388dea06d..98e64a02ee 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 fde98d26d6..091049eb49 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 32790ed34b..e49d39b797 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 378f8cd9f4..a70861b715 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 dc237e7b8c..eeb67bcc7b 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 c582af12e1..fb166c5e65 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 64644a7359..1b598083da 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 120fbad572..e45c4ddc8c 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 46f98f0a90..a448e0b18a 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 3cacba07f9..ac832d3a3d 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 7efc27d28f..0263961e41 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 b282da74ab..f5102000bc 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 d269f9969b..45f852d9ed 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 27f72f37be..e90b637637 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 3c6bcfe7f9..7754589f85 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 296096d681..c4a8e2d663 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 b981b60746..c450498711 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 2d75cd1b38..200c251af9 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 5d11c05218..0cfce93bb1 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 036886efb9..5a73bb8330 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 114a886795..69a9a850a0 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 1ad6c7362c..b3973d6a27 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 6432956b3e..568c269662 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 a71db14099..155266cccb 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 fb50ffe844..44def69dd4 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 97115d2033..fac91ebce7 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 31514f4c63..a4a84730d3 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 15b6e5d333..450bd2f8d9 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 da41809e68..8e5060ab5c 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 167b0a221c..26a702ef21 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 bfcaab96b9..a1e6f4d843 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 f37f74861a..a5bf1f299a 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 ac3cdac14c..2fb7082cd6 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 975b60c979..f5d54abef6 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 626dcccc7f..b69f0e00af 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 e3dbc5d3b9..eae9277d54 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 d12eafb733..0eea55dd35 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 708bd10e55..b2263a153d 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 bb2849dc7b..cdecf5bf4a 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 4e7df5acbf..f082e538f5 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 7e3dd2855b..7fc8d637bf 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 fda56ebbf9..ad0a3ba82b 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 4001045866..f58c15cb49 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 b072113d82..44d4fddaf9 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 d25ae953b5..241be3129c 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 4213d5d699..9a1b09b2e1 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 34a3539229..bff9e2b0f6 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 cf87347e77..36d4990b4e 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 9c011ff95b..3b61f12c21 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 933ff4978f..57061a5205 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 76944b89ba..90372fffe2 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 ea0a68c18e..974aa4c03e 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 e4a964b771..702cd544fe 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 ab316b379c..9eaca1ae3e 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 69764d9802..b66fa3ae7d 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 9d09be812c..23b3a6c23c 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 883cc1a266..754fc3cfc4 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 f85d6f98a7..2123b4db77 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 fe070b4b7e..5ab5d7ca58 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 9a9d341e79..0ce823909b 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 bf9644e804..f67549e7a2 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 1dc8d4c349..d6a59c4ab9 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 7004df261b..ebeaea53d4 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 f7efecadb5..33cd49dc8b 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 560e891d9d..cb9d7e6eb4 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 f24a959fe9..2ff1210968 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 4bdc6882f6..7f3957d40e 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 d067533a45..b91bba58b9 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 2c22494bac..39fefec7fd 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 397343d86c..b89690e0e7 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 17a39ed1b8..1bbc64a89f 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 c191cda993..4c65b6b0c8 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 85ac74866e..79f101bdbe 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 7ebfea4bf7..9da22dba6c 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 a4a9c1d789..d6b3011e87 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 c6e4314817..093f632c39 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 74c1945bad..2e00887011 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 a54468c8c9..3777538716 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 fc10bab2b3..c85ef87bf2 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 c072eac782..e98c0c3b0d 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 eb237ea6c5..920c76f42e 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 c2ce4a6002..ffd7dce50d 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 63cd5feb5c..068cef269a 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 3f7f22c0ff..acb262e4a4 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 49bb2a5379..8e8846e93b 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 50b7374f7f..c742a3db5e 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 1d36c7ece7..af2a923ff0 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 eb45c92a90..3b0469029d 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 3ec71fbc56..48236d7953 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 e4ca9ca547..597d1c8f29 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 a50f70750e..2b7fc6b56c 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 8f48e1f3ef..2ab5ee877f 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 e02f4988c7..6c98d3301d 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 2427b2fd71..dc152574a5 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 dcace4a839..fd8a9cc334 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 f02b732258..703cec8073 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 183dc20def..24f4b55779 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 3526ec66d1..5644911da9 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 b1583037d0..6b02b4d224 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 9e0720a288..7fadbc8bdb 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 7336239f8b..5fb85ac067 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 b4f7a07a8e..d81610c73d 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 1481db8f39..44d828afd8 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 1221208e9e..1e49f8534b 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 42cb7d9200..ce40dd3017 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 8ad0c60116..4ebcc73739 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 99e5abe867..4e3245e354 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 45c270e346..f501258731 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 beb951039b..ca384b8c19 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 cee11e9120..f19e2b4c5a 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 cbd6fc79ff..236f04b3a2 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 0f6fff8d09..113c52e229 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 5f75871939..519185fec7 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 5c6a014aa0..ced3aff6b7 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 ea2e7d7d80..6cd1bb348a 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 30c0371441..60c80e1205 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 fc35b52eac..592af7f015 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 a80f693c64..91bd91a78c 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 974223d572..e2becc1c18 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 ad1e7c600a..9dc75671b9 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 38c2ba44b5..6506954aa7 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 ae6e0a2256..1f0cb97b75 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 525626de84..d7be56264a 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 6d71a2ab22..4bab9f4e92 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 6277f53d48..8f30f3e26d 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 838ee65f8d..6e5434dda0 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 14de052a79..993fadd143 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 a0dccc9b8b..1fb41bcef1 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 a0bfec42f5..074520b1b2 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 642ac52836..25c235bc1f 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 05885e4407..d138225629 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 42257c3fcb..107638bc14 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 d68fa6ff69..607d8dc974 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 85c1e56fa7..48928b51ad 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 99fa00e800..e4de978655 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 0e9b730a0d..375dd298c4 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 88e7751500..b201dcb563 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 958f155032..119b47b900 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 a5d3947da3..431ec40201 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 87623fa096..ac3ef6d89a 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 5fc14b6505..ae6d934320 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 896d54cecf..7d79679d4b 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 1c4a16b601..38f11681e9 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 221be88175..c241be33e0 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 958498e228..37116b3392 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 a2d3ce0bb9..b3c4892aac 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 1ac4821393..1558a8dfb5 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 0e8cc800bf..cddf11ac27 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 2e857a3b51..31eb4e6fc6 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 8376c0eaaf..f952239c7d 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 fc90f9268d..1ddead1cea 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 8a33bcd564..055bb7059e 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 82258dcdd5..82eeca67e3 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 117ce7c036..c4d540c801 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 14df5f6472..675455621a 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 46739ee04e..4babeda315 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 63a3797114..73d8bb93af 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 74f0cacc63..e4021f8902 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 104c6deb89..d960230ab2 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 b8ac7eab3f..a75dcdac7a 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 4ab2ec093c..ac7ff9625f 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 b180c33074..f070fd355f 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 6e8eaaf904..d697ed3d6c 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 3c516f9111..69e263e989 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 d636fbdb02..ddea61a1b7 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 327c3705a6..d5a1e56946 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 4c1fae2158..76a4058a8c 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 59f1464622..d51c6678ef 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 b722279802..d8cd20d5a4 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 b92ac3b0a7..f98b29ec38 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 0ed741a1fd..fe5e0855e2 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 d3b13a60a6..225087644a 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 0a5e79dcb4..a981513f95 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 fcec1ab8dd..66dbe5a2f1 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 2df36d83a2..8d6631417a 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 84a54d4691..4563847824 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 d1d1c8588d..797959b99d 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 a3bd9c61b9..0b1dcb139b 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 6422538501..0386e89b23 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 8ec258ad95..f6d34bc74e 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 15c485756b..60df236497 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 91a0d5a870..d286eee043 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 7d27d57a9f..b1087b37cb 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 33a618f4e1..e451e3c305 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 ba18ffe767..fa50511df0 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 deca28c3f9..65b629d17d 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 18ff965030..858c1bae90 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 250342877e..9e473cd325 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 b883b9a92c..f705a495af 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 bc26055809..a94952d494 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 8219830eb4..d627a6f378 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 5aeb4837f7..26d51ffffc 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 38145bf658..f6d926c6f8 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 1d9b286ce0..13c0434799 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 b47bd78a80..b9f3ae7266 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 3f76167a46..d15c08ead4 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 da2e66abc2..f83a5e2306 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 097c8c7a00..54a7d3668a 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 ca941817cd..2139ae2bbf 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 a0e64e6683..3da80184d3 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 f5a11c3164..44aace37b9 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 5fbd58cfb3..d2a9fac5aa 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 a3535867d4..cb6d8ee964 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 e1c6164d4f..2be5f72632 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 bd374ddf5a..4a32a53007 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 f904c9a51f..6b3239af91 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 b4461550ec..9712b092f6 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 85b6a90a1b..2b74a36325 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 0a92f6d22c..801bb8a33e 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 7c2d3df724..f51e812d3d 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 e47469dc8e..87d69d4cca 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 6529562c75..86a9824e1c 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 eb4d345b77..45cc71ff86 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 ecfc2c9e9d..50baf269c4 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 3a3fbe710c..e83a844453 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 d6d7b7c302..e05f2eda9d 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 a1c5ce4cf7..edd8e6e669 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 2a91e98792..991a04157a 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 86bc1b10d5..d03e68da5a 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 67d7497384..5b77a51ff9 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 db3ecc7272..0cb8869eb5 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 3183b2d16b..4db7443ece 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 d54fdac63f..4c6ff30342 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 10364ade1a..edd2970b2e 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 06d446185e..59c77864e2 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 4f14bd6b2b..c94e8ea49f 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 e123722f66..e4e6a986db 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 a0c7d01a1d..a3d9829f2a 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 60925bde55..aea6088d70 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 8c7107e414..68d4d994e6 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 42733cf058..9da268a5ee 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 9f8d2bb365..258f8ac3e5 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 dd70efbd36..7d89a7ad52 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 71ca8fe67f..5fe8149b27 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 ff42ecfce9..eed45d2c9e 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 25b89997ef..635407b7f1 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 bc5b0a970e..c68a84198f 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 b003d7dafd..712a053cdb 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 ede80eb8df..76d6fce882 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 0dd51c0cc2..5b865f968b 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 afeab31207..88243878e4 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 ed23848bbb..d050ed2ce1 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 a078a6405b..0688afad54 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 e583b1442d..0d1f7b5363 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 c1cce017b3..b866be7431 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 97284848f8..c1e6b2eb6c 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 7fdf68dccd..6f44bdff05 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 6c96be9f78..9c6666271c 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 111bc6b1d6..612383f31d 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 1caded637b..9dbe820e08 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 a654a51557..250fb6649d 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 a0d57145ee..b37925324c 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 24409457a9..50389ad6f1 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 3b753f31b1..1d3c6c6f86 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 bddef0065f..f737bb3651 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 1ec4db6ffe..e8e66517d8 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 c50a89de79..d17fe78f7c 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 14ebc4d206..ac4fc799e4 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 84ae46a19f..7586c9f604 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 89c678e093..b01b56ddee 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 26f093240d..f67ef09620 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 7f8b79d472..3607938c05 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 0784250223..2181154f76 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 c7a8ed15a9..850f4c43b6 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 57d9223d05..d072fc9dd6 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 5e3ade041b..4d83cdce23 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 0212163687..470783e0af 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 b72f4f3d4e..d3d1c3cef2 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 922c9a793d..e664a365b7 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 00074fe3de..e3690fddba 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 2e0fc86938..8e64bb9e52 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 370eebcc0c..30cff5cc0d 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 571fcfe36f..d386ef2b5c 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 5589032369..80f85a9f75 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 f6b025f8f6..d96f8470e4 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 79dc60cfe6..7e6eced91b 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 507bcefb33..d0e3858d1f 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 1e8a93ebbe..5f60e62a49 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 31df0d6611..dd373e99a3 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 41ac58d9af..f0b00a98ba 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 8e3ae3dbd5..659a18a881 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 db9299a27c..6ef008351b 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 ce491f5685..fb31d19920 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 854d09b37e..9ce72fbdcb 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 1984ae017b..24e140fe2c 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 5deed7bce7..51b07f6796 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 19323c56c5..cc07d60806 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 bde2ae80e2..865316682e 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 3c45ab8922..24381fad89 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 74dd074377..23a5b17bad 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 a5e752204f..3a6a537f5c 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 34827a754d..fc342c60ad 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 eb42111f02..61f0f71e47 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 9053360257..028049e832 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 27eb2fe928..e9892dabbd 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 649c3ac341..265ced956a 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 ed0a1e1f11..43d2602aa0 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 3b48b2c7f5..9a36018faa 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 23230b89f6..e51ec8322a 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 577cbf22ed..8b3db97434 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 d63cce6dc9..b8d66149c4 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 5352281e46..45b912e9d9 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 7b2f5da4f7..2332fa0443 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 309fb2158d..7b6d46e9b0 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 f7dc392fb5..a18776a2ff 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 a73e342cc4..4f0e6ce861 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 cf7cd7cf12..a7d0acdd2f 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 f14d8ebe06..7aaf46d503 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 53cda433c3..6947b6180f 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 e71e8b28cc..07cd413756 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 ef90a7a905..44b90b6e46 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 938740a413..35aafe1d40 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 32fd85a855..8250da283f 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 daa230d6aa..0460d8c985 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 a7ac4b5bd1..a3b6b96135 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 3d23c146ff..dbe95b0077 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 6e6c7d730e..c2eae10b4f 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 0d6dd26f59..70f55a19fd 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 e0f06e3526..ec27696a35 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 bdfebf3282..d253d78e50 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 e974d1b7ce..9ad08bebfd 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 15e7f7be95..68cdae91a2 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 74089f530b..4bb902070c 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 929f27ceb3..74975b4ee6 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 289f6ec3ab..4ae56481f2 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 5b45b976af..b96d9a9a71 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 4c91e35038..adcc29788a 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 b1223abe53..37c753a675 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 649bf7cf2d..a8f4cfda51 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 145e24626c..ac8a812ac6 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 21fe8439d7..6965735f4a 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 947aba24de..1b5a7791f7 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 05e602a81d..5ade8cf312 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 7e881be28e..2df2a78986 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 3105af123a..c5d21db64c 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 b77db39c7b..04f48c5cf5 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 359970e50a..d87e4a79ac 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 c32f35d337..44db9ef1f9 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 d3b0f75a0d..0392d894cc 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 1b27935208..4402dc0a4e 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 9a3f2fb76a..69ab06ef63 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 74bf4f679d..40b9fbbfe9 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 6184a9ac70..445a01d7e1 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 0f0afe6e9c..b9a71cd8ef 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 9de0caf83c..1280f782f9 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 ba4d4cc144..cdb6a53879 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 65d61aed48..da28ef6f9d 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 0abdf43ecb..bec9b9315f 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 60e337a8c3..a9bb3643cd 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 e94cd5a513..6dda0ad085 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 6da88f127f..242ca9076e 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 8d466ed407..a503c22a4b 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 bbee4b3786..e4b3a67be6 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 7ba1959bdf..7a501b7afe 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 021d3e5293..35b2e472f4 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 3d75f732fe..1bc3159c48 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 01321ff435..ff6d1d4742 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 26c73689b7..b7657a87c3 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 6f91f8570d..9105802eef 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 f6daad4032..55c1da48ef 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 38d15c0656..9d69e9baf1 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 fa5b1495ab..b85b2e2f8d 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 055235b397..084aa258bc 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 d2e998f382..db946887f3 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 4185dc26ef..9ebf0cb8b4 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 da8a5994e1..6a691255f6 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 bd58c9217c..840b2ca282 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 ea2776b277..720dc3fd46 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); From 8ab4f5b45435b99f907d3794ca19456059ab1d53 Mon Sep 17 00:00:00 2001 From: igoudt Date: Sat, 20 May 2017 00:22:08 +0200 Subject: [PATCH 3/6] finised all creaturetypes --- .../mage/cards/b/BalduvianTradingPost.java | 3 +- Mage.Sets/src/mage/cards/b/BantPanorama.java | 11 +- Mage.Sets/src/mage/cards/b/BaronSengir.java | 3 +- Mage.Sets/src/mage/cards/b/BladeSplicer.java | 3 +- .../src/mage/cards/b/BlanchwoodArmor.java | 7 +- .../src/mage/cards/b/BloodlineKeeper.java | 3 +- Mage.Sets/src/mage/cards/b/BogGlider.java | 3 +- .../src/mage/cards/b/BoggartHarbinger.java | 3 +- Mage.Sets/src/mage/cards/b/Broodwarden.java | 5 +- .../mage/cards/b/BrunaLightOfAlabaster.java | 7 +- .../src/mage/cards/c/CatapultMaster.java | 3 +- Mage.Sets/src/mage/cards/c/CatapultSquad.java | 3 +- .../src/mage/cards/c/CateranPersuader.java | 3 +- .../src/mage/cards/c/CavalryPegasus.java | 3 +- .../mage/cards/c/ChainerDementiaMaster.java | 4 +- .../src/mage/cards/c/ChiefOfTheEdge.java | 3 +- Mage.Sets/src/mage/cards/c/ChokingSands.java | 3 +- .../src/mage/cards/c/CloakAndDagger.java | 2 +- .../src/mage/cards/c/CloudgoatRanger.java | 3 +- .../src/mage/cards/c/ContestedCliffs.java | 3 +- Mage.Sets/src/mage/cards/c/CoralAtoll.java | 3 +- .../src/mage/cards/c/CoralhelmCommander.java | 3 +- Mage.Sets/src/mage/cards/c/Crash.java | 3 +- .../src/mage/cards/c/CrownOfTheAges.java | 3 +- Mage.Sets/src/mage/cards/c/CruelRevival.java | 5 +- .../src/mage/cards/d/DaringDemolition.java | 3 +- .../src/mage/cards/d/DayOfTheDragons.java | 7 +- Mage.Sets/src/mage/cards/d/Daze.java | 3 +- .../src/mage/cards/d/DerangedOutcast.java | 3 +- .../src/mage/cards/d/DevouringGreed.java | 3 +- Mage.Sets/src/mage/cards/d/DevouringRage.java | 3 +- Mage.Sets/src/mage/cards/d/DevoutHarpist.java | 3 +- .../src/mage/cards/d/DiffusionSliver.java | 3 +- .../src/mage/cards/d/DormantVolcano.java | 3 +- .../mage/cards/d/DragonlordsPrerogative.java | 5 +- Mage.Sets/src/mage/cards/d/Dragonstorm.java | 3 +- .../src/mage/cards/d/DwarvenRecruiter.java | 3 +- .../cards/e/EidolonOfCountlessBattles.java | 3 +- .../src/mage/cards/e/ElvishChampion.java | 3 +- .../src/mage/cards/e/EmeriaTheSkyRuin.java | 3 +- .../src/mage/cards/e/EndlessHorizons.java | 7 +- Mage.Sets/src/mage/cards/e/Ensnare.java | 4 +- .../src/mage/cards/e/EverbarkShaman.java | 5 +- Mage.Sets/src/mage/cards/e/Evershrike.java | 8 +- .../src/mage/cards/e/EzuriRenegadeLeader.java | 9 +- .../src/mage/cards/f/FaerieHarbinger.java | 3 +- Mage.Sets/src/mage/cards/f/Farseek.java | 9 +- .../src/mage/cards/f/FelhideBrawler.java | 3 +- Mage.Sets/src/mage/cards/f/FeverCharm.java | 3 +- .../src/mage/cards/f/FlagstonesOfTrokair.java | 3 +- Mage.Sets/src/mage/cards/f/FlowOfIdeas.java | 3 +- Mage.Sets/src/mage/cards/f/FromBeyond.java | 3 +- .../src/mage/cards/g/GallowsAtWillowHill.java | 3 +- Mage.Sets/src/mage/cards/g/GatewayShade.java | 3 +- .../src/mage/cards/g/GiltLeafPalace.java | 3 +- Mage.Sets/src/mage/cards/g/Glorybringer.java | 3 +- .../src/mage/cards/g/GoblinRecruiter.java | 3 +- .../src/mage/cards/g/GoblinWarStrike.java | 3 +- .../src/mage/cards/g/GoldmeadowStalwart.java | 3 +- .../src/mage/cards/g/GrasslandCrusader.java | 3 +- Mage.Sets/src/mage/cards/g/GreatbowDoyen.java | 2 +- .../cards/g/GuardianOfTheGreatConduit.java | 3 +- .../src/mage/cards/g/GwyllionHedgeMage.java | 5 +- .../src/mage/cards/h/HaazdaExonerator.java | 3 +- .../src/mage/cards/h/HagraDiabolist.java | 3 +- .../src/mage/cards/h/HalimarExcavator.java | 3 +- Mage.Sets/src/mage/cards/h/HarborBandit.java | 3 +- .../src/mage/cards/h/HavengulRunebinder.java | 3 +- Mage.Sets/src/mage/cards/h/HeartSliver.java | 3 +- .../src/mage/cards/h/HeartwoodGiant.java | 3 +- Mage.Sets/src/mage/cards/h/HeavyTrooper.java | 3 +- Mage.Sets/src/mage/cards/h/HeedlessOne.java | 3 +- Mage.Sets/src/mage/cards/h/HeroOfIroas.java | 3 +- Mage.Sets/src/mage/cards/h/HighTide.java | 3 +- Mage.Sets/src/mage/cards/h/HomingSliver.java | 11 +- .../mage/cards/h/HondenOfCleansingFire.java | 3 +- .../src/mage/cards/h/HorrorOfHorrors.java | 3 +- Mage.Sets/src/mage/cards/h/HowlpackWolf.java | 2 +- Mage.Sets/src/mage/cards/i/Immerwolf.java | 2 +- .../src/mage/cards/i/IndulgentAristocrat.java | 3 +- .../src/mage/cards/i/InspiredSprite.java | 3 +- .../mage/cards/i/IsaoEnlightenedBushi.java | 3 +- Mage.Sets/src/mage/cards/j/JediEnclave.java | 11 +- Mage.Sets/src/mage/cards/j/JoragaBard.java | 3 +- .../src/mage/cards/j/JoragaTreespeaker.java | 3 +- .../src/mage/cards/j/JoragaWarcaller.java | 2 +- .../src/mage/cards/j/JorubaiMurkLurker.java | 3 +- Mage.Sets/src/mage/cards/j/JumpTrooper.java | 5 +- Mage.Sets/src/mage/cards/j/JungleVillage.java | 11 +- .../src/mage/cards/j/JwariShapeshifter.java | 3 +- .../mage/cards/k/KalitasTraitorOfGhet.java | 4 +- .../mage/cards/k/KarrthusTyrantOfJund.java | 4 +- .../mage/cards/k/KazuulsTollCollector.java | 3 +- Mage.Sets/src/mage/cards/k/KingSuleiman.java | 5 +- .../src/mage/cards/k/KothOfTheHammer.java | 5 +- .../src/mage/cards/k/KozileksReturn.java | 3 +- .../mage/cards/l/LamplighterOfSelhoff.java | 3 +- Mage.Sets/src/mage/cards/l/LandGrant.java | 3 +- .../src/mage/cards/l/LandbindRitual.java | 3 +- Mage.Sets/src/mage/cards/l/LifeAndLimb.java | 22 +- Mage.Sets/src/mage/cards/l/Lifetap.java | 3 +- .../mage/cards/l/LilianaOfTheDarkRealms.java | 11 +- Mage.Sets/src/mage/cards/l/Lithophage.java | 3 +- Mage.Sets/src/mage/cards/l/LlanowarDruid.java | 3 +- Mage.Sets/src/mage/cards/l/LoamLion.java | 3 +- .../src/mage/cards/l/LordOfAtlantis.java | 3 +- .../src/mage/cards/l/LordOfTheUndead.java | 5 +- .../src/mage/cards/l/LordOfTheUnreal.java | 3 +- .../src/mage/cards/l/LysAlanaScarblade.java | 5 +- .../src/mage/cards/m/MalakirBloodwitch.java | 3 +- .../src/mage/cards/m/MarchFromTheTomb.java | 3 +- Mage.Sets/src/mage/cards/m/MassAppeal.java | 3 +- .../src/mage/cards/m/MasterApothecary.java | 3 +- .../src/mage/cards/m/MidnightEntourage.java | 7 +- Mage.Sets/src/mage/cards/m/MoggAlarm.java | 3 +- Mage.Sets/src/mage/cards/m/MurmuringBosk.java | 3 +- Mage.Sets/src/mage/cards/m/Mutilate.java | 3 +- .../src/mage/cards/m/MwonvuliAcidMoss.java | 3 +- Mage.Sets/src/mage/cards/m/MyrMatrix.java | 3 +- .../mage/cards/n/NecromancersCovenant.java | 7 +- .../src/mage/cards/n/NightfireGiant.java | 3 +- .../src/mage/cards/n/NightmareIncursion.java | 7 +- .../src/mage/cards/o/OgreGeargrabber.java | 7 +- Mage.Sets/src/mage/cards/o/OgreSlumlord.java | 3 +- .../src/mage/cards/o/OliviasBloodsworn.java | 3 +- Mage.Sets/src/mage/cards/o/OozeGarden.java | 3 +- .../src/mage/cards/o/OreskosExplorer.java | 7 +- Mage.Sets/src/mage/cards/p/PortTown.java | 5 +- Mage.Sets/src/mage/cards/p/ProwlersHelm.java | 2 +- Mage.Sets/src/mage/cards/p/PureSimple.java | 3 +- Mage.Sets/src/mage/cards/r/Ragemonger.java | 3 +- .../src/mage/cards/r/RampartCrawler.java | 3 +- .../src/mage/cards/r/RashidaScalebane.java | 3 +- Mage.Sets/src/mage/cards/r/RathiAssassin.java | 3 +- Mage.Sets/src/mage/cards/r/RathiDragon.java | 3 +- Mage.Sets/src/mage/cards/r/RathiFiend.java | 3 +- .../src/mage/cards/r/RavenousBaloth.java | 3 +- .../src/mage/cards/r/ReaperFromTheAbyss.java | 3 +- Mage.Sets/src/mage/cards/r/RebelInformer.java | 3 +- .../src/mage/cards/r/RepelTheAbominable.java | 3 +- Mage.Sets/src/mage/cards/r/RhysTheExiled.java | 9 +- .../src/mage/cards/r/RibbonsOfTheReikai.java | 3 +- .../src/mage/cards/r/RiptideDirector.java | 3 +- Mage.Sets/src/mage/cards/s/SacredMesa.java | 3 +- Mage.Sets/src/mage/cards/s/SavaenElves.java | 3 +- .../src/mage/cards/s/ScionOfTheUrDragon.java | 2 +- Mage.Sets/src/mage/cards/s/Seahunter.java | 3 +- Mage.Sets/src/mage/cards/s/SedgeTroll.java | 3 +- .../src/mage/cards/s/SeshiroTheAnointed.java | 7 +- Mage.Sets/src/mage/cards/s/ShadowSliver.java | 3 +- .../src/mage/cards/s/ShadowbornDemon.java | 3 +- .../src/mage/cards/s/ShaleskinBruiser.java | 3 +- .../src/mage/cards/s/ShamanOfThePack.java | 3 +- .../src/mage/cards/s/ShiftingSliver.java | 5 +- .../src/mage/cards/s/ShorelineRaider.java | 3 +- .../src/mage/cards/s/SidewinderSliver.java | 3 +- Mage.Sets/src/mage/cards/s/SiegeDragon.java | 9 +- .../src/mage/cards/s/SiegeModification.java | 7 +- Mage.Sets/src/mage/cards/s/SigardasAid.java | 10 +- .../mage/cards/s/SilvergladeElemental.java | 3 +- .../src/mage/cards/s/SkyshroudPoacher.java | 3 +- .../src/mage/cards/s/SlaveringNulls.java | 3 +- Mage.Sets/src/mage/cards/s/SliverHive.java | 5 +- .../mage/cards/s/SovereignsOfLostAlara.java | 3 +- .../src/mage/cards/s/SpawnOfThraxes.java | 3 +- .../src/mage/cards/s/SpectralShepherd.java | 3 +- .../src/mage/cards/s/SpinneretSliver.java | 3 +- Mage.Sets/src/mage/cards/s/SpiritBonds.java | 5 +- .../src/mage/cards/s/SqueakingPieSneak.java | 3 +- .../src/mage/cards/s/SramSeniorEdificer.java | 7 +- .../src/mage/cards/s/StarfieldOfNyx.java | 2 +- .../src/mage/cards/s/SteelshapersGift.java | 3 +- Mage.Sets/src/mage/cards/s/StrongarmThug.java | 3 +- .../src/mage/cards/s/SurgeOfThoughtweft.java | 3 +- Mage.Sets/src/mage/cards/t/TaintedIsle.java | 3 +- Mage.Sets/src/mage/cards/t/TaintedWood.java | 3 +- .../src/mage/cards/t/TakenosCavalry.java | 3 +- Mage.Sets/src/mage/cards/t/TawnossCoffin.java | 5 +- Mage.Sets/src/mage/cards/t/TeferisRealm.java | 7 +- Mage.Sets/src/mage/cards/t/Tek.java | 11 +- .../mage/cards/t/TelJiladLifebreather.java | 3 +- .../src/mage/cards/t/TheloniteDruid.java | 7 +- .../src/mage/cards/t/TheloniteHermit.java | 3 +- .../src/mage/cards/t/ThicketBasilisk.java | 3 +- .../src/mage/cards/t/ThornbowArcher.java | 3 +- Mage.Sets/src/mage/cards/t/Tithe.java | 3 +- Mage.Sets/src/mage/cards/t/TotemSpeaker.java | 3 +- .../src/mage/cards/t/TranquilDomain.java | 3 +- .../src/mage/cards/u/UgnaughtScrapWorker.java | 3 +- .../src/mage/cards/u/UktabiWildcats.java | 5 +- .../src/mage/cards/u/UndeadWarchief.java | 5 +- Mage.Sets/src/mage/cards/u/Unforge.java | 3 +- Mage.Sets/src/mage/cards/u/UrgeToFeed.java | 7 +- Mage.Sets/src/mage/cards/u/UtopiaMycon.java | 3 +- .../src/mage/cards/u/UtvaraHellkite.java | 3 +- .../src/mage/cards/w/WarrenInstigator.java | 3 +- Mage.Sets/src/mage/cards/w/WayOfTheThief.java | 8 +- Mage.Sets/src/mage/cards/w/WhelmingWave.java | 9 +- .../src/mage/cards/x/XathridNecromancer.java | 3 +- .../src/mage/cards/y/YukoraThePrisoner.java | 5 +- Mage.Sets/src/mage/cards/z/ZombieMaster.java | 3 +- .../src/mage/cards/z/ZombieTrailblazer.java | 3 +- .../mage/test/multiplayer/SimpleGameTest.java | 3 +- .../src/main/java/mage/constants/SubType.java | 195 +++++++++++++++++- .../emblems/GideonOfTheTrialsEmblem.java | 3 +- .../emblems/LilianaOfTheDarkRealmsEmblem.java | 3 +- 206 files changed, 641 insertions(+), 375 deletions(-) diff --git a/Mage.Sets/src/mage/cards/b/BalduvianTradingPost.java b/Mage.Sets/src/mage/cards/b/BalduvianTradingPost.java index 09ddfe4c5e..494cb6aa9d 100644 --- a/Mage.Sets/src/mage/cards/b/BalduvianTradingPost.java +++ b/Mage.Sets/src/mage/cards/b/BalduvianTradingPost.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.Predicates; @@ -59,7 +60,7 @@ public class BalduvianTradingPost extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Mountain"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/b/BantPanorama.java b/Mage.Sets/src/mage/cards/b/BantPanorama.java index 8a516cdacc..5f0fc0751a 100644 --- a/Mage.Sets/src/mage/cards/b/BantPanorama.java +++ b/Mage.Sets/src/mage/cards/b/BantPanorama.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; @@ -60,9 +57,9 @@ public class BantPanorama extends CardImpl { filter.add(new CardTypePredicate(CardType.LAND)); filter.add(new SupertypePredicate(SuperType.BASIC)); filter.add(Predicates.or( - new SubtypePredicate("Forest"), - new SubtypePredicate("Plains"), - new SubtypePredicate("Island"))); + new SubtypePredicate(SubType.FOREST), + new SubtypePredicate(SubType.PLAINS), + new SubtypePredicate(SubType.ISLAND))); } public BantPanorama(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BaronSengir.java b/Mage.Sets/src/mage/cards/b/BaronSengir.java index bee4ca06ee..757d4ef3ce 100644 --- a/Mage.Sets/src/mage/cards/b/BaronSengir.java +++ b/Mage.Sets/src/mage/cards/b/BaronSengir.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.SuperType; import mage.constants.Zone; import mage.counters.CounterType; @@ -57,7 +58,7 @@ public class BaronSengir extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target Vampire"); static { - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/b/BladeSplicer.java b/Mage.Sets/src/mage/cards/b/BladeSplicer.java index 2a51a47972..5ead2fb96b 100644 --- a/Mage.Sets/src/mage/cards/b/BladeSplicer.java +++ b/Mage.Sets/src/mage/cards/b/BladeSplicer.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.CardTypePredicate; @@ -55,7 +56,7 @@ public class BladeSplicer extends CardImpl { static { filter.add(new CardTypePredicate(CardType.CREATURE)); - filter.add(new SubtypePredicate("Golem")); + filter.add(new SubtypePredicate(SubType.GOLEM)); } public BladeSplicer (UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BlanchwoodArmor.java b/Mage.Sets/src/mage/cards/b/BlanchwoodArmor.java index 4feed5616c..08e5520afc 100644 --- a/Mage.Sets/src/mage/cards/b/BlanchwoodArmor.java +++ b/Mage.Sets/src/mage/cards/b/BlanchwoodArmor.java @@ -35,10 +35,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.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; @@ -55,7 +52,7 @@ public class BlanchwoodArmor extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forest you control"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public BlanchwoodArmor(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BloodlineKeeper.java b/Mage.Sets/src/mage/cards/b/BloodlineKeeper.java index ba7c64371c..1d5bdff0bd 100644 --- a/Mage.Sets/src/mage/cards/b/BloodlineKeeper.java +++ b/Mage.Sets/src/mage/cards/b/BloodlineKeeper.java @@ -44,6 +44,7 @@ import mage.cards.CardSetInfo; import mage.cards.l.LordOfLineage; import mage.constants.CardType; import mage.constants.ComparisonType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -58,7 +59,7 @@ public class BloodlineKeeper extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control five or more Vampires"); static { - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); } public BloodlineKeeper(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BogGlider.java b/Mage.Sets/src/mage/cards/b/BogGlider.java index 4f5c07a420..8f624dc586 100644 --- a/Mage.Sets/src/mage/cards/b/BogGlider.java +++ b/Mage.Sets/src/mage/cards/b/BogGlider.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.FilterControlledLandPermanent; import mage.filter.common.FilterControlledPermanent; @@ -59,7 +60,7 @@ public class BogGlider extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 2 or less"); static { - filter.add(new SubtypePredicate("Mercenary")); + filter.add(new SubtypePredicate(SubType.MERCENARY)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 3)); } diff --git a/Mage.Sets/src/mage/cards/b/BoggartHarbinger.java b/Mage.Sets/src/mage/cards/b/BoggartHarbinger.java index 6db78c932a..e82fff3043 100644 --- a/Mage.Sets/src/mage/cards/b/BoggartHarbinger.java +++ b/Mage.Sets/src/mage/cards/b/BoggartHarbinger.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; @@ -48,7 +49,7 @@ public class BoggartHarbinger extends CardImpl { private static final FilterCard filter = new FilterCard("Goblin card"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public BoggartHarbinger(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/Broodwarden.java b/Mage.Sets/src/mage/cards/b/Broodwarden.java index 46af2fc33b..477f268948 100644 --- a/Mage.Sets/src/mage/cards/b/Broodwarden.java +++ b/Mage.Sets/src/mage/cards/b/Broodwarden.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,8 +50,8 @@ public class Broodwarden extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Eldrazi Spawn creatures"); static { - filter.add(new SubtypePredicate("Eldrazi")); - filter.add(new SubtypePredicate("Spawn")); + filter.add(new SubtypePredicate(SubType.ELDRAZI)); + filter.add(new SubtypePredicate(SubType.SPAWN)); } public Broodwarden(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BrunaLightOfAlabaster.java b/Mage.Sets/src/mage/cards/b/BrunaLightOfAlabaster.java index 9d5f7f5a44..a6294d520f 100644 --- a/Mage.Sets/src/mage/cards/b/BrunaLightOfAlabaster.java +++ b/Mage.Sets/src/mage/cards/b/BrunaLightOfAlabaster.java @@ -36,10 +36,7 @@ import mage.abilities.keyword.VigilanceAbility; import mage.cards.Card; 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.FilterPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -109,7 +106,7 @@ class BrunaLightOfAlabasterEffect extends OneShotEffect { FilterCard filterAuraCard = new FilterCard("Aura card"); filterAura.add(new CardTypePredicate(CardType.ENCHANTMENT)); - filterAura.add(new SubtypePredicate("Aura")); + filterAura.add(new SubtypePredicate(SubType.AURA)); filterAura.add(new AuraPermanentCanAttachToPermanentId(bruna)); filterAuraCard.add(new CardTypePredicate(CardType.ENCHANTMENT)); filterAuraCard.add(new SubtypePredicate("Aura")); diff --git a/Mage.Sets/src/mage/cards/c/CatapultMaster.java b/Mage.Sets/src/mage/cards/c/CatapultMaster.java index 9b43eaf3ec..e951c2358e 100644 --- a/Mage.Sets/src/mage/cards/c/CatapultMaster.java +++ b/Mage.Sets/src/mage/cards/c/CatapultMaster.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.ExileTargetEffect; 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 CatapultMaster extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public CatapultMaster(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}"); diff --git a/Mage.Sets/src/mage/cards/c/CatapultSquad.java b/Mage.Sets/src/mage/cards/c/CatapultSquad.java index 7c8bd69d1e..e92faf35fd 100644 --- a/Mage.Sets/src/mage/cards/c/CatapultSquad.java +++ b/Mage.Sets/src/mage/cards/c/CatapultSquad.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.FilterAttackingOrBlockingCreature; import mage.filter.common.FilterControlledPermanent; @@ -56,7 +57,7 @@ public class CatapultSquad extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public CatapultSquad(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CateranPersuader.java b/Mage.Sets/src/mage/cards/c/CateranPersuader.java index 2c5b03af29..40868251c2 100644 --- a/Mage.Sets/src/mage/cards/c/CateranPersuader.java +++ b/Mage.Sets/src/mage/cards/c/CateranPersuader.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 CateranPersuader extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 1 or less"); static { - filter.add(new SubtypePredicate("Mercenary")); + filter.add(new SubtypePredicate(SubType.MERCENARY)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 2)); } diff --git a/Mage.Sets/src/mage/cards/c/CavalryPegasus.java b/Mage.Sets/src/mage/cards/c/CavalryPegasus.java index 1801682ff9..20451c1c26 100644 --- a/Mage.Sets/src/mage/cards/c/CavalryPegasus.java +++ b/Mage.Sets/src/mage/cards/c/CavalryPegasus.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.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class CavalryPegasus extends CardImpl { private static final FilterPermanent filter = new FilterCreaturePermanent("each attacking Human"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); filter.add(new AttackingPredicate()); } diff --git a/Mage.Sets/src/mage/cards/c/ChainerDementiaMaster.java b/Mage.Sets/src/mage/cards/c/ChainerDementiaMaster.java index 925a56dd94..17cc2ac5bc 100644 --- a/Mage.Sets/src/mage/cards/c/ChainerDementiaMaster.java +++ b/Mage.Sets/src/mage/cards/c/ChainerDementiaMaster.java @@ -68,8 +68,8 @@ public class ChainerDementiaMaster extends CardImpl { private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("Nightmare creatures"); private static final FilterPermanent filterPermanent = new FilterPermanent("Nightmares"); static { - filterCreature.add(new SubtypePredicate("Nightmare")); - filterPermanent.add(new SubtypePredicate("Nightmare")); + filterCreature.add(new SubtypePredicate(SubType.NIGHTMARE)); + filterPermanent.add(new SubtypePredicate(SubType.NIGHTMARE)); } public ChainerDementiaMaster(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/ChiefOfTheEdge.java b/Mage.Sets/src/mage/cards/c/ChiefOfTheEdge.java index 82a0fd9512..5df0b5220a 100644 --- a/Mage.Sets/src/mage/cards/c/ChiefOfTheEdge.java +++ b/Mage.Sets/src/mage/cards/c/ChiefOfTheEdge.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 ChiefOfTheEdge extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Warrior creatures"); static { - filter.add(new SubtypePredicate("Warrior")); + filter.add(new SubtypePredicate(SubType.WARRIOR)); } public ChiefOfTheEdge(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/ChokingSands.java b/Mage.Sets/src/mage/cards/c/ChokingSands.java index 43ffc50b91..74effdcd6d 100644 --- a/Mage.Sets/src/mage/cards/c/ChokingSands.java +++ b/Mage.Sets/src/mage/cards/c/ChokingSands.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.Zone; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.Predicates; @@ -54,7 +55,7 @@ public class ChokingSands extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("non-Swamp land"); static { - filter.add(Predicates.not(new SubtypePredicate("Swamp"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.SWAMP))); } public ChokingSands(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CloakAndDagger.java b/Mage.Sets/src/mage/cards/c/CloakAndDagger.java index f862bf77b0..16a4f71ab9 100644 --- a/Mage.Sets/src/mage/cards/c/CloakAndDagger.java +++ b/Mage.Sets/src/mage/cards/c/CloakAndDagger.java @@ -53,7 +53,7 @@ public class CloakAndDagger extends CardImpl { private static final FilterPermanent filter = new FilterCreaturePermanent("a Rogue creature"); static { - filter.add(new SubtypePredicate("Rogue")); + filter.add(new SubtypePredicate(SubType.ROGUE)); } public CloakAndDagger(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CloudgoatRanger.java b/Mage.Sets/src/mage/cards/c/CloudgoatRanger.java index c312b410f9..e2e4ab4b6b 100644 --- a/Mage.Sets/src/mage/cards/c/CloudgoatRanger.java +++ b/Mage.Sets/src/mage/cards/c/CloudgoatRanger.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.Predicates; @@ -61,7 +62,7 @@ public class CloudgoatRanger extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Kithkin")); + filter.add(new SubtypePredicate(SubType.KITHKIN)); } public CloudgoatRanger(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/ContestedCliffs.java b/Mage.Sets/src/mage/cards/c/ContestedCliffs.java index b5a5596755..b10fbf21cc 100644 --- a/Mage.Sets/src/mage/cards/c/ContestedCliffs.java +++ b/Mage.Sets/src/mage/cards/c/ContestedCliffs.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.TargetController; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; @@ -57,7 +58,7 @@ public class ContestedCliffs extends CardImpl { private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creature an opponent controls"); static { filter1.add(new ControllerPredicate(TargetController.YOU)); - filter1.add(new SubtypePredicate("Beast")); + filter1.add(new SubtypePredicate(SubType.BEAST)); filter2.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/c/CoralAtoll.java b/Mage.Sets/src/mage/cards/c/CoralAtoll.java index f0c26e7249..92ec8b950b 100644 --- a/Mage.Sets/src/mage/cards/c/CoralAtoll.java +++ b/Mage.Sets/src/mage/cards/c/CoralAtoll.java @@ -37,6 +37,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; @@ -55,7 +56,7 @@ public class CoralAtoll extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("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/c/CoralhelmCommander.java b/Mage.Sets/src/mage/cards/c/CoralhelmCommander.java index 230f82b3fc..7d85eecb76 100644 --- a/Mage.Sets/src/mage/cards/c/CoralhelmCommander.java +++ b/Mage.Sets/src/mage/cards/c/CoralhelmCommander.java @@ -41,6 +41,7 @@ import mage.cards.CardSetInfo; import mage.cards.LevelerCard; 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,7 +57,7 @@ public class CoralhelmCommander extends LevelerCard { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Merfolk creatures"); static { - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK)); } public CoralhelmCommander(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/Crash.java b/Mage.Sets/src/mage/cards/c/Crash.java index 336a895961..54c0369383 100644 --- a/Mage.Sets/src/mage/cards/c/Crash.java +++ b/Mage.Sets/src/mage/cards/c/Crash.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.FilterPermanent; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterControlledPermanent; @@ -54,7 +55,7 @@ public class Crash extends CardImpl { static { effectFilter.add(new CardTypePredicate(CardType.ARTIFACT)); - alternativeCostFilter.add(new SubtypePredicate("Mountain")); + alternativeCostFilter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public Crash(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CrownOfTheAges.java b/Mage.Sets/src/mage/cards/c/CrownOfTheAges.java index df45382d5f..2a88e6f345 100644 --- a/Mage.Sets/src/mage/cards/c/CrownOfTheAges.java +++ b/Mage.Sets/src/mage/cards/c/CrownOfTheAges.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.FilterCreaturePermanent; import mage.filter.common.FilterEnchantmentPermanent; @@ -62,7 +63,7 @@ public class CrownOfTheAges extends CardImpl { static { filter.add(new AttachmentAttachedToCardTypePredicate(CardType.CREATURE)); - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public CrownOfTheAges(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CruelRevival.java b/Mage.Sets/src/mage/cards/c/CruelRevival.java index 581a3b0307..49eaa27da4 100644 --- a/Mage.Sets/src/mage/cards/c/CruelRevival.java +++ b/Mage.Sets/src/mage/cards/c/CruelRevival.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.Zone; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; @@ -58,8 +59,8 @@ public class CruelRevival extends CardImpl { static { filter.add(new CardTypePredicate(CardType.CREATURE)); - filter.add(Predicates.not(new SubtypePredicate("Zombie"))); - filter2.add(new SubtypePredicate("Zombie")); + filter.add(Predicates.not(new SubtypePredicate(SubType.ZOMBIE))); + filter2.add(new SubtypePredicate(SubType.ZOMBIE)); } public CruelRevival(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DaringDemolition.java b/Mage.Sets/src/mage/cards/d/DaringDemolition.java index 94e3022dd9..d735eb3ef5 100644 --- a/Mage.Sets/src/mage/cards/d/DaringDemolition.java +++ b/Mage.Sets/src/mage/cards/d/DaringDemolition.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.FilterPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -48,7 +49,7 @@ public class DaringDemolition 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 DaringDemolition(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DayOfTheDragons.java b/Mage.Sets/src/mage/cards/d/DayOfTheDragons.java index 389724f51b..7c6e5bd03c 100644 --- a/Mage.Sets/src/mage/cards/d/DayOfTheDragons.java +++ b/Mage.Sets/src/mage/cards/d/DayOfTheDragons.java @@ -35,10 +35,7 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.Card; 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; @@ -129,7 +126,7 @@ class DayOfTheDragonsLeavesEffect extends OneShotEffect { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public DayOfTheDragonsLeavesEffect() { diff --git a/Mage.Sets/src/mage/cards/d/Daze.java b/Mage.Sets/src/mage/cards/d/Daze.java index 1c63ae7ba4..9b82aa7716 100644 --- a/Mage.Sets/src/mage/cards/d/Daze.java +++ b/Mage.Sets/src/mage/cards/d/Daze.java @@ -34,6 +34,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.FilterControlledPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class Daze extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("an 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/d/DerangedOutcast.java b/Mage.Sets/src/mage/cards/d/DerangedOutcast.java index efc11c0244..59f18bdfb8 100644 --- a/Mage.Sets/src/mage/cards/d/DerangedOutcast.java +++ b/Mage.Sets/src/mage/cards/d/DerangedOutcast.java @@ -36,6 +36,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.FilterControlledPermanent; @@ -53,7 +54,7 @@ public class DerangedOutcast extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Human"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public DerangedOutcast(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DevouringGreed.java b/Mage.Sets/src/mage/cards/d/DevouringGreed.java index aba420ed71..747891db62 100644 --- a/Mage.Sets/src/mage/cards/d/DevouringGreed.java +++ b/Mage.Sets/src/mage/cards/d/DevouringGreed.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.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -53,7 +54,7 @@ public class DevouringGreed extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("any number of Spirits"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public DevouringGreed(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DevouringRage.java b/Mage.Sets/src/mage/cards/d/DevouringRage.java index 4e1badea7a..540b9ce7c6 100644 --- a/Mage.Sets/src/mage/cards/d/DevouringRage.java +++ b/Mage.Sets/src/mage/cards/d/DevouringRage.java @@ -38,6 +38,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.mageobject.SubtypePredicate; import mage.game.Game; @@ -57,7 +58,7 @@ public class DevouringRage extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("any number of Spirits"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public DevouringRage(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DevoutHarpist.java b/Mage.Sets/src/mage/cards/d/DevoutHarpist.java index 746e0c9bfe..f2c6bb5c1a 100644 --- a/Mage.Sets/src/mage/cards/d/DevoutHarpist.java +++ b/Mage.Sets/src/mage/cards/d/DevoutHarpist.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.common.FilterEnchantmentPermanent; import mage.filter.predicate.ObjectPlayer; @@ -54,7 +55,7 @@ public class DevoutHarpist extends CardImpl { private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Auras attached to a creature"); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); filter.add(new DevoutHarpistPredicate()); } public DevoutHarpist(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DiffusionSliver.java b/Mage.Sets/src/mage/cards/d/DiffusionSliver.java index a0560d7747..7da051755c 100644 --- a/Mage.Sets/src/mage/cards/d/DiffusionSliver.java +++ b/Mage.Sets/src/mage/cards/d/DiffusionSliver.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.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -78,7 +79,7 @@ class DiffusionSliverTriggeredAbility extends TriggeredAbilityImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Sliver creature you control"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public DiffusionSliverTriggeredAbility(Effect effect) { diff --git a/Mage.Sets/src/mage/cards/d/DormantVolcano.java b/Mage.Sets/src/mage/cards/d/DormantVolcano.java index 996bb0181a..eae940b5c3 100644 --- a/Mage.Sets/src/mage/cards/d/DormantVolcano.java +++ b/Mage.Sets/src/mage/cards/d/DormantVolcano.java @@ -37,6 +37,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; @@ -55,7 +56,7 @@ public class DormantVolcano extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("an untapped Mountain"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/d/DragonlordsPrerogative.java b/Mage.Sets/src/mage/cards/d/DragonlordsPrerogative.java index 0bfc8768db..ade8b2444c 100644 --- a/Mage.Sets/src/mage/cards/d/DragonlordsPrerogative.java +++ b/Mage.Sets/src/mage/cards/d/DragonlordsPrerogative.java @@ -40,6 +40,7 @@ import mage.abilities.effects.common.InfoEffect; 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.common.FilterControlledPermanent; @@ -60,7 +61,7 @@ public class DragonlordsPrerogative extends CardImpl { private static final FilterCard filter = new FilterCard("a Dragon card from your hand"); static { - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public DragonlordsPrerogative(UUID ownerId, CardSetInfo setInfo) { @@ -107,7 +108,7 @@ class DragonlordsPrerogativeCondition implements Condition { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Dragon"); static { - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } @Override diff --git a/Mage.Sets/src/mage/cards/d/Dragonstorm.java b/Mage.Sets/src/mage/cards/d/Dragonstorm.java index ab637eeb29..2c667ea77f 100644 --- a/Mage.Sets/src/mage/cards/d/Dragonstorm.java +++ b/Mage.Sets/src/mage/cards/d/Dragonstorm.java @@ -32,6 +32,7 @@ import mage.abilities.keyword.StormAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterPermanentCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -47,7 +48,7 @@ public class Dragonstorm extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Dragon permanent card"); static { - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public Dragonstorm(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DwarvenRecruiter.java b/Mage.Sets/src/mage/cards/d/DwarvenRecruiter.java index d8b4514a27..cdc2001dea 100644 --- a/Mage.Sets/src/mage/cards/d/DwarvenRecruiter.java +++ b/Mage.Sets/src/mage/cards/d/DwarvenRecruiter.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.RecruiterEffect; 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; @@ -47,7 +48,7 @@ public class DwarvenRecruiter extends CardImpl { private static final FilterCard filter = new FilterCard("Dwarf cards"); static { - filter.add(new SubtypePredicate("Dwarf")); + filter.add(new SubtypePredicate(SubType.DWARF)); } public DwarvenRecruiter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/EidolonOfCountlessBattles.java b/Mage.Sets/src/mage/cards/e/EidolonOfCountlessBattles.java index a4364612f0..176b9a5171 100644 --- a/Mage.Sets/src/mage/cards/e/EidolonOfCountlessBattles.java +++ b/Mage.Sets/src/mage/cards/e/EidolonOfCountlessBattles.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.Predicates; @@ -57,7 +58,7 @@ public class EidolonOfCountlessBattles extends CardImpl { static { filter.add(Predicates.or( new CardTypePredicate(CardType.CREATURE), - new SubtypePredicate("Aura"))); + new SubtypePredicate(SubType.AURA))); } public EidolonOfCountlessBattles(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/ElvishChampion.java b/Mage.Sets/src/mage/cards/e/ElvishChampion.java index a35f9069c0..0f81295ec5 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishChampion.java +++ b/Mage.Sets/src/mage/cards/e/ElvishChampion.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; @@ -50,7 +51,7 @@ public class ElvishChampion extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf creatures"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public ElvishChampion(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/EmeriaTheSkyRuin.java b/Mage.Sets/src/mage/cards/e/EmeriaTheSkyRuin.java index 66a60f58ad..2741e297ae 100644 --- a/Mage.Sets/src/mage/cards/e/EmeriaTheSkyRuin.java +++ b/Mage.Sets/src/mage/cards/e/EmeriaTheSkyRuin.java @@ -34,6 +34,7 @@ import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterLandPermanent; @@ -78,7 +79,7 @@ class EmeriaTheSkyRuinTriggeredAbility extends TriggeredAbilityImpl { static final FilterLandPermanent filter = new FilterLandPermanent("Plains"); static { - filter.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.PLAINS)); } public EmeriaTheSkyRuinTriggeredAbility() { diff --git a/Mage.Sets/src/mage/cards/e/EndlessHorizons.java b/Mage.Sets/src/mage/cards/e/EndlessHorizons.java index 02cb8b4b95..3e0a72e02d 100644 --- a/Mage.Sets/src/mage/cards/e/EndlessHorizons.java +++ b/Mage.Sets/src/mage/cards/e/EndlessHorizons.java @@ -35,10 +35,7 @@ import mage.abilities.effects.SearchEffect; import mage.cards.Card; 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.FilterCard; import mage.filter.common.FilterLandCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -83,7 +80,7 @@ class EndlessHorizonsEffect extends SearchEffect { private static final FilterLandCard filter = new FilterLandCard("Plains card"); static { - filter.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.PLAINS)); } public EndlessHorizonsEffect() { diff --git a/Mage.Sets/src/mage/cards/e/Ensnare.java b/Mage.Sets/src/mage/cards/e/Ensnare.java index 0a0f7e7e29..e81ff02574 100644 --- a/Mage.Sets/src/mage/cards/e/Ensnare.java +++ b/Mage.Sets/src/mage/cards/e/Ensnare.java @@ -35,6 +35,8 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import static mage.filter.StaticFilters.FILTER_PERMANENT_CREATURES; + +import mage.constants.SubType; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; @@ -48,7 +50,7 @@ public class Ensnare extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("Islands"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public Ensnare(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/EverbarkShaman.java b/Mage.Sets/src/mage/cards/e/EverbarkShaman.java index f13e85f2e4..d1742dbed5 100644 --- a/Mage.Sets/src/mage/cards/e/EverbarkShaman.java +++ b/Mage.Sets/src/mage/cards/e/EverbarkShaman.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; @@ -55,8 +56,8 @@ public class EverbarkShaman extends CardImpl { private static final FilterCard filterTreefolk = new FilterCard("Treefolk from your graveyard"); static { - filterForest.add(new SubtypePredicate("Forest")); - filterTreefolk.add(new SubtypePredicate("Treefolk")); + filterForest.add(new SubtypePredicate(SubType.FOREST)); + filterTreefolk.add(new SubtypePredicate(SubType.TREEFOLK)); } public EverbarkShaman(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/Evershrike.java b/Mage.Sets/src/mage/cards/e/Evershrike.java index 37db61cb5f..fe2f0428ac 100644 --- a/Mage.Sets/src/mage/cards/e/Evershrike.java +++ b/Mage.Sets/src/mage/cards/e/Evershrike.java @@ -29,7 +29,7 @@ package mage.cards.e; import mage.MageInt; import mage.abilities.Ability; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.ManaCostsImpl; @@ -40,10 +40,6 @@ import mage.abilities.keyword.FlyingAbility; 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.filter.FilterCard; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -116,7 +112,7 @@ class EvershrikeEffect extends OneShotEffect { } FilterCard filterAuraCard = new FilterCard("Aura card with converted mana cost X or less from your hand"); filterAuraCard.add(new CardTypePredicate(CardType.ENCHANTMENT)); - filterAuraCard.add(new SubtypePredicate("Aura")); + filterAuraCard.add(new SubtypePredicate(SubType.AURA)); filterAuraCard.add(new AuraCardCanAttachToPermanentId(evershrikePermanent.getId())); filterAuraCard.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, xAmount)); int count = controller.getHand().count(filterAuraCard, game); diff --git a/Mage.Sets/src/mage/cards/e/EzuriRenegadeLeader.java b/Mage.Sets/src/mage/cards/e/EzuriRenegadeLeader.java index cfb039a558..b2f06395f9 100644 --- a/Mage.Sets/src/mage/cards/e/EzuriRenegadeLeader.java +++ b/Mage.Sets/src/mage/cards/e/EzuriRenegadeLeader.java @@ -37,10 +37,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.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -60,9 +57,9 @@ public class EzuriRenegadeLeader extends CardImpl { private static final FilterControlledCreaturePermanent notEzuri = new FilterControlledCreaturePermanent(); static { - elfFilter.add(new SubtypePredicate("Elf")); + elfFilter.add(new SubtypePredicate(SubType.ELF)); - notEzuri.add(new SubtypePredicate("Elf")); + notEzuri.add(new SubtypePredicate(SubType.ELF)); notEzuri.add(Predicates.not(new NamePredicate("Ezuri, Renegade Leader"))); } diff --git a/Mage.Sets/src/mage/cards/f/FaerieHarbinger.java b/Mage.Sets/src/mage/cards/f/FaerieHarbinger.java index 1b0be4f318..625b171fd7 100644 --- a/Mage.Sets/src/mage/cards/f/FaerieHarbinger.java +++ b/Mage.Sets/src/mage/cards/f/FaerieHarbinger.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.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -49,7 +50,7 @@ public class FaerieHarbinger extends CardImpl { public static final FilterCard filter = new FilterCard("Faerie card"); static { - filter.add(new SubtypePredicate("Faerie")); + filter.add(new SubtypePredicate(SubType.FAERIE)); } public FaerieHarbinger(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/Farseek.java b/Mage.Sets/src/mage/cards/f/Farseek.java index 660389d2cd..fb33efc49d 100644 --- a/Mage.Sets/src/mage/cards/f/Farseek.java +++ b/Mage.Sets/src/mage/cards/f/Farseek.java @@ -32,6 +32,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; @@ -49,10 +50,10 @@ public class Farseek extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Plains"), - new SubtypePredicate("Island"), - new SubtypePredicate("Swamp"), - new SubtypePredicate("Mountain"))); + new SubtypePredicate(SubType.PLAINS), + new SubtypePredicate(SubType.ISLAND), + new SubtypePredicate(SubType.SWAMP), + new SubtypePredicate(SubType.MOUNTAIN))); } public Farseek(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FelhideBrawler.java b/Mage.Sets/src/mage/cards/f/FelhideBrawler.java index a8b97ba311..b7160c37b4 100644 --- a/Mage.Sets/src/mage/cards/f/FelhideBrawler.java +++ b/Mage.Sets/src/mage/cards/f/FelhideBrawler.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; @@ -76,7 +77,7 @@ class FelhideBrawlerRestrictionEffect extends RestrictionEffect { private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Minotaur"); static { - filter.add(new SubtypePredicate("Minotaur")); + filter.add(new SubtypePredicate(SubType.MINOTAUR)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/f/FeverCharm.java b/Mage.Sets/src/mage/cards/f/FeverCharm.java index ccf23f0ae6..eea31c5a17 100644 --- a/Mage.Sets/src/mage/cards/f/FeverCharm.java +++ b/Mage.Sets/src/mage/cards/f/FeverCharm.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; import mage.target.common.TargetCreaturePermanent; @@ -51,7 +52,7 @@ public class FeverCharm extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wizard creature"); static { - filter.add(new SubtypePredicate("Wizard")); + filter.add(new SubtypePredicate(SubType.WIZARD)); } public FeverCharm(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FlagstonesOfTrokair.java b/Mage.Sets/src/mage/cards/f/FlagstonesOfTrokair.java index b2d44a7e73..0d64eb9f90 100644 --- a/Mage.Sets/src/mage/cards/f/FlagstonesOfTrokair.java +++ b/Mage.Sets/src/mage/cards/f/FlagstonesOfTrokair.java @@ -33,6 +33,7 @@ import mage.abilities.mana.WhiteManaAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.common.FilterLandCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class FlagstonesOfTrokair extends CardImpl { private static final FilterLandCard FILTER = new FilterLandCard("Plains card"); static { - FILTER.add(new SubtypePredicate("Plains")); + FILTER.add(new SubtypePredicate(SubType.PLAINS)); } public FlagstonesOfTrokair(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FlowOfIdeas.java b/Mage.Sets/src/mage/cards/f/FlowOfIdeas.java index f54f2b547b..e538c147bb 100644 --- a/Mage.Sets/src/mage/cards/f/FlowOfIdeas.java +++ b/Mage.Sets/src/mage/cards/f/FlowOfIdeas.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.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -46,7 +47,7 @@ public class FlowOfIdeas extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Island you control"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public FlowOfIdeas(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FromBeyond.java b/Mage.Sets/src/mage/cards/f/FromBeyond.java index f48d824e41..78d56bb740 100644 --- a/Mage.Sets/src/mage/cards/f/FromBeyond.java +++ b/Mage.Sets/src/mage/cards/f/FromBeyond.java @@ -38,6 +38,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.TargetController; import mage.constants.Zone; import mage.filter.FilterCard; @@ -56,7 +57,7 @@ public class FromBeyond extends CardImpl { private static final FilterCard filter = new FilterCard("Eldrazi card"); static { - filter.add(new SubtypePredicate("Eldrazi")); + filter.add(new SubtypePredicate(SubType.ELDRAZI)); } public FromBeyond(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GallowsAtWillowHill.java b/Mage.Sets/src/mage/cards/g/GallowsAtWillowHill.java index 6b461fe3fa..05c8e4a1f9 100644 --- a/Mage.Sets/src/mage/cards/g/GallowsAtWillowHill.java +++ b/Mage.Sets/src/mage/cards/g/GallowsAtWillowHill.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.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -61,7 +62,7 @@ public class GallowsAtWillowHill extends CardImpl { static { humanFilter.add(Predicates.not(new TappedPredicate())); - humanFilter.add(new SubtypePredicate("Human")); + humanFilter.add(new SubtypePredicate(SubType.HUMAN)); } public GallowsAtWillowHill(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GatewayShade.java b/Mage.Sets/src/mage/cards/g/GatewayShade.java index 064dbb7d4a..2ea21c1b53 100644 --- a/Mage.Sets/src/mage/cards/g/GatewayShade.java +++ b/Mage.Sets/src/mage/cards/g/GatewayShade.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.FilterControlledLandPermanent; import mage.filter.predicate.Predicates; @@ -53,7 +54,7 @@ public class GatewayShade extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("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/g/GiltLeafPalace.java b/Mage.Sets/src/mage/cards/g/GiltLeafPalace.java index 850c51098a..2712f71583 100644 --- a/Mage.Sets/src/mage/cards/g/GiltLeafPalace.java +++ b/Mage.Sets/src/mage/cards/g/GiltLeafPalace.java @@ -35,6 +35,7 @@ import mage.abilities.mana.GreenManaAbility; 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 GiltLeafPalace extends CardImpl { private static final FilterCard filter = new FilterCard("a Elf from your hand"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public GiltLeafPalace(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/Glorybringer.java b/Mage.Sets/src/mage/cards/g/Glorybringer.java index d65e980439..c8f0e9a6f0 100644 --- a/Mage.Sets/src/mage/cards/g/Glorybringer.java +++ b/Mage.Sets/src/mage/cards/g/Glorybringer.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.HasteAbility; 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 Glorybringer extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Dragon creature an opponent controls"); static { - filter.add(Predicates.not(new SubtypePredicate("Dragon"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.DRAGON))); filter.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/g/GoblinRecruiter.java b/Mage.Sets/src/mage/cards/g/GoblinRecruiter.java index 460f961332..57cd3609a5 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinRecruiter.java +++ b/Mage.Sets/src/mage/cards/g/GoblinRecruiter.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.RecruiterEffect; 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 GoblinRecruiter extends CardImpl { private static final FilterCard filter = new FilterCard("Goblin cards"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public GoblinRecruiter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinWarStrike.java b/Mage.Sets/src/mage/cards/g/GoblinWarStrike.java index 5448931a73..0fe7da78e9 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinWarStrike.java +++ b/Mage.Sets/src/mage/cards/g/GoblinWarStrike.java @@ -32,6 +32,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; @@ -49,7 +50,7 @@ public class GoblinWarStrike extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblins you control"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/g/GoldmeadowStalwart.java b/Mage.Sets/src/mage/cards/g/GoldmeadowStalwart.java index b8d5a937e9..b71188f5cc 100644 --- a/Mage.Sets/src/mage/cards/g/GoldmeadowStalwart.java +++ b/Mage.Sets/src/mage/cards/g/GoldmeadowStalwart.java @@ -34,6 +34,7 @@ import mage.abilities.costs.mana.GenericManaCost; 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; @@ -48,7 +49,7 @@ public class GoldmeadowStalwart extends CardImpl { private static final FilterCard filter = new FilterCard("a Kithkin card from your hand"); static { - filter.add(new SubtypePredicate("Kithkin")); + filter.add(new SubtypePredicate(SubType.KITHKIN)); } public GoldmeadowStalwart(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GrasslandCrusader.java b/Mage.Sets/src/mage/cards/g/GrasslandCrusader.java index 2fa213f12b..470de0db27 100644 --- a/Mage.Sets/src/mage/cards/g/GrasslandCrusader.java +++ b/Mage.Sets/src/mage/cards/g/GrasslandCrusader.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.Predicates; @@ -53,7 +54,7 @@ public class GrasslandCrusader extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf or Soldier creature"); static { - filter.add(Predicates.or(new SubtypePredicate("Elf"), new SubtypePredicate("Soldier"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.ELF), new SubtypePredicate(SubType.SOLDIER))); } public GrasslandCrusader(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GreatbowDoyen.java b/Mage.Sets/src/mage/cards/g/GreatbowDoyen.java index 7ca415b5d2..90f2712597 100644 --- a/Mage.Sets/src/mage/cards/g/GreatbowDoyen.java +++ b/Mage.Sets/src/mage/cards/g/GreatbowDoyen.java @@ -57,7 +57,7 @@ public class GreatbowDoyen extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Archer")); + filter.add(new SubtypePredicate(SubType.ARCHER)); } public GreatbowDoyen(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GuardianOfTheGreatConduit.java b/Mage.Sets/src/mage/cards/g/GuardianOfTheGreatConduit.java index a00a5181ba..d198fae7a2 100644 --- a/Mage.Sets/src/mage/cards/g/GuardianOfTheGreatConduit.java +++ b/Mage.Sets/src/mage/cards/g/GuardianOfTheGreatConduit.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.CardTypePredicate; @@ -57,7 +58,7 @@ public class GuardianOfTheGreatConduit extends CardImpl { static { filter.add(new CardTypePredicate(CardType.PLANESWALKER)); - filter.add(new SubtypePredicate("Nissa")); + filter.add(new SubtypePredicate(SubType.NISSA)); } public GuardianOfTheGreatConduit(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GwyllionHedgeMage.java b/Mage.Sets/src/mage/cards/g/GwyllionHedgeMage.java index f21a73b86c..263dcee963 100644 --- a/Mage.Sets/src/mage/cards/g/GwyllionHedgeMage.java +++ b/Mage.Sets/src/mage/cards/g/GwyllionHedgeMage.java @@ -38,6 +38,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.counters.CounterType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,8 +58,8 @@ public class GwyllionHedgeMage extends CardImpl { private static final FilterLandPermanent filter2 = new FilterLandPermanent("Swamps"); static { - filter.add(new SubtypePredicate("Plains")); - filter2.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.PLAINS)); + filter2.add(new SubtypePredicate(SubType.SWAMP)); } private static final String rule1 = "When {this} enters the battlefield, if you control two or more Plains, you may create a 1/1 white Kithkin Soldier creature token."; diff --git a/Mage.Sets/src/mage/cards/h/HaazdaExonerator.java b/Mage.Sets/src/mage/cards/h/HaazdaExonerator.java index da5aadf98d..a254a7a201 100644 --- a/Mage.Sets/src/mage/cards/h/HaazdaExonerator.java +++ b/Mage.Sets/src/mage/cards/h/HaazdaExonerator.java @@ -38,6 +38,7 @@ import mage.abilities.costs.common.TapSourceCost; 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; @@ -52,7 +53,7 @@ public class HaazdaExonerator extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Aura"); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public HaazdaExonerator(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HagraDiabolist.java b/Mage.Sets/src/mage/cards/h/HagraDiabolist.java index 95e7ca6560..eae3d54875 100644 --- a/Mage.Sets/src/mage/cards/h/HagraDiabolist.java +++ b/Mage.Sets/src/mage/cards/h/HagraDiabolist.java @@ -37,6 +37,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class HagraDiabolist extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Allies 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/HalimarExcavator.java b/Mage.Sets/src/mage/cards/h/HalimarExcavator.java index 7a5e9e950f..c8939bfd9a 100644 --- a/Mage.Sets/src/mage/cards/h/HalimarExcavator.java +++ b/Mage.Sets/src/mage/cards/h/HalimarExcavator.java @@ -30,6 +30,7 @@ package mage.cards.h; import java.util.UUID; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.MageInt; import mage.abilities.Ability; @@ -52,7 +53,7 @@ public class HalimarExcavator extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Allies 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/HarborBandit.java b/Mage.Sets/src/mage/cards/h/HarborBandit.java index ee173010f7..05939d9bd1 100644 --- a/Mage.Sets/src/mage/cards/h/HarborBandit.java +++ b/Mage.Sets/src/mage/cards/h/HarborBandit.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.common.SimpleActivatedAbility; @@ -54,7 +55,7 @@ public class HarborBandit extends CardImpl { private static final String rule = "{this} gets +1/+1 as long as you control an Island"; static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public HarborBandit(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HavengulRunebinder.java b/Mage.Sets/src/mage/cards/h/HavengulRunebinder.java index 150c314c8f..0a6173e459 100644 --- a/Mage.Sets/src/mage/cards/h/HavengulRunebinder.java +++ b/Mage.Sets/src/mage/cards/h/HavengulRunebinder.java @@ -38,6 +38,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.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; @@ -56,7 +57,7 @@ public class HavengulRunebinder extends CardImpl { private static final FilterControlledCreaturePermanent filterPermanent = new FilterControlledCreaturePermanent("Zombie creature you control"); static { - filterPermanent.add(new SubtypePredicate("Zombie")); + filterPermanent.add(new SubtypePredicate(SubType.ZOMBIE)); } public HavengulRunebinder(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HeartSliver.java b/Mage.Sets/src/mage/cards/h/HeartSliver.java index c9e52ca5d2..01c6e89028 100644 --- a/Mage.Sets/src/mage/cards/h/HeartSliver.java +++ b/Mage.Sets/src/mage/cards/h/HeartSliver.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.HasteAbility; 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 HeartSliver extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All sliver creatures"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public HeartSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HeartwoodGiant.java b/Mage.Sets/src/mage/cards/h/HeartwoodGiant.java index 7ed8726f09..0f073d042b 100644 --- a/Mage.Sets/src/mage/cards/h/HeartwoodGiant.java +++ b/Mage.Sets/src/mage/cards/h/HeartwoodGiant.java @@ -38,6 +38,7 @@ import mage.abilities.costs.common.TapSourceCost; 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; @@ -53,7 +54,7 @@ public class HeartwoodGiant extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public HeartwoodGiant(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HeavyTrooper.java b/Mage.Sets/src/mage/cards/h/HeavyTrooper.java index bf7afbaa0c..d4cf4c2150 100644 --- a/Mage.Sets/src/mage/cards/h/HeavyTrooper.java +++ b/Mage.Sets/src/mage/cards/h/HeavyTrooper.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 HeavyTrooper extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures"); static { - filter.add(new SubtypePredicate("Trooper")); + filter.add(new SubtypePredicate(SubType.TROOPER)); } public HeavyTrooper(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HeedlessOne.java b/Mage.Sets/src/mage/cards/h/HeedlessOne.java index d9810d221e..eef539dc68 100644 --- a/Mage.Sets/src/mage/cards/h/HeedlessOne.java +++ b/Mage.Sets/src/mage/cards/h/HeedlessOne.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 HeedlessOne extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Elves on the battlefield"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public HeedlessOne(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HeroOfIroas.java b/Mage.Sets/src/mage/cards/h/HeroOfIroas.java index d5e88faa2b..b95601205a 100644 --- a/Mage.Sets/src/mage/cards/h/HeroOfIroas.java +++ b/Mage.Sets/src/mage/cards/h/HeroOfIroas.java @@ -36,6 +36,7 @@ import mage.abilities.keyword.HeroicAbility; 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.FilterCard; @@ -49,7 +50,7 @@ public class HeroOfIroas extends CardImpl { private static final FilterCard filter = new FilterCard("Aura spells"); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public HeroOfIroas(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HighTide.java b/Mage.Sets/src/mage/cards/h/HighTide.java index 73da989026..5f03a27c41 100644 --- a/Mage.Sets/src/mage/cards/h/HighTide.java +++ b/Mage.Sets/src/mage/cards/h/HighTide.java @@ -38,6 +38,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.ColoredManaSymbol; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -75,7 +76,7 @@ class HighTideTriggeredAbility extends DelayedTriggeredManaAbility { private static final FilterLandPermanent filter = new FilterLandPermanent("Island"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public HighTideTriggeredAbility() { diff --git a/Mage.Sets/src/mage/cards/h/HomingSliver.java b/Mage.Sets/src/mage/cards/h/HomingSliver.java index 4d2782825d..1c789daa13 100644 --- a/Mage.Sets/src/mage/cards/h/HomingSliver.java +++ b/Mage.Sets/src/mage/cards/h/HomingSliver.java @@ -38,12 +38,7 @@ import mage.abilities.keyword.CyclingAbility; import mage.cards.Card; 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.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -59,7 +54,7 @@ public class HomingSliver extends CardImpl { private static final FilterCard filter = new FilterCard("Sliver card"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public HomingSliver(UUID ownerId, CardSetInfo setInfo) { @@ -90,7 +85,7 @@ class HomingSliverEffect extends ContinuousEffectImpl { private static final FilterCard filter = new FilterCard("Sliver card"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public HomingSliverEffect() { diff --git a/Mage.Sets/src/mage/cards/h/HondenOfCleansingFire.java b/Mage.Sets/src/mage/cards/h/HondenOfCleansingFire.java index b605484bf5..4ca535f25c 100644 --- a/Mage.Sets/src/mage/cards/h/HondenOfCleansingFire.java +++ b/Mage.Sets/src/mage/cards/h/HondenOfCleansingFire.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.SuperType; import mage.constants.TargetController; import mage.filter.common.FilterControlledPermanent; @@ -49,7 +50,7 @@ public class HondenOfCleansingFire extends CardImpl { final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine"); static { - filter.add(new SubtypePredicate("Shrine")); + filter.add(new SubtypePredicate(SubType.SHRINE)); } public HondenOfCleansingFire(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HorrorOfHorrors.java b/Mage.Sets/src/mage/cards/h/HorrorOfHorrors.java index 202434ecf4..06a8f902ed 100644 --- a/Mage.Sets/src/mage/cards/h/HorrorOfHorrors.java +++ b/Mage.Sets/src/mage/cards/h/HorrorOfHorrors.java @@ -36,6 +36,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.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -54,7 +55,7 @@ public class HorrorOfHorrors extends CardImpl { private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("black creature"); static { - filter1.add(new SubtypePredicate("Swamp")); + filter1.add(new SubtypePredicate(SubType.SWAMP)); filter2.add(new ColorPredicate(ObjectColor.BLACK)); } diff --git a/Mage.Sets/src/mage/cards/h/HowlpackWolf.java b/Mage.Sets/src/mage/cards/h/HowlpackWolf.java index 11a2789ab9..7f380773e3 100644 --- a/Mage.Sets/src/mage/cards/h/HowlpackWolf.java +++ b/Mage.Sets/src/mage/cards/h/HowlpackWolf.java @@ -76,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(SubType.WEREWOLF))); + filter.add(Predicates.or(new SubtypePredicate(SubType.WOLF), new SubtypePredicate(SubType.WEREWOLF))); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/i/Immerwolf.java b/Mage.Sets/src/mage/cards/i/Immerwolf.java index 091049eb49..ba779f9ce8 100644 --- a/Mage.Sets/src/mage/cards/i/Immerwolf.java +++ b/Mage.Sets/src/mage/cards/i/Immerwolf.java @@ -90,7 +90,7 @@ class ImmerwolfEffect extends ContinuousRuleModifyingEffectImpl { static { filter.add(new SubtypePredicate(SubType.WEREWOLF)); - filter.add(Predicates.not(new SubtypePredicate("Human"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.HUMAN))); } public ImmerwolfEffect() { diff --git a/Mage.Sets/src/mage/cards/i/IndulgentAristocrat.java b/Mage.Sets/src/mage/cards/i/IndulgentAristocrat.java index d702bcfc9b..2da37a70b4 100644 --- a/Mage.Sets/src/mage/cards/i/IndulgentAristocrat.java +++ b/Mage.Sets/src/mage/cards/i/IndulgentAristocrat.java @@ -38,6 +38,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.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; @@ -54,7 +55,7 @@ public class IndulgentAristocrat extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Vampire you control"); static { - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); } public IndulgentAristocrat(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/InspiredSprite.java b/Mage.Sets/src/mage/cards/i/InspiredSprite.java index bd06b26460..17684270dd 100644 --- a/Mage.Sets/src/mage/cards/i/InspiredSprite.java +++ b/Mage.Sets/src/mage/cards/i/InspiredSprite.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.FlashAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterSpell; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class InspiredSprite extends CardImpl { private static final FilterSpell filter = new FilterSpell("Wizard"); static { - filter.add(new SubtypePredicate("Wizard")); + filter.add(new SubtypePredicate(SubType.WIZARD)); } public InspiredSprite(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/IsaoEnlightenedBushi.java b/Mage.Sets/src/mage/cards/i/IsaoEnlightenedBushi.java index 728e13015b..d637c169d8 100644 --- a/Mage.Sets/src/mage/cards/i/IsaoEnlightenedBushi.java +++ b/Mage.Sets/src/mage/cards/i/IsaoEnlightenedBushi.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.BushidoAbility; 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.FilterPermanent; @@ -54,7 +55,7 @@ public class IsaoEnlightenedBushi extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Samurai"); static { - filter.add(new SubtypePredicate("Samurai")); + filter.add(new SubtypePredicate(SubType.SAMURAI)); } public IsaoEnlightenedBushi(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/j/JediEnclave.java b/Mage.Sets/src/mage/cards/j/JediEnclave.java index 487da2a49c..84635dbac8 100644 --- a/Mage.Sets/src/mage/cards/j/JediEnclave.java +++ b/Mage.Sets/src/mage/cards/j/JediEnclave.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 JediEnclave extends CardImpl { FilterCard filter = new FilterCard("basic Forest, Plains or Island"); filter.add(new CardTypePredicate(CardType.LAND)); ArrayList> subtypePredicates = new ArrayList<>(); - subtypePredicates.add(new SubtypePredicate("Forest")); - subtypePredicates.add(new SubtypePredicate("Plains")); - subtypePredicates.add(new SubtypePredicate("Island")); + subtypePredicates.add(new SubtypePredicate(SubType.FOREST)); + 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/j/JoragaBard.java b/Mage.Sets/src/mage/cards/j/JoragaBard.java index a7a170995f..63a8fac9a7 100644 --- a/Mage.Sets/src/mage/cards/j/JoragaBard.java +++ b/Mage.Sets/src/mage/cards/j/JoragaBard.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.keyword.VigilanceAbility; 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 JoragaBard 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/j/JoragaTreespeaker.java b/Mage.Sets/src/mage/cards/j/JoragaTreespeaker.java index f071b30fc5..826b51f206 100644 --- a/Mage.Sets/src/mage/cards/j/JoragaTreespeaker.java +++ b/Mage.Sets/src/mage/cards/j/JoragaTreespeaker.java @@ -44,6 +44,7 @@ import mage.cards.CardSetInfo; import mage.cards.LevelerCard; 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; @@ -60,7 +61,7 @@ public class JoragaTreespeaker extends LevelerCard { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Elves"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public JoragaTreespeaker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/j/JoragaWarcaller.java b/Mage.Sets/src/mage/cards/j/JoragaWarcaller.java index 5caa2aa2e5..9faa24d351 100644 --- a/Mage.Sets/src/mage/cards/j/JoragaWarcaller.java +++ b/Mage.Sets/src/mage/cards/j/JoragaWarcaller.java @@ -58,7 +58,7 @@ public class JoragaWarcaller extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/j/JorubaiMurkLurker.java b/Mage.Sets/src/mage/cards/j/JorubaiMurkLurker.java index 3c15e017da..9c69b05b83 100644 --- a/Mage.Sets/src/mage/cards/j/JorubaiMurkLurker.java +++ b/Mage.Sets/src/mage/cards/j/JorubaiMurkLurker.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.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,7 +58,7 @@ public class JorubaiMurkLurker extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("a Swamp"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public JorubaiMurkLurker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/j/JumpTrooper.java b/Mage.Sets/src/mage/cards/j/JumpTrooper.java index d0aab30640..f46e350095 100644 --- a/Mage.Sets/src/mage/cards/j/JumpTrooper.java +++ b/Mage.Sets/src/mage/cards/j/JumpTrooper.java @@ -36,6 +36,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.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreatureCard; @@ -54,7 +55,7 @@ public class JumpTrooper extends CardImpl { private static final FilterCreatureCard filter = new FilterCreatureCard("Trooper creatures"); static { - filter.add(new SubtypePredicate("Trooper")); + filter.add(new SubtypePredicate(SubType.TROOPER)); } public JumpTrooper(UUID ownerId, CardSetInfo setInfo) { @@ -84,7 +85,7 @@ class JumpTrooperTriggeredAbility extends TriggeredAbilityImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Trooper creature you control"); static { - filter.add(new SubtypePredicate("Trooper")); + filter.add(new SubtypePredicate(SubType.TROOPER)); } public JumpTrooperTriggeredAbility(Effect effect) { diff --git a/Mage.Sets/src/mage/cards/j/JungleVillage.java b/Mage.Sets/src/mage/cards/j/JungleVillage.java index 31ae6d1200..2eec405fae 100644 --- a/Mage.Sets/src/mage/cards/j/JungleVillage.java +++ b/Mage.Sets/src/mage/cards/j/JungleVillage.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 JungleVillage extends CardImpl { FilterCard filter = new FilterCard("basic Mountain, Forest or Plains"); filter.add(new CardTypePredicate(CardType.LAND)); ArrayList> subtypePredicates = new ArrayList<>(); - subtypePredicates.add(new SubtypePredicate("Plains")); - subtypePredicates.add(new SubtypePredicate("Mountain")); - subtypePredicates.add(new SubtypePredicate("Forest")); + subtypePredicates.add(new SubtypePredicate(SubType.PLAINS)); + subtypePredicates.add(new SubtypePredicate(SubType.MOUNTAIN)); + subtypePredicates.add(new SubtypePredicate(SubType.FAERIE)); filter.add(Predicates.or(subtypePredicates)); filter.add(new SupertypePredicate(SuperType.BASIC)); TargetCardInLibrary target = new TargetCardInLibrary(filter); diff --git a/Mage.Sets/src/mage/cards/j/JwariShapeshifter.java b/Mage.Sets/src/mage/cards/j/JwariShapeshifter.java index 2c7a8ecbe6..29aee88784 100644 --- a/Mage.Sets/src/mage/cards/j/JwariShapeshifter.java +++ b/Mage.Sets/src/mage/cards/j/JwariShapeshifter.java @@ -34,6 +34,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; @@ -48,7 +49,7 @@ public class JwariShapeshifter extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Ally creature"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); filter.add(new CardTypePredicate(CardType.CREATURE)); filter.add(new AnotherPredicate()); // needed because during enters_the_battlefield event the creature is already targetable although it shouldn't } diff --git a/Mage.Sets/src/mage/cards/k/KalitasTraitorOfGhet.java b/Mage.Sets/src/mage/cards/k/KalitasTraitorOfGhet.java index aae6f58ee2..139863de5b 100644 --- a/Mage.Sets/src/mage/cards/k/KalitasTraitorOfGhet.java +++ b/Mage.Sets/src/mage/cards/k/KalitasTraitorOfGhet.java @@ -65,8 +65,8 @@ public class KalitasTraitorOfGhet extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(Predicates.or(new SubtypePredicate("Vampire"), - (new SubtypePredicate("Zombie")))); + filter.add(Predicates.or(new SubtypePredicate(SubType.VAMPIRE), + (new SubtypePredicate(SubType.ZOMBIE)))); } public KalitasTraitorOfGhet(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KarrthusTyrantOfJund.java b/Mage.Sets/src/mage/cards/k/KarrthusTyrantOfJund.java index 97b7998584..fd60e7eab5 100644 --- a/Mage.Sets/src/mage/cards/k/KarrthusTyrantOfJund.java +++ b/Mage.Sets/src/mage/cards/k/KarrthusTyrantOfJund.java @@ -60,7 +60,7 @@ public class KarrthusTyrantOfJund extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public KarrthusTyrantOfJund(UUID ownerId, CardSetInfo setInfo) { @@ -113,7 +113,7 @@ class KarrthusEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { FilterPermanent filter = new FilterPermanent(); - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); List dragons = game.getBattlefield().getAllActivePermanents(filter, game); for (Permanent dragon : dragons) { ContinuousEffect effect = new KarrthusControlEffect(source.getControllerId()); diff --git a/Mage.Sets/src/mage/cards/k/KazuulsTollCollector.java b/Mage.Sets/src/mage/cards/k/KazuulsTollCollector.java index 807d1d1663..4be7819518 100644 --- a/Mage.Sets/src/mage/cards/k/KazuulsTollCollector.java +++ b/Mage.Sets/src/mage/cards/k/KazuulsTollCollector.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.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class KazuulsTollCollector 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 KazuulsTollCollector(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KingSuleiman.java b/Mage.Sets/src/mage/cards/k/KingSuleiman.java index 8221425c30..4d54c4037e 100644 --- a/Mage.Sets/src/mage/cards/k/KingSuleiman.java +++ b/Mage.Sets/src/mage/cards/k/KingSuleiman.java @@ -36,6 +36,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.Predicates; @@ -52,8 +53,8 @@ public class KingSuleiman extends CardImpl { static { filter.add( Predicates.or( - new SubtypePredicate("Djinn"), - new SubtypePredicate("Efreet"))); + new SubtypePredicate(SubType.DJINN), + new SubtypePredicate(SubType.EFREET))); } public KingSuleiman(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KothOfTheHammer.java b/Mage.Sets/src/mage/cards/k/KothOfTheHammer.java index bf601081f7..d90528b80d 100644 --- a/Mage.Sets/src/mage/cards/k/KothOfTheHammer.java +++ b/Mage.Sets/src/mage/cards/k/KothOfTheHammer.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.TargetController; import mage.filter.common.FilterLandPermanent; import mage.game.command.emblems.KothOfTheHammerEmblem; @@ -56,11 +57,11 @@ import mage.target.common.TargetLandPermanent; */ public class KothOfTheHammer extends CardImpl { - static final FilterLandPermanent filter = new FilterLandPermanent("Mountain", "Mountain"); + static final FilterLandPermanent filter = new FilterLandPermanent(SubType.MOUNTAIN, "Mountain"); static final FilterLandPermanent filterCount = new FilterLandPermanent("Mountain you control"); static { - filterCount.add(new SubtypePredicate("Mountain")); + filterCount.add(new SubtypePredicate(SubType.MOUNTAIN)); filterCount.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/k/KozileksReturn.java b/Mage.Sets/src/mage/cards/k/KozileksReturn.java index dafa3a0b05..f348e49adb 100644 --- a/Mage.Sets/src/mage/cards/k/KozileksReturn.java +++ b/Mage.Sets/src/mage/cards/k/KozileksReturn.java @@ -36,6 +36,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.FilterSpell; import mage.filter.common.FilterCreaturePermanent; @@ -54,7 +55,7 @@ public class KozileksReturn extends CardImpl { private static final FilterSpell filter = new FilterSpell("an Eldrazi creature spell with converted mana cost 7 or greater"); static { - filter.add(new SubtypePredicate("Eldrazi")); + filter.add(new SubtypePredicate(SubType.ELDRAZI)); filter.add(new CardTypePredicate(CardType.CREATURE)); filter.add(new ConvertedManaCostPredicate(ComparisonType.MORE_THAN, 6)); } diff --git a/Mage.Sets/src/mage/cards/l/LamplighterOfSelhoff.java b/Mage.Sets/src/mage/cards/l/LamplighterOfSelhoff.java index 2716a697d1..55b495ca97 100644 --- a/Mage.Sets/src/mage/cards/l/LamplighterOfSelhoff.java +++ b/Mage.Sets/src/mage/cards/l/LamplighterOfSelhoff.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.DrawDiscardControllerEffect; 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.filter.predicate.permanent.AnotherPredicate; @@ -52,7 +53,7 @@ public class LamplighterOfSelhoff extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public LamplighterOfSelhoff(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LandGrant.java b/Mage.Sets/src/mage/cards/l/LandGrant.java index ffe11d1f31..79abb87122 100644 --- a/Mage.Sets/src/mage/cards/l/LandGrant.java +++ b/Mage.Sets/src/mage/cards/l/LandGrant.java @@ -37,6 +37,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.common.FilterLandCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -52,7 +53,7 @@ public class LandGrant extends CardImpl { private static final FilterLandCard filter = new FilterLandCard("Forest card"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public LandGrant(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LandbindRitual.java b/Mage.Sets/src/mage/cards/l/LandbindRitual.java index 0558018b0e..1f0415bba5 100644 --- a/Mage.Sets/src/mage/cards/l/LandbindRitual.java +++ b/Mage.Sets/src/mage/cards/l/LandbindRitual.java @@ -29,6 +29,7 @@ package mage.cards.l; import java.util.UUID; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.GainLifeEffect; @@ -47,7 +48,7 @@ public class LandbindRitual extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Plains you control"); static { - filter.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.PLAINS)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/l/LifeAndLimb.java b/Mage.Sets/src/mage/cards/l/LifeAndLimb.java index aadf632181..193a1aeb24 100644 --- a/Mage.Sets/src/mage/cards/l/LifeAndLimb.java +++ b/Mage.Sets/src/mage/cards/l/LifeAndLimb.java @@ -28,6 +28,7 @@ package mage.cards.l; import java.util.UUID; + import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -35,12 +36,7 @@ import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.mana.GreenManaAbility; 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.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,13 +45,12 @@ import mage.game.permanent.Permanent; import mage.players.Player; /** - * * @author emerald000 */ public class LifeAndLimb extends CardImpl { public LifeAndLimb(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}"); // All Forests and all Saprolings are 1/1 green Saproling creatures and Forest lands in addition to their other types. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new LifeAndLimbEffect())); @@ -72,10 +67,11 @@ public class LifeAndLimb extends CardImpl { } class LifeAndLimbEffect extends ContinuousEffectImpl { - + private static final FilterPermanent filter = new FilterPermanent("All Forests and all Saprolings"); + static { - filter.add(Predicates.or(new SubtypePredicate("Forest"), new SubtypePredicate("Saproling"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.FOREST), new SubtypePredicate(SubType.SAPROLING))); } LifeAndLimbEffect() { @@ -99,11 +95,11 @@ class LifeAndLimbEffect extends ContinuousEffectImpl { for (Permanent permanent : game.getState().getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) { switch (layer) { case TypeChangingEffects_4: - permanent.addCardType(CardType.CREATURE); + permanent.addCardType(CardType.CREATURE); if (!permanent.hasSubtype("Saproling", game)) { permanent.getSubtype(game).add("Saproling"); } - permanent.addCardType(CardType.LAND); + permanent.addCardType(CardType.LAND); if (!permanent.hasSubtype("Forest", game)) { permanent.getSubtype(game).add("Forest"); } @@ -145,7 +141,7 @@ class LifeAndLimbEffect extends ContinuousEffectImpl { public boolean hasLayer(Layer layer) { return layer == Layer.TypeChangingEffects_4 || layer == Layer.ColorChangingEffects_5 - || layer == Layer.AbilityAddingRemovingEffects_6 + || layer == Layer.AbilityAddingRemovingEffects_6 || layer == Layer.PTChangingEffects_7; } } diff --git a/Mage.Sets/src/mage/cards/l/Lifetap.java b/Mage.Sets/src/mage/cards/l/Lifetap.java index 82eec0eb44..9029273a89 100644 --- a/Mage.Sets/src/mage/cards/l/Lifetap.java +++ b/Mage.Sets/src/mage/cards/l/Lifetap.java @@ -33,6 +33,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.TargetController; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class Lifetap extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("a Forest an opponent controls"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); filter.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/l/LilianaOfTheDarkRealms.java b/Mage.Sets/src/mage/cards/l/LilianaOfTheDarkRealms.java index 46fa6485c1..2521d7f343 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaOfTheDarkRealms.java +++ b/Mage.Sets/src/mage/cards/l/LilianaOfTheDarkRealms.java @@ -36,12 +36,7 @@ import mage.abilities.effects.common.GetEmblemEffect; 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.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.constants.TargetController; +import mage.constants.*; import mage.filter.common.FilterLandCard; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -62,7 +57,7 @@ public class LilianaOfTheDarkRealms extends CardImpl { private static final FilterLandCard filter = new FilterLandCard("Swamp card"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public LilianaOfTheDarkRealms(UUID ownerId, CardSetInfo setInfo) { @@ -116,7 +111,7 @@ class LilianaOfTheDarkRealmsEffect extends ContinuousEffectImpl { super.init(source, game); FilterLandPermanent filter = new FilterLandPermanent("Swamps"); - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); filter.add(new ControllerPredicate(TargetController.YOU)); this.amount = game.getBattlefield().count(filter, source.getSourceId(), source.getControllerId(), game); diff --git a/Mage.Sets/src/mage/cards/l/Lithophage.java b/Mage.Sets/src/mage/cards/l/Lithophage.java index e4e319c8ff..aea5572a74 100644 --- a/Mage.Sets/src/mage/cards/l/Lithophage.java +++ b/Mage.Sets/src/mage/cards/l/Lithophage.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.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterControlledLandPermanent; @@ -50,7 +51,7 @@ public class Lithophage extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("a Mountain"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public Lithophage(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LlanowarDruid.java b/Mage.Sets/src/mage/cards/l/LlanowarDruid.java index 73b6776a5f..b79505a1b5 100644 --- a/Mage.Sets/src/mage/cards/l/LlanowarDruid.java +++ b/Mage.Sets/src/mage/cards/l/LlanowarDruid.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.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -82,7 +83,7 @@ class LlanowarDruidEffect extends OneShotEffect { private static final FilterPermanent filter = new FilterPermanent(); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public LlanowarDruidEffect() { diff --git a/Mage.Sets/src/mage/cards/l/LoamLion.java b/Mage.Sets/src/mage/cards/l/LoamLion.java index d5fa5c89ac..ba6438bc96 100644 --- a/Mage.Sets/src/mage/cards/l/LoamLion.java +++ b/Mage.Sets/src/mage/cards/l/LoamLion.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.SimpleStaticAbility; @@ -51,7 +52,7 @@ public class LoamLion extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public LoamLion(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LordOfAtlantis.java b/Mage.Sets/src/mage/cards/l/LordOfAtlantis.java index d61498668a..71af483bbb 100644 --- a/Mage.Sets/src/mage/cards/l/LordOfAtlantis.java +++ b/Mage.Sets/src/mage/cards/l/LordOfAtlantis.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 LordOfAtlantis extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Merfolk creatures"); static { - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK)); } public LordOfAtlantis(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LordOfTheUndead.java b/Mage.Sets/src/mage/cards/l/LordOfTheUndead.java index c4bbdf07cc..a12fe4025c 100644 --- a/Mage.Sets/src/mage/cards/l/LordOfTheUndead.java +++ b/Mage.Sets/src/mage/cards/l/LordOfTheUndead.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.Ability; @@ -55,8 +56,8 @@ public class LordOfTheUndead extends CardImpl { private static final FilterCard filterCard = new FilterCard("Zombie card from your graveyard"); static { - filter.add(new SubtypePredicate("Zombie")); - filterCard.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); + filterCard.add(new SubtypePredicate(SubType.ZOMBIE)); } public LordOfTheUndead(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LordOfTheUnreal.java b/Mage.Sets/src/mage/cards/l/LordOfTheUnreal.java index c7f5692ac3..238ca53119 100644 --- a/Mage.Sets/src/mage/cards/l/LordOfTheUnreal.java +++ b/Mage.Sets/src/mage/cards/l/LordOfTheUnreal.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.HexproofAbility; 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; @@ -52,7 +53,7 @@ public class LordOfTheUnreal extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Illusion creatures"); static { - filter.add(new SubtypePredicate("Illusion")); + filter.add(new SubtypePredicate(SubType.ILLUSION)); } public LordOfTheUnreal(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LysAlanaScarblade.java b/Mage.Sets/src/mage/cards/l/LysAlanaScarblade.java index 7c45c7f735..0411df864a 100644 --- a/Mage.Sets/src/mage/cards/l/LysAlanaScarblade.java +++ b/Mage.Sets/src/mage/cards/l/LysAlanaScarblade.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.FilterCard; import mage.filter.common.FilterControlledPermanent; @@ -57,8 +58,8 @@ public class LysAlanaScarblade extends CardImpl { private static final FilterCard filter2 = new FilterCard("an Elf card"); static { - filter1.add(new SubtypePredicate("Elf")); - filter2.add(new SubtypePredicate("Elf")); + filter1.add(new SubtypePredicate(SubType.ELF)); + filter2.add(new SubtypePredicate(SubType.ELF)); } public LysAlanaScarblade(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MalakirBloodwitch.java b/Mage.Sets/src/mage/cards/m/MalakirBloodwitch.java index 196ca3c7be..86eeb67891 100644 --- a/Mage.Sets/src/mage/cards/m/MalakirBloodwitch.java +++ b/Mage.Sets/src/mage/cards/m/MalakirBloodwitch.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ProtectionAbility; 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; @@ -98,7 +99,7 @@ class MalakirBloodwitchEffect extends OneShotEffect { } FilterControlledPermanent filter = new FilterControlledPermanent("Vampire"); - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); int amount = game.getBattlefield().countAll(filter, source.getControllerId(), game); Set opponents = game.getOpponents(source.getControllerId()); diff --git a/Mage.Sets/src/mage/cards/m/MarchFromTheTomb.java b/Mage.Sets/src/mage/cards/m/MarchFromTheTomb.java index 73bd0c16eb..91c42ab0bc 100644 --- a/Mage.Sets/src/mage/cards/m/MarchFromTheTomb.java +++ b/Mage.Sets/src/mage/cards/m/MarchFromTheTomb.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.filter.FilterCard; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,7 +58,7 @@ public class MarchFromTheTomb extends CardImpl { effect.setText("Return any number of target Ally creature cards with total converted mana cost of 8 or less from your graveyard to the battlefield"); this.getSpellAbility().addEffect(effect); FilterCard filter = new FilterCreatureCard(); - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); this.getSpellAbility().addTarget(new MarchFromTheTombTarget(0, Integer.MAX_VALUE, filter)); } diff --git a/Mage.Sets/src/mage/cards/m/MassAppeal.java b/Mage.Sets/src/mage/cards/m/MassAppeal.java index 31a94b6576..693ca52bb1 100644 --- a/Mage.Sets/src/mage/cards/m/MassAppeal.java +++ b/Mage.Sets/src/mage/cards/m/MassAppeal.java @@ -32,6 +32,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -46,7 +47,7 @@ public class MassAppeal extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Human you control"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public MassAppeal(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MasterApothecary.java b/Mage.Sets/src/mage/cards/m/MasterApothecary.java index 9a64524f7e..a5a60802b2 100644 --- a/Mage.Sets/src/mage/cards/m/MasterApothecary.java +++ b/Mage.Sets/src/mage/cards/m/MasterApothecary.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.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; @@ -54,7 +55,7 @@ public class MasterApothecary extends CardImpl { public static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("an untapped Cleric 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/m/MidnightEntourage.java b/Mage.Sets/src/mage/cards/m/MidnightEntourage.java index 1cdfcafe73..e8b3f3eb06 100644 --- a/Mage.Sets/src/mage/cards/m/MidnightEntourage.java +++ b/Mage.Sets/src/mage/cards/m/MidnightEntourage.java @@ -38,10 +38,7 @@ import mage.abilities.effects.common.LoseLifeSourceControllerEffect; 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.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 MidnightEntourage extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Aetherborn you control"); static { - filter.add(new SubtypePredicate("Aetherborn")); + filter.add(new SubtypePredicate(SubType.AETHERBORN)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/m/MoggAlarm.java b/Mage.Sets/src/mage/cards/m/MoggAlarm.java index e31640f105..f6f52d3afd 100644 --- a/Mage.Sets/src/mage/cards/m/MoggAlarm.java +++ b/Mage.Sets/src/mage/cards/m/MoggAlarm.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.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.GoblinToken; @@ -47,7 +48,7 @@ public class MoggAlarm extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("two Mountains"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public MoggAlarm(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MurmuringBosk.java b/Mage.Sets/src/mage/cards/m/MurmuringBosk.java index 6ddc50df3f..c8b8f5cd5a 100644 --- a/Mage.Sets/src/mage/cards/m/MurmuringBosk.java +++ b/Mage.Sets/src/mage/cards/m/MurmuringBosk.java @@ -39,6 +39,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.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInHand; @@ -52,7 +53,7 @@ public class MurmuringBosk extends CardImpl { private static final FilterCard filter = new FilterCard("a Treefolk card from your hand"); static { - filter.add(new SubtypePredicate("Treefolk")); + filter.add(new SubtypePredicate(SubType.TREEFOLK)); } public MurmuringBosk(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/Mutilate.java b/Mage.Sets/src/mage/cards/m/Mutilate.java index 028fdbb2a2..2adcec9213 100644 --- a/Mage.Sets/src/mage/cards/m/Mutilate.java +++ b/Mage.Sets/src/mage/cards/m/Mutilate.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.TargetController; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.ContinuousEffect; @@ -53,7 +54,7 @@ public class Mutilate extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp you control"); 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/m/MwonvuliAcidMoss.java b/Mage.Sets/src/mage/cards/m/MwonvuliAcidMoss.java index df8afddc24..0b59350e95 100644 --- a/Mage.Sets/src/mage/cards/m/MwonvuliAcidMoss.java +++ b/Mage.Sets/src/mage/cards/m/MwonvuliAcidMoss.java @@ -33,6 +33,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.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class MwonvuliAcidMoss extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}{G}"); FilterLandCard filterForest = new FilterLandCard(); - filterForest.add(new SubtypePredicate("Forest")); + filterForest.add(new SubtypePredicate(SubType.FOREST)); // Destroy target land. Search your library for a Forest card and put that card onto the battlefield tapped. Then shuffle your library. this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); diff --git a/Mage.Sets/src/mage/cards/m/MyrMatrix.java b/Mage.Sets/src/mage/cards/m/MyrMatrix.java index 253530a902..d981c721e7 100644 --- a/Mage.Sets/src/mage/cards/m/MyrMatrix.java +++ b/Mage.Sets/src/mage/cards/m/MyrMatrix.java @@ -40,6 +40,7 @@ import mage.abilities.keyword.IndestructibleAbility; 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; @@ -54,7 +55,7 @@ public class MyrMatrix extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Myr"); static { - filter.add(new SubtypePredicate("Myr")); + filter.add(new SubtypePredicate(SubType.MYR)); } public MyrMatrix (UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NecromancersCovenant.java b/Mage.Sets/src/mage/cards/n/NecromancersCovenant.java index bb49cf925a..1a70f7526d 100644 --- a/Mage.Sets/src/mage/cards/n/NecromancersCovenant.java +++ b/Mage.Sets/src/mage/cards/n/NecromancersCovenant.java @@ -37,10 +37,7 @@ import mage.abilities.keyword.LifelinkAbility; 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.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -58,7 +55,7 @@ public class NecromancersCovenant extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Zombies you control"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public NecromancersCovenant(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NightfireGiant.java b/Mage.Sets/src/mage/cards/n/NightfireGiant.java index 1076cfbd3b..a159603fc6 100644 --- a/Mage.Sets/src/mage/cards/n/NightfireGiant.java +++ b/Mage.Sets/src/mage/cards/n/NightfireGiant.java @@ -38,6 +38,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; @@ -52,7 +53,7 @@ public class NightfireGiant extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("a Mountain"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } diff --git a/Mage.Sets/src/mage/cards/n/NightmareIncursion.java b/Mage.Sets/src/mage/cards/n/NightmareIncursion.java index 10bcf9ba46..f1460e7f00 100644 --- a/Mage.Sets/src/mage/cards/n/NightmareIncursion.java +++ b/Mage.Sets/src/mage/cards/n/NightmareIncursion.java @@ -36,10 +36,7 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.Card; 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.FilterCard; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -82,7 +79,7 @@ class NightmareIncursionEffect extends OneShotEffect { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } boolean exiled = false; diff --git a/Mage.Sets/src/mage/cards/o/OgreGeargrabber.java b/Mage.Sets/src/mage/cards/o/OgreGeargrabber.java index fb9cc80fdd..2fb3008c3e 100644 --- a/Mage.Sets/src/mage/cards/o/OgreGeargrabber.java +++ b/Mage.Sets/src/mage/cards/o/OgreGeargrabber.java @@ -36,10 +36,7 @@ import mage.abilities.effects.OneShotEffect; 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.Outcome; -import mage.constants.TargetController; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -60,7 +57,7 @@ public class OgreGeargrabber extends CardImpl { static { filter.add(new CardTypePredicate(CardType.ARTIFACT)); - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); filter.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/o/OgreSlumlord.java b/Mage.Sets/src/mage/cards/o/OgreSlumlord.java index 7ee90b22ef..d92da32c38 100644 --- a/Mage.Sets/src/mage/cards/o/OgreSlumlord.java +++ b/Mage.Sets/src/mage/cards/o/OgreSlumlord.java @@ -30,6 +30,7 @@ package mage.cards.o; 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.DiesCreatureTriggeredAbility; @@ -58,7 +59,7 @@ public class OgreSlumlord extends CardImpl { static { filter.add(Predicates.not(new TokenPredicate())); filter.add(new AnotherPredicate()); - filter2.add(new SubtypePredicate("Rat")); + filter2.add(new SubtypePredicate(SubType.RAT)); } diff --git a/Mage.Sets/src/mage/cards/o/OliviasBloodsworn.java b/Mage.Sets/src/mage/cards/o/OliviasBloodsworn.java index 9c785d269d..01dd864fdd 100644 --- a/Mage.Sets/src/mage/cards/o/OliviasBloodsworn.java +++ b/Mage.Sets/src/mage/cards/o/OliviasBloodsworn.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; @@ -54,7 +55,7 @@ public class OliviasBloodsworn extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampire"); static { - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); } public OliviasBloodsworn(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/o/OozeGarden.java b/Mage.Sets/src/mage/cards/o/OozeGarden.java index 0ee1d42328..a9c0d42348 100644 --- a/Mage.Sets/src/mage/cards/o/OozeGarden.java +++ b/Mage.Sets/src/mage/cards/o/OozeGarden.java @@ -42,6 +42,7 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; 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 OozeGarden extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Ooze creature"); static{ - filter.add(Predicates.not(new SubtypePredicate("Ooze"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.OOZE))); } public OozeGarden(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}"); diff --git a/Mage.Sets/src/mage/cards/o/OreskosExplorer.java b/Mage.Sets/src/mage/cards/o/OreskosExplorer.java index 2b0b6582ca..f94c034c60 100644 --- a/Mage.Sets/src/mage/cards/o/OreskosExplorer.java +++ b/Mage.Sets/src/mage/cards/o/OreskosExplorer.java @@ -37,10 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.cards.Cards; import mage.cards.CardsImpl; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterBasicLandCard; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -114,7 +111,7 @@ class OreskosExplorerEffect extends OneShotEffect { if (landsToSearch > 0) { FilterBasicLandCard filterPlains = new FilterBasicLandCard("up to " + landsToSearch + " Plains cards"); filterPlains.add(new ControllerPredicate(TargetController.YOU)); - filterPlains.add(new SubtypePredicate("Plains")); + filterPlains.add(new SubtypePredicate(SubType.PLAINS)); TargetCardInLibrary target = new TargetCardInLibrary(0, landsToSearch, filterPlains); if (controller.searchLibrary(target, game)) { Cards cards = new CardsImpl(target.getTargets()); diff --git a/Mage.Sets/src/mage/cards/p/PortTown.java b/Mage.Sets/src/mage/cards/p/PortTown.java index 28882a4ec6..04dcf4fc5f 100644 --- a/Mage.Sets/src/mage/cards/p/PortTown.java +++ b/Mage.Sets/src/mage/cards/p/PortTown.java @@ -36,6 +36,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.FilterCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,8 +51,8 @@ public class PortTown extends CardImpl { private static final FilterCard filter = new FilterCard("a Plains or Island card from your hand"); static { - filter.add(Predicates.or(new SubtypePredicate("Plains"), - new SubtypePredicate("Island"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.ISLAND), + new SubtypePredicate(SubType.ISLAND))); } public PortTown(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/ProwlersHelm.java b/Mage.Sets/src/mage/cards/p/ProwlersHelm.java index de9ebe6ed9..929b823042 100644 --- a/Mage.Sets/src/mage/cards/p/ProwlersHelm.java +++ b/Mage.Sets/src/mage/cards/p/ProwlersHelm.java @@ -48,7 +48,7 @@ public class ProwlersHelm 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 ProwlersHelm(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PureSimple.java b/Mage.Sets/src/mage/cards/p/PureSimple.java index b1ef05c5b2..3dc4bc1f41 100644 --- a/Mage.Sets/src/mage/cards/p/PureSimple.java +++ b/Mage.Sets/src/mage/cards/p/PureSimple.java @@ -34,6 +34,7 @@ import mage.cards.CardSetInfo; import mage.cards.SplitCard; import mage.constants.CardType; import mage.constants.SpellAbilityType; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.MulticoloredPredicate; @@ -50,7 +51,7 @@ public class PureSimple extends SplitCard { private static final FilterPermanent filterMulticolor = new FilterPermanent("multicolor permanent"); static { - filterDestroy.add(Predicates.or(new SubtypePredicate("Aura"), new SubtypePredicate("Equipment"))); + filterDestroy.add(Predicates.or(new SubtypePredicate(SubType.AURA), new SubtypePredicate(SubType.EQUIPMENT))); filterMulticolor.add(new MulticoloredPredicate()); } diff --git a/Mage.Sets/src/mage/cards/r/Ragemonger.java b/Mage.Sets/src/mage/cards/r/Ragemonger.java index e2b4fd4e1b..f4a7992528 100644 --- a/Mage.Sets/src/mage/cards/r/Ragemonger.java +++ b/Mage.Sets/src/mage/cards/r/Ragemonger.java @@ -35,6 +35,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.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class Ragemonger extends CardImpl { private static final FilterCard filter = new FilterCard("Minotaur spells"); static { - filter.add(new SubtypePredicate("Minotaur")); + filter.add(new SubtypePredicate(SubType.MINOTAUR)); } public Ragemonger(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RampartCrawler.java b/Mage.Sets/src/mage/cards/r/RampartCrawler.java index 7893ec5bb2..ff5537efe1 100644 --- a/Mage.Sets/src/mage/cards/r/RampartCrawler.java +++ b/Mage.Sets/src/mage/cards/r/RampartCrawler.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; @@ -48,7 +49,7 @@ public class RampartCrawler extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Walls"); static { - filter.add(new SubtypePredicate("Wall")); + filter.add(new SubtypePredicate(SubType.WALL)); } public RampartCrawler(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RashidaScalebane.java b/Mage.Sets/src/mage/cards/r/RashidaScalebane.java index e1a356ec97..366574cfff 100644 --- a/Mage.Sets/src/mage/cards/r/RashidaScalebane.java +++ b/Mage.Sets/src/mage/cards/r/RashidaScalebane.java @@ -38,6 +38,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.SuperType; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; @@ -59,7 +60,7 @@ public class RashidaScalebane extends CardImpl { static { filter.add(Predicates.or(new AttackingPredicate(), new BlockingPredicate())); - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public RashidaScalebane(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RathiAssassin.java b/Mage.Sets/src/mage/cards/r/RathiAssassin.java index 7c316e0f2b..c46c4bdd5e 100644 --- a/Mage.Sets/src/mage/cards/r/RathiAssassin.java +++ b/Mage.Sets/src/mage/cards/r/RathiAssassin.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.FilterCreaturePermanent; import mage.filter.common.FilterPermanentCard; @@ -63,7 +64,7 @@ public class RathiAssassin extends CardImpl { private static final FilterCreaturePermanent destroyFilter = new FilterCreaturePermanent("tapped nonblack creature"); static { - filter.add(new SubtypePredicate("Mercenary")); + filter.add(new SubtypePredicate(SubType.MERCENARY)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 4)); destroyFilter.add(new TappedPredicate()); destroyFilter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); diff --git a/Mage.Sets/src/mage/cards/r/RathiDragon.java b/Mage.Sets/src/mage/cards/r/RathiDragon.java index 7cc6c3cf39..3d23d796d5 100644 --- a/Mage.Sets/src/mage/cards/r/RathiDragon.java +++ b/Mage.Sets/src/mage/cards/r/RathiDragon.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.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; @@ -49,7 +50,7 @@ public class RathiDragon extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("two Mountains"); static{ - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public RathiDragon(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RathiFiend.java b/Mage.Sets/src/mage/cards/r/RathiFiend.java index 60f3ef8888..5a71e8d83f 100644 --- a/Mage.Sets/src/mage/cards/r/RathiFiend.java +++ b/Mage.Sets/src/mage/cards/r/RathiFiend.java @@ -39,6 +39,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 RathiFiend extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 3 or less"); static { - filter.add(new SubtypePredicate("Mercenary")); + filter.add(new SubtypePredicate(SubType.MERCENARY)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 4)); } diff --git a/Mage.Sets/src/mage/cards/r/RavenousBaloth.java b/Mage.Sets/src/mage/cards/r/RavenousBaloth.java index 2f63cd450d..d39cba906d 100644 --- a/Mage.Sets/src/mage/cards/r/RavenousBaloth.java +++ b/Mage.Sets/src/mage/cards/r/RavenousBaloth.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.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class RavenousBaloth extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Beast"); static { - filter.add(new SubtypePredicate("Beast")); + filter.add(new SubtypePredicate(SubType.BEAST)); } public RavenousBaloth(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/ReaperFromTheAbyss.java b/Mage.Sets/src/mage/cards/r/ReaperFromTheAbyss.java index 03d8472e30..20d4d70bb8 100644 --- a/Mage.Sets/src/mage/cards/r/ReaperFromTheAbyss.java +++ b/Mage.Sets/src/mage/cards/r/ReaperFromTheAbyss.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.filter.predicate.Predicates; @@ -57,7 +58,7 @@ public class ReaperFromTheAbyss extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Demon creature"); static { - filter.add(Predicates.not(new SubtypePredicate("Demon"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.DEMON))); } public ReaperFromTheAbyss(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RebelInformer.java b/Mage.Sets/src/mage/cards/r/RebelInformer.java index b9df3c1fbd..f02fd52d01 100644 --- a/Mage.Sets/src/mage/cards/r/RebelInformer.java +++ b/Mage.Sets/src/mage/cards/r/RebelInformer.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 RebelInformer extends CardImpl { static { filterWhite.add(new ColorPredicate(ObjectColor.WHITE)); filterRebel.add(Predicates.not(new TokenPredicate())); - filterRebel.add(new SubtypePredicate("Rebel")); + filterRebel.add(new SubtypePredicate(SubType.REBEL)); } public RebelInformer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RepelTheAbominable.java b/Mage.Sets/src/mage/cards/r/RepelTheAbominable.java index 3637dd13a5..39f4828d6e 100644 --- a/Mage.Sets/src/mage/cards/r/RepelTheAbominable.java +++ b/Mage.Sets/src/mage/cards/r/RepelTheAbominable.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.FilterObject; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -46,7 +47,7 @@ public class RepelTheAbominable extends CardImpl { private static final FilterObject filter = new FilterObject("non-Human sources"); static { - filter.add(Predicates.not(new SubtypePredicate("Human"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.HUMAN))); } public RepelTheAbominable(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RhysTheExiled.java b/Mage.Sets/src/mage/cards/r/RhysTheExiled.java index 3ed9cb825b..fc93764c05 100644 --- a/Mage.Sets/src/mage/cards/r/RhysTheExiled.java +++ b/Mage.Sets/src/mage/cards/r/RhysTheExiled.java @@ -38,10 +38,7 @@ import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.RegenerateSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.ColoredManaSymbol; -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; @@ -57,8 +54,8 @@ public class RhysTheExiled extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Elf"); private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("Elf you control"); static { - filter.add(new SubtypePredicate("Elf")); - filter2.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); + filter2.add(new SubtypePredicate(SubType.ELF)); } public RhysTheExiled(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RibbonsOfTheReikai.java b/Mage.Sets/src/mage/cards/r/RibbonsOfTheReikai.java index 1c08443cad..16fc72bf13 100644 --- a/Mage.Sets/src/mage/cards/r/RibbonsOfTheReikai.java +++ b/Mage.Sets/src/mage/cards/r/RibbonsOfTheReikai.java @@ -33,6 +33,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -45,7 +46,7 @@ public class RibbonsOfTheReikai extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Spirit you control"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public RibbonsOfTheReikai(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RiptideDirector.java b/Mage.Sets/src/mage/cards/r/RiptideDirector.java index 89ef9db7bc..008e92d2bd 100644 --- a/Mage.Sets/src/mage/cards/r/RiptideDirector.java +++ b/Mage.Sets/src/mage/cards/r/RiptideDirector.java @@ -38,6 +38,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.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledPermanent; @@ -52,7 +53,7 @@ public class RiptideDirector extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledCreaturePermanent("Wizard you control"); static { - filter.add(new SubtypePredicate("Wizard")); + filter.add(new SubtypePredicate(SubType.WIZARD)); } public RiptideDirector(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SacredMesa.java b/Mage.Sets/src/mage/cards/s/SacredMesa.java index 8f37975c14..feb2ec060d 100644 --- a/Mage.Sets/src/mage/cards/s/SacredMesa.java +++ b/Mage.Sets/src/mage/cards/s/SacredMesa.java @@ -37,6 +37,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.TargetController; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; @@ -52,7 +53,7 @@ public class SacredMesa extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Pegasus"); static { - filter.add(new SubtypePredicate("Pegasus")); + filter.add(new SubtypePredicate(SubType.PEGASUS)); } public SacredMesa(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SavaenElves.java b/Mage.Sets/src/mage/cards/s/SavaenElves.java index 6ca3f523f0..fa7100e684 100644 --- a/Mage.Sets/src/mage/cards/s/SavaenElves.java +++ b/Mage.Sets/src/mage/cards/s/SavaenElves.java @@ -38,6 +38,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.common.FilterEnchantmentPermanent; import mage.filter.predicate.ObjectPlayer; @@ -56,7 +57,7 @@ public class SavaenElves extends CardImpl { private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Auras attached to a land"); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); filter.add(new SavaenElvesPredicate()); } diff --git a/Mage.Sets/src/mage/cards/s/ScionOfTheUrDragon.java b/Mage.Sets/src/mage/cards/s/ScionOfTheUrDragon.java index 2854fdeebc..a41a458e70 100644 --- a/Mage.Sets/src/mage/cards/s/ScionOfTheUrDragon.java +++ b/Mage.Sets/src/mage/cards/s/ScionOfTheUrDragon.java @@ -84,7 +84,7 @@ class ScionOfTheUrDragonEffect extends SearchEffect { private static final FilterCard filter = new FilterPermanentCard("Dragon permanent card"); static { - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public ScionOfTheUrDragonEffect() { diff --git a/Mage.Sets/src/mage/cards/s/Seahunter.java b/Mage.Sets/src/mage/cards/s/Seahunter.java index 029b807c9b..5311882100 100644 --- a/Mage.Sets/src/mage/cards/s/Seahunter.java +++ b/Mage.Sets/src/mage/cards/s/Seahunter.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.Ability; @@ -51,7 +52,7 @@ public class Seahunter extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Merfolk permanent card"); static { - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK)); } public Seahunter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SedgeTroll.java b/Mage.Sets/src/mage/cards/s/SedgeTroll.java index 3f7713b797..d9bc6a3113 100644 --- a/Mage.Sets/src/mage/cards/s/SedgeTroll.java +++ b/Mage.Sets/src/mage/cards/s/SedgeTroll.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 SedgeTroll extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Swamp"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public SedgeTroll(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SeshiroTheAnointed.java b/Mage.Sets/src/mage/cards/s/SeshiroTheAnointed.java index 9db22ce174..522953efc9 100644 --- a/Mage.Sets/src/mage/cards/s/SeshiroTheAnointed.java +++ b/Mage.Sets/src/mage/cards/s/SeshiroTheAnointed.java @@ -35,10 +35,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; 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.game.Game; @@ -57,7 +54,7 @@ public class SeshiroTheAnointed extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Snakes"); static { - filter.add(new SubtypePredicate("Snake")); + filter.add(new SubtypePredicate(SubType.SNAKE)); } public SeshiroTheAnointed(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ShadowSliver.java b/Mage.Sets/src/mage/cards/s/ShadowSliver.java index 43f1ff893c..17595d1ec9 100644 --- a/Mage.Sets/src/mage/cards/s/ShadowSliver.java +++ b/Mage.Sets/src/mage/cards/s/ShadowSliver.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 ShadowSliver extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public ShadowSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ShadowbornDemon.java b/Mage.Sets/src/mage/cards/s/ShadowbornDemon.java index 2e38e74de3..d5f71de674 100644 --- a/Mage.Sets/src/mage/cards/s/ShadowbornDemon.java +++ b/Mage.Sets/src/mage/cards/s/ShadowbornDemon.java @@ -41,6 +41,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.TargetController; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; @@ -60,7 +61,7 @@ public class ShadowbornDemon extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Demon creature"); static { - filter.add(Predicates.not(new SubtypePredicate("Demon"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.DEMON))); } public ShadowbornDemon(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ShaleskinBruiser.java b/Mage.Sets/src/mage/cards/s/ShaleskinBruiser.java index 8b810162dc..79637f18ff 100644 --- a/Mage.Sets/src/mage/cards/s/ShaleskinBruiser.java +++ b/Mage.Sets/src/mage/cards/s/ShaleskinBruiser.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; @@ -51,7 +52,7 @@ public class ShaleskinBruiser extends CardImpl { private static final FilterAttackingCreature filter = new FilterAttackingCreature("other attacking Beast"); static { - filter.add(new SubtypePredicate("Beast")); + filter.add(new SubtypePredicate(SubType.BEAST)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/s/ShamanOfThePack.java b/Mage.Sets/src/mage/cards/s/ShamanOfThePack.java index 1c09721a5a..a4d850a2d5 100644 --- a/Mage.Sets/src/mage/cards/s/ShamanOfThePack.java +++ b/Mage.Sets/src/mage/cards/s/ShamanOfThePack.java @@ -37,6 +37,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.TargetController; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class ShamanOfThePack extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public ShamanOfThePack(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ShiftingSliver.java b/Mage.Sets/src/mage/cards/s/ShiftingSliver.java index d38f2f6004..f7c21d6ca7 100644 --- a/Mage.Sets/src/mage/cards/s/ShiftingSliver.java +++ b/Mage.Sets/src/mage/cards/s/ShiftingSliver.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.Predicates; @@ -50,8 +51,8 @@ public class ShiftingSliver extends CardImpl { private static final FilterCreaturePermanent filterBlockedBy = new FilterCreaturePermanent("except by Slivers"); static { - filterCreatures.add(new SubtypePredicate("Sliver")); - filterBlockedBy.add(Predicates.not(new SubtypePredicate("Sliver"))); + filterCreatures.add(new SubtypePredicate(SubType.SLIVER)); + filterBlockedBy.add(Predicates.not(new SubtypePredicate(SubType.SLIVER))); } public ShiftingSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ShorelineRaider.java b/Mage.Sets/src/mage/cards/s/ShorelineRaider.java index adbada30fe..c3bb24f911 100644 --- a/Mage.Sets/src/mage/cards/s/ShorelineRaider.java +++ b/Mage.Sets/src/mage/cards/s/ShorelineRaider.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; @@ -46,7 +47,7 @@ public class ShorelineRaider extends CardImpl { private static final FilterCard filter = new FilterCard("Kavu"); static { - filter.add(new SubtypePredicate("Kavu")); + filter.add(new SubtypePredicate(SubType.KAVU)); } diff --git a/Mage.Sets/src/mage/cards/s/SidewinderSliver.java b/Mage.Sets/src/mage/cards/s/SidewinderSliver.java index ebc30ae137..0eb39d1d3e 100644 --- a/Mage.Sets/src/mage/cards/s/SidewinderSliver.java +++ b/Mage.Sets/src/mage/cards/s/SidewinderSliver.java @@ -37,6 +37,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; @@ -50,7 +51,7 @@ public class SidewinderSliver extends CardImpl { static final private FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures"); static{ - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public SidewinderSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SiegeDragon.java b/Mage.Sets/src/mage/cards/s/SiegeDragon.java index 2002d82c24..fef983d447 100644 --- a/Mage.Sets/src/mage/cards/s/SiegeDragon.java +++ b/Mage.Sets/src/mage/cards/s/SiegeDragon.java @@ -38,10 +38,7 @@ import mage.abilities.effects.common.DestroyAllEffect; import mage.abilities.keyword.FlyingAbility; 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.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.AbilityPredicate; @@ -62,7 +59,7 @@ public class SiegeDragon extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Walls your opponents control"); static { - filter.add(new SubtypePredicate("Wall")); + filter.add(new SubtypePredicate(SubType.WALL)); filter.add(new ControllerPredicate(TargetController.OPPONENT)); } @@ -98,7 +95,7 @@ class SiegeDragonAttacksTriggeredAbility extends TriggeredAbilityImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("wall"); static { - filter.add(new SubtypePredicate("Wall")); + filter.add(new SubtypePredicate(SubType.WALL)); } public SiegeDragonAttacksTriggeredAbility() { diff --git a/Mage.Sets/src/mage/cards/s/SiegeModification.java b/Mage.Sets/src/mage/cards/s/SiegeModification.java index 874b878ad9..19321c3f06 100644 --- a/Mage.Sets/src/mage/cards/s/SiegeModification.java +++ b/Mage.Sets/src/mage/cards/s/SiegeModification.java @@ -38,10 +38,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.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 SiegeModification extends CardImpl { static { filter.add(Predicates.or(new CardTypePredicate(CardType.CREATURE), - new SubtypePredicate("Vehicle"))); + new SubtypePredicate(SubType.VEHICLE))); } public SiegeModification(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SigardasAid.java b/Mage.Sets/src/mage/cards/s/SigardasAid.java index 5c0d2582d8..7e7815a6a3 100644 --- a/Mage.Sets/src/mage/cards/s/SigardasAid.java +++ b/Mage.Sets/src/mage/cards/s/SigardasAid.java @@ -35,11 +35,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.continuous.CastAsThoughItHadFlashAllEffect; 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.FilterCard; import mage.filter.common.FilterArtifactPermanent; import mage.filter.predicate.Predicates; @@ -59,8 +55,8 @@ public class SigardasAid extends CardImpl { private static final FilterCard filterCard = new FilterCard("Aura and Equipment spells"); static { - filter.add(new SubtypePredicate("Equipment")); - filterCard.add(Predicates.or(new SubtypePredicate("Aura"), new SubtypePredicate("Equipment"))); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); + filterCard.add(Predicates.or(new SubtypePredicate(SubType.AURA), new SubtypePredicate(SubType.EQUIPMENT))); } public SigardasAid(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SilvergladeElemental.java b/Mage.Sets/src/mage/cards/s/SilvergladeElemental.java index 9dc12d6aef..1801b6e23d 100644 --- a/Mage.Sets/src/mage/cards/s/SilvergladeElemental.java +++ b/Mage.Sets/src/mage/cards/s/SilvergladeElemental.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; @@ -47,7 +48,7 @@ public class SilvergladeElemental extends CardImpl { private static final FilterLandCard filter = new FilterLandCard("Forest card"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public SilvergladeElemental(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SkyshroudPoacher.java b/Mage.Sets/src/mage/cards/s/SkyshroudPoacher.java index 492a48cf03..decfcb6ab9 100644 --- a/Mage.Sets/src/mage/cards/s/SkyshroudPoacher.java +++ b/Mage.Sets/src/mage/cards/s/SkyshroudPoacher.java @@ -37,6 +37,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.SubtypePredicate; @@ -51,7 +52,7 @@ public class SkyshroudPoacher extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Elf permanent card"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public SkyshroudPoacher(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SlaveringNulls.java b/Mage.Sets/src/mage/cards/s/SlaveringNulls.java index af6e782a9e..39ace40874 100644 --- a/Mage.Sets/src/mage/cards/s/SlaveringNulls.java +++ b/Mage.Sets/src/mage/cards/s/SlaveringNulls.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.discard.DiscardTargetEffect; 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; @@ -79,7 +80,7 @@ class SlaveringNullsTriggeredAbility extends TriggeredAbilityImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent(); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public SlaveringNullsTriggeredAbility() { diff --git a/Mage.Sets/src/mage/cards/s/SliverHive.java b/Mage.Sets/src/mage/cards/s/SliverHive.java index 83d51a30fb..45375085e9 100644 --- a/Mage.Sets/src/mage/cards/s/SliverHive.java +++ b/Mage.Sets/src/mage/cards/s/SliverHive.java @@ -46,6 +46,7 @@ import mage.abilities.mana.conditional.CreatureCastManaCondition; 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; @@ -66,8 +67,8 @@ public class SliverHive extends CardImpl { } static { - filter.add(new SubtypePredicate("Sliver")); - filterSpell.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); + filterSpell.add(new SubtypePredicate(SubType.SLIVER)); } public SliverHive(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SovereignsOfLostAlara.java b/Mage.Sets/src/mage/cards/s/SovereignsOfLostAlara.java index e4066b2554..ef4e48e336 100644 --- a/Mage.Sets/src/mage/cards/s/SovereignsOfLostAlara.java +++ b/Mage.Sets/src/mage/cards/s/SovereignsOfLostAlara.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.predicate.mageobject.SubtypePredicate; @@ -136,7 +137,7 @@ class SovereignsOfLostAlaraEffect extends OneShotEffect { Permanent attackingCreature = game.getPermanent(getTargetPointer().getFirst(game, source)); if (you != null && attackingCreature != null) { FilterCard filter = new FilterCard("aura that could enchant the lone attacking creature"); - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); filter.add(new AuraCardCanAttachToPermanentId(attackingCreature.getId())); if (you.chooseUse(Outcome.Benefit, "Do you want to search your library?", source, game)) { TargetCardInLibrary target = new TargetCardInLibrary(filter); diff --git a/Mage.Sets/src/mage/cards/s/SpawnOfThraxes.java b/Mage.Sets/src/mage/cards/s/SpawnOfThraxes.java index f87676a4d9..dd4acd18ce 100644 --- a/Mage.Sets/src/mage/cards/s/SpawnOfThraxes.java +++ b/Mage.Sets/src/mage/cards/s/SpawnOfThraxes.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.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreatureOrPlayer; @@ -50,7 +51,7 @@ public class SpawnOfThraxes 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 SpawnOfThraxes(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SpectralShepherd.java b/Mage.Sets/src/mage/cards/s/SpectralShepherd.java index 13d6d9a116..b093cf03a6 100644 --- a/Mage.Sets/src/mage/cards/s/SpectralShepherd.java +++ b/Mage.Sets/src/mage/cards/s/SpectralShepherd.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.TargetController; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; @@ -54,7 +55,7 @@ public class SpectralShepherd extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public SpectralShepherd(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SpinneretSliver.java b/Mage.Sets/src/mage/cards/s/SpinneretSliver.java index 762af8d08c..7523c01a54 100644 --- a/Mage.Sets/src/mage/cards/s/SpinneretSliver.java +++ b/Mage.Sets/src/mage/cards/s/SpinneretSliver.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 SpinneretSliver extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public SpinneretSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SpiritBonds.java b/Mage.Sets/src/mage/cards/s/SpiritBonds.java index 6a6dfc83f0..e3380aca59 100644 --- a/Mage.Sets/src/mage/cards/s/SpiritBonds.java +++ b/Mage.Sets/src/mage/cards/s/SpiritBonds.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.common.FilterControlledPermanent; @@ -62,8 +63,8 @@ public class SpiritBonds extends CardImpl { private static final FilterControlledCreaturePermanent filterNontoken = new FilterControlledCreaturePermanent("nontoken creature"); static { - filter.add(Predicates.not(new SubtypePredicate("Spirit"))); - filterSpirit.add(new SubtypePredicate("Spirit")); + filter.add(Predicates.not(new SubtypePredicate(SubType.SPIRIT))); + filterSpirit.add(new SubtypePredicate(SubType.SPIRIT)); filterNontoken.add(Predicates.not(new TokenPredicate())); } diff --git a/Mage.Sets/src/mage/cards/s/SqueakingPieSneak.java b/Mage.Sets/src/mage/cards/s/SqueakingPieSneak.java index 5822e60aea..67d4dbbd75 100644 --- a/Mage.Sets/src/mage/cards/s/SqueakingPieSneak.java +++ b/Mage.Sets/src/mage/cards/s/SqueakingPieSneak.java @@ -36,6 +36,7 @@ import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.keyword.FearAbility; 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 SqueakingPieSneak 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 SqueakingPieSneak(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SramSeniorEdificer.java b/Mage.Sets/src/mage/cards/s/SramSeniorEdificer.java index 927f94f6da..4ae7d966a8 100644 --- a/Mage.Sets/src/mage/cards/s/SramSeniorEdificer.java +++ b/Mage.Sets/src/mage/cards/s/SramSeniorEdificer.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.constants.SuperType; import mage.filter.FilterSpell; import mage.filter.predicate.Predicates; @@ -49,9 +50,9 @@ public class SramSeniorEdificer extends CardImpl { private static final FilterSpell filter = new FilterSpell("an Aura, Equipment, or Vehicle spell"); static { - filter.add(Predicates.or(new SubtypePredicate("Aura"), - new SubtypePredicate("Equipment"), - new SubtypePredicate("Vehicle"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.AURA), + new SubtypePredicate(SubType.EQUIPMENT), + new SubtypePredicate(SubType.VEHICLE))); } public SramSeniorEdificer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StarfieldOfNyx.java b/Mage.Sets/src/mage/cards/s/StarfieldOfNyx.java index fb47c9e549..13d9875e75 100644 --- a/Mage.Sets/src/mage/cards/s/StarfieldOfNyx.java +++ b/Mage.Sets/src/mage/cards/s/StarfieldOfNyx.java @@ -107,7 +107,7 @@ class StarfieldOfNyxEffect extends ContinuousEffectImpl { private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Each other non-Aura enchantment you control"); static { - filter.add(Predicates.not(new SubtypePredicate("Aura"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.AURA))); filter.add(new AnotherPredicate()); filter.add(new OwnerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/s/SteelshapersGift.java b/Mage.Sets/src/mage/cards/s/SteelshapersGift.java index 9b0b9765af..4c775a1f5d 100644 --- a/Mage.Sets/src/mage/cards/s/SteelshapersGift.java +++ b/Mage.Sets/src/mage/cards/s/SteelshapersGift.java @@ -32,6 +32,7 @@ import mage.constants.CardType; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class SteelshapersGift extends CardImpl { static { filter.add(new CardTypePredicate(CardType.ARTIFACT)); - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public SteelshapersGift(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StrongarmThug.java b/Mage.Sets/src/mage/cards/s/StrongarmThug.java index d82a68c8f3..3074e34d96 100644 --- a/Mage.Sets/src/mage/cards/s/StrongarmThug.java +++ b/Mage.Sets/src/mage/cards/s/StrongarmThug.java @@ -36,6 +36,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInYourGraveyard; @@ -49,7 +50,7 @@ public class StrongarmThug extends CardImpl { private static final FilterCreatureCard filter = new FilterCreatureCard("Mercenary card"); static { - filter.add(new SubtypePredicate("Mercenary")); + filter.add(new SubtypePredicate(SubType.MERCENARY)); } public StrongarmThug(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SurgeOfThoughtweft.java b/Mage.Sets/src/mage/cards/s/SurgeOfThoughtweft.java index 9950bd2f83..fdd22cf1cb 100644 --- a/Mage.Sets/src/mage/cards/s/SurgeOfThoughtweft.java +++ b/Mage.Sets/src/mage/cards/s/SurgeOfThoughtweft.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; @@ -48,7 +49,7 @@ public class SurgeOfThoughtweft extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Kithkin"); static { - filter.add(new SubtypePredicate("Kithkin")); + filter.add(new SubtypePredicate(SubType.KITHKIN)); } public SurgeOfThoughtweft(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TaintedIsle.java b/Mage.Sets/src/mage/cards/t/TaintedIsle.java index 9b8ebb155c..2ec06baf22 100644 --- a/Mage.Sets/src/mage/cards/t/TaintedIsle.java +++ b/Mage.Sets/src/mage/cards/t/TaintedIsle.java @@ -31,6 +31,7 @@ import java.util.UUID; import mage.constants.ComparisonType; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.Mana; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; @@ -51,7 +52,7 @@ public class TaintedIsle 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 TaintedIsle(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TaintedWood.java b/Mage.Sets/src/mage/cards/t/TaintedWood.java index afd783fafb..ed15941aac 100644 --- a/Mage.Sets/src/mage/cards/t/TaintedWood.java +++ b/Mage.Sets/src/mage/cards/t/TaintedWood.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 TaintedWood 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 TaintedWood(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TakenosCavalry.java b/Mage.Sets/src/mage/cards/t/TakenosCavalry.java index d00af15b08..4c74fa3db0 100644 --- a/Mage.Sets/src/mage/cards/t/TakenosCavalry.java +++ b/Mage.Sets/src/mage/cards/t/TakenosCavalry.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.keyword.BushidoAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterAttackingOrBlockingCreature; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class TakenosCavalry extends CardImpl { private static final FilterAttackingOrBlockingCreature filter = new FilterAttackingOrBlockingCreature("attacking or blocking Spirit"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public TakenosCavalry(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TawnossCoffin.java b/Mage.Sets/src/mage/cards/t/TawnossCoffin.java index 399ea34b41..168887ac1a 100644 --- a/Mage.Sets/src/mage/cards/t/TawnossCoffin.java +++ b/Mage.Sets/src/mage/cards/t/TawnossCoffin.java @@ -41,6 +41,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; @@ -130,7 +131,7 @@ class TawnossCoffinEffect extends OneShotEffect { private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent(); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public TawnossCoffinEffect() { @@ -196,7 +197,7 @@ class TawnossCoffinReturnEffect extends OneShotEffect { static { filterAura.add(new CardTypePredicate(CardType.ENCHANTMENT)); - filterAura.add(new SubtypePredicate("Aura")); + filterAura.add(new SubtypePredicate(SubType.AURA)); } public TawnossCoffinReturnEffect() { diff --git a/Mage.Sets/src/mage/cards/t/TeferisRealm.java b/Mage.Sets/src/mage/cards/t/TeferisRealm.java index eb3d2c2cd0..1e5dcf732b 100644 --- a/Mage.Sets/src/mage/cards/t/TeferisRealm.java +++ b/Mage.Sets/src/mage/cards/t/TeferisRealm.java @@ -36,10 +36,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.choices.Choice; import mage.choices.ChoiceImpl; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.SuperType; -import mage.constants.TargetController; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -130,7 +127,7 @@ class TeferisRealmEffect extends OneShotEffect { break; case NON_AURA_ENCHANTMENT: filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - filter.add(Predicates.not(new SubtypePredicate("Aura"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.AURA))); break; default: return false; diff --git a/Mage.Sets/src/mage/cards/t/Tek.java b/Mage.Sets/src/mage/cards/t/Tek.java index aefd16cf55..11c019e003 100644 --- a/Mage.Sets/src/mage/cards/t/Tek.java +++ b/Mage.Sets/src/mage/cards/t/Tek.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.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -60,11 +61,11 @@ public class Tek extends CardImpl { private static final FilterControlledPermanent filterForest = new FilterControlledPermanent("Forest"); 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.MERCENARY)); + filterForest.add(new SubtypePredicate(SubType.FOREST)); } diff --git a/Mage.Sets/src/mage/cards/t/TelJiladLifebreather.java b/Mage.Sets/src/mage/cards/t/TelJiladLifebreather.java index c2348f24b8..1a3defb528 100644 --- a/Mage.Sets/src/mage/cards/t/TelJiladLifebreather.java +++ b/Mage.Sets/src/mage/cards/t/TelJiladLifebreather.java @@ -38,6 +38,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.FilterControlledLandPermanent; import mage.filter.common.FilterControlledPermanent; @@ -53,7 +54,7 @@ public class TelJiladLifebreather extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public TelJiladLifebreather(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}"); diff --git a/Mage.Sets/src/mage/cards/t/TheloniteDruid.java b/Mage.Sets/src/mage/cards/t/TheloniteDruid.java index 8cee5436dd..4d75d0f104 100644 --- a/Mage.Sets/src/mage/cards/t/TheloniteDruid.java +++ b/Mage.Sets/src/mage/cards/t/TheloniteDruid.java @@ -38,10 +38,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.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.Token; @@ -56,7 +53,7 @@ public class TheloniteDruid extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("Forests you control"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public TheloniteDruid(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TheloniteHermit.java b/Mage.Sets/src/mage/cards/t/TheloniteHermit.java index 134ce29bc3..15f212b46f 100644 --- a/Mage.Sets/src/mage/cards/t/TheloniteHermit.java +++ b/Mage.Sets/src/mage/cards/t/TheloniteHermit.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; @@ -53,7 +54,7 @@ public class TheloniteHermit extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Saproling creatures"); static { - filter.add(new SubtypePredicate("Saproling")); + filter.add(new SubtypePredicate(SubType.SAPROLING)); } public TheloniteHermit(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/ThicketBasilisk.java b/Mage.Sets/src/mage/cards/t/ThicketBasilisk.java index 08c1b34235..e1e41a11ce 100644 --- a/Mage.Sets/src/mage/cards/t/ThicketBasilisk.java +++ b/Mage.Sets/src/mage/cards/t/ThicketBasilisk.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 ThicketBasilisk 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 ThicketBasilisk(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/ThornbowArcher.java b/Mage.Sets/src/mage/cards/t/ThornbowArcher.java index 371211092f..fe7febfb6e 100644 --- a/Mage.Sets/src/mage/cards/t/ThornbowArcher.java +++ b/Mage.Sets/src/mage/cards/t/ThornbowArcher.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.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -73,7 +74,7 @@ class ThornbowArcherEffect extends OneShotEffect { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent(); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public ThornbowArcherEffect() { diff --git a/Mage.Sets/src/mage/cards/t/Tithe.java b/Mage.Sets/src/mage/cards/t/Tithe.java index dbb62e16f9..78e98c4856 100644 --- a/Mage.Sets/src/mage/cards/t/Tithe.java +++ b/Mage.Sets/src/mage/cards/t/Tithe.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.FilterCard; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -70,7 +71,7 @@ class TitheEffect extends OneShotEffect { private static final FilterCard filter = new FilterCard("Plains"); static { - filter.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.PLAINS)); } TitheEffect() { diff --git a/Mage.Sets/src/mage/cards/t/TotemSpeaker.java b/Mage.Sets/src/mage/cards/t/TotemSpeaker.java index 4ab125b759..4c235262a6 100644 --- a/Mage.Sets/src/mage/cards/t/TotemSpeaker.java +++ b/Mage.Sets/src/mage/cards/t/TotemSpeaker.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.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class TotemSpeaker extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("a Beast"); static { - filter.add(new SubtypePredicate("Beast")); + filter.add(new SubtypePredicate(SubType.BEAST)); } public TotemSpeaker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TranquilDomain.java b/Mage.Sets/src/mage/cards/t/TranquilDomain.java index f586478b6b..cd3c4580cb 100644 --- a/Mage.Sets/src/mage/cards/t/TranquilDomain.java +++ b/Mage.Sets/src/mage/cards/t/TranquilDomain.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.FilterEnchantmentPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -45,7 +46,7 @@ public class TranquilDomain extends CardImpl { private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("non-Aura enchantments"); static { - filter.add(Predicates.not(new SubtypePredicate("Aura"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.AURA))); } public TranquilDomain(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/u/UgnaughtScrapWorker.java b/Mage.Sets/src/mage/cards/u/UgnaughtScrapWorker.java index ec5192469b..6a9cf171e8 100644 --- a/Mage.Sets/src/mage/cards/u/UgnaughtScrapWorker.java +++ b/Mage.Sets/src/mage/cards/u/UgnaughtScrapWorker.java @@ -34,6 +34,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.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class UgnaughtScrapWorker extends CardImpl { private static final FilterCard filter = new FilterCard("Droid spells"); static { - filter.add(new SubtypePredicate("Droid")); + filter.add(new SubtypePredicate(SubType.DROID)); } public UgnaughtScrapWorker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/u/UktabiWildcats.java b/Mage.Sets/src/mage/cards/u/UktabiWildcats.java index 1144c2b65e..5ae906fe8d 100644 --- a/Mage.Sets/src/mage/cards/u/UktabiWildcats.java +++ b/Mage.Sets/src/mage/cards/u/UktabiWildcats.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; @@ -56,8 +57,8 @@ public class UktabiWildcats extends CardImpl { private static final FilterControlledPermanent sacrificeFilter = new FilterControlledPermanent("a Forest"); static { - filter.add(new SubtypePredicate("Forest")); - sacrificeFilter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); + sacrificeFilter.add(new SubtypePredicate(SubType.FOREST)); } public UktabiWildcats(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/u/UndeadWarchief.java b/Mage.Sets/src/mage/cards/u/UndeadWarchief.java index 7a4e3c9990..7c94a020ba 100644 --- a/Mage.Sets/src/mage/cards/u/UndeadWarchief.java +++ b/Mage.Sets/src/mage/cards/u/UndeadWarchief.java @@ -30,6 +30,7 @@ package mage.cards.u; 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,8 +52,8 @@ public class UndeadWarchief extends CardImpl { private static final FilterCreaturePermanent filterCreatures = new FilterCreaturePermanent("Zombie creatures"); static { - filter.add(new SubtypePredicate("Zombie")); - filterCreatures.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); + filterCreatures.add(new SubtypePredicate(SubType.ZOMBIE)); } public UndeadWarchief(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/u/Unforge.java b/Mage.Sets/src/mage/cards/u/Unforge.java index 53d96b6a3d..14fee63ca9 100644 --- a/Mage.Sets/src/mage/cards/u/Unforge.java +++ b/Mage.Sets/src/mage/cards/u/Unforge.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.FilterArtifactPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -51,7 +52,7 @@ public class Unforge extends CardImpl { private static FilterArtifactPermanent filter = new FilterArtifactPermanent("equipment"); static{ - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public Unforge(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/u/UrgeToFeed.java b/Mage.Sets/src/mage/cards/u/UrgeToFeed.java index b474079cbc..095e17ac33 100644 --- a/Mage.Sets/src/mage/cards/u/UrgeToFeed.java +++ b/Mage.Sets/src/mage/cards/u/UrgeToFeed.java @@ -33,10 +33,7 @@ import mage.abilities.effects.OneShotEffect; 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.Outcome; -import mage.constants.TargetController; +import mage.constants.*; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -81,7 +78,7 @@ class UrgeToFeedEffect extends OneShotEffect { static { filter.add(new ControllerPredicate(TargetController.YOU)); filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); } public UrgeToFeedEffect() { diff --git a/Mage.Sets/src/mage/cards/u/UtopiaMycon.java b/Mage.Sets/src/mage/cards/u/UtopiaMycon.java index 0b44c8aa65..f519df1ec8 100644 --- a/Mage.Sets/src/mage/cards/u/UtopiaMycon.java +++ b/Mage.Sets/src/mage/cards/u/UtopiaMycon.java @@ -40,6 +40,7 @@ import mage.abilities.mana.AnyColorManaAbility; 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; @@ -58,7 +59,7 @@ public class UtopiaMycon extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Saproling"); static { - filter.add(new SubtypePredicate("Saproling")); + filter.add(new SubtypePredicate(SubType.SAPROLING)); } public UtopiaMycon(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/u/UtvaraHellkite.java b/Mage.Sets/src/mage/cards/u/UtvaraHellkite.java index 52c854f4ba..3a24c08259 100644 --- a/Mage.Sets/src/mage/cards/u/UtvaraHellkite.java +++ b/Mage.Sets/src/mage/cards/u/UtvaraHellkite.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.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.UtvaraHellkiteDragonToken; @@ -48,7 +49,7 @@ public class UtvaraHellkite extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Dragon you control"); static { - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public UtvaraHellkite(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WarrenInstigator.java b/Mage.Sets/src/mage/cards/w/WarrenInstigator.java index 7ff79bed49..f4f97d7f79 100644 --- a/Mage.Sets/src/mage/cards/w/WarrenInstigator.java +++ b/Mage.Sets/src/mage/cards/w/WarrenInstigator.java @@ -35,6 +35,7 @@ import mage.abilities.keyword.DoubleStrikeAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class WarrenInstigator extends CardImpl { private static final FilterCreatureCard filter = new FilterCreatureCard("a Goblin creature card"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public WarrenInstigator(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/w/WayOfTheThief.java b/Mage.Sets/src/mage/cards/w/WayOfTheThief.java index 16eed54fdb..675bd63a4d 100644 --- a/Mage.Sets/src/mage/cards/w/WayOfTheThief.java +++ b/Mage.Sets/src/mage/cards/w/WayOfTheThief.java @@ -29,10 +29,7 @@ package mage.cards.w; import java.util.UUID; -import mage.constants.AttachmentType; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Zone; +import mage.constants.*; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; @@ -44,7 +41,6 @@ import mage.abilities.effects.common.continuous.BoostEnchantedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.Outcome; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; @@ -59,7 +55,7 @@ public class WayOfTheThief extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Gate"); static { - filter.add(new SubtypePredicate("Gate")); + filter.add(new SubtypePredicate(SubType.GATE)); } private static final String rule = "Enchanted creature can't be blocked as long as you control a Gate"; diff --git a/Mage.Sets/src/mage/cards/w/WhelmingWave.java b/Mage.Sets/src/mage/cards/w/WhelmingWave.java index 54c18e38bb..479e78eee5 100644 --- a/Mage.Sets/src/mage/cards/w/WhelmingWave.java +++ b/Mage.Sets/src/mage/cards/w/WhelmingWave.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.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,10 +48,10 @@ public class WhelmingWave extends CardImpl { static { filter.add(Predicates.not( Predicates.or( - new SubtypePredicate("Kraken"), - new SubtypePredicate("Leviathan"), - new SubtypePredicate("Octopus"), - new SubtypePredicate("Serpent")))); + new SubtypePredicate(SubType.KRAKEN), + new SubtypePredicate(SubType.LEVIATHAN), + new SubtypePredicate(SubType.OCTOPUS), + new SubtypePredicate(SubType.SERPENT)))); } public WhelmingWave(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/x/XathridNecromancer.java b/Mage.Sets/src/mage/cards/x/XathridNecromancer.java index 89a5af9ec2..83d82c5eca 100644 --- a/Mage.Sets/src/mage/cards/x/XathridNecromancer.java +++ b/Mage.Sets/src/mage/cards/x/XathridNecromancer.java @@ -36,6 +36,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.TargetController; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class XathridNecromancer extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public XathridNecromancer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/y/YukoraThePrisoner.java b/Mage.Sets/src/mage/cards/y/YukoraThePrisoner.java index 34d20948ce..53a6f88d8a 100644 --- a/Mage.Sets/src/mage/cards/y/YukoraThePrisoner.java +++ b/Mage.Sets/src/mage/cards/y/YukoraThePrisoner.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.SuperType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; @@ -54,7 +55,7 @@ public class YukoraThePrisoner extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Ogre creatures"); static { - filter.add(Predicates.not(new SubtypePredicate("Ogre"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.OGRE))); } public YukoraThePrisoner(UUID ownerId, CardSetInfo setInfo) { @@ -86,7 +87,7 @@ class YukoraThePrisonerEffect extends OneShotEffect { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("non-Ogre creatures"); static { - filter.add(Predicates.not(new SubtypePredicate("Ogre"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.OGRE))); } public YukoraThePrisonerEffect() { diff --git a/Mage.Sets/src/mage/cards/z/ZombieMaster.java b/Mage.Sets/src/mage/cards/z/ZombieMaster.java index 409f16d063..a601b5d735 100644 --- a/Mage.Sets/src/mage/cards/z/ZombieMaster.java +++ b/Mage.Sets/src/mage/cards/z/ZombieMaster.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; @@ -54,7 +55,7 @@ public class ZombieMaster extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Zombie creatures"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public ZombieMaster(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/z/ZombieTrailblazer.java b/Mage.Sets/src/mage/cards/z/ZombieTrailblazer.java index 3135c4ab0a..703e72474f 100644 --- a/Mage.Sets/src/mage/cards/z/ZombieTrailblazer.java +++ b/Mage.Sets/src/mage/cards/z/ZombieTrailblazer.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.Predicates; @@ -57,7 +58,7 @@ public class ZombieTrailblazer extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("an untapped Zombie you control"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); filter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Tests/src/test/java/org/mage/test/multiplayer/SimpleGameTest.java b/Mage.Tests/src/test/java/org/mage/test/multiplayer/SimpleGameTest.java index afc664c8f0..d4090015b8 100644 --- a/Mage.Tests/src/test/java/org/mage/test/multiplayer/SimpleGameTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/multiplayer/SimpleGameTest.java @@ -1,6 +1,7 @@ package org.mage.test.multiplayer; import mage.constants.PhaseStep; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterLandPermanent; @@ -35,7 +36,7 @@ public class SimpleGameTest extends CardTestMultiPlayerBase { assertLife(playerD, 20); FilterPermanent filterPermanent = new FilterLandPermanent(); - filterPermanent.add(new SubtypePredicate("Forest")); + filterPermanent.add(new SubtypePredicate(SubType.FOREST)); List forestCards = currentGame.getBattlefield().getAllActivePermanents(filterPermanent, currentGame); Assert.assertEquals(4, forestCards.size()); } diff --git a/Mage/src/main/java/mage/constants/SubType.java b/Mage/src/main/java/mage/constants/SubType.java index 6a691255f6..a6ae5fbea7 100644 --- a/Mage/src/main/java/mage/constants/SubType.java +++ b/Mage/src/main/java/mage/constants/SubType.java @@ -6,9 +6,13 @@ import java.util.Set; import java.util.stream.Collectors; public enum SubType { + + //205.3k Instants and sorceries share their lists of subtypes; these subtypes are called spell types. ARCANE("Arcane", SubTypeSet.SpellType, false), TRAP("Trap", SubTypeSet.SpellType, false), + // 205.3i: Lands have their own unique set of subtypes; these subtypes are called land types. + // Of that list, Forest, Island, Mountain, Plains, and Swamp are the basic land types. FOREST("Forest", SubTypeSet.BasicLandType, false), ISLAND("Island", SubTypeSet.BasicLandType, false), MOUNTAIN("Mountain", SubTypeSet.BasicLandType, false), @@ -23,105 +27,284 @@ public enum SubType { POWER_PLANT("Power-Plant", SubTypeSet.NonBasicLandType, false), TOWER("Tower", SubTypeSet.NonBasicLandType, false), + // 205.3h Enchantments have their own unique set of subtypes; these subtypes are called enchantment types. AURA("Aura", SubTypeSet.EnchantmentType, false), CARTOUCHE("Cartouche", SubTypeSet.EnchantmentType, false), CURSE("Curse", SubTypeSet.EnchantmentType, false), SHRINE("Shrine", SubTypeSet.EnchantmentType, false), + // 205.3g: Artifacts have their own unique set of subtypes; these subtypes are called artifact types. CLUE("Clue", SubTypeSet.ArtifactType, false), + CONTRAPTION("Contraption", SubTypeSet.ArtifactType, false), EQUIPMENT("Equipment", SubTypeSet.ArtifactType, false), FORTIFICATION("Fortification", SubTypeSet.ArtifactType, false), VEHICLE("Vehicle", SubTypeSet.ArtifactType, false), + // 205.3m : Creatures and tribals share their lists of subtypes; these subtypes are called creature types. + ADVISOR("Advisor", SubTypeSet.CreatureType, false), + AETHERBORN("Aetherborn", SubTypeSet.CreatureType, false), ALLY("Ally", SubTypeSet.CreatureType, false), ANGEL("Angel", SubTypeSet.CreatureType, false), + ANTELOPE("Antelope", SubTypeSet.CreatureType, false), + APE("Ape", SubTypeSet.CreatureType, false), + ARCHER("Archer", SubTypeSet.CreatureType, false), + ARCHON("Archon", SubTypeSet.CreatureType, false), ARTIFICER("Artificer", SubTypeSet.CreatureType, false), - ASSEMBLY_WORKER("Assembly-Worker", SubTypeSet.CreatureType, false), ASSASSIN("Assassin", SubTypeSet.CreatureType, false), + ASSEMBLY_WORKER("Assembly-Worker", SubTypeSet.CreatureType, false), ATOG("Atog", SubTypeSet.CreatureType, false), AUROCHS("Aurochs", SubTypeSet.CreatureType, false), + + BADGER("Badger", SubTypeSet.CreatureType, false), BARBARIAN("Barbarian", SubTypeSet.CreatureType, false), + BASILISK("Basilisk", SubTypeSet.CreatureType, false), BAT("Bat", SubTypeSet.CreatureType, false), + BEAR("Bear", SubTypeSet.CreatureType, false), BEAST("Beast", SubTypeSet.CreatureType, false), + BEEBLE("Beeble", SubTypeSet.CreatureType, false), BERSERKER("Berserker", SubTypeSet.CreatureType, false), BIRD("Bird", SubTypeSet.CreatureType, false), BLINKMOTH("Blinkmoth", SubTypeSet.CreatureType, false), + BOARD("Boar", SubTypeSet.CreatureType, false), + BRINGER("Bringer", SubTypeSet.CreatureType, false), + BRUSHWAGG("Brushwagg", SubTypeSet.CreatureType, false), + + CAMARID("Camarid", SubTypeSet.CreatureType, false), + CAMEL("Camel", SubTypeSet.CreatureType, false), CARIBOU("Caribou", SubTypeSet.CreatureType, false), + CARRIER("Carrier", SubTypeSet.CreatureType, false), CAT("Cat", SubTypeSet.CreatureType, false), + CENTAUR("Centaur", SubTypeSet.CreatureType, false), CEPHALID("Cephalid", SubTypeSet.CreatureType, false), - CENTAUR("Centaur" ,SubTypeSet.CreatureType, false), + CHIMERA("Chimera", SubTypeSet.CreatureType, false), + CITIZEN("Citizen", SubTypeSet.CreatureType, false), CLERIC("Cleric", SubTypeSet.CreatureType, false), + COCKATRICE("Cockatrice", SubTypeSet.CreatureType, false), + CONSTRUCT("Construct", SubTypeSet.CreatureType, false), + COWARD("Coward", SubTypeSet.CreatureType, false), + CRAB("Crab", SubTypeSet.CreatureType, false), + CROCODILE("Crocodile", SubTypeSet.CreatureType, false), + CYCLOPS("Cyclops", SubTypeSet.CreatureType, false), + + DAUTHI("Dauthi", SubTypeSet.CreatureType, false), DEMON("Demon", SubTypeSet.CreatureType, false), + DESERTER("Deserter", SubTypeSet.CreatureType, false), + DEVIL("Devil", SubTypeSet.CreatureType, false), + DJINN("Djinn", SubTypeSet.CreatureType, false), DRAGON("Dragon", SubTypeSet.CreatureType, false), + DRAKE("Drake", SubTypeSet.CreatureType, false), + DREADNOUGHT("Dreadnought", SubTypeSet.CreatureType, false), + DRONE("Drone", SubTypeSet.CreatureType, false), DRUID("Druid", SubTypeSet.CreatureType, false), DROID("Droid", SubTypeSet.CreatureType, true), + DRYAD("Dryad", SubTypeSet.CreatureType, true), DWARF("Dwarf", SubTypeSet.CreatureType, false), + + EFREET("Efreet", SubTypeSet.CreatureType, false), + ELDER("Elder", SubTypeSet.CreatureType, false), ELDRAZI("Eldrazi", SubTypeSet.CreatureType, false), ELEMENTAL("Elemental", SubTypeSet.CreatureType, false), ELEPHANT("Elephant", SubTypeSet.CreatureType, false), ELF("Elf", SubTypeSet.CreatureType, false), + ELK("Elk", SubTypeSet.CreatureType, false), + EYE("Eye", SubTypeSet.CreatureType, false), + EWOK("Ewok", SubTypeSet.CreatureType, true), + FAERIE("Faerie", SubTypeSet.CreatureType, false), + FERRET("Ferret", SubTypeSet.CreatureType, false), + FISH("Fish", SubTypeSet.CreatureType, false), FLAGBEARER("Flagbearer", SubTypeSet.CreatureType, false), FOX("Fox", SubTypeSet.CreatureType, false), + FROG("Frog", SubTypeSet.CreatureType, false), FUNGUS("Fungus", SubTypeSet.CreatureType, false), + + GARGOYLE("Gargoyle", SubTypeSet.CreatureType, false), + GERM("Germ", SubTypeSet.CreatureType, false), GIANT("Giant", SubTypeSet.CreatureType, false), + GNOME("Gnome", SubTypeSet.CreatureType, false), + GOLEM("Golem", SubTypeSet.CreatureType, false), GOAT("Goat", SubTypeSet.CreatureType, false), GOBLIN("Goblin", SubTypeSet.CreatureType, false), + GOD("God", SubTypeSet.CreatureType, false), GORGON("Gorgon", SubTypeSet.CreatureType, false), + GRAVEBORN("Graveborn", SubTypeSet.CreatureType, false), + GREMLIN("Gremlin", SubTypeSet.CreatureType, false), GRIFFIN("Griffin", SubTypeSet.CreatureType, false), + + HAG("Hag", SubTypeSet.CreatureType, false), + HARPY("Harpy", SubTypeSet.CreatureType, false), + HELLION("Hellion", SubTypeSet.CreatureType, false), + HIPPO("Hippo", SubTypeSet.CreatureType, false), + HIPPOGRIFF("Hippogriff", SubTypeSet.CreatureType, false), + HOMARID("Homarid", SubTypeSet.CreatureType, false), HOMUNCULUS("Homunculus", SubTypeSet.CreatureType, false), HORROR("Horror", SubTypeSet.CreatureType, false), + HORSE("Horse", SubTypeSet.CreatureType, false), + HOUND("Hound", SubTypeSet.CreatureType, false), HUMAN("Human", SubTypeSet.CreatureType, false), HUNTER("Hunter", SubTypeSet.CreatureType, false), + HYDRA("Hydra", SubTypeSet.CreatureType, false), + HYENA("Hyena", SubTypeSet.CreatureType, false), + + ILLUSION("Illusion", SubTypeSet.CreatureType, false), + IMP("Imp", SubTypeSet.CreatureType, false), + INCARNATION("Incarnation", SubTypeSet.CreatureType, false), INSECT("Insect", SubTypeSet.CreatureType, false), + JEDI("Jedi", SubTypeSet.CreatureType, true), + JELLYFISH("Jellyfish", SubTypeSet.CreatureType, true), + JUGGERNAUT("Juggernaut", SubTypeSet.CreatureType, true), + + KAVU("Kavu", SubTypeSet.CreatureType, true), + KIRIN("Kirin", 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), + KRAKEN("Kraken", SubTypeSet.CreatureType, false), + + LAMIA("Lamia", SubTypeSet.CreatureType, true), + LAMMASU("Lammasu", SubTypeSet.CreatureType, true), + LEECH("Leech", SubTypeSet.CreatureType, true), + LEVIATHAN("Leviathan", SubTypeSet.CreatureType, false), + LHURGOYF("Lhurgoyf", SubTypeSet.CreatureType, false), + LICID("Licid", SubTypeSet.CreatureType, false), + LIZARD("Lizard", SubTypeSet.CreatureType, false), + + MANTICORE("Manticore", SubTypeSet.CreatureType, false), + MASTICORE("Masticore", SubTypeSet.CreatureType, false), MERCENARY("Mercenary", SubTypeSet.CreatureType, false), MERFOLK("Merfolk", SubTypeSet.CreatureType, false), + METATHRAN("Metathran", SubTypeSet.CreatureType, false), MINION("Minion", SubTypeSet.CreatureType, false), MINOTAUR("Minotaur", SubTypeSet.CreatureType, false), + MOLE("Mole", SubTypeSet.CreatureType, false), + MONGER("Monger", SubTypeSet.CreatureType, false), + MONGOOSE("Mongoose", SubTypeSet.CreatureType, false), + MONK("Monk", SubTypeSet.CreatureType, false), + MONKEY("Monkey", SubTypeSet.CreatureType, false), MOONFOLK("Moonfolk", SubTypeSet.CreatureType, false), + MUTANT("Mutant", SubTypeSet.CreatureType, false), MYR("Myr", SubTypeSet.CreatureType, false), + MYSTIC("Mystic", SubTypeSet.CreatureType, false), + + + NAGA("Naga", SubTypeSet.CreatureType, false), + NAUTILUS("Nautilus", SubTypeSet.CreatureType, false), + NEPHILIM("Nephilim", SubTypeSet.CreatureType, false), + NIGHTMARE("Nightmare", SubTypeSet.CreatureType, false), + NIGHTSTALKER("Nightstalker", SubTypeSet.CreatureType, false), NINJA("Ninja", SubTypeSet.CreatureType, false), + NOGGLE("Noggle", SubTypeSet.CreatureType, false), + NOMAD("Nomad", SubTypeSet.CreatureType, false), + NYMPH("Nymph", SubTypeSet.CreatureType, false), + + OCTOPUS("Octopus", SubTypeSet.CreatureType, false), OGRE("Ogre", SubTypeSet.CreatureType, false), + OOZE("Ooze", SubTypeSet.CreatureType, false), + ORB("Orb", SubTypeSet.CreatureType, false), ORC("Orc", SubTypeSet.CreatureType, false), + ORGG("Orgg", SubTypeSet.CreatureType, false), + OUPHE("Ouphe", SubTypeSet.CreatureType, false), + OX("Ox", SubTypeSet.CreatureType, false), + OYSTER("Oyster", SubTypeSet.CreatureType, false), + + PEGASUS("Pegasus", SubTypeSet.CreatureType, false), PENTAVITE("Pentavite", SubTypeSet.CreatureType, false), + PEST("Pest", SubTypeSet.CreatureType, false), + PHELDAGRIFF("Pheldagriff", SubTypeSet.CreatureType, false), + PHOENIX("Phoenix", SubTypeSet.CreatureType, false), + PILOT("Pilot", SubTypeSet.CreatureType, false), + PINCHER("Pincher", SubTypeSet.CreatureType, false), + PIRATE("Pirate", SubTypeSet.CreatureType, false), PLANT("Plant", SubTypeSet.CreatureType, false), + PRAETOR("Praetor", SubTypeSet.CreatureType, false), PRISM("Prism", SubTypeSet.CreatureType, false), + PROCESSOR("Processor", SubTypeSet.CreatureType, false), + + RABBIT("Rabbit", SubTypeSet.CreatureType, false), RAT("Rat", SubTypeSet.CreatureType, false), REBEL("Rebel", SubTypeSet.CreatureType, false), + REFLECTION("Reflection", SubTypeSet.CreatureType, false), + RHINO("Rhino", SubTypeSet.CreatureType, false), + RIGGER("Rigger", SubTypeSet.CreatureType, false), ROGUE("Rogue", SubTypeSet.CreatureType, false), - SAPROLING("Saproling", SubTypeSet.CreatureType, false), + + + SABLE("Sable", SubTypeSet.CreatureType, false), + SALAMANDER("Salamander", SubTypeSet.CreatureType, false), SAMURAI("Samurai", SubTypeSet.CreatureType, false), + SAND("Sand", SubTypeSet.CreatureType, false), + SAPROLING("Saproling", SubTypeSet.CreatureType, false), + SATYR("Satyr", SubTypeSet.CreatureType, false), SCARECROW("Scarecrow", SubTypeSet.CreatureType, false), SCION("Scion", SubTypeSet.CreatureType, false), + SCORPION("Scorpion", SubTypeSet.CreatureType, false), + SCOUT("Scout", SubTypeSet.CreatureType, false), SERF("Serf", SubTypeSet.CreatureType, false), + SERPENT("Serpent", SubTypeSet.CreatureType, false), SERVO("Servo", SubTypeSet.CreatureType, false), + SHADE("Shade", SubTypeSet.CreatureType, false), SHAMAN("Shaman", SubTypeSet.CreatureType, false), + SHAPESHIFTER("Shapeshifter", SubTypeSet.CreatureType, false), + SHEEP("Sheep", SubTypeSet.CreatureType, false), + SIREN("Siren", SubTypeSet.CreatureType, false), SKELETON("Skeleton", SubTypeSet.CreatureType, false), + SLITH("Slith", SubTypeSet.CreatureType, false), SLIVER("Sliver", SubTypeSet.CreatureType, false), + SLUG("Slug", SubTypeSet.CreatureType, false), SNAKE("Snake", SubTypeSet.CreatureType, false), SOLDIER("Soldier", SubTypeSet.CreatureType, false), + SOLTARI("Soltari", SubTypeSet.CreatureType, false), + SPAWN("Spawn", SubTypeSet.CreatureType, false), + SPECTER("Specter", SubTypeSet.CreatureType, false), + SPELLSHAPER("Spellshaper", SubTypeSet.CreatureType, false), + SPHINX("Sphix", SubTypeSet.CreatureType, false), SPIDER("Spider", SubTypeSet.CreatureType, false), + SPIKE("Spike", SubTypeSet.CreatureType, false), SPIRIT("Spirit", SubTypeSet.CreatureType, false), + SPLITTER("Splitter", SubTypeSet.CreatureType, false), + SPONGE("Sponge", SubTypeSet.CreatureType, false), + SQUID("Squid", SubTypeSet.CreatureType, false), SQUIRREL("Squirrel", SubTypeSet.CreatureType, false), + STARFISH("Starfish", SubTypeSet.CreatureType, false), STARSHIP("Starship", SubTypeSet.CreatureType, true), + SURRAKAR("Surrakar", SubTypeSet.CreatureType, false), + SURVIVOR("Survivor", SubTypeSet.CreatureType, false), + + TETRAVITE("Tetravite", SubTypeSet.CreatureType, false), + THALAKOS("Thalakos", SubTypeSet.CreatureType, false), THOPTER("Thopter", SubTypeSet.CreatureType, false), THRULL("Thrull", SubTypeSet.CreatureType, false), TREEFOLK("Treefolk", SubTypeSet.CreatureType, false), + TRISKELAVITE("Triskelavite", SubTypeSet.CreatureType, false), + TROLL("Troll", SubTypeSet.CreatureType, false), + TURTLE("Turtle", SubTypeSet.CreatureType, false), + TROOPER("Trooper", SubTypeSet.CreatureType, true), + + UNICORN("Unicorn", SubTypeSet.CreatureType, false), + VAMPIRE("Vampire", SubTypeSet.CreatureType, false), + VEDALKEN("Vedalken", SubTypeSet.CreatureType, false), + VIASHINO("Viashino", SubTypeSet.CreatureType, false), + VOLVER("Volver", SubTypeSet.CreatureType, false), WALL("Wall", SubTypeSet.CreatureType, false), WARRIOR("Warrior", SubTypeSet.CreatureType, false), + WEIRD("Weird", SubTypeSet.CreatureType, false), WEREWOLF("Werewolf", SubTypeSet.CreatureType, false), + WHALE("Whale", SubTypeSet.CreatureType, false), WIZARD("Wizard", SubTypeSet.CreatureType, false), WOLF("Wolf", SubTypeSet.CreatureType, false), + WOLVERINE("Wolverine", SubTypeSet.CreatureType, false), + WOMBAT("Wombat", SubTypeSet.CreatureType, false), + WRAITH("Wraith", SubTypeSet.CreatureType, false), + WURM("Wurm", SubTypeSet.CreatureType, false), + + YETI("Yeti", SubTypeSet.CreatureType, false), + ZOMBIE("Zombie", SubTypeSet.CreatureType, false), + ZUBERA("Zubera", SubTypeSet.CreatureType, false), AJANI("Ajani", SubTypeSet.PlaneswalkerType, false), CHANDRA("Chandra", SubTypeSet.PlaneswalkerType, false), @@ -169,7 +352,7 @@ public enum SubType { } 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()); + 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/game/command/emblems/GideonOfTheTrialsEmblem.java b/Mage/src/main/java/mage/game/command/emblems/GideonOfTheTrialsEmblem.java index 1a167019db..7c9fa13d68 100644 --- a/Mage/src/main/java/mage/game/command/emblems/GideonOfTheTrialsEmblem.java +++ b/Mage/src/main/java/mage/game/command/emblems/GideonOfTheTrialsEmblem.java @@ -32,6 +32,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousRuleModifyingEffectImpl; import mage.constants.Duration; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterPlaneswalkerPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,7 +58,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/src/main/java/mage/game/command/emblems/LilianaOfTheDarkRealmsEmblem.java b/Mage/src/main/java/mage/game/command/emblems/LilianaOfTheDarkRealmsEmblem.java index c7231a4366..499bdfb0d0 100644 --- a/Mage/src/main/java/mage/game/command/emblems/LilianaOfTheDarkRealmsEmblem.java +++ b/Mage/src/main/java/mage/game/command/emblems/LilianaOfTheDarkRealmsEmblem.java @@ -34,6 +34,7 @@ import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.mana.SimpleManaAbility; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class LilianaOfTheDarkRealmsEmblem extends Emblem { private static final FilterLandPermanent filter = new FilterLandPermanent("Swamps"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public LilianaOfTheDarkRealmsEmblem() { From 6d83a4a65f612cf3491dc29d63dc0447b4685048 Mon Sep 17 00:00:00 2001 From: igoudt Date: Sat, 20 May 2017 22:41:04 +0200 Subject: [PATCH 4/6] finish rewriting subtypepredicate --- Mage.Sets/src/mage/cards/b/BalaGedThief.java | 3 ++- Mage.Sets/src/mage/cards/b/BalefulStare.java | 3 ++- Mage.Sets/src/mage/cards/b/BasalSliver.java | 3 ++- Mage.Sets/src/mage/cards/b/BatteringSliver.java | 3 ++- Mage.Sets/src/mage/cards/b/BattlewandOak.java | 5 +++-- Mage.Sets/src/mage/cards/b/BeaconOfCreation.java | 3 ++- Mage.Sets/src/mage/cards/b/BelligerentSliver.java | 7 ++----- Mage.Sets/src/mage/cards/b/BenBenAkkiHermit.java | 3 ++- Mage.Sets/src/mage/cards/b/Benthicore.java | 3 ++- Mage.Sets/src/mage/cards/b/BerserkMurlodont.java | 3 ++- Mage.Sets/src/mage/cards/b/BlasterMage.java | 3 ++- Mage.Sets/src/mage/cards/b/BloodChinFanatic.java | 3 ++- Mage.Sets/src/mage/cards/b/BloodSpeaker.java | 5 +++-- Mage.Sets/src/mage/cards/b/BloodTribute.java | 3 ++- Mage.Sets/src/mage/cards/b/BludgeonBrawl.java | 2 +- Mage.Sets/src/mage/cards/b/BogStriderAsh.java | 3 ++- Mage.Sets/src/mage/cards/b/Boneknitter.java | 3 ++- Mage.Sets/src/mage/cards/b/BoskBanneret.java | 5 +++-- Mage.Sets/src/mage/cards/b/Brawn.java | 3 ++- .../src/mage/cards/b/BrighthearthBanneret.java | 5 +++-- Mage.Sets/src/mage/cards/b/BrightstoneRitual.java | 3 ++- Mage.Sets/src/mage/cards/b/BroodBirthing.java | 5 +++-- .../src/mage/cards/b/BrunaLightOfAlabaster.java | 2 +- Mage.Sets/src/mage/cards/c/CabalArchon.java | 3 ++- Mage.Sets/src/mage/cards/c/CateranKidnappers.java | 3 ++- Mage.Sets/src/mage/cards/c/CeaselessSearblades.java | 3 ++- Mage.Sets/src/mage/cards/c/ChampionOfTheParish.java | 3 ++- Mage.Sets/src/mage/cards/c/ChaosCharm.java | 3 ++- Mage.Sets/src/mage/cards/c/ChiefChirpa.java | 3 ++- Mage.Sets/src/mage/cards/c/ChiefOfTheScale.java | 3 ++- Mage.Sets/src/mage/cards/c/ChokedEstuary.java | 5 +++-- Mage.Sets/src/mage/cards/c/ClifftopRetreat.java | 3 ++- Mage.Sets/src/mage/cards/c/ClotSliver.java | 3 ++- .../mage/cards/c/CoaxFromTheBlindEternities.java | 3 ++- .../src/mage/cards/c/CompanionOfTheTrials.java | 3 ++- Mage.Sets/src/mage/cards/c/CourageousOutrider.java | 3 ++- Mage.Sets/src/mage/cards/c/CrimsonMuckwader.java | 3 ++- .../src/mage/cards/c/CrossroadsConsecrator.java | 3 ++- Mage.Sets/src/mage/cards/c/CrucibleOfFire.java | 7 ++----- Mage.Sets/src/mage/cards/c/CryptGhast.java | 3 ++- Mage.Sets/src/mage/cards/c/CurseOfMaritLage.java | 7 ++----- Mage.Sets/src/mage/cards/c/CutTheTethers.java | 3 ++- Mage.Sets/src/mage/cards/d/DakmorSorceress.java | 3 ++- Mage.Sets/src/mage/cards/d/DarkHeartOfTheWood.java | 3 ++- Mage.Sets/src/mage/cards/d/DarkIntimations.java | 2 +- Mage.Sets/src/mage/cards/d/DarkSalvation.java | 3 ++- Mage.Sets/src/mage/cards/d/DaruWarchief.java | 5 +++-- Mage.Sets/src/mage/cards/d/DauntlessDourbark.java | 7 ++++--- .../src/mage/cards/d/DauntlessRiverMarshal.java | 3 ++- Mage.Sets/src/mage/cards/d/DeathlessBehemoth.java | 5 +++-- Mage.Sets/src/mage/cards/d/DeathsporeThallid.java | 7 ++----- Mage.Sets/src/mage/cards/d/DementiaSliver.java | 7 ++----- Mage.Sets/src/mage/cards/d/DevoutChaplain.java | 3 ++- Mage.Sets/src/mage/cards/d/DiregrafCaptain.java | 5 +++-- Mage.Sets/src/mage/cards/d/DiregrafColossus.java | 5 +++-- Mage.Sets/src/mage/cards/d/DiregrafEscort.java | 3 ++- Mage.Sets/src/mage/cards/d/Disarm.java | 3 ++- Mage.Sets/src/mage/cards/d/DocentOfPerfection.java | 3 ++- Mage.Sets/src/mage/cards/d/DoubtlessOne.java | 3 ++- Mage.Sets/src/mage/cards/d/DragonloftIdol.java | 7 ++----- Mage.Sets/src/mage/cards/d/DragonskullSummit.java | 3 ++- Mage.Sets/src/mage/cards/d/DrogskolCaptain.java | 3 ++- Mage.Sets/src/mage/cards/d/DromarsCavern.java | 3 ++- Mage.Sets/src/mage/cards/d/DrownedCatacomb.java | 3 ++- Mage.Sets/src/mage/cards/d/DungroveElder.java | 3 ++- .../src/mage/cards/d/DwarvenDemolitionTeam.java | 3 ++- Mage.Sets/src/mage/cards/d/DwarvenPony.java | 3 ++- Mage.Sets/src/mage/cards/d/DwynensElite.java | 3 ++- Mage.Sets/src/mage/cards/e/Earthblighter.java | 3 ++- Mage.Sets/src/mage/cards/e/EchoBaseCommando.java | 2 +- Mage.Sets/src/mage/cards/e/Edgewalker.java | 3 ++- Mage.Sets/src/mage/cards/e/EerieProcession.java | 3 ++- Mage.Sets/src/mage/cards/e/ElvishEulogist.java | 3 ++- Mage.Sets/src/mage/cards/e/ElvishHandservant.java | 3 ++- Mage.Sets/src/mage/cards/e/EmeraldCharm.java | 3 ++- Mage.Sets/src/mage/cards/e/EngulfTheShore.java | 7 ++----- Mage.Sets/src/mage/cards/e/ErhnamDjinn.java | 7 ++----- Mage.Sets/src/mage/cards/e/Everglades.java | 3 ++- Mage.Sets/src/mage/cards/e/EvilEyeOfOrmsByGore.java | 9 +++------ Mage.Sets/src/mage/cards/e/EvilEyeOfUrborg.java | 7 ++----- Mage.Sets/src/mage/cards/f/Facevaulter.java | 7 ++----- Mage.Sets/src/mage/cards/f/FaerieNoble.java | 3 ++- Mage.Sets/src/mage/cards/f/FeastOfBlood.java | 3 ++- Mage.Sets/src/mage/cards/f/FendeepSummoner.java | 3 ++- Mage.Sets/src/mage/cards/f/FieldMarshal.java | 3 ++- Mage.Sets/src/mage/cards/f/FiendOfTheShadows.java | 2 +- Mage.Sets/src/mage/cards/f/Filth.java | 3 ++- Mage.Sets/src/mage/cards/f/FinalIteration.java | 7 ++----- Mage.Sets/src/mage/cards/f/FireDragon.java | 3 ++- Mage.Sets/src/mage/cards/f/FirecatBlitz.java | 7 ++----- Mage.Sets/src/mage/cards/f/FlamekinBladewhirl.java | 3 ++- Mage.Sets/src/mage/cards/f/FlamekinVillage.java | 3 ++- Mage.Sets/src/mage/cards/f/FlamestickCourier.java | 3 ++- Mage.Sets/src/mage/cards/f/Flashfires.java | 3 ++- Mage.Sets/src/mage/cards/f/FleetingMemories.java | 3 ++- .../src/mage/cards/f/FoulTongueInvocation.java | 3 ++- Mage.Sets/src/mage/cards/f/FrogtosserBanneret.java | 5 +++-- Mage.Sets/src/mage/cards/f/Fruition.java | 3 ++- Mage.Sets/src/mage/cards/f/FugitiveDruid.java | 3 ++- Mage.Sets/src/mage/cards/f/FungalBloom.java | 3 ++- Mage.Sets/src/mage/cards/g/GallowsWarden.java | 3 ++- Mage.Sets/src/mage/cards/g/GameTrail.java | 5 +++-- Mage.Sets/src/mage/cards/g/GangrenousZombies.java | 7 ++----- Mage.Sets/src/mage/cards/g/GempalmAvenger.java | 3 ++- Mage.Sets/src/mage/cards/g/GhosthelmCourier.java | 3 ++- Mage.Sets/src/mage/cards/g/GiantsIre.java | 3 ++- Mage.Sets/src/mage/cards/g/GisaAndGeralf.java | 2 +- Mage.Sets/src/mage/cards/g/GlacialCrasher.java | 3 ++- Mage.Sets/src/mage/cards/g/GnarlrootTrapper.java | 3 ++- Mage.Sets/src/mage/cards/g/GoblinLackey.java | 3 ++- Mage.Sets/src/mage/cards/g/GoblinLookout.java | 3 ++- Mage.Sets/src/mage/cards/g/GoblinMasons.java | 3 ++- Mage.Sets/src/mage/cards/g/GoblinRingleader.java | 3 ++- Mage.Sets/src/mage/cards/g/GoblinSledder.java | 3 ++- Mage.Sets/src/mage/cards/g/GoblinSoothsayer.java | 3 ++- Mage.Sets/src/mage/cards/g/GoblinTaskmaster.java | 3 ++- Mage.Sets/src/mage/cards/g/GraniteGrip.java | 2 +- Mage.Sets/src/mage/cards/g/Greedo.java | 7 ++----- Mage.Sets/src/mage/cards/g/GriffinRider.java | 3 ++- Mage.Sets/src/mage/cards/g/GripOfPhyresis.java | 3 ++- Mage.Sets/src/mage/cards/g/GrixisPanorama.java | 11 ++++------- .../src/mage/cards/g/GuardianOfCloverdell.java | 3 ++- Mage.Sets/src/mage/cards/h/HagHedgeMage.java | 5 +++-- Mage.Sets/src/mage/cards/h/HamletCaptain.java | 3 ++- Mage.Sets/src/mage/cards/h/HammerOfRuin.java | 3 ++- Mage.Sets/src/mage/cards/h/HanSolo.java | 2 +- Mage.Sets/src/mage/cards/h/HarabazDruid.java | 3 ++- Mage.Sets/src/mage/cards/h/HarbingerOfSpring.java | 3 ++- Mage.Sets/src/mage/cards/h/HazezonTamar.java | 5 +++-- Mage.Sets/src/mage/cards/h/HeWhoHungers.java | 3 ++- Mage.Sets/src/mage/cards/h/HeliodsPilgrim.java | 3 ++- Mage.Sets/src/mage/cards/h/HeraldOfDromoka.java | 3 ++- Mage.Sets/src/mage/cards/h/HinterlandHarbor.java | 3 ++- Mage.Sets/src/mage/cards/h/HondenOfNightsReach.java | 3 ++- Mage.Sets/src/mage/cards/h/HornedSliver.java | 3 ++- Mage.Sets/src/mage/cards/h/HumanFrailty.java | 3 ++- Mage.Sets/src/mage/cards/h/HuntingWilds.java | 3 ++- Mage.Sets/src/mage/cards/i/ImperiousPerfect.java | 2 +- Mage.Sets/src/mage/cards/i/InameDeathAspect.java | 7 ++----- Mage.Sets/src/mage/cards/i/InameLifeAspect.java | 3 ++- Mage.Sets/src/mage/cards/i/Invisibility.java | 2 +- Mage.Sets/src/mage/cards/i/IreOfKaminari.java | 3 ++- Mage.Sets/src/mage/cards/i/IroncladSlayer.java | 3 ++- Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java | 3 ++- Mage.Sets/src/mage/cards/i/IsolatedChapel.java | 3 ++- Mage.Sets/src/mage/cards/k/KaaliaOfTheVast.java | 11 ++++------- Mage.Sets/src/mage/cards/k/KalonianTwingrove.java | 3 ++- .../src/mage/cards/k/KaminoCloningFacility.java | 3 ++- .../src/mage/cards/k/KarametraGodOfHarvests.java | 9 +++------ Mage.Sets/src/mage/cards/k/Karma.java | 3 ++- Mage.Sets/src/mage/cards/k/KavuMonarch.java | 5 +++-- Mage.Sets/src/mage/cards/k/KinsbaileCavalier.java | 3 ++- Mage.Sets/src/mage/cards/k/KirdApe.java | 3 ++- Mage.Sets/src/mage/cards/k/KirdChieftain.java | 3 ++- Mage.Sets/src/mage/cards/k/KithkinMourncaller.java | 3 ++- Mage.Sets/src/mage/cards/k/KjeldoranOutpost.java | 3 ++- .../src/mage/cards/k/KnightOfTheReliquary.java | 8 +++----- .../src/mage/cards/k/KodamaOfTheCenterTree.java | 7 ++----- .../src/mage/cards/k/KorlashHeirToBlackblade.java | 9 +++------ Mage.Sets/src/mage/cards/k/KrosanWarchief.java | 5 +++-- Mage.Sets/src/mage/cards/k/KrovikanMist.java | 3 ++- Mage.Sets/src/mage/cards/l/LanternScout.java | 3 ++- Mage.Sets/src/mage/cards/l/LastStand.java | 11 ++++++----- Mage.Sets/src/mage/cards/l/LegionsOfLimDul.java | 3 ++- Mage.Sets/src/mage/cards/l/LichLordOfUnx.java | 3 ++- Mage.Sets/src/mage/cards/l/Lifeblood.java | 3 ++- .../src/mage/cards/l/LilianaDeathsMajesty.java | 3 ++- Mage.Sets/src/mage/cards/l/LilianasMastery.java | 3 ++- Mage.Sets/src/mage/cards/l/LongForgottenGohei.java | 5 +++-- Mage.Sets/src/mage/cards/l/LowlandOaf.java | 8 ++------ Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java | 3 ++- Mage.Sets/src/mage/cards/m/MadAuntie.java | 3 ++- Mage.Sets/src/mage/cards/m/MaintenanceHangar.java | 12 +++--------- Mage.Sets/src/mage/cards/m/ManrikiGusari.java | 2 +- Mage.Sets/src/mage/cards/m/MarshFlitter.java | 7 ++----- Mage.Sets/src/mage/cards/m/MaskedGorgon.java | 7 ++----- Mage.Sets/src/mage/cards/m/MayorOfAvabruck.java | 2 +- Mage.Sets/src/mage/cards/m/MazesEnd.java | 3 ++- Mage.Sets/src/mage/cards/m/MerfolkSovereign.java | 5 +++-- Mage.Sets/src/mage/cards/m/MerrowReejerey.java | 10 ++++------ Mage.Sets/src/mage/cards/m/MightSliver.java | 3 ++- Mage.Sets/src/mage/cards/m/MindSludge.java | 3 ++- Mage.Sets/src/mage/cards/m/MireKavu.java | 3 ++- Mage.Sets/src/mage/cards/m/MiresToll.java | 3 ++- Mage.Sets/src/mage/cards/m/MiseryCharm.java | 5 +++-- Mage.Sets/src/mage/cards/m/Moonmist.java | 4 ++-- Mage.Sets/src/mage/cards/m/MtendaGriffin.java | 3 ++- Mage.Sets/src/mage/cards/m/MundaAmbushLeader.java | 7 ++----- Mage.Sets/src/mage/cards/m/MundasVanguard.java | 3 ++- Mage.Sets/src/mage/cards/m/MurasaPyromancer.java | 3 ++- Mage.Sets/src/mage/cards/n/NamelessOne.java | 3 ++- Mage.Sets/src/mage/cards/n/NaturesLore.java | 3 ++- Mage.Sets/src/mage/cards/n/NebelgastHerald.java | 3 ++- Mage.Sets/src/mage/cards/n/NectarFaerie.java | 2 +- Mage.Sets/src/mage/cards/n/NemataGroveGuardian.java | 9 +++------ Mage.Sets/src/mage/cards/n/NessianGameWarden.java | 3 ++- Mage.Sets/src/mage/cards/n/NimbusMaze.java | 5 +++-- Mage.Sets/src/mage/cards/n/NineRingedBo.java | 3 ++- Mage.Sets/src/mage/cards/n/NissaRevane.java | 5 +++-- Mage.Sets/src/mage/cards/n/NissasPilgrimage.java | 3 ++- Mage.Sets/src/mage/cards/n/NomadMythmaker.java | 3 ++- Mage.Sets/src/mage/cards/n/NoxiousGhoul.java | 5 +++-- Mage.Sets/src/mage/cards/n/Nullify.java | 3 ++- Mage.Sets/src/mage/cards/n/NutCollector.java | 8 ++------ .../src/mage/cards/o/OathkeeperTakenosDaisho.java | 2 +- Mage.Sets/src/mage/cards/o/OjutaiSoulOfWinter.java | 7 ++----- Mage.Sets/src/mage/cards/o/OmnathLocusOfRage.java | 3 ++- Mage.Sets/src/mage/cards/o/OnduCleric.java | 3 ++- Mage.Sets/src/mage/cards/o/OrbitalBombardment.java | 3 ++- Mage.Sets/src/mage/cards/o/OrcGeneral.java | 7 ++++--- Mage.Sets/src/mage/cards/p/PearlspearCourier.java | 3 ++- Mage.Sets/src/mage/cards/p/Peppersmoke.java | 3 ++- Mage.Sets/src/mage/cards/p/PerilousForays.java | 11 ++++++----- Mage.Sets/src/mage/cards/p/PestilenceRats.java | 3 ++- Mage.Sets/src/mage/cards/p/PhyrexianDriver.java | 3 ++- Mage.Sets/src/mage/cards/p/PietyCharm.java | 5 +++-- Mage.Sets/src/mage/cards/p/PlagueSliver.java | 7 ++----- Mage.Sets/src/mage/cards/p/PreeminentCaptain.java | 3 ++- Mage.Sets/src/mage/cards/p/PrimalBellow.java | 3 ++- Mage.Sets/src/mage/cards/p/PrincessLeia.java | 7 ++----- Mage.Sets/src/mage/cards/p/PsychicSpear.java | 3 ++- Mage.Sets/src/mage/cards/p/Pulverize.java | 3 ++- Mage.Sets/src/mage/cards/p/PuresteelPaladin.java | 8 +++----- Mage.Sets/src/mage/cards/q/QasaliAmbusher.java | 9 +++------ Mage.Sets/src/mage/cards/q/QuagSickness.java | 9 +++------ .../src/mage/cards/q/QuestForTheGoblinLord.java | 7 ++----- .../src/mage/cards/q/QuestForTheHolyRelic.java | 3 ++- Mage.Sets/src/mage/cards/q/QuestForUlasTemple.java | 13 +++++-------- Mage.Sets/src/mage/cards/q/QuickSliver.java | 3 ++- Mage.Sets/src/mage/cards/r/RakdosTheDefiler.java | 5 +++-- Mage.Sets/src/mage/cards/r/RamosianCaptain.java | 3 ++- Mage.Sets/src/mage/cards/r/RamosianRally.java | 3 ++- Mage.Sets/src/mage/cards/r/RamosianSergeant.java | 8 ++++---- Mage.Sets/src/mage/cards/r/RangersPath.java | 3 ++- Mage.Sets/src/mage/cards/r/RathiIntimidator.java | 3 ++- Mage.Sets/src/mage/cards/r/Rattlechains.java | 5 +++-- Mage.Sets/src/mage/cards/r/RecklessCohort.java | 7 ++----- Mage.Sets/src/mage/cards/r/RelentlessDead.java | 7 ++----- Mage.Sets/src/mage/cards/r/RenewingDawn.java | 3 ++- Mage.Sets/src/mage/cards/r/ReverentSilence.java | 3 ++- Mage.Sets/src/mage/cards/r/RimeDryad.java | 3 ++- Mage.Sets/src/mage/cards/r/RiotRingleader.java | 3 ++- Mage.Sets/src/mage/cards/r/RithsGrove.java | 3 ++- Mage.Sets/src/mage/cards/r/RooftopStorm.java | 2 +- Mage.Sets/src/mage/cards/r/RootCage.java | 7 ++----- Mage.Sets/src/mage/cards/r/RusticClachan.java | 3 ++- Mage.Sets/src/mage/cards/s/SagesDousing.java | 3 ++- Mage.Sets/src/mage/cards/s/SaruliGatekeepers.java | 3 ++- Mage.Sets/src/mage/cards/s/Scald.java | 3 ++- Mage.Sets/src/mage/cards/s/ScaleguardSentinels.java | 3 ++- Mage.Sets/src/mage/cards/s/Scarecrone.java | 3 ++- Mage.Sets/src/mage/cards/s/ScionOfOona.java | 10 ++++------ Mage.Sets/src/mage/cards/s/ScourgeOfFleets.java | 8 ++------ Mage.Sets/src/mage/cards/s/ScourgeOfValkas.java | 5 +++-- Mage.Sets/src/mage/cards/s/ScoutTrooper.java | 3 ++- Mage.Sets/src/mage/cards/s/SeaGateLoremaster.java | 3 ++- Mage.Sets/src/mage/cards/s/SelkieHedgeMage.java | 10 +++++----- Mage.Sets/src/mage/cards/s/SereneHeart.java | 3 ++- Mage.Sets/src/mage/cards/s/ShadowTrooper.java | 3 ++- Mage.Sets/src/mage/cards/s/Shapesharer.java | 7 ++----- Mage.Sets/src/mage/cards/s/ShepherdOfRot.java | 3 ++- Mage.Sets/src/mage/cards/s/SigardaHeronsGrace.java | 7 ++----- .../src/mage/cards/s/SilumgarTheDriftingDeath.java | 2 +- .../src/mage/cards/s/SimaYiWeiFieldMarshal.java | 7 ++----- Mage.Sets/src/mage/cards/s/SimicGuildmage.java | 3 ++- Mage.Sets/src/mage/cards/s/SkirkOutrider.java | 3 ++- Mage.Sets/src/mage/cards/s/SliverOverlord.java | 2 +- Mage.Sets/src/mage/cards/s/SosukeSonOfSeshiro.java | 7 ++----- Mage.Sets/src/mage/cards/s/SosukesSummons.java | 3 ++- Mage.Sets/src/mage/cards/s/SpawnbinderMage.java | 3 ++- Mage.Sets/src/mage/cards/s/SpawnsireOfUlamog.java | 3 ++- Mage.Sets/src/mage/cards/s/SpeederTrooper.java | 3 ++- Mage.Sets/src/mage/cards/s/SpiritMirror.java | 7 ++----- Mage.Sets/src/mage/cards/s/SpittingSliver.java | 3 ++- Mage.Sets/src/mage/cards/s/SpurredWolverine.java | 3 ++- Mage.Sets/src/mage/cards/s/SquelchingLeeches.java | 3 ++- Mage.Sets/src/mage/cards/s/SquirrelMob.java | 3 ++- Mage.Sets/src/mage/cards/s/StaffOfTheMindMagus.java | 3 ++- Mage.Sets/src/mage/cards/s/StarDestroyer.java | 3 ++- .../src/mage/cards/s/SteelshaperApprentice.java | 3 ++- .../src/mage/cards/s/StinkdrinkerDaredevil.java | 3 ++- Mage.Sets/src/mage/cards/s/StonehewerGiant.java | 3 ++- Mage.Sets/src/mage/cards/s/StonybrookBanneret.java | 5 +++-- Mage.Sets/src/mage/cards/s/StormwingDragon.java | 3 ++- Mage.Sets/src/mage/cards/s/StrengthOfArms.java | 3 ++- Mage.Sets/src/mage/cards/s/StripBare.java | 5 +++-- Mage.Sets/src/mage/cards/s/StromkirkCaptain.java | 3 ++- Mage.Sets/src/mage/cards/s/StromkirkNoble.java | 3 ++- Mage.Sets/src/mage/cards/s/SummonTheSchool.java | 3 ++- Mage.Sets/src/mage/cards/s/SupremeInquisitor.java | 3 ++- Mage.Sets/src/mage/cards/s/SylvanPrimordial.java | 3 ++- .../src/mage/cards/t/TakenoSamuraiGeneral.java | 2 +- Mage.Sets/src/mage/cards/t/TalonSliver.java | 3 ++- Mage.Sets/src/mage/cards/t/TarPitcher.java | 3 ++- Mage.Sets/src/mage/cards/t/TerentatekCub.java | 3 ++- Mage.Sets/src/mage/cards/t/ThaliasLieutenant.java | 3 ++- Mage.Sets/src/mage/cards/t/ThallidDevourer.java | 7 ++----- Mage.Sets/src/mage/cards/t/TheUnspeakable.java | 3 ++- Mage.Sets/src/mage/cards/t/ThievingSprite.java | 3 ++- Mage.Sets/src/mage/cards/t/ThingFromTheDeep.java | 3 ++- Mage.Sets/src/mage/cards/t/Thoughtleech.java | 3 ++- Mage.Sets/src/mage/cards/t/ThunderOfHooves.java | 3 ++- Mage.Sets/src/mage/cards/t/Thwart.java | 3 ++- Mage.Sets/src/mage/cards/t/Tidewalker.java | 3 ++- Mage.Sets/src/mage/cards/t/TimbermawLarva.java | 3 ++- Mage.Sets/src/mage/cards/t/TimberwatchElf.java | 3 ++- .../src/mage/cards/t/TradeFederationBattleship.java | 3 ++- Mage.Sets/src/mage/cards/u/UmbraMystic.java | 3 ++- Mage.Sets/src/mage/cards/u/UnderworldSlums.java | 11 ++++------- Mage.Sets/src/mage/cards/u/UnholyGrotto.java | 3 ++- Mage.Sets/src/mage/cards/u/UrgentExorcism.java | 3 ++- Mage.Sets/src/mage/cards/v/VastwoodAnimist.java | 7 ++----- Mage.Sets/src/mage/cards/v/VedalkenShackles.java | 3 ++- Mage.Sets/src/mage/cards/v/VengefulFirebrand.java | 3 ++- Mage.Sets/src/mage/cards/v/VerdelothTheAncient.java | 9 +++------ Mage.Sets/src/mage/cards/v/VirulentSliver.java | 3 ++- Mage.Sets/src/mage/cards/v/VitalSplicer.java | 3 ++- Mage.Sets/src/mage/cards/v/VoiceOfTheWoods.java | 3 ++- Mage.Sets/src/mage/cards/v/VoidmageProdigy.java | 3 ++- Mage.Sets/src/mage/cards/w/WaitingInTheWeeds.java | 3 ++- Mage.Sets/src/mage/cards/w/WalkTheAeons.java | 3 ++- Mage.Sets/src/mage/cards/w/WalkerOfSecretWays.java | 3 ++- Mage.Sets/src/mage/cards/w/WallOfMulch.java | 3 ++- Mage.Sets/src/mage/cards/w/WandOfTheElements.java | 5 +++-- Mage.Sets/src/mage/cards/w/WanderwineProphets.java | 2 +- Mage.Sets/src/mage/cards/w/WarFalcon.java | 5 +++-- .../src/mage/cards/w/WardenOfTheFirstTree.java | 5 +++-- Mage.Sets/src/mage/cards/w/WarrenScourgeElf.java | 3 ++- Mage.Sets/src/mage/cards/w/WarrenWeirding.java | 3 ++- Mage.Sets/src/mage/cards/w/WaterspoutDjinn.java | 3 ++- Mage.Sets/src/mage/cards/w/WaywardServant.java | 3 ++- Mage.Sets/src/mage/cards/w/Wellwisher.java | 3 ++- Mage.Sets/src/mage/cards/w/WildNacatl.java | 5 +++-- Mage.Sets/src/mage/cards/w/WillowPriestess.java | 3 ++- Mage.Sets/src/mage/cards/w/WingedSliver.java | 3 ++- Mage.Sets/src/mage/cards/w/WrensRunPackmaster.java | 2 +- Mage.Sets/src/mage/cards/w/WrensRunVanquisher.java | 3 ++- Mage.Sets/src/mage/cards/y/YavimayaDryad.java | 3 ++- Mage/src/main/java/mage/constants/SubType.java | 2 ++ .../predicate/mageobject/SubtypePredicate.java | 3 --- .../game/command/emblems/KothOfTheHammerEmblem.java | 11 ++++------- .../command/emblems/LilianaTheLastHopeEmblem.java | 3 ++- 342 files changed, 736 insertions(+), 634 deletions(-) diff --git a/Mage.Sets/src/mage/cards/b/BalaGedThief.java b/Mage.Sets/src/mage/cards/b/BalaGedThief.java index 4168325452..6056af48f2 100644 --- a/Mage.Sets/src/mage/cards/b/BalaGedThief.java +++ b/Mage.Sets/src/mage/cards/b/BalaGedThief.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.common.FilterControlledPermanent; @@ -104,7 +105,7 @@ class BalaGedThiefEffect extends OneShotEffect { Player you = game.getPlayer(source.getControllerId()); FilterControlledPermanent filter = new FilterControlledPermanent(); - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); int numberOfAllies = game.getBattlefield().countAll(filter, you.getId(), game); diff --git a/Mage.Sets/src/mage/cards/b/BalefulStare.java b/Mage.Sets/src/mage/cards/b/BalefulStare.java index a74ce3ceb7..20350ea0ea 100644 --- a/Mage.Sets/src/mage/cards/b/BalefulStare.java +++ b/Mage.Sets/src/mage/cards/b/BalefulStare.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.Predicates; import mage.filter.predicate.mageobject.ColorPredicate; @@ -77,7 +78,7 @@ class BalefulStareEffect extends OneShotEffect { private static final FilterCard filter = new FilterCard("Mountain or red card"); static { - filter.add(Predicates.or(new SubtypePredicate("Mountain"), + filter.add(Predicates.or(new SubtypePredicate(SubType.MOUNTAIN), new ColorPredicate(ObjectColor.RED))); } diff --git a/Mage.Sets/src/mage/cards/b/BasalSliver.java b/Mage.Sets/src/mage/cards/b/BasalSliver.java index b074ccf76c..50be806e09 100644 --- a/Mage.Sets/src/mage/cards/b/BasalSliver.java +++ b/Mage.Sets/src/mage/cards/b/BasalSliver.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 BasalSliver extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("All Slivers"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public BasalSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BatteringSliver.java b/Mage.Sets/src/mage/cards/b/BatteringSliver.java index d60a5a1a9d..8c3e27fae1 100644 --- a/Mage.Sets/src/mage/cards/b/BatteringSliver.java +++ b/Mage.Sets/src/mage/cards/b/BatteringSliver.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 BatteringSliver extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("all Sliver creatures"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public BatteringSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BattlewandOak.java b/Mage.Sets/src/mage/cards/b/BattlewandOak.java index c64455a2a2..15b818d59a 100644 --- a/Mage.Sets/src/mage/cards/b/BattlewandOak.java +++ b/Mage.Sets/src/mage/cards/b/BattlewandOak.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.FilterPermanent; import mage.filter.FilterSpell; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,8 +51,8 @@ public class BattlewandOak extends CardImpl { private static final FilterPermanent filterForest = new FilterPermanent("a Forest"); private static final FilterSpell filterTreefolk = new FilterSpell("a Treefolk spell"); static { - filterForest.add(new SubtypePredicate("Forest")); - filterTreefolk.add(new SubtypePredicate("Treefolk")); + filterForest.add(new SubtypePredicate(SubType.FOREST)); + filterTreefolk.add(new SubtypePredicate(SubType.TREEFOLK)); } public BattlewandOak(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BeaconOfCreation.java b/Mage.Sets/src/mage/cards/b/BeaconOfCreation.java index 8b990c11b1..c1ab604d18 100644 --- a/Mage.Sets/src/mage/cards/b/BeaconOfCreation.java +++ b/Mage.Sets/src/mage/cards/b/BeaconOfCreation.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.ShuffleSpellEffect; 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.InsectToken; @@ -48,7 +49,7 @@ public class BeaconOfCreation extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forest you control"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public BeaconOfCreation(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BelligerentSliver.java b/Mage.Sets/src/mage/cards/b/BelligerentSliver.java index 501b469576..d28c363f41 100644 --- a/Mage.Sets/src/mage/cards/b/BelligerentSliver.java +++ b/Mage.Sets/src/mage/cards/b/BelligerentSliver.java @@ -34,10 +34,7 @@ import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.keyword.MenaceAbility; 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; @@ -54,7 +51,7 @@ public class BelligerentSliver extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public BelligerentSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BenBenAkkiHermit.java b/Mage.Sets/src/mage/cards/b/BenBenAkkiHermit.java index 58aefd6e53..965d04e390 100644 --- a/Mage.Sets/src/mage/cards/b/BenBenAkkiHermit.java +++ b/Mage.Sets/src/mage/cards/b/BenBenAkkiHermit.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.SuperType; import mage.constants.Zone; import mage.filter.common.FilterLandPermanent; @@ -57,7 +58,7 @@ public class BenBenAkkiHermit extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public BenBenAkkiHermit (UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/Benthicore.java b/Mage.Sets/src/mage/cards/b/Benthicore.java index e74017fe5f..0533803c64 100644 --- a/Mage.Sets/src/mage/cards/b/Benthicore.java +++ b/Mage.Sets/src/mage/cards/b/Benthicore.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.Predicates; @@ -60,7 +61,7 @@ public class Benthicore extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK)); } public Benthicore(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BerserkMurlodont.java b/Mage.Sets/src/mage/cards/b/BerserkMurlodont.java index 5d7007ae5b..c0df865728 100644 --- a/Mage.Sets/src/mage/cards/b/BerserkMurlodont.java +++ b/Mage.Sets/src/mage/cards/b/BerserkMurlodont.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 BerserkMurlodont extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a Beast"); static { - filter.add(new SubtypePredicate("Beast")); + filter.add(new SubtypePredicate(SubType.BEAST)); } public BerserkMurlodont(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BlasterMage.java b/Mage.Sets/src/mage/cards/b/BlasterMage.java index 0022e28fa2..e4e11e9245 100644 --- a/Mage.Sets/src/mage/cards/b/BlasterMage.java +++ b/Mage.Sets/src/mage/cards/b/BlasterMage.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.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class BlasterMage extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Wall"); static { - filter.add(new SubtypePredicate("Wall")); + filter.add(new SubtypePredicate(SubType.WALL)); } public BlasterMage(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BloodChinFanatic.java b/Mage.Sets/src/mage/cards/b/BloodChinFanatic.java index be504b13a7..81b7f0a51f 100644 --- a/Mage.Sets/src/mage/cards/b/BloodChinFanatic.java +++ b/Mage.Sets/src/mage/cards/b/BloodChinFanatic.java @@ -39,6 +39,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.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -58,7 +59,7 @@ public class BloodChinFanatic extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Warrior")); + filter.add(new SubtypePredicate(SubType.WARRIOR)); } public BloodChinFanatic(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BloodSpeaker.java b/Mage.Sets/src/mage/cards/b/BloodSpeaker.java index 57bc50da82..9b422b6976 100644 --- a/Mage.Sets/src/mage/cards/b/BloodSpeaker.java +++ b/Mage.Sets/src/mage/cards/b/BloodSpeaker.java @@ -38,6 +38,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.TargetController; import mage.constants.Zone; import mage.filter.FilterCard; @@ -56,8 +57,8 @@ public class BloodSpeaker extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Demon under your control"); private static final FilterCard filterCard = new FilterCard("Demon card"); static { - filter.add(new SubtypePredicate("Demon")); - filterCard.add(new SubtypePredicate("Demon")); + filter.add(new SubtypePredicate(SubType.DEMON)); + filterCard.add(new SubtypePredicate(SubType.DEMON)); } public BloodSpeaker (UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BloodTribute.java b/Mage.Sets/src/mage/cards/b/BloodTribute.java index f6130c8cfe..87992db02a 100644 --- a/Mage.Sets/src/mage/cards/b/BloodTribute.java +++ b/Mage.Sets/src/mage/cards/b/BloodTribute.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.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -59,7 +60,7 @@ public class BloodTribute extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); } public BloodTribute(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BludgeonBrawl.java b/Mage.Sets/src/mage/cards/b/BludgeonBrawl.java index 07eaf6f5e6..c318edff8f 100644 --- a/Mage.Sets/src/mage/cards/b/BludgeonBrawl.java +++ b/Mage.Sets/src/mage/cards/b/BludgeonBrawl.java @@ -108,7 +108,7 @@ class BludgeonBrawlAddSubtypeEffect extends ContinuousEffectImpl { public boolean apply(Game game, Ability source) { FilterArtifactPermanent filter = new FilterArtifactPermanent("noncreature, non-Equipment artifact"); filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); - filter.add(Predicates.not(new SubtypePredicate("Equipment"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.EQUIPMENT))); Cards affectedPermanents = new CardsImpl(); List permanents = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game); diff --git a/Mage.Sets/src/mage/cards/b/BogStriderAsh.java b/Mage.Sets/src/mage/cards/b/BogStriderAsh.java index 10df9f8475..e05ecfeb83 100644 --- a/Mage.Sets/src/mage/cards/b/BogStriderAsh.java +++ b/Mage.Sets/src/mage/cards/b/BogStriderAsh.java @@ -36,6 +36,7 @@ import mage.abilities.keyword.SwampwalkAbility; 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; @@ -50,7 +51,7 @@ public class BogStriderAsh extends CardImpl { private static final FilterSpell filter = new FilterSpell("a Goblin spell"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public BogStriderAsh(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/Boneknitter.java b/Mage.Sets/src/mage/cards/b/Boneknitter.java index 7762e53fb3..bd2163c83f 100644 --- a/Mage.Sets/src/mage/cards/b/Boneknitter.java +++ b/Mage.Sets/src/mage/cards/b/Boneknitter.java @@ -36,6 +36,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.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class Boneknitter extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Zombie"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public Boneknitter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BoskBanneret.java b/Mage.Sets/src/mage/cards/b/BoskBanneret.java index ac42feadd1..6b44f72de5 100644 --- a/Mage.Sets/src/mage/cards/b/BoskBanneret.java +++ b/Mage.Sets/src/mage/cards/b/BoskBanneret.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 BoskBanneret extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Treefolk"), - new SubtypePredicate("Shaman"))); + new SubtypePredicate(SubType.TREEFOLK), + new SubtypePredicate(SubType.SHAMAN))); } public BoskBanneret(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/Brawn.java b/Mage.Sets/src/mage/cards/b/Brawn.java index 9372e0db31..6e3146a317 100644 --- a/Mage.Sets/src/mage/cards/b/Brawn.java +++ b/Mage.Sets/src/mage/cards/b/Brawn.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 Brawn extends CardImpl { static { filter.add(new CardTypePredicate(CardType.LAND)); - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public Brawn(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BrighthearthBanneret.java b/Mage.Sets/src/mage/cards/b/BrighthearthBanneret.java index 6721f69e8c..185359313a 100644 --- a/Mage.Sets/src/mage/cards/b/BrighthearthBanneret.java +++ b/Mage.Sets/src/mage/cards/b/BrighthearthBanneret.java @@ -35,6 +35,7 @@ import mage.abilities.keyword.ReinforceAbility; 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; @@ -52,8 +53,8 @@ public class BrighthearthBanneret extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Elemental"), - new SubtypePredicate("Warrior"))); + new SubtypePredicate(SubType.ELEMENTAL), + new SubtypePredicate(SubType.WARRIOR))); } public BrighthearthBanneret(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BrightstoneRitual.java b/Mage.Sets/src/mage/cards/b/BrightstoneRitual.java index 78e631c0b4..b75ca66afe 100644 --- a/Mage.Sets/src/mage/cards/b/BrightstoneRitual.java +++ b/Mage.Sets/src/mage/cards/b/BrightstoneRitual.java @@ -33,6 +33,7 @@ import mage.abilities.effects.common.DynamicManaEffect; 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 BrightstoneRitual extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Goblin on the battlefield"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public BrightstoneRitual(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/b/BroodBirthing.java b/Mage.Sets/src/mage/cards/b/BroodBirthing.java index db7825d298..b44d5b9b36 100644 --- a/Mage.Sets/src/mage/cards/b/BroodBirthing.java +++ b/Mage.Sets/src/mage/cards/b/BroodBirthing.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.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -82,8 +83,8 @@ class BroodBirthingEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Eldrazi Spawn"); - filter.add(new SubtypePredicate("Eldrazi")); - filter.add(new SubtypePredicate("Spawn")); + filter.add(new SubtypePredicate(SubType.ELDRAZI)); + filter.add(new SubtypePredicate(SubType.SPAWN)); EldraziSpawnToken token = new EldraziSpawnToken(); int count = game.getBattlefield().countAll(filter, source.getControllerId(), game) > 0 ? 3 : 1; diff --git a/Mage.Sets/src/mage/cards/b/BrunaLightOfAlabaster.java b/Mage.Sets/src/mage/cards/b/BrunaLightOfAlabaster.java index a6294d520f..65ad99bc44 100644 --- a/Mage.Sets/src/mage/cards/b/BrunaLightOfAlabaster.java +++ b/Mage.Sets/src/mage/cards/b/BrunaLightOfAlabaster.java @@ -109,7 +109,7 @@ class BrunaLightOfAlabasterEffect extends OneShotEffect { filterAura.add(new SubtypePredicate(SubType.AURA)); filterAura.add(new AuraPermanentCanAttachToPermanentId(bruna)); filterAuraCard.add(new CardTypePredicate(CardType.ENCHANTMENT)); - filterAuraCard.add(new SubtypePredicate("Aura")); + filterAuraCard.add(new SubtypePredicate(SubType.AURA)); filterAuraCard.add(new AuraCardCanAttachToPermanentId(bruna)); if (player == null) { diff --git a/Mage.Sets/src/mage/cards/c/CabalArchon.java b/Mage.Sets/src/mage/cards/c/CabalArchon.java index 19e15dc197..117f2d5ddd 100644 --- a/Mage.Sets/src/mage/cards/c/CabalArchon.java +++ b/Mage.Sets/src/mage/cards/c/CabalArchon.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.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -55,7 +56,7 @@ public class CabalArchon extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Cleric"); static { - filter.add(new SubtypePredicate("Cleric")); + filter.add(new SubtypePredicate(SubType.CLERIC)); } public CabalArchon(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CateranKidnappers.java b/Mage.Sets/src/mage/cards/c/CateranKidnappers.java index ba7d15e9a0..9e9ee91823 100644 --- a/Mage.Sets/src/mage/cards/c/CateranKidnappers.java +++ b/Mage.Sets/src/mage/cards/c/CateranKidnappers.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; @@ -54,7 +55,7 @@ public class CateranKidnappers extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 3 or less"); static { - filter.add(new SubtypePredicate("Mercenary")); + filter.add(new SubtypePredicate(SubType.MERCENARY)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 4)); } diff --git a/Mage.Sets/src/mage/cards/c/CeaselessSearblades.java b/Mage.Sets/src/mage/cards/c/CeaselessSearblades.java index ff0ed86000..215c93986b 100644 --- a/Mage.Sets/src/mage/cards/c/CeaselessSearblades.java +++ b/Mage.Sets/src/mage/cards/c/CeaselessSearblades.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.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -77,7 +78,7 @@ class CeaselessSearbladesTriggeredAbility extends TriggeredAbilityImpl { private static final FilterCard filter = new FilterCard("an Elemental"); static { - filter.add(new SubtypePredicate("Elemental")); + filter.add(new SubtypePredicate(SubType.ELEMENTAL)); } CeaselessSearbladesTriggeredAbility() { diff --git a/Mage.Sets/src/mage/cards/c/ChampionOfTheParish.java b/Mage.Sets/src/mage/cards/c/ChampionOfTheParish.java index 1e2de5f859..c7e6f33153 100644 --- a/Mage.Sets/src/mage/cards/c/ChampionOfTheParish.java +++ b/Mage.Sets/src/mage/cards/c/ChampionOfTheParish.java @@ -33,6 +33,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.CounterType; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledCreaturePermanent; @@ -49,7 +50,7 @@ public class ChampionOfTheParish extends CardImpl { private static final FilterPermanent filter = new FilterControlledCreaturePermanent("another Human"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/c/ChaosCharm.java b/Mage.Sets/src/mage/cards/c/ChaosCharm.java index cd549d2e8a..25870a8239 100644 --- a/Mage.Sets/src/mage/cards/c/ChaosCharm.java +++ b/Mage.Sets/src/mage/cards/c/ChaosCharm.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.TargetPermanent; @@ -52,7 +53,7 @@ public class ChaosCharm extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Wall"); static { - filter.add(new SubtypePredicate("Wall")); + filter.add(new SubtypePredicate(SubType.WALL)); } public ChaosCharm(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/ChiefChirpa.java b/Mage.Sets/src/mage/cards/c/ChiefChirpa.java index 7c037cd4fb..06a5b93cb4 100644 --- a/Mage.Sets/src/mage/cards/c/ChiefChirpa.java +++ b/Mage.Sets/src/mage/cards/c/ChiefChirpa.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.MonstrosityAbility; 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.counters.CounterType; @@ -65,7 +66,7 @@ public class ChiefChirpa extends CardImpl { diedFilter.add(new ColorPredicate(ObjectColor.GREEN)); diedFilter.add(new ControllerPredicate(TargetController.YOU)); - ewokFilter.add(new SubtypePredicate("Ewok")); + ewokFilter.add(new SubtypePredicate(SubType.EWOK)); ewokFilter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/c/ChiefOfTheScale.java b/Mage.Sets/src/mage/cards/c/ChiefOfTheScale.java index affcf3da0a..80b4844d47 100644 --- a/Mage.Sets/src/mage/cards/c/ChiefOfTheScale.java +++ b/Mage.Sets/src/mage/cards/c/ChiefOfTheScale.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 ChiefOfTheScale extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Warrior creatures"); static { - filter.add(new SubtypePredicate("Warrior")); + filter.add(new SubtypePredicate(SubType.WARRIOR)); } public ChiefOfTheScale(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/ChokedEstuary.java b/Mage.Sets/src/mage/cards/c/ChokedEstuary.java index e89059e9d4..870727959d 100644 --- a/Mage.Sets/src/mage/cards/c/ChokedEstuary.java +++ b/Mage.Sets/src/mage/cards/c/ChokedEstuary.java @@ -35,6 +35,7 @@ import mage.abilities.mana.BlueManaAbility; 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 ChokedEstuary extends CardImpl { private static final FilterCard filter = new FilterCard("an Island or Swamp card from your hand"); static { - filter.add(Predicates.or(new SubtypePredicate("Island"), - new SubtypePredicate("Swamp"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.ISLAND), + new SubtypePredicate(SubType.SWAMP))); } public ChokedEstuary(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/ClifftopRetreat.java b/Mage.Sets/src/mage/cards/c/ClifftopRetreat.java index 83ed18010b..728ec1e42d 100644 --- a/Mage.Sets/src/mage/cards/c/ClifftopRetreat.java +++ b/Mage.Sets/src/mage/cards/c/ClifftopRetreat.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; @@ -54,7 +55,7 @@ public class ClifftopRetreat extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.add(Predicates.or(new SubtypePredicate("Mountain"), new SubtypePredicate("Plains"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.MOUNTAIN), new SubtypePredicate(SubType.PLAINS))); } public ClifftopRetreat(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/ClotSliver.java b/Mage.Sets/src/mage/cards/c/ClotSliver.java index b2d87fd0fd..b9b79eb577 100644 --- a/Mage.Sets/src/mage/cards/c/ClotSliver.java +++ b/Mage.Sets/src/mage/cards/c/ClotSliver.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; @@ -51,7 +52,7 @@ public class ClotSliver extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Slivers"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public ClotSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CoaxFromTheBlindEternities.java b/Mage.Sets/src/mage/cards/c/CoaxFromTheBlindEternities.java index b6bd03c3bd..92be6392f8 100644 --- a/Mage.Sets/src/mage/cards/c/CoaxFromTheBlindEternities.java +++ b/Mage.Sets/src/mage/cards/c/CoaxFromTheBlindEternities.java @@ -31,6 +31,7 @@ import mage.abilities.effects.common.WishEffect; 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 CoaxFromTheBlindEternities extends CardImpl { private static final FilterCard filter = new FilterCard("an Eldrazi card"); static { - filter.add(new SubtypePredicate("Eldrazi")); + filter.add(new SubtypePredicate(SubType.ELDRAZI)); } public CoaxFromTheBlindEternities(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CompanionOfTheTrials.java b/Mage.Sets/src/mage/cards/c/CompanionOfTheTrials.java index 34827a65a5..0cd1ecb678 100644 --- a/Mage.Sets/src/mage/cards/c/CompanionOfTheTrials.java +++ b/Mage.Sets/src/mage/cards/c/CompanionOfTheTrials.java @@ -39,6 +39,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.FilterPlaneswalkerPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class CompanionOfTheTrials extends CardImpl { private static final FilterPlaneswalkerPermanent filter = new FilterPlaneswalkerPermanent("you control a Gideon planeswalker"); static { - filter.add(new SubtypePredicate("Gideon")); + filter.add(new SubtypePredicate(SubType.GIDEON)); } public CompanionOfTheTrials(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CourageousOutrider.java b/Mage.Sets/src/mage/cards/c/CourageousOutrider.java index e01a7a9450..b88be3dc9e 100644 --- a/Mage.Sets/src/mage/cards/c/CourageousOutrider.java +++ b/Mage.Sets/src/mage/cards/c/CourageousOutrider.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; 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 CourageousOutrider extends CardImpl { private static final FilterCard filter = new FilterCard("a Human card"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public CourageousOutrider(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CrimsonMuckwader.java b/Mage.Sets/src/mage/cards/c/CrimsonMuckwader.java index d62d9d8d03..e65dbb14db 100644 --- a/Mage.Sets/src/mage/cards/c/CrimsonMuckwader.java +++ b/Mage.Sets/src/mage/cards/c/CrimsonMuckwader.java @@ -36,6 +36,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; @@ -51,7 +52,7 @@ public class CrimsonMuckwader extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Swamp"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public CrimsonMuckwader(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CrossroadsConsecrator.java b/Mage.Sets/src/mage/cards/c/CrossroadsConsecrator.java index dc11058efe..91d75800ed 100644 --- a/Mage.Sets/src/mage/cards/c/CrossroadsConsecrator.java +++ b/Mage.Sets/src/mage/cards/c/CrossroadsConsecrator.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.FilterAttackingCreature; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class CrossroadsConsecrator extends CardImpl { private final static FilterAttackingCreature filter = new FilterAttackingCreature("attacking Human"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public CrossroadsConsecrator(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CrucibleOfFire.java b/Mage.Sets/src/mage/cards/c/CrucibleOfFire.java index 97577a1234..d25a5bac50 100644 --- a/Mage.Sets/src/mage/cards/c/CrucibleOfFire.java +++ b/Mage.Sets/src/mage/cards/c/CrucibleOfFire.java @@ -31,10 +31,7 @@ import mage.abilities.common.SimpleStaticAbility; 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.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; @@ -50,7 +47,7 @@ public class CrucibleOfFire extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Dragon creatures"); static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public CrucibleOfFire(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CryptGhast.java b/Mage.Sets/src/mage/cards/c/CryptGhast.java index 0af2538e3e..952df90492 100644 --- a/Mage.Sets/src/mage/cards/c/CryptGhast.java +++ b/Mage.Sets/src/mage/cards/c/CryptGhast.java @@ -36,6 +36,7 @@ import mage.abilities.mana.TriggeredManaAbility; 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; @@ -79,7 +80,7 @@ class CryptGhastTriggeredAbility extends TriggeredManaAbility { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("Swamp"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public CryptGhastTriggeredAbility() { diff --git a/Mage.Sets/src/mage/cards/c/CurseOfMaritLage.java b/Mage.Sets/src/mage/cards/c/CurseOfMaritLage.java index 4f454d2ae8..ffb6b5373e 100644 --- a/Mage.Sets/src/mage/cards/c/CurseOfMaritLage.java +++ b/Mage.Sets/src/mage/cards/c/CurseOfMaritLage.java @@ -33,10 +33,7 @@ import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect; import mage.abilities.effects.common.TapAllEffect; 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; @@ -51,7 +48,7 @@ public class CurseOfMaritLage extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Islands"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public CurseOfMaritLage(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CutTheTethers.java b/Mage.Sets/src/mage/cards/c/CutTheTethers.java index 0c65bf8430..cea377a580 100644 --- a/Mage.Sets/src/mage/cards/c/CutTheTethers.java +++ b/Mage.Sets/src/mage/cards/c/CutTheTethers.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.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -72,7 +73,7 @@ class CutTheTethersEffect extends OneShotEffect { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Spirit creatures"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public CutTheTethersEffect() { diff --git a/Mage.Sets/src/mage/cards/d/DakmorSorceress.java b/Mage.Sets/src/mage/cards/d/DakmorSorceress.java index b3346cdec0..df4b4f8431 100644 --- a/Mage.Sets/src/mage/cards/d/DakmorSorceress.java +++ b/Mage.Sets/src/mage/cards/d/DakmorSorceress.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; @@ -50,7 +51,7 @@ public class DakmorSorceress 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 DakmorSorceress(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DarkHeartOfTheWood.java b/Mage.Sets/src/mage/cards/d/DarkHeartOfTheWood.java index 742aa0ffad..5b769ffbb1 100644 --- a/Mage.Sets/src/mage/cards/d/DarkHeartOfTheWood.java +++ b/Mage.Sets/src/mage/cards/d/DarkHeartOfTheWood.java @@ -33,6 +33,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.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class DarkHeartOfTheWood extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public DarkHeartOfTheWood(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DarkIntimations.java b/Mage.Sets/src/mage/cards/d/DarkIntimations.java index ebb1985a2c..60d1ae0671 100644 --- a/Mage.Sets/src/mage/cards/d/DarkIntimations.java +++ b/Mage.Sets/src/mage/cards/d/DarkIntimations.java @@ -68,7 +68,7 @@ public class DarkIntimations extends CardImpl { static { filter.add(new CardTypePredicate(CardType.PLANESWALKER)); - filter.add(new SubtypePredicate("Bolas")); + filter.add(new SubtypePredicate(SubType.BOLAS)); } public DarkIntimations(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DarkSalvation.java b/Mage.Sets/src/mage/cards/d/DarkSalvation.java index 3ba3e70c5a..fe69c6dd58 100644 --- a/Mage.Sets/src/mage/cards/d/DarkSalvation.java +++ b/Mage.Sets/src/mage/cards/d/DarkSalvation.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; import mage.game.Game; @@ -86,7 +87,7 @@ class ZombiesControlledByTargetPlayerCount implements DynamicValue { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombies"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } @Override diff --git a/Mage.Sets/src/mage/cards/d/DaruWarchief.java b/Mage.Sets/src/mage/cards/d/DaruWarchief.java index cbe956df08..684f546c5a 100644 --- a/Mage.Sets/src/mage/cards/d/DaruWarchief.java +++ b/Mage.Sets/src/mage/cards/d/DaruWarchief.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.FilterCard; import mage.filter.common.FilterCreaturePermanent; @@ -52,8 +53,8 @@ public class DaruWarchief extends CardImpl { private static final FilterCreaturePermanent filterCreatures = new FilterCreaturePermanent("Soldier creatures"); static { - filter.add(new SubtypePredicate("Soldier")); - filterCreatures.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); + filterCreatures.add(new SubtypePredicate(SubType.SOLDIER)); } public DaruWarchief(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DauntlessDourbark.java b/Mage.Sets/src/mage/cards/d/DauntlessDourbark.java index 3dbb264ecf..738ba28815 100644 --- a/Mage.Sets/src/mage/cards/d/DauntlessDourbark.java +++ b/Mage.Sets/src/mage/cards/d/DauntlessDourbark.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.Predicates; @@ -59,9 +60,9 @@ public class DauntlessDourbark extends CardImpl { final static private FilterControlledPermanent filter2 = new FilterControlledPermanent(); static { - filter.add(Predicates.or(new SubtypePredicate("Forest"), - new SubtypePredicate("Treefolk"))); - filter2.add(new SubtypePredicate("Treefolk")); + filter.add(Predicates.or(new SubtypePredicate(SubType.FOREST), + new SubtypePredicate(SubType.TREEFOLK))); + filter2.add(new SubtypePredicate(SubType.TREEFOLK)); filter2.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/d/DauntlessRiverMarshal.java b/Mage.Sets/src/mage/cards/d/DauntlessRiverMarshal.java index 246dffa4f6..a3c89c04c2 100644 --- a/Mage.Sets/src/mage/cards/d/DauntlessRiverMarshal.java +++ b/Mage.Sets/src/mage/cards/d/DauntlessRiverMarshal.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; @@ -53,7 +54,7 @@ public class DauntlessRiverMarshal extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("an Island"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } diff --git a/Mage.Sets/src/mage/cards/d/DeathlessBehemoth.java b/Mage.Sets/src/mage/cards/d/DeathlessBehemoth.java index b438109abe..cfcb493eee 100644 --- a/Mage.Sets/src/mage/cards/d/DeathlessBehemoth.java +++ b/Mage.Sets/src/mage/cards/d/DeathlessBehemoth.java @@ -35,6 +35,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.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -53,8 +54,8 @@ public class DeathlessBehemoth extends CardImpl { static { filter.add(Predicates.and( - new SubtypePredicate("Eldrazi"), - new SubtypePredicate("Scion"))); + new SubtypePredicate(SubType.ELDRAZI), + new SubtypePredicate(SubType.SCION))); } public DeathlessBehemoth(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DeathsporeThallid.java b/Mage.Sets/src/mage/cards/d/DeathsporeThallid.java index fbce2c7d22..e0f916a434 100644 --- a/Mage.Sets/src/mage/cards/d/DeathsporeThallid.java +++ b/Mage.Sets/src/mage/cards/d/DeathsporeThallid.java @@ -38,10 +38,7 @@ import mage.abilities.effects.common.continuous.BoostTargetEffect; 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.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 DeathsporeThallid extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Saproling"); static { - filter.add(new SubtypePredicate("Saproling")); + filter.add(new SubtypePredicate(SubType.SAPROLING)); } public DeathsporeThallid(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DementiaSliver.java b/Mage.Sets/src/mage/cards/d/DementiaSliver.java index b9ec918893..70b1afb209 100644 --- a/Mage.Sets/src/mage/cards/d/DementiaSliver.java +++ b/Mage.Sets/src/mage/cards/d/DementiaSliver.java @@ -38,10 +38,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.NameACardEffect; import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.cards.*; -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.mageobject.SubtypePredicate; import mage.game.Game; @@ -59,7 +56,7 @@ public class DementiaSliver extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("All Slivers"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public DementiaSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DevoutChaplain.java b/Mage.Sets/src/mage/cards/d/DevoutChaplain.java index 7398846288..60b0e9291f 100644 --- a/Mage.Sets/src/mage/cards/d/DevoutChaplain.java +++ b/Mage.Sets/src/mage/cards/d/DevoutChaplain.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterArtifactOrEnchantmentPermanent; import mage.filter.common.FilterControlledPermanent; @@ -56,7 +57,7 @@ public class DevoutChaplain extends CardImpl { static { humanFilter.add(Predicates.not(new TappedPredicate())); - humanFilter.add(new SubtypePredicate("Human")); + humanFilter.add(new SubtypePredicate(SubType.HUMAN)); } public DevoutChaplain(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DiregrafCaptain.java b/Mage.Sets/src/mage/cards/d/DiregrafCaptain.java index b3be879e22..3c62b11410 100644 --- a/Mage.Sets/src/mage/cards/d/DiregrafCaptain.java +++ b/Mage.Sets/src/mage/cards/d/DiregrafCaptain.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; @@ -58,7 +59,7 @@ public class DiregrafCaptain extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public DiregrafCaptain(UUID ownerId, CardSetInfo setInfo) { @@ -91,7 +92,7 @@ class DiregrafCaptainTriggeredAbility extends TriggeredAbilityImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public DiregrafCaptainTriggeredAbility() { diff --git a/Mage.Sets/src/mage/cards/d/DiregrafColossus.java b/Mage.Sets/src/mage/cards/d/DiregrafColossus.java index 529c268e52..8c679bfd8f 100644 --- a/Mage.Sets/src/mage/cards/d/DiregrafColossus.java +++ b/Mage.Sets/src/mage/cards/d/DiregrafColossus.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.counters.CounterType; import mage.filter.FilterSpell; import mage.filter.common.FilterCreatureCard; @@ -57,7 +58,7 @@ public class DiregrafColossus extends CardImpl { private static final FilterSpell filter = new FilterSpell("a Zombie spell"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public DiregrafColossus(UUID ownerId, CardSetInfo setInfo) { @@ -90,7 +91,7 @@ class DiregrafColossusEffect extends OneShotEffect { private static final FilterCreatureCard filter = new FilterCreatureCard(); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public DiregrafColossusEffect() { diff --git a/Mage.Sets/src/mage/cards/d/DiregrafEscort.java b/Mage.Sets/src/mage/cards/d/DiregrafEscort.java index f96d64e863..33ada43c54 100644 --- a/Mage.Sets/src/mage/cards/d/DiregrafEscort.java +++ b/Mage.Sets/src/mage/cards/d/DiregrafEscort.java @@ -35,6 +35,7 @@ import mage.abilities.keyword.SoulbondAbility; 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.FilterCreaturePermanent; @@ -52,7 +53,7 @@ public class DiregrafEscort extends CardImpl { private static final FilterPermanent filter = new FilterCreaturePermanent("Zombies"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public DiregrafEscort(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/Disarm.java b/Mage.Sets/src/mage/cards/d/Disarm.java index 2ca5f190d3..43dc9d1fa2 100644 --- a/Mage.Sets/src/mage/cards/d/Disarm.java +++ b/Mage.Sets/src/mage/cards/d/Disarm.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.SubtypePredicate; import mage.filter.predicate.permanent.AttachedToPredicate; @@ -91,7 +92,7 @@ public class Disarm extends CardImpl { FilterPermanent equipmentFilter = new FilterPermanent(); equipmentFilter.add(new AttachedToPredicate(creatureFilter)); - equipmentFilter.add(new SubtypePredicate("Equipment")); + equipmentFilter.add(new SubtypePredicate(SubType.EQUIPMENT)); for (Permanent equipment : game.getBattlefield().getAllActivePermanents(equipmentFilter, game)) { creature.removeAttachment(equipment.getId(), game); diff --git a/Mage.Sets/src/mage/cards/d/DocentOfPerfection.java b/Mage.Sets/src/mage/cards/d/DocentOfPerfection.java index db82b19019..8bb84c4416 100644 --- a/Mage.Sets/src/mage/cards/d/DocentOfPerfection.java +++ b/Mage.Sets/src/mage/cards/d/DocentOfPerfection.java @@ -41,6 +41,7 @@ import mage.cards.CardSetInfo; import mage.cards.f.FinalIteration; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.FilterPermanent; import mage.filter.FilterSpell; @@ -105,7 +106,7 @@ class DocentOfPerfectionEffect extends OneShotEffect { private static final FilterPermanent filter = new FilterPermanent("Wizards"); static { - filter.add(new SubtypePredicate("Wizard")); + filter.add(new SubtypePredicate(SubType.WIZARD)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/d/DoubtlessOne.java b/Mage.Sets/src/mage/cards/d/DoubtlessOne.java index 1a87170deb..ae28c40035 100644 --- a/Mage.Sets/src/mage/cards/d/DoubtlessOne.java +++ b/Mage.Sets/src/mage/cards/d/DoubtlessOne.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 DoubtlessOne extends CardImpl { final static FilterPermanent filter = new FilterPermanent("Clerics on the battlefield"); static { - filter.add(new SubtypePredicate("Cleric")); + filter.add(new SubtypePredicate(SubType.CLERIC)); } public DoubtlessOne(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DragonloftIdol.java b/Mage.Sets/src/mage/cards/d/DragonloftIdol.java index 003ae075b6..5f770f487c 100644 --- a/Mage.Sets/src/mage/cards/d/DragonloftIdol.java +++ b/Mage.Sets/src/mage/cards/d/DragonloftIdol.java @@ -39,10 +39,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.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; @@ -59,7 +56,7 @@ public class DragonloftIdol extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public DragonloftIdol(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DragonskullSummit.java b/Mage.Sets/src/mage/cards/d/DragonskullSummit.java index e16e247e81..1f6b6d014b 100644 --- a/Mage.Sets/src/mage/cards/d/DragonskullSummit.java +++ b/Mage.Sets/src/mage/cards/d/DragonskullSummit.java @@ -40,6 +40,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.FilterLandPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -55,7 +56,7 @@ public class DragonskullSummit extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.add(Predicates.or(new SubtypePredicate("Swamp"), new SubtypePredicate("Mountain"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.SWAMP), new SubtypePredicate(SubType.MOUNTAIN))); } public DragonskullSummit(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DrogskolCaptain.java b/Mage.Sets/src/mage/cards/d/DrogskolCaptain.java index 25d7282683..8b58dd74f7 100644 --- a/Mage.Sets/src/mage/cards/d/DrogskolCaptain.java +++ b/Mage.Sets/src/mage/cards/d/DrogskolCaptain.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 DrogskolCaptain extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Spirit"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public DrogskolCaptain(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DromarsCavern.java b/Mage.Sets/src/mage/cards/d/DromarsCavern.java index d5bf6e1b99..4a5d303ebc 100644 --- a/Mage.Sets/src/mage/cards/d/DromarsCavern.java +++ b/Mage.Sets/src/mage/cards/d/DromarsCavern.java @@ -36,6 +36,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; @@ -51,7 +52,7 @@ public class DromarsCavern 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 DromarsCavern(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.LAND},""); diff --git a/Mage.Sets/src/mage/cards/d/DrownedCatacomb.java b/Mage.Sets/src/mage/cards/d/DrownedCatacomb.java index cf79f7ecb8..57f301cd49 100644 --- a/Mage.Sets/src/mage/cards/d/DrownedCatacomb.java +++ b/Mage.Sets/src/mage/cards/d/DrownedCatacomb.java @@ -40,6 +40,7 @@ import mage.abilities.mana.BlueManaAbility; 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 DrownedCatacomb extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.add(Predicates.or(new SubtypePredicate("Swamp"), new SubtypePredicate("Island"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.SWAMP), new SubtypePredicate(SubType.ISLAND))); } public DrownedCatacomb(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DungroveElder.java b/Mage.Sets/src/mage/cards/d/DungroveElder.java index 25c9ab1f1f..530fde31f1 100644 --- a/Mage.Sets/src/mage/cards/d/DungroveElder.java +++ b/Mage.Sets/src/mage/cards/d/DungroveElder.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.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class DungroveElder extends CardImpl { final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control"); static { - filterLands.add(new SubtypePredicate("Forest")); + filterLands.add(new SubtypePredicate(SubType.FOREST)); } public DungroveElder (UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DwarvenDemolitionTeam.java b/Mage.Sets/src/mage/cards/d/DwarvenDemolitionTeam.java index e71b5323d1..3e3d983264 100644 --- a/Mage.Sets/src/mage/cards/d/DwarvenDemolitionTeam.java +++ b/Mage.Sets/src/mage/cards/d/DwarvenDemolitionTeam.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.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class DwarvenDemolitionTeam extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wall"); static{ - filter.add(new SubtypePredicate("Wall")); + filter.add(new SubtypePredicate(SubType.WALL)); } public DwarvenDemolitionTeam(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DwarvenPony.java b/Mage.Sets/src/mage/cards/d/DwarvenPony.java index 70b05cf42f..cf78bd2307 100644 --- a/Mage.Sets/src/mage/cards/d/DwarvenPony.java +++ b/Mage.Sets/src/mage/cards/d/DwarvenPony.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; @@ -54,7 +55,7 @@ public class DwarvenPony extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Dwarf creature"); static { - filter.add(new SubtypePredicate("Dwarf")); + filter.add(new SubtypePredicate(SubType.DWARF)); } public DwarvenPony(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DwynensElite.java b/Mage.Sets/src/mage/cards/d/DwynensElite.java index 79f440fe80..b14c2166c4 100644 --- a/Mage.Sets/src/mage/cards/d/DwynensElite.java +++ b/Mage.Sets/src/mage/cards/d/DwynensElite.java @@ -37,6 +37,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.filter.predicate.permanent.AnotherPredicate; @@ -54,7 +55,7 @@ public class DwynensElite extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public DwynensElite(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/Earthblighter.java b/Mage.Sets/src/mage/cards/e/Earthblighter.java index 21ae5600c8..97420b7ed1 100644 --- a/Mage.Sets/src/mage/cards/e/Earthblighter.java +++ b/Mage.Sets/src/mage/cards/e/Earthblighter.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.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class Earthblighter extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Goblin"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public Earthblighter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/EchoBaseCommando.java b/Mage.Sets/src/mage/cards/e/EchoBaseCommando.java index 7864d00671..869a28c1c9 100644 --- a/Mage.Sets/src/mage/cards/e/EchoBaseCommando.java +++ b/Mage.Sets/src/mage/cards/e/EchoBaseCommando.java @@ -56,7 +56,7 @@ public class EchoBaseCommando extends CardImpl { private static final Filter filter = new FilterPermanent("Beasts"); static { - filter.add(new SubtypePredicate("Beast")); + filter.add(new SubtypePredicate(SubType.BEAST)); } public EchoBaseCommando(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/Edgewalker.java b/Mage.Sets/src/mage/cards/e/Edgewalker.java index 6f75f9300d..ab45f2da45 100644 --- a/Mage.Sets/src/mage/cards/e/Edgewalker.java +++ b/Mage.Sets/src/mage/cards/e/Edgewalker.java @@ -34,6 +34,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.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class Edgewalker extends CardImpl { private static final FilterCard filter = new FilterCard("Cleric spells"); static { - filter.add(new SubtypePredicate("Cleric")); + filter.add(new SubtypePredicate(SubType.CLERIC)); } public Edgewalker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/EerieProcession.java b/Mage.Sets/src/mage/cards/e/EerieProcession.java index 3bfe1a00d9..8db2d0d1b6 100644 --- a/Mage.Sets/src/mage/cards/e/EerieProcession.java +++ b/Mage.Sets/src/mage/cards/e/EerieProcession.java @@ -32,6 +32,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; @@ -46,7 +47,7 @@ public class EerieProcession extends CardImpl { private static final FilterCard filter = new FilterCard("Arcane card"); static { - filter.add(new SubtypePredicate("Arcane")); + filter.add(new SubtypePredicate(SubType.ARCANE)); } public EerieProcession(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/ElvishEulogist.java b/Mage.Sets/src/mage/cards/e/ElvishEulogist.java index 6a9bdbaa63..08e7c4c574 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishEulogist.java +++ b/Mage.Sets/src/mage/cards/e/ElvishEulogist.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.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class ElvishEulogist extends CardImpl { private static final FilterCard filter = new FilterCard("Elf"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public ElvishEulogist(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/ElvishHandservant.java b/Mage.Sets/src/mage/cards/e/ElvishHandservant.java index a133d37a1d..935adca533 100644 --- a/Mage.Sets/src/mage/cards/e/ElvishHandservant.java +++ b/Mage.Sets/src/mage/cards/e/ElvishHandservant.java @@ -33,6 +33,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.CounterType; import mage.filter.FilterSpell; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class ElvishHandservant extends CardImpl { private static final FilterSpell filter = new FilterSpell("Giant"); static { - filter.add(new SubtypePredicate("Giant")); + filter.add(new SubtypePredicate(SubType.GIANT)); } public ElvishHandservant(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/EmeraldCharm.java b/Mage.Sets/src/mage/cards/e/EmeraldCharm.java index ef29973e0f..423399e1b1 100644 --- a/Mage.Sets/src/mage/cards/e/EmeraldCharm.java +++ b/Mage.Sets/src/mage/cards/e/EmeraldCharm.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.FilterEnchantmentPermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,7 +55,7 @@ public class EmeraldCharm extends CardImpl { private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("non-Aura enchantment"); static { - filter.add(Predicates.not(new SubtypePredicate("Aura"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.AURA))); } public EmeraldCharm(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/e/EngulfTheShore.java b/Mage.Sets/src/mage/cards/e/EngulfTheShore.java index a48270372c..afcaf0e3e1 100644 --- a/Mage.Sets/src/mage/cards/e/EngulfTheShore.java +++ b/Mage.Sets/src/mage/cards/e/EngulfTheShore.java @@ -28,14 +28,11 @@ package mage.cards.e; import mage.abilities.Ability; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -77,7 +74,7 @@ class EngulfTheShoreEffect extends OneShotEffect { private static final FilterControlledPermanent filter = new FilterControlledPermanent("number of Islands you control"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public EngulfTheShoreEffect() { diff --git a/Mage.Sets/src/mage/cards/e/ErhnamDjinn.java b/Mage.Sets/src/mage/cards/e/ErhnamDjinn.java index 1e15e2f327..50242bb486 100644 --- a/Mage.Sets/src/mage/cards/e/ErhnamDjinn.java +++ b/Mage.Sets/src/mage/cards/e/ErhnamDjinn.java @@ -34,10 +34,7 @@ import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.keyword.ForestwalkAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.PhaseStep; -import mage.constants.TargetController; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -55,7 +52,7 @@ public class ErhnamDjinn extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall creature an opponent controls"); static { - filter.add(Predicates.not(new SubtypePredicate("Wall"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.WALL))); filter.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/e/Everglades.java b/Mage.Sets/src/mage/cards/e/Everglades.java index 229d740d68..56b5e0aa8c 100644 --- a/Mage.Sets/src/mage/cards/e/Everglades.java +++ b/Mage.Sets/src/mage/cards/e/Everglades.java @@ -37,6 +37,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; @@ -55,7 +56,7 @@ public class Everglades extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("an untapped Swamp"); 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/e/EvilEyeOfOrmsByGore.java b/Mage.Sets/src/mage/cards/e/EvilEyeOfOrmsByGore.java index 42725c2276..15f8b46a2f 100644 --- a/Mage.Sets/src/mage/cards/e/EvilEyeOfOrmsByGore.java +++ b/Mage.Sets/src/mage/cards/e/EvilEyeOfOrmsByGore.java @@ -34,10 +34,7 @@ import mage.abilities.effects.common.combat.CantAttackAnyPlayerAllEffect; import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; 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; @@ -55,8 +52,8 @@ public class EvilEyeOfOrmsByGore extends CardImpl { private static final FilterCreaturePermanent cantBeBlockedByFilter = new FilterCreaturePermanent("except by Walls"); static { - cantBeBlockedByFilter.add(Predicates.not(new SubtypePredicate("Wall"))); - cantAttackFilter.add(Predicates.not((new SubtypePredicate("Eye")))); + cantBeBlockedByFilter.add(Predicates.not(new SubtypePredicate(SubType.WALL))); + cantAttackFilter.add(Predicates.not((new SubtypePredicate(SubType.EYE)))); cantAttackFilter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/e/EvilEyeOfUrborg.java b/Mage.Sets/src/mage/cards/e/EvilEyeOfUrborg.java index 6a5b5d31e8..68901a47ee 100644 --- a/Mage.Sets/src/mage/cards/e/EvilEyeOfUrborg.java +++ b/Mage.Sets/src/mage/cards/e/EvilEyeOfUrborg.java @@ -34,10 +34,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.combat.CantAttackAnyPlayerAllEffect; 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; @@ -54,7 +51,7 @@ public class EvilEyeOfUrborg extends CardImpl { private static final FilterCreaturePermanent cantAttackFilter = new FilterCreaturePermanent("Non-Eye creatures you control"); static { - cantAttackFilter.add(Predicates.not((new SubtypePredicate("Eye")))); + cantAttackFilter.add(Predicates.not((new SubtypePredicate(SubType.EYE)))); cantAttackFilter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/f/Facevaulter.java b/Mage.Sets/src/mage/cards/f/Facevaulter.java index 7ddfd2a35c..6d6537b73d 100644 --- a/Mage.Sets/src/mage/cards/f/Facevaulter.java +++ b/Mage.Sets/src/mage/cards/f/Facevaulter.java @@ -35,10 +35,7 @@ import mage.abilities.costs.mana.ColoredManaCost; import mage.abilities.effects.common.continuous.BoostSourceEffect; 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.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetControlledPermanent; @@ -54,7 +51,7 @@ public class Facevaulter extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Goblin"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public Facevaulter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FaerieNoble.java b/Mage.Sets/src/mage/cards/f/FaerieNoble.java index 31be97e7cd..5cdd3a4901 100644 --- a/Mage.Sets/src/mage/cards/f/FaerieNoble.java +++ b/Mage.Sets/src/mage/cards/f/FaerieNoble.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; @@ -54,7 +55,7 @@ public class FaerieNoble extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Faerie creatures"); static { - filter.add(new SubtypePredicate("Faerie")); + filter.add(new SubtypePredicate(SubType.FAERIE)); } public FaerieNoble(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FeastOfBlood.java b/Mage.Sets/src/mage/cards/f/FeastOfBlood.java index 64ef68626c..fb983e5e5d 100644 --- a/Mage.Sets/src/mage/cards/f/FeastOfBlood.java +++ b/Mage.Sets/src/mage/cards/f/FeastOfBlood.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.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -75,7 +76,7 @@ class FeastOfBloodCost extends CostImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(); static { - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); } public FeastOfBloodCost() { diff --git a/Mage.Sets/src/mage/cards/f/FendeepSummoner.java b/Mage.Sets/src/mage/cards/f/FendeepSummoner.java index c77aaa7e37..2f9b5eb702 100644 --- a/Mage.Sets/src/mage/cards/f/FendeepSummoner.java +++ b/Mage.Sets/src/mage/cards/f/FendeepSummoner.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; @@ -52,7 +53,7 @@ public class FendeepSummoner extends CardImpl { static final FilterLandPermanent filter = new FilterLandPermanent("Swamp"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public FendeepSummoner(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FieldMarshal.java b/Mage.Sets/src/mage/cards/f/FieldMarshal.java index a592803062..f6eea2e807 100644 --- a/Mage.Sets/src/mage/cards/f/FieldMarshal.java +++ b/Mage.Sets/src/mage/cards/f/FieldMarshal.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; @@ -50,7 +51,7 @@ public class FieldMarshal extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures"); static { - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public FieldMarshal(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FiendOfTheShadows.java b/Mage.Sets/src/mage/cards/f/FiendOfTheShadows.java index de213d4521..c8cc5dd30d 100644 --- a/Mage.Sets/src/mage/cards/f/FiendOfTheShadows.java +++ b/Mage.Sets/src/mage/cards/f/FiendOfTheShadows.java @@ -60,7 +60,7 @@ public class FiendOfTheShadows extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Human"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public FiendOfTheShadows(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/Filth.java b/Mage.Sets/src/mage/cards/f/Filth.java index 575f65a13c..f8f5dbc804 100644 --- a/Mage.Sets/src/mage/cards/f/Filth.java +++ b/Mage.Sets/src/mage/cards/f/Filth.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 Filth extends CardImpl { static { filter.add(new CardTypePredicate(CardType.LAND)); - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public Filth(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FinalIteration.java b/Mage.Sets/src/mage/cards/f/FinalIteration.java index 47404474c2..74f2babcd2 100644 --- a/Mage.Sets/src/mage/cards/f/FinalIteration.java +++ b/Mage.Sets/src/mage/cards/f/FinalIteration.java @@ -38,10 +38,7 @@ import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.keyword.FlyingAbility; 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.FilterSpell; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -62,7 +59,7 @@ public class FinalIteration extends CardImpl { private static final FilterSpell filterSpell = new FilterSpell("an instant or sorcery spell"); static { - filter.add(new SubtypePredicate("Wizard")); + filter.add(new SubtypePredicate(SubType.WIZARD)); filter.add(new ControllerPredicate(TargetController.YOU)); filterSpell.add(Predicates.or( new CardTypePredicate(CardType.INSTANT), diff --git a/Mage.Sets/src/mage/cards/f/FireDragon.java b/Mage.Sets/src/mage/cards/f/FireDragon.java index a12edf7cd4..0fa24e9014 100644 --- a/Mage.Sets/src/mage/cards/f/FireDragon.java +++ b/Mage.Sets/src/mage/cards/f/FireDragon.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.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCreaturePermanent; @@ -52,7 +53,7 @@ public class FireDragon extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("for each Mountain you control"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public FireDragon(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FirecatBlitz.java b/Mage.Sets/src/mage/cards/f/FirecatBlitz.java index ee1417e5f4..3fd8608e47 100644 --- a/Mage.Sets/src/mage/cards/f/FirecatBlitz.java +++ b/Mage.Sets/src/mage/cards/f/FirecatBlitz.java @@ -40,10 +40,7 @@ import mage.abilities.effects.common.ExileTargetEffect; import mage.abilities.keyword.FlashbackAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.TimingRule; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -61,7 +58,7 @@ public class FirecatBlitz extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("Mountains"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public FirecatBlitz(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FlamekinBladewhirl.java b/Mage.Sets/src/mage/cards/f/FlamekinBladewhirl.java index 51336d214d..a5c6455134 100644 --- a/Mage.Sets/src/mage/cards/f/FlamekinBladewhirl.java +++ b/Mage.Sets/src/mage/cards/f/FlamekinBladewhirl.java @@ -34,6 +34,7 @@ import mage.abilities.costs.mana.GenericManaCost; 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; @@ -48,7 +49,7 @@ public class FlamekinBladewhirl extends CardImpl { private static final FilterCard filter = new FilterCard("an Elemental card from your hand"); static { - filter.add(new SubtypePredicate("Elemental")); + filter.add(new SubtypePredicate(SubType.ELEMENTAL)); } public FlamekinBladewhirl(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FlamekinVillage.java b/Mage.Sets/src/mage/cards/f/FlamekinVillage.java index 8efde2f5ff..74a5647362 100644 --- a/Mage.Sets/src/mage/cards/f/FlamekinVillage.java +++ b/Mage.Sets/src/mage/cards/f/FlamekinVillage.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.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,7 +58,7 @@ public class FlamekinVillage extends CardImpl { private static final FilterCard filter = new FilterCard("an Elemental card from your hand"); static { - filter.add(new SubtypePredicate("Elemental")); + filter.add(new SubtypePredicate(SubType.ELEMENTAL)); } public FlamekinVillage(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FlamestickCourier.java b/Mage.Sets/src/mage/cards/f/FlamestickCourier.java index 13a15e2e79..de73d4f646 100644 --- a/Mage.Sets/src/mage/cards/f/FlamestickCourier.java +++ b/Mage.Sets/src/mage/cards/f/FlamestickCourier.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 FlamestickCourier extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblin creature"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public FlamestickCourier(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/Flashfires.java b/Mage.Sets/src/mage/cards/f/Flashfires.java index b4e1d1f174..d9beb27d86 100644 --- a/Mage.Sets/src/mage/cards/f/Flashfires.java +++ b/Mage.Sets/src/mage/cards/f/Flashfires.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.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -45,7 +46,7 @@ public class Flashfires extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Plains"); static{ - filter.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.PLAINS)); } public Flashfires(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FleetingMemories.java b/Mage.Sets/src/mage/cards/f/FleetingMemories.java index 1e1b05687d..fc456c1fba 100644 --- a/Mage.Sets/src/mage/cards/f/FleetingMemories.java +++ b/Mage.Sets/src/mage/cards/f/FleetingMemories.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.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -54,7 +55,7 @@ public class FleetingMemories extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Clue"); static { - filter.add(new SubtypePredicate("Clue")); + filter.add(new SubtypePredicate(SubType.CLUE)); } public FleetingMemories(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FoulTongueInvocation.java b/Mage.Sets/src/mage/cards/f/FoulTongueInvocation.java index a544e618ea..5aece9259e 100644 --- a/Mage.Sets/src/mage/cards/f/FoulTongueInvocation.java +++ b/Mage.Sets/src/mage/cards/f/FoulTongueInvocation.java @@ -37,6 +37,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.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,7 +58,7 @@ public class FoulTongueInvocation 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 FoulTongueInvocation(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FrogtosserBanneret.java b/Mage.Sets/src/mage/cards/f/FrogtosserBanneret.java index c36ef5a166..c2ec216b37 100644 --- a/Mage.Sets/src/mage/cards/f/FrogtosserBanneret.java +++ b/Mage.Sets/src/mage/cards/f/FrogtosserBanneret.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; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; @@ -51,8 +52,8 @@ public class FrogtosserBanneret extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Goblin"), - new SubtypePredicate("Rogue"))); + new SubtypePredicate(SubType.GOBLIN), + new SubtypePredicate(SubType.ROGUE))); } public FrogtosserBanneret(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/Fruition.java b/Mage.Sets/src/mage/cards/f/Fruition.java index 1b63833e83..d8204bd573 100644 --- a/Mage.Sets/src/mage/cards/f/Fruition.java +++ b/Mage.Sets/src/mage/cards/f/Fruition.java @@ -32,6 +32,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; @@ -46,7 +47,7 @@ public class Fruition extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("for each Forest on the battlefield"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public Fruition(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FugitiveDruid.java b/Mage.Sets/src/mage/cards/f/FugitiveDruid.java index a704626722..daac61f1fc 100644 --- a/Mage.Sets/src/mage/cards/f/FugitiveDruid.java +++ b/Mage.Sets/src/mage/cards/f/FugitiveDruid.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.SubtypePredicate; @@ -47,7 +48,7 @@ public class FugitiveDruid 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 FugitiveDruid(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/f/FungalBloom.java b/Mage.Sets/src/mage/cards/f/FungalBloom.java index 98decb7ba3..d59f26d939 100644 --- a/Mage.Sets/src/mage/cards/f/FungalBloom.java +++ b/Mage.Sets/src/mage/cards/f/FungalBloom.java @@ -34,6 +34,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.FilterPermanent; @@ -51,7 +52,7 @@ public class FungalBloom extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Fungus"); static { - filter.add(new SubtypePredicate("Fungus")); + filter.add(new SubtypePredicate(SubType.FUNGUS)); } public FungalBloom(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GallowsWarden.java b/Mage.Sets/src/mage/cards/g/GallowsWarden.java index 8a9503d2d2..7018db2c45 100644 --- a/Mage.Sets/src/mage/cards/g/GallowsWarden.java +++ b/Mage.Sets/src/mage/cards/g/GallowsWarden.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; @@ -49,7 +50,7 @@ public class GallowsWarden extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Spirit creatures"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public GallowsWarden(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GameTrail.java b/Mage.Sets/src/mage/cards/g/GameTrail.java index 14555bce92..be4f537571 100644 --- a/Mage.Sets/src/mage/cards/g/GameTrail.java +++ b/Mage.Sets/src/mage/cards/g/GameTrail.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 GameTrail extends CardImpl { private static final FilterCard filter = new FilterCard("a Mountain or Forest card from your hand"); static { - filter.add(Predicates.or(new SubtypePredicate("Mountain"), - new SubtypePredicate("Forest"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.MOUNTAIN), + new SubtypePredicate(SubType.FOREST))); } public GameTrail(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GangrenousZombies.java b/Mage.Sets/src/mage/cards/g/GangrenousZombies.java index 6c8adae7cb..603322b2cb 100644 --- a/Mage.Sets/src/mage/cards/g/GangrenousZombies.java +++ b/Mage.Sets/src/mage/cards/g/GangrenousZombies.java @@ -38,10 +38,7 @@ import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.common.DamageEverythingEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.ComparisonType; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SupertypePredicate; @@ -56,7 +53,7 @@ public class GangrenousZombies extends CardImpl { static { filter.add(new SupertypePredicate(SuperType.SNOW)); - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public GangrenousZombies(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GempalmAvenger.java b/Mage.Sets/src/mage/cards/g/GempalmAvenger.java index 8085521e83..81fe6aaf24 100644 --- a/Mage.Sets/src/mage/cards/g/GempalmAvenger.java +++ b/Mage.Sets/src/mage/cards/g/GempalmAvenger.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; @@ -54,7 +55,7 @@ public class GempalmAvenger extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creatures"); static { - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public GempalmAvenger(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GhosthelmCourier.java b/Mage.Sets/src/mage/cards/g/GhosthelmCourier.java index 3a7750efed..a58ebc56e5 100644 --- a/Mage.Sets/src/mage/cards/g/GhosthelmCourier.java +++ b/Mage.Sets/src/mage/cards/g/GhosthelmCourier.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 GhosthelmCourier extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Wizard creature"); static { - filter.add(new SubtypePredicate("Wizard")); + filter.add(new SubtypePredicate(SubType.WIZARD)); } public GhosthelmCourier(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GiantsIre.java b/Mage.Sets/src/mage/cards/g/GiantsIre.java index 83bcffd151..ab1b8486fc 100644 --- a/Mage.Sets/src/mage/cards/g/GiantsIre.java +++ b/Mage.Sets/src/mage/cards/g/GiantsIre.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.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPlayer; @@ -49,7 +50,7 @@ public class GiantsIre extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Giant"); static { - filter.add(new SubtypePredicate("Giant")); + filter.add(new SubtypePredicate(SubType.GIANT)); } public GiantsIre(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java b/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java index 8ca97c61d8..aa5dcf8f2e 100644 --- a/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java +++ b/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java @@ -86,7 +86,7 @@ class GisaAndGeralfContinuousEffect extends ContinuousEffectImpl { private static final FilterCreatureCard filter = new FilterCreatureCard("Zombie creature card"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } GisaAndGeralfContinuousEffect() { diff --git a/Mage.Sets/src/mage/cards/g/GlacialCrasher.java b/Mage.Sets/src/mage/cards/g/GlacialCrasher.java index 610779e6d3..dad3fca074 100644 --- a/Mage.Sets/src/mage/cards/g/GlacialCrasher.java +++ b/Mage.Sets/src/mage/cards/g/GlacialCrasher.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; @@ -78,7 +79,7 @@ class GlacialCrasherEffect extends RestrictionEffect { private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public GlacialCrasherEffect() { diff --git a/Mage.Sets/src/mage/cards/g/GnarlrootTrapper.java b/Mage.Sets/src/mage/cards/g/GnarlrootTrapper.java index ca8f9e2c2c..32cf46fadd 100644 --- a/Mage.Sets/src/mage/cards/g/GnarlrootTrapper.java +++ b/Mage.Sets/src/mage/cards/g/GnarlrootTrapper.java @@ -45,6 +45,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; @@ -64,7 +65,7 @@ public class GnarlrootTrapper extends CardImpl { static { filter.add(new AttackingPredicate()); - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public GnarlrootTrapper(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinLackey.java b/Mage.Sets/src/mage/cards/g/GoblinLackey.java index dbb5c75032..764dabc74d 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinLackey.java +++ b/Mage.Sets/src/mage/cards/g/GoblinLackey.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.filter.common.FilterPermanentCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class GoblinLackey extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("a Goblin permanent card"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public GoblinLackey(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinLookout.java b/Mage.Sets/src/mage/cards/g/GoblinLookout.java index f1cb074f85..66af225858 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinLookout.java +++ b/Mage.Sets/src/mage/cards/g/GoblinLookout.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.StaticFilters; import mage.filter.common.FilterControlledPermanent; @@ -54,7 +55,7 @@ public class GoblinLookout extends CardImpl { private static final FilterControlledPermanent filterPermanent = new FilterControlledPermanent("a Goblin"); static { - filterPermanent.add(new SubtypePredicate("Goblin")); + filterPermanent.add(new SubtypePredicate(SubType.GOBLIN)); } public GoblinLookout(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinMasons.java b/Mage.Sets/src/mage/cards/g/GoblinMasons.java index cec4aca2c1..111e4e952b 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinMasons.java +++ b/Mage.Sets/src/mage/cards/g/GoblinMasons.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.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetPermanent; @@ -48,7 +49,7 @@ public class GoblinMasons extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Wall"); static { - filter.add(new SubtypePredicate("Wall")); + filter.add(new SubtypePredicate(SubType.WALL)); } diff --git a/Mage.Sets/src/mage/cards/g/GoblinRingleader.java b/Mage.Sets/src/mage/cards/g/GoblinRingleader.java index 1debf06e57..55fb11de2c 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinRingleader.java +++ b/Mage.Sets/src/mage/cards/g/GoblinRingleader.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; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class GoblinRingleader extends CardImpl { private static final FilterCard filter = new FilterCard("Goblin cards"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public GoblinRingleader(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinSledder.java b/Mage.Sets/src/mage/cards/g/GoblinSledder.java index 7eefefc36e..23dc3d784c 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinSledder.java +++ b/Mage.Sets/src/mage/cards/g/GoblinSledder.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.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class GoblinSledder extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Goblin"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public GoblinSledder(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinSoothsayer.java b/Mage.Sets/src/mage/cards/g/GoblinSoothsayer.java index c408810cb6..b06f2c7de3 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinSoothsayer.java +++ b/Mage.Sets/src/mage/cards/g/GoblinSoothsayer.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; @@ -59,7 +60,7 @@ public class GoblinSoothsayer extends CardImpl { static { filter.add(new ColorPredicate(ObjectColor.RED)); - filter2.add(new SubtypePredicate("Goblin")); + filter2.add(new SubtypePredicate(SubType.GOBLIN)); } public GoblinSoothsayer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GoblinTaskmaster.java b/Mage.Sets/src/mage/cards/g/GoblinTaskmaster.java index 2788de404c..3e4709babc 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinTaskmaster.java +++ b/Mage.Sets/src/mage/cards/g/GoblinTaskmaster.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 GoblinTaskmaster extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblin creature"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public GoblinTaskmaster(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GraniteGrip.java b/Mage.Sets/src/mage/cards/g/GraniteGrip.java index 0de7f25519..af84f73923 100644 --- a/Mage.Sets/src/mage/cards/g/GraniteGrip.java +++ b/Mage.Sets/src/mage/cards/g/GraniteGrip.java @@ -52,7 +52,7 @@ public class GraniteGrip extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain you control"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/g/Greedo.java b/Mage.Sets/src/mage/cards/g/Greedo.java index 2f03867cdc..244bf601a0 100644 --- a/Mage.Sets/src/mage/cards/g/Greedo.java +++ b/Mage.Sets/src/mage/cards/g/Greedo.java @@ -35,10 +35,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; 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.Zone; +import mage.constants.*; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -58,7 +55,7 @@ public class Greedo extends CardImpl { private static final FilterCard filterCard = new FilterCard("Hunter or Rogue card"); static { - filterCard.add(Predicates.or(new SubtypePredicate("Rogue"), new SubtypePredicate("Hunter"))); + filterCard.add(Predicates.or(new SubtypePredicate(SubType.ROGUE), new SubtypePredicate(SubType.HUNTER))); } diff --git a/Mage.Sets/src/mage/cards/g/GriffinRider.java b/Mage.Sets/src/mage/cards/g/GriffinRider.java index 78efcb3401..92eecf159f 100644 --- a/Mage.Sets/src/mage/cards/g/GriffinRider.java +++ b/Mage.Sets/src/mage/cards/g/GriffinRider.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; @@ -56,7 +57,7 @@ public class GriffinRider extends CardImpl { private static final FilterPermanent filterGriffinCard = new FilterCreaturePermanent(); static { - filterGriffinCard.add(new SubtypePredicate("Griffin")); + filterGriffinCard.add(new SubtypePredicate(SubType.GRIFFIN)); } public GriffinRider(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GripOfPhyresis.java b/Mage.Sets/src/mage/cards/g/GripOfPhyresis.java index 2af84b5d35..f8fbd74a25 100644 --- a/Mage.Sets/src/mage/cards/g/GripOfPhyresis.java +++ b/Mage.Sets/src/mage/cards/g/GripOfPhyresis.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.FilterPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -56,7 +57,7 @@ public class GripOfPhyresis extends CardImpl { static { filter.add(new CardTypePredicate(CardType.ARTIFACT)); - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public GripOfPhyresis(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GrixisPanorama.java b/Mage.Sets/src/mage/cards/g/GrixisPanorama.java index 2dd6af9c78..13b14bc8e9 100644 --- a/Mage.Sets/src/mage/cards/g/GrixisPanorama.java +++ b/Mage.Sets/src/mage/cards/g/GrixisPanorama.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 GrixisPanorama extends CardImpl { filter.add(new CardTypePredicate(CardType.LAND)); filter.add(new SupertypePredicate(SuperType.BASIC)); filter.add(Predicates.or( - new SubtypePredicate("Island"), - new SubtypePredicate("Swamp"), - new SubtypePredicate("Mountain"))); + new SubtypePredicate(SubType.ISLAND), + new SubtypePredicate(SubType.SWAMP), + new SubtypePredicate(SubType.MOUNTAIN))); } public GrixisPanorama(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/g/GuardianOfCloverdell.java b/Mage.Sets/src/mage/cards/g/GuardianOfCloverdell.java index 3cddb22e3f..c3bf74db85 100644 --- a/Mage.Sets/src/mage/cards/g/GuardianOfCloverdell.java +++ b/Mage.Sets/src/mage/cards/g/GuardianOfCloverdell.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.ColoredManaSymbol; +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 GuardianOfCloverdell extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Kithkin"); static { - filter.add(new SubtypePredicate("Kithkin")); + filter.add(new SubtypePredicate(SubType.KITHKIN)); } public GuardianOfCloverdell(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HagHedgeMage.java b/Mage.Sets/src/mage/cards/h/HagHedgeMage.java index e2f114d65d..a6f27e0777 100644 --- a/Mage.Sets/src/mage/cards/h/HagHedgeMage.java +++ b/Mage.Sets/src/mage/cards/h/HagHedgeMage.java @@ -39,6 +39,7 @@ import mage.abilities.effects.common.discard.DiscardTargetEffect; 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.TargetPlayer; @@ -55,8 +56,8 @@ public class HagHedgeMage extends CardImpl { private final static FilterLandPermanent filter2 = new FilterLandPermanent(); static { - filter.add(new SubtypePredicate("Swamp")); - filter2.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.SWAMP)); + filter2.add(new SubtypePredicate(SubType.FOREST)); } private String rule = "When {this} enters the battlefield, if you control two or more Swamps, you may have target player discard a card."; diff --git a/Mage.Sets/src/mage/cards/h/HamletCaptain.java b/Mage.Sets/src/mage/cards/h/HamletCaptain.java index 972eed1e38..6a66aaf101 100644 --- a/Mage.Sets/src/mage/cards/h/HamletCaptain.java +++ b/Mage.Sets/src/mage/cards/h/HamletCaptain.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; @@ -47,7 +48,7 @@ public class HamletCaptain extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Humans"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public HamletCaptain(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HammerOfRuin.java b/Mage.Sets/src/mage/cards/h/HammerOfRuin.java index 9c42274e15..9bcc37db29 100644 --- a/Mage.Sets/src/mage/cards/h/HammerOfRuin.java +++ b/Mage.Sets/src/mage/cards/h/HammerOfRuin.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.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -105,7 +106,7 @@ class HammerOfRuinTriggeredAbility extends TriggeredAbilityImpl { Permanent p = game.getPermanent(event.getSourceId()); if (damageEvent.isCombatDamage() && p != null && p.getAttachments().contains(this.getSourceId())) { FilterPermanent filter = new FilterPermanent("Equipment that player controls"); - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); filter.add(new ControllerIdPredicate(event.getPlayerId())); filter.setMessage("creature controlled by " + game.getPlayer(event.getTargetId()).getLogName()); diff --git a/Mage.Sets/src/mage/cards/h/HanSolo.java b/Mage.Sets/src/mage/cards/h/HanSolo.java index 149b61f960..7a481edaa5 100644 --- a/Mage.Sets/src/mage/cards/h/HanSolo.java +++ b/Mage.Sets/src/mage/cards/h/HanSolo.java @@ -53,7 +53,7 @@ public class HanSolo 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/h/HarabazDruid.java b/Mage.Sets/src/mage/cards/h/HarabazDruid.java index d45d954b2b..75ad52d1ec 100644 --- a/Mage.Sets/src/mage/cards/h/HarabazDruid.java +++ b/Mage.Sets/src/mage/cards/h/HarabazDruid.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.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class HarabazDruid extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Allies you control"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); } public HarabazDruid(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HarbingerOfSpring.java b/Mage.Sets/src/mage/cards/h/HarbingerOfSpring.java index 1580409b8f..351a09fb6d 100644 --- a/Mage.Sets/src/mage/cards/h/HarbingerOfSpring.java +++ b/Mage.Sets/src/mage/cards/h/HarbingerOfSpring.java @@ -34,6 +34,7 @@ import mage.abilities.keyword.SoulshiftAbility; 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; @@ -46,7 +47,7 @@ public class HarbingerOfSpring extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Spirit creatures"); static { - filter.add(Predicates.not(new SubtypePredicate("Spirit"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.SPIRIT))); } public HarbingerOfSpring(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HazezonTamar.java b/Mage.Sets/src/mage/cards/h/HazezonTamar.java index f360f8351a..de4b97b579 100644 --- a/Mage.Sets/src/mage/cards/h/HazezonTamar.java +++ b/Mage.Sets/src/mage/cards/h/HazezonTamar.java @@ -43,6 +43,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.FilterControlledLandPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -60,8 +61,8 @@ public class HazezonTamar extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Sand Warriors"); static { - filter.add(new SubtypePredicate("Sand")); - filter.add(new SubtypePredicate("Warrior")); + filter.add(new SubtypePredicate(SubType.SAND)); + filter.add(new SubtypePredicate(SubType.WARRIOR)); } public HazezonTamar(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HeWhoHungers.java b/Mage.Sets/src/mage/cards/h/HeWhoHungers.java index e5ce49d100..a338a2da46 100644 --- a/Mage.Sets/src/mage/cards/h/HeWhoHungers.java +++ b/Mage.Sets/src/mage/cards/h/HeWhoHungers.java @@ -44,6 +44,7 @@ import mage.abilities.keyword.SoulshiftAbility; 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.FilterControlledPermanent; @@ -61,7 +62,7 @@ public class HeWhoHungers extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Spirit"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public HeWhoHungers(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HeliodsPilgrim.java b/Mage.Sets/src/mage/cards/h/HeliodsPilgrim.java index 6f3646d99e..24de8d6381 100644 --- a/Mage.Sets/src/mage/cards/h/HeliodsPilgrim.java +++ b/Mage.Sets/src/mage/cards/h/HeliodsPilgrim.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.CardTypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class HeliodsPilgrim extends CardImpl { static { filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public HeliodsPilgrim(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HeraldOfDromoka.java b/Mage.Sets/src/mage/cards/h/HeraldOfDromoka.java index 9e81f90de7..43ed2077b0 100644 --- a/Mage.Sets/src/mage/cards/h/HeraldOfDromoka.java +++ b/Mage.Sets/src/mage/cards/h/HeraldOfDromoka.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.CardTypePredicate; @@ -52,7 +53,7 @@ public class HeraldOfDromoka extends CardImpl { static { filter.add(new CardTypePredicate(CardType.CREATURE)); - filter.add(new SubtypePredicate("Warrior")); + filter.add(new SubtypePredicate(SubType.WARRIOR)); filter.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/h/HinterlandHarbor.java b/Mage.Sets/src/mage/cards/h/HinterlandHarbor.java index 50b816f6bd..8bc4570781 100644 --- a/Mage.Sets/src/mage/cards/h/HinterlandHarbor.java +++ b/Mage.Sets/src/mage/cards/h/HinterlandHarbor.java @@ -40,6 +40,7 @@ import mage.abilities.mana.BlueManaAbility; 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 HinterlandHarbor extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.add(Predicates.or(new SubtypePredicate("Forest"), new SubtypePredicate("Island"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.FOREST), new SubtypePredicate(SubType.ISLAND))); } public HinterlandHarbor(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HondenOfNightsReach.java b/Mage.Sets/src/mage/cards/h/HondenOfNightsReach.java index 193b7fcf2c..45f3f25e1e 100644 --- a/Mage.Sets/src/mage/cards/h/HondenOfNightsReach.java +++ b/Mage.Sets/src/mage/cards/h/HondenOfNightsReach.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.discard.DiscardTargetEffect; 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; @@ -51,7 +52,7 @@ public class HondenOfNightsReach extends CardImpl { final static FilterControlledPermanent filter = new FilterControlledPermanent("Shrine"); static { - filter.add(new SubtypePredicate("Shrine")); + filter.add(new SubtypePredicate(SubType.SHRINE)); } public HondenOfNightsReach(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HornedSliver.java b/Mage.Sets/src/mage/cards/h/HornedSliver.java index da5a4da36e..8efe5ae150 100644 --- a/Mage.Sets/src/mage/cards/h/HornedSliver.java +++ b/Mage.Sets/src/mage/cards/h/HornedSliver.java @@ -37,6 +37,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; @@ -49,7 +50,7 @@ public class HornedSliver extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public HornedSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HumanFrailty.java b/Mage.Sets/src/mage/cards/h/HumanFrailty.java index 140e18f90d..fc3d5fa271 100644 --- a/Mage.Sets/src/mage/cards/h/HumanFrailty.java +++ b/Mage.Sets/src/mage/cards/h/HumanFrailty.java @@ -31,6 +31,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.mageobject.SubtypePredicate; import mage.target.TargetPermanent; @@ -45,7 +46,7 @@ public class HumanFrailty extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human creature"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public HumanFrailty(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/h/HuntingWilds.java b/Mage.Sets/src/mage/cards/h/HuntingWilds.java index 5454307b3b..efe272e04a 100644 --- a/Mage.Sets/src/mage/cards/h/HuntingWilds.java +++ b/Mage.Sets/src/mage/cards/h/HuntingWilds.java @@ -46,6 +46,7 @@ import mage.cards.CardsImpl; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; +import mage.constants.SubType; import mage.filter.common.FilterLandCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -66,7 +67,7 @@ public class HuntingWilds extends CardImpl { this.addAbility(new KickerAbility("{3}{G}")); FilterLandCard filter = new FilterLandCard("Forest card"); - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); // Search your library for up to two Forest cards and put them onto the battlefield tapped. Then shuffle your library. this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, filter), true)); diff --git a/Mage.Sets/src/mage/cards/i/ImperiousPerfect.java b/Mage.Sets/src/mage/cards/i/ImperiousPerfect.java index 8052f01888..255c3f4122 100644 --- a/Mage.Sets/src/mage/cards/i/ImperiousPerfect.java +++ b/Mage.Sets/src/mage/cards/i/ImperiousPerfect.java @@ -53,7 +53,7 @@ public class ImperiousPerfect extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elf creatures"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public ImperiousPerfect(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/InameDeathAspect.java b/Mage.Sets/src/mage/cards/i/InameDeathAspect.java index 3b63f1687f..bc20befdd1 100644 --- a/Mage.Sets/src/mage/cards/i/InameDeathAspect.java +++ b/Mage.Sets/src/mage/cards/i/InameDeathAspect.java @@ -35,10 +35,7 @@ import mage.abilities.effects.SearchEffect; 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.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -76,7 +73,7 @@ class InameDeathAspectEffect extends SearchEffect { private static final FilterCard filter = new FilterCard(); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public InameDeathAspectEffect() { diff --git a/Mage.Sets/src/mage/cards/i/InameLifeAspect.java b/Mage.Sets/src/mage/cards/i/InameLifeAspect.java index 8d984058ac..3f2f8bddc4 100644 --- a/Mage.Sets/src/mage/cards/i/InameLifeAspect.java +++ b/Mage.Sets/src/mage/cards/i/InameLifeAspect.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.SuperType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,7 +58,7 @@ public class InameLifeAspect extends CardImpl { private static final FilterCard filter = new FilterCard("Spirit cards from your graveyard"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public InameLifeAspect(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/Invisibility.java b/Mage.Sets/src/mage/cards/i/Invisibility.java index 02e929a53d..bcbc6310be 100644 --- a/Mage.Sets/src/mage/cards/i/Invisibility.java +++ b/Mage.Sets/src/mage/cards/i/Invisibility.java @@ -50,7 +50,7 @@ public class Invisibility 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 Invisibility(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/IreOfKaminari.java b/Mage.Sets/src/mage/cards/i/IreOfKaminari.java index 8e9df2d9c2..052f549d5b 100644 --- a/Mage.Sets/src/mage/cards/i/IreOfKaminari.java +++ b/Mage.Sets/src/mage/cards/i/IreOfKaminari.java @@ -33,6 +33,7 @@ import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount; import mage.abilities.effects.common.DamageTargetEffect; 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.TargetCreatureOrPlayer; @@ -46,7 +47,7 @@ public class IreOfKaminari extends CardImpl { private static final FilterCard filter = new FilterCard("Arcane"); static { - filter.add(new SubtypePredicate("Arcane")); + filter.add(new SubtypePredicate(SubType.ARCANE)); } public IreOfKaminari(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/IroncladSlayer.java b/Mage.Sets/src/mage/cards/i/IroncladSlayer.java index 4f77ce7c13..0d39839e7f 100644 --- a/Mage.Sets/src/mage/cards/i/IroncladSlayer.java +++ b/Mage.Sets/src/mage/cards/i/IroncladSlayer.java @@ -36,6 +36,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.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class IroncladSlayer extends CardImpl { private final static FilterCard filter = new FilterCard("Aura or Equipment card from your graveyard"); static { - filter.add(Predicates.or(new SubtypePredicate("Aura"), new SubtypePredicate("Equipment"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.AURA), new SubtypePredicate(SubType.EQUIPMENT))); } public IroncladSlayer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java b/Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java index 1c6e79ee1a..6aeaa7054e 100644 --- a/Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java +++ b/Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java @@ -41,6 +41,7 @@ import mage.abilities.keyword.ReachAbility; 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; @@ -59,7 +60,7 @@ public class IshkanahGrafwidow extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Spider you control"); static { - filter.add(new SubtypePredicate("Spider")); + filter.add(new SubtypePredicate(SubType.SPIDER)); } public IshkanahGrafwidow(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/i/IsolatedChapel.java b/Mage.Sets/src/mage/cards/i/IsolatedChapel.java index b7c2a19947..6e8e6ced28 100644 --- a/Mage.Sets/src/mage/cards/i/IsolatedChapel.java +++ b/Mage.Sets/src/mage/cards/i/IsolatedChapel.java @@ -40,6 +40,7 @@ import mage.abilities.mana.BlackManaAbility; 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; @@ -54,7 +55,7 @@ public class IsolatedChapel extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent(); static { - filter.add(Predicates.or(new SubtypePredicate("Plains"), new SubtypePredicate("Swamp"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.PLAINS), new SubtypePredicate(SubType.SWAMP))); } public IsolatedChapel(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KaaliaOfTheVast.java b/Mage.Sets/src/mage/cards/k/KaaliaOfTheVast.java index 416f6df89d..0bb2a01ec5 100644 --- a/Mage.Sets/src/mage/cards/k/KaaliaOfTheVast.java +++ b/Mage.Sets/src/mage/cards/k/KaaliaOfTheVast.java @@ -36,10 +36,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.Card; 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.FilterCreatureCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -127,9 +124,9 @@ class KaaliaOfTheVastEffect extends OneShotEffect { static { filter.add(Predicates.or( - new SubtypePredicate("Angel"), - new SubtypePredicate("Demon"), - new SubtypePredicate("Dragon"))); + new SubtypePredicate(SubType.ANGEL), + new SubtypePredicate(SubType.DEMON), + new SubtypePredicate(SubType.DRAGON))); } public KaaliaOfTheVastEffect() { diff --git a/Mage.Sets/src/mage/cards/k/KalonianTwingrove.java b/Mage.Sets/src/mage/cards/k/KalonianTwingrove.java index d70b3ad200..e3c061e6f5 100644 --- a/Mage.Sets/src/mage/cards/k/KalonianTwingrove.java +++ b/Mage.Sets/src/mage/cards/k/KalonianTwingrove.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 KalonianTwingrove extends CardImpl { final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control"); static { - filterLands.add(new SubtypePredicate("Forest")); + filterLands.add(new SubtypePredicate(SubType.FOREST)); } public KalonianTwingrove(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KaminoCloningFacility.java b/Mage.Sets/src/mage/cards/k/KaminoCloningFacility.java index 568ef385e0..8ce1d3b45b 100644 --- a/Mage.Sets/src/mage/cards/k/KaminoCloningFacility.java +++ b/Mage.Sets/src/mage/cards/k/KaminoCloningFacility.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.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class KaminoCloningFacility extends CardImpl { private static final FilterSpell FILTER = new FilterSpell("a Trooper spell"); static { - FILTER.add(new SubtypePredicate("Trooper")); + FILTER.add(new SubtypePredicate(SubType.TROOPER)); } public KaminoCloningFacility(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KarametraGodOfHarvests.java b/Mage.Sets/src/mage/cards/k/KarametraGodOfHarvests.java index d12b34eec2..78f6f4e4a6 100644 --- a/Mage.Sets/src/mage/cards/k/KarametraGodOfHarvests.java +++ b/Mage.Sets/src/mage/cards/k/KarametraGodOfHarvests.java @@ -37,10 +37,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.ColoredManaSymbol; -import mage.constants.SuperType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterCard; import mage.filter.StaticFilters; import mage.filter.predicate.Predicates; @@ -59,8 +56,8 @@ public class KarametraGodOfHarvests extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Forest"), - new SubtypePredicate("Plains"))); + new SubtypePredicate(SubType.FOREST), + new SubtypePredicate(SubType.PLAINS))); } public KarametraGodOfHarvests(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/Karma.java b/Mage.Sets/src/mage/cards/k/Karma.java index f64234f4cc..e63a0056c4 100644 --- a/Mage.Sets/src/mage/cards/k/Karma.java +++ b/Mage.Sets/src/mage/cards/k/Karma.java @@ -37,6 +37,7 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterControlledPermanent; @@ -74,7 +75,7 @@ class KarmaDamageTargetEffect extends OneShotEffect{ private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("Swamps"); static{ - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public KarmaDamageTargetEffect() diff --git a/Mage.Sets/src/mage/cards/k/KavuMonarch.java b/Mage.Sets/src/mage/cards/k/KavuMonarch.java index 7f50cef290..a1da4db707 100644 --- a/Mage.Sets/src/mage/cards/k/KavuMonarch.java +++ b/Mage.Sets/src/mage/cards/k/KavuMonarch.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.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; @@ -54,8 +55,8 @@ public class KavuMonarch extends CardImpl { private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("another Kavu"); static { - filter1.add(new SubtypePredicate("Kavu")); - filter2.add(new SubtypePredicate("Kavu")); + filter1.add(new SubtypePredicate(SubType.KAVU)); + filter2.add(new SubtypePredicate(SubType.KAVU)); filter2.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/k/KinsbaileCavalier.java b/Mage.Sets/src/mage/cards/k/KinsbaileCavalier.java index 7fef86a817..90eac3e6fe 100644 --- a/Mage.Sets/src/mage/cards/k/KinsbaileCavalier.java +++ b/Mage.Sets/src/mage/cards/k/KinsbaileCavalier.java @@ -31,6 +31,7 @@ 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 KinsbaileCavalier extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Knight creatures"); static { - filter.add(new SubtypePredicate("Knight")); + filter.add(new SubtypePredicate(SubType.KNIGHT)); } public KinsbaileCavalier(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KirdApe.java b/Mage.Sets/src/mage/cards/k/KirdApe.java index 6d28359f11..156acf1112 100644 --- a/Mage.Sets/src/mage/cards/k/KirdApe.java +++ b/Mage.Sets/src/mage/cards/k/KirdApe.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect; 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; @@ -52,7 +53,7 @@ public class KirdApe extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public KirdApe(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KirdChieftain.java b/Mage.Sets/src/mage/cards/k/KirdChieftain.java index 0b3b07eb96..edfdf3c4bf 100644 --- a/Mage.Sets/src/mage/cards/k/KirdChieftain.java +++ b/Mage.Sets/src/mage/cards/k/KirdChieftain.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.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -59,7 +60,7 @@ public class KirdChieftain extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public KirdChieftain(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KithkinMourncaller.java b/Mage.Sets/src/mage/cards/k/KithkinMourncaller.java index 55ceb742b2..24c1d1841f 100644 --- a/Mage.Sets/src/mage/cards/k/KithkinMourncaller.java +++ b/Mage.Sets/src/mage/cards/k/KithkinMourncaller.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.filter.common.FilterAttackingCreature; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class KithkinMourncaller extends CardImpl { private static final FilterAttackingCreature filter = new FilterAttackingCreature("an attacking Kithkin or Elf"); static { - filter.add(Predicates.or(new SubtypePredicate("Kithkin"), new SubtypePredicate("Elf"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.KITHKIN), new SubtypePredicate(SubType.ELF))); } public KithkinMourncaller(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KjeldoranOutpost.java b/Mage.Sets/src/mage/cards/k/KjeldoranOutpost.java index aeaa1aaa92..e985364de8 100644 --- a/Mage.Sets/src/mage/cards/k/KjeldoranOutpost.java +++ b/Mage.Sets/src/mage/cards/k/KjeldoranOutpost.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.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -55,7 +56,7 @@ public class KjeldoranOutpost extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Plains"); static { - filter.add(new SubtypePredicate("Plains")); + filter.add(new SubtypePredicate(SubType.PLAINS)); } public KjeldoranOutpost(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KnightOfTheReliquary.java b/Mage.Sets/src/mage/cards/k/KnightOfTheReliquary.java index 170b043941..a9340592f5 100644 --- a/Mage.Sets/src/mage/cards/k/KnightOfTheReliquary.java +++ b/Mage.Sets/src/mage/cards/k/KnightOfTheReliquary.java @@ -28,10 +28,8 @@ package mage.cards.k; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; + +import mage.constants.*; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; @@ -62,7 +60,7 @@ public class KnightOfTheReliquary extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("Forest or Plains"); static { - filter.add(Predicates.or(new SubtypePredicate("Forest"), new SubtypePredicate("Plains"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.FOREST), new SubtypePredicate(SubType.PLAINS))); } public KnightOfTheReliquary(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KodamaOfTheCenterTree.java b/Mage.Sets/src/mage/cards/k/KodamaOfTheCenterTree.java index 0e9217453f..2152ac3244 100644 --- a/Mage.Sets/src/mage/cards/k/KodamaOfTheCenterTree.java +++ b/Mage.Sets/src/mage/cards/k/KodamaOfTheCenterTree.java @@ -34,10 +34,7 @@ import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect; import mage.abilities.keyword.SoulshiftAbility; 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; @@ -52,7 +49,7 @@ public class KodamaOfTheCenterTree extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Spirits you control"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public KodamaOfTheCenterTree(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KorlashHeirToBlackblade.java b/Mage.Sets/src/mage/cards/k/KorlashHeirToBlackblade.java index d8d589df0b..71f5635fbf 100644 --- a/Mage.Sets/src/mage/cards/k/KorlashHeirToBlackblade.java +++ b/Mage.Sets/src/mage/cards/k/KorlashHeirToBlackblade.java @@ -39,10 +39,7 @@ import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; 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.FilterControlledPermanent; import mage.filter.common.FilterLandCard; @@ -60,8 +57,8 @@ public class KorlashHeirToBlackblade extends CardImpl { private static final FilterControlledPermanent filterPermanent = new FilterControlledPermanent("Swamps you control"); private static final FilterCard filterCard = new FilterLandCard("Swamp cards"); static { - filterPermanent.add(new SubtypePredicate("Swamp")); - filterCard.add(new SubtypePredicate("Swamp")); + filterPermanent.add(new SubtypePredicate(SubType.SWAMP)); + filterCard.add(new SubtypePredicate(SubType.SWAMP)); } public KorlashHeirToBlackblade(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KrosanWarchief.java b/Mage.Sets/src/mage/cards/k/KrosanWarchief.java index 8a0a4ad125..67ab4b068e 100644 --- a/Mage.Sets/src/mage/cards/k/KrosanWarchief.java +++ b/Mage.Sets/src/mage/cards/k/KrosanWarchief.java @@ -29,6 +29,7 @@ package mage.cards.k; import java.util.UUID; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; @@ -54,8 +55,8 @@ public class KrosanWarchief extends CardImpl { private static final FilterCreaturePermanent filterTarget = new FilterCreaturePermanent("Beast"); static { - filter.add(new SubtypePredicate("Beast")); - filterTarget.add(new SubtypePredicate("Beast")); + filter.add(new SubtypePredicate(SubType.BEAST)); + filterTarget.add(new SubtypePredicate(SubType.BEAST)); } public KrosanWarchief(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KrovikanMist.java b/Mage.Sets/src/mage/cards/k/KrovikanMist.java index 97a6544cc3..17b9c8f116 100644 --- a/Mage.Sets/src/mage/cards/k/KrovikanMist.java +++ b/Mage.Sets/src/mage/cards/k/KrovikanMist.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 KrovikanMist extends CardImpl { private static final FilterControlledPermanent controlledIllusionsFilter = new FilterControlledPermanent("Illusions you control"); static { - controlledIllusionsFilter.add(new SubtypePredicate("Illusion")); + controlledIllusionsFilter.add(new SubtypePredicate(SubType.ILLUSION)); } public KrovikanMist(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LanternScout.java b/Mage.Sets/src/mage/cards/l/LanternScout.java index 67caaee390..97e84b451b 100644 --- a/Mage.Sets/src/mage/cards/l/LanternScout.java +++ b/Mage.Sets/src/mage/cards/l/LanternScout.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.FilterControlledCreaturePermanent; import mage.filter.predicate.Predicates; @@ -61,7 +62,7 @@ public class LanternScout extends CardImpl { FilterPermanent filter = new FilterPermanent("{this} or another Ally"); filter.add(Predicates.or( new CardIdPredicate(this.getId()), - new SubtypePredicate("Ally"))); + new SubtypePredicate(SubType.ALLY))); // Rally - Whenever Lantern Scout or another Ally enters the battlefield under your control, creatures you control gain lifelink until end of turn. Effect effect = new GainAbilityAllEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent()); diff --git a/Mage.Sets/src/mage/cards/l/LastStand.java b/Mage.Sets/src/mage/cards/l/LastStand.java index 0700bb942e..fd8e4f6d1e 100644 --- a/Mage.Sets/src/mage/cards/l/LastStand.java +++ b/Mage.Sets/src/mage/cards/l/LastStand.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.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -77,11 +78,11 @@ class LastStandEffect extends OneShotEffect { private static final FilterControlledLandPermanent filterForest = new FilterControlledLandPermanent(); private static final FilterControlledLandPermanent filterIsland = new FilterControlledLandPermanent(); static { - filterSwamp.add(new SubtypePredicate("Swamp")); - filterMountain.add(new SubtypePredicate("Mountain")); - filterPlains.add(new SubtypePredicate("Plains")); - filterForest.add(new SubtypePredicate("Forest")); - filterIsland.add(new SubtypePredicate("Island")); + filterSwamp.add(new SubtypePredicate(SubType.SWAMP)); + filterMountain.add(new SubtypePredicate(SubType.MOUNTAIN)); + filterPlains.add(new SubtypePredicate(SubType.PLAINS)); + filterForest.add(new SubtypePredicate(SubType.FOREST)); + filterIsland.add(new SubtypePredicate(SubType.ISLAND)); } public LastStandEffect() { diff --git a/Mage.Sets/src/mage/cards/l/LegionsOfLimDul.java b/Mage.Sets/src/mage/cards/l/LegionsOfLimDul.java index 843a84757c..b2fc48d8bd 100644 --- a/Mage.Sets/src/mage/cards/l/LegionsOfLimDul.java +++ b/Mage.Sets/src/mage/cards/l/LegionsOfLimDul.java @@ -32,6 +32,7 @@ import mage.abilities.keyword.LandwalkAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class LegionsOfLimDul extends CardImpl { static { filter.add(new SupertypePredicate(SuperType.SNOW)); - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP )); } public LegionsOfLimDul(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LichLordOfUnx.java b/Mage.Sets/src/mage/cards/l/LichLordOfUnx.java index bd47f0f39f..391ab999fe 100644 --- a/Mage.Sets/src/mage/cards/l/LichLordOfUnx.java +++ b/Mage.Sets/src/mage/cards/l/LichLordOfUnx.java @@ -40,6 +40,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.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -55,7 +56,7 @@ public class LichLordOfUnx extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Zombies you control"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public LichLordOfUnx(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/Lifeblood.java b/Mage.Sets/src/mage/cards/l/Lifeblood.java index 74d19faa4f..702af6c26b 100644 --- a/Mage.Sets/src/mage/cards/l/Lifeblood.java +++ b/Mage.Sets/src/mage/cards/l/Lifeblood.java @@ -33,6 +33,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.TargetController; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class Lifeblood extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("a Mountain an opponent controls"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); filter.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/l/LilianaDeathsMajesty.java b/Mage.Sets/src/mage/cards/l/LilianaDeathsMajesty.java index ab62477845..1e0f44f9fe 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaDeathsMajesty.java +++ b/Mage.Sets/src/mage/cards/l/LilianaDeathsMajesty.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.continuous.BecomesBlackZombieAdditionEffect import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -54,7 +55,7 @@ public class LilianaDeathsMajesty extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Zombie creatures"); static { - filter.add(Predicates.not(new SubtypePredicate("Zombie"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.ZOMBIE))); } public LilianaDeathsMajesty(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LilianasMastery.java b/Mage.Sets/src/mage/cards/l/LilianasMastery.java index 36979f9166..9086de754f 100644 --- a/Mage.Sets/src/mage/cards/l/LilianasMastery.java +++ b/Mage.Sets/src/mage/cards/l/LilianasMastery.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; @@ -50,7 +51,7 @@ public class LilianasMastery extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombie creatures"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public LilianasMastery(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LongForgottenGohei.java b/Mage.Sets/src/mage/cards/l/LongForgottenGohei.java index 43246471af..71dbef29dc 100644 --- a/Mage.Sets/src/mage/cards/l/LongForgottenGohei.java +++ b/Mage.Sets/src/mage/cards/l/LongForgottenGohei.java @@ -33,6 +33,7 @@ import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continuous.BoostControlledEffect; @@ -54,8 +55,8 @@ public class LongForgottenGohei extends CardImpl { private static final FilterCreaturePermanent spiritFilter = new FilterCreaturePermanent("Spirit creatures"); static { - arcaneFilter.add(new SubtypePredicate("Arcane")); - spiritFilter.add(new SubtypePredicate("Spirit")); + arcaneFilter.add(new SubtypePredicate(SubType.ARCANE)); + spiritFilter.add(new SubtypePredicate(SubType.SPIRIT)); } public LongForgottenGohei(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/l/LowlandOaf.java b/Mage.Sets/src/mage/cards/l/LowlandOaf.java index 5dafbd8cfd..edeb7f8ccc 100644 --- a/Mage.Sets/src/mage/cards/l/LowlandOaf.java +++ b/Mage.Sets/src/mage/cards/l/LowlandOaf.java @@ -42,11 +42,7 @@ import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; 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.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; @@ -64,7 +60,7 @@ public class LowlandOaf extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblin creature you control"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java b/Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java index 465355cb19..a08d4d7d70 100644 --- a/Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java +++ b/Mage.Sets/src/mage/cards/l/LysAlanaBowmaster.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.FilterSpell; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.AbilityPredicate; @@ -53,7 +54,7 @@ public class LysAlanaBowmaster extends CardImpl { private static final FilterCreaturePermanent filterFlying = new FilterCreaturePermanent("creature with flying"); static { - filterElf.add(new SubtypePredicate("Elf")); + filterElf.add(new SubtypePredicate(SubType.ELF)); filterFlying.add(new AbilityPredicate(FlyingAbility.class)); } diff --git a/Mage.Sets/src/mage/cards/m/MadAuntie.java b/Mage.Sets/src/mage/cards/m/MadAuntie.java index 8ea054fcf5..86f1ebcf05 100644 --- a/Mage.Sets/src/mage/cards/m/MadAuntie.java +++ b/Mage.Sets/src/mage/cards/m/MadAuntie.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.StaticFilters; import mage.filter.common.FilterCreaturePermanent; @@ -55,7 +56,7 @@ public class MadAuntie extends CardImpl { private static final FilterCreaturePermanent filter1 = new FilterCreaturePermanent("another target Goblin"); static { - filter1.add(new SubtypePredicate("Goblin")); + filter1.add(new SubtypePredicate(SubType.GOBLIN)); filter1.add(new AnotherPredicate()); } diff --git a/Mage.Sets/src/mage/cards/m/MaintenanceHangar.java b/Mage.Sets/src/mage/cards/m/MaintenanceHangar.java index 3eb003db40..99cfb25ee6 100644 --- a/Mage.Sets/src/mage/cards/m/MaintenanceHangar.java +++ b/Mage.Sets/src/mage/cards/m/MaintenanceHangar.java @@ -40,13 +40,7 @@ import mage.abilities.keyword.RepairAbility; import mage.cards.Card; 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.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -62,7 +56,7 @@ public class MaintenanceHangar extends CardImpl { private static final FilterCreaturePermanent filterPermanent = new FilterCreaturePermanent("Starship creatures"); static { - filterPermanent.add(new SubtypePredicate("Starship")); + filterPermanent.add(new SubtypePredicate(SubType.STARSHIP)); } public MaintenanceHangar(UUID ownerId, CardSetInfo setInfo) { @@ -125,7 +119,7 @@ class MaintenanceHangarEffect extends ContinuousEffectImpl { private static final FilterCreatureCard filterCard = new FilterCreatureCard("Starship creatures"); static { - filterCard.add(new SubtypePredicate("Starship")); + filterCard.add(new SubtypePredicate(SubType.STARSHIP)); } public MaintenanceHangarEffect() { diff --git a/Mage.Sets/src/mage/cards/m/ManrikiGusari.java b/Mage.Sets/src/mage/cards/m/ManrikiGusari.java index 0f352cc6ac..87b95f2992 100644 --- a/Mage.Sets/src/mage/cards/m/ManrikiGusari.java +++ b/Mage.Sets/src/mage/cards/m/ManrikiGusari.java @@ -54,7 +54,7 @@ public class ManrikiGusari extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Equipment"); static { - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public ManrikiGusari(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MarshFlitter.java b/Mage.Sets/src/mage/cards/m/MarshFlitter.java index cf44c63d42..eed3a66535 100644 --- a/Mage.Sets/src/mage/cards/m/MarshFlitter.java +++ b/Mage.Sets/src/mage/cards/m/MarshFlitter.java @@ -39,10 +39,7 @@ import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.SubLayer; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.GoblinRogueToken; @@ -57,7 +54,7 @@ public class MarshFlitter extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("a Goblin"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public MarshFlitter(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MaskedGorgon.java b/Mage.Sets/src/mage/cards/m/MaskedGorgon.java index 2b6f2ebfd4..7d1db8c01e 100644 --- a/Mage.Sets/src/mage/cards/m/MaskedGorgon.java +++ b/Mage.Sets/src/mage/cards/m/MaskedGorgon.java @@ -39,10 +39,7 @@ import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.keyword.ProtectionAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AbilityWord; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.FilterCard; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -60,7 +57,7 @@ public class MaskedGorgon extends CardImpl { static { filter1.add(Predicates.or(new ColorPredicate(ObjectColor.GREEN), new ColorPredicate(ObjectColor.WHITE))); - filter2.add(new SubtypePredicate("Gorgon")); + filter2.add(new SubtypePredicate(SubType.GORGON)); } public MaskedGorgon(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MayorOfAvabruck.java b/Mage.Sets/src/mage/cards/m/MayorOfAvabruck.java index f76cbf5069..3b3be6f090 100644 --- a/Mage.Sets/src/mage/cards/m/MayorOfAvabruck.java +++ b/Mage.Sets/src/mage/cards/m/MayorOfAvabruck.java @@ -60,7 +60,7 @@ public class MayorOfAvabruck extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human creatures"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public MayorOfAvabruck(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MazesEnd.java b/Mage.Sets/src/mage/cards/m/MazesEnd.java index 0607d55c90..1a50f39391 100644 --- a/Mage.Sets/src/mage/cards/m/MazesEnd.java +++ b/Mage.Sets/src/mage/cards/m/MazesEnd.java @@ -41,6 +41,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; @@ -62,7 +63,7 @@ public class MazesEnd extends CardImpl { private static final FilterCard filterCard = new FilterCard("Gate card"); static { - filterCard.add(new SubtypePredicate("Gate")); + filterCard.add(new SubtypePredicate(SubType.GATE)); } public MazesEnd(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MerfolkSovereign.java b/Mage.Sets/src/mage/cards/m/MerfolkSovereign.java index 29a2a51e74..a60ab8bb45 100644 --- a/Mage.Sets/src/mage/cards/m/MerfolkSovereign.java +++ b/Mage.Sets/src/mage/cards/m/MerfolkSovereign.java @@ -31,6 +31,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; @@ -55,8 +56,8 @@ public class MerfolkSovereign extends CardImpl { private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Merfolk creature"); static { - filter1.add(new SubtypePredicate("Merfolk")); - filter2.add(new SubtypePredicate("Merfolk")); + filter1.add(new SubtypePredicate(SubType.MERFOLK)); + filter2.add(new SubtypePredicate(SubType.MERFOLK)); } public MerfolkSovereign(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MerrowReejerey.java b/Mage.Sets/src/mage/cards/m/MerrowReejerey.java index 2577683d04..d82ea1d965 100644 --- a/Mage.Sets/src/mage/cards/m/MerrowReejerey.java +++ b/Mage.Sets/src/mage/cards/m/MerrowReejerey.java @@ -28,10 +28,8 @@ package mage.cards.m; 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.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -57,9 +55,9 @@ public class MerrowReejerey extends CardImpl { private static final FilterSpell filter2 = new FilterSpell("Merfolk spell"); static { - filter1.add(new SubtypePredicate("Merfolk")); + filter1.add(new SubtypePredicate(SubType.MERFOLK)); filter1.add(new ControllerPredicate(TargetController.YOU)); - filter2.add(new SubtypePredicate("Merfolk")); + filter2.add(new SubtypePredicate(SubType.MERFOLK)); } public MerrowReejerey(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MightSliver.java b/Mage.Sets/src/mage/cards/m/MightSliver.java index af8341071d..658a4fa65e 100644 --- a/Mage.Sets/src/mage/cards/m/MightSliver.java +++ b/Mage.Sets/src/mage/cards/m/MightSliver.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 MightSliver extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public MightSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MindSludge.java b/Mage.Sets/src/mage/cards/m/MindSludge.java index 96b967ea80..57f28bcd80 100644 --- a/Mage.Sets/src/mage/cards/m/MindSludge.java +++ b/Mage.Sets/src/mage/cards/m/MindSludge.java @@ -29,6 +29,7 @@ package mage.cards.m; import java.util.UUID; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.discard.DiscardTargetEffect; @@ -48,7 +49,7 @@ public class MindSludge extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp you control"); 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/m/MireKavu.java b/Mage.Sets/src/mage/cards/m/MireKavu.java index af310337c9..b5a467db00 100644 --- a/Mage.Sets/src/mage/cards/m/MireKavu.java +++ b/Mage.Sets/src/mage/cards/m/MireKavu.java @@ -34,6 +34,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; @@ -47,7 +48,7 @@ public class MireKavu extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Swamp"); static { - filter.add(new SubtypePredicate("Swamp")); + filter.add(new SubtypePredicate(SubType.SWAMP)); } public MireKavu(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MiresToll.java b/Mage.Sets/src/mage/cards/m/MiresToll.java index c8009c85ac..7200704ba7 100644 --- a/Mage.Sets/src/mage/cards/m/MiresToll.java +++ b/Mage.Sets/src/mage/cards/m/MiresToll.java @@ -33,6 +33,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.constants.TargetController; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class MiresToll extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("the number of Swamps you control"); 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/m/MiseryCharm.java b/Mage.Sets/src/mage/cards/m/MiseryCharm.java index 2426f8c86d..223878d79a 100644 --- a/Mage.Sets/src/mage/cards/m/MiseryCharm.java +++ b/Mage.Sets/src/mage/cards/m/MiseryCharm.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.filter.FilterCard; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,8 +53,8 @@ public class MiseryCharm extends CardImpl { private static final FilterCard filter2 = new FilterCard("Cleric card from your graveyard"); static { - filter1.add(new SubtypePredicate("Cleric")); - filter2.add(new SubtypePredicate("Cleric")); + filter1.add(new SubtypePredicate(SubType.CLERIC)); + filter2.add(new SubtypePredicate(SubType.CLERIC)); } public MiseryCharm(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 dc152574a5..cb26fca414 100644 --- a/Mage.Sets/src/mage/cards/m/Moonmist.java +++ b/Mage.Sets/src/mage/cards/m/Moonmist.java @@ -53,7 +53,7 @@ public class Moonmist extends CardImpl { static { filter.add(Predicates.not(new SubtypePredicate(SubType.WEREWOLF))); - filter.add(Predicates.not(new SubtypePredicate("Wolf"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.WOLF))); } public Moonmist(UUID ownerId, CardSetInfo setInfo) { @@ -80,7 +80,7 @@ class MoonmistEffect extends OneShotEffect { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("humans"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public MoonmistEffect() { diff --git a/Mage.Sets/src/mage/cards/m/MtendaGriffin.java b/Mage.Sets/src/mage/cards/m/MtendaGriffin.java index 80168318de..a6f05aaf45 100644 --- a/Mage.Sets/src/mage/cards/m/MtendaGriffin.java +++ b/Mage.Sets/src/mage/cards/m/MtendaGriffin.java @@ -42,6 +42,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.PhaseStep; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,7 +58,7 @@ public class MtendaGriffin extends CardImpl { private static final FilterCard filter = new FilterCard("Griffin card from your graveyard"); static { - filter.add(new SubtypePredicate("Griffin")); + filter.add(new SubtypePredicate(SubType.GRIFFIN)); } public MtendaGriffin(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MundaAmbushLeader.java b/Mage.Sets/src/mage/cards/m/MundaAmbushLeader.java index 0a27023002..a2ce77cf12 100644 --- a/Mage.Sets/src/mage/cards/m/MundaAmbushLeader.java +++ b/Mage.Sets/src/mage/cards/m/MundaAmbushLeader.java @@ -37,10 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.cards.Cards; 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.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -85,7 +82,7 @@ class MundaAmbushLeaderEffect extends OneShotEffect { private static final FilterCard filter = new FilterCard("Ally cards to reveal and put on top of your library"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); } public MundaAmbushLeaderEffect() { diff --git a/Mage.Sets/src/mage/cards/m/MundasVanguard.java b/Mage.Sets/src/mage/cards/m/MundasVanguard.java index 6fdadeead0..ebcf67ecfd 100644 --- a/Mage.Sets/src/mage/cards/m/MundasVanguard.java +++ b/Mage.Sets/src/mage/cards/m/MundasVanguard.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.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; @@ -56,7 +57,7 @@ public class MundasVanguard 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/m/MurasaPyromancer.java b/Mage.Sets/src/mage/cards/m/MurasaPyromancer.java index 49a4cf5789..e99e13d0ae 100644 --- a/Mage.Sets/src/mage/cards/m/MurasaPyromancer.java +++ b/Mage.Sets/src/mage/cards/m/MurasaPyromancer.java @@ -37,6 +37,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.constants.TargetController; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class MurasaPyromancer extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Ally 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/n/NamelessOne.java b/Mage.Sets/src/mage/cards/n/NamelessOne.java index 7020f833e5..7c1d94adbf 100644 --- a/Mage.Sets/src/mage/cards/n/NamelessOne.java +++ b/Mage.Sets/src/mage/cards/n/NamelessOne.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; @@ -51,7 +52,7 @@ public class NamelessOne 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 NamelessOne(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NaturesLore.java b/Mage.Sets/src/mage/cards/n/NaturesLore.java index f69b9ff219..c07a21d454 100644 --- a/Mage.Sets/src/mage/cards/n/NaturesLore.java +++ b/Mage.Sets/src/mage/cards/n/NaturesLore.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.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInLibrary; @@ -45,7 +46,7 @@ public class NaturesLore extends CardImpl { private static final FilterCard filter = new FilterCard("a Forest card"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public NaturesLore(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NebelgastHerald.java b/Mage.Sets/src/mage/cards/n/NebelgastHerald.java index 009773a793..1258b5d0db 100644 --- a/Mage.Sets/src/mage/cards/n/NebelgastHerald.java +++ b/Mage.Sets/src/mage/cards/n/NebelgastHerald.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.TargetController; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; @@ -55,7 +56,7 @@ public class NebelgastHerald extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); filterTarget.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/n/NectarFaerie.java b/Mage.Sets/src/mage/cards/n/NectarFaerie.java index 3c0b0e3760..c71ee8f12d 100644 --- a/Mage.Sets/src/mage/cards/n/NectarFaerie.java +++ b/Mage.Sets/src/mage/cards/n/NectarFaerie.java @@ -54,7 +54,7 @@ public class NectarFaerie extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Faerie or Elf"); static { - filter.add(Predicates.or(new SubtypePredicate("Faerie"),new SubtypePredicate("Elf"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.FAERIE),new SubtypePredicate(SubType.ELF))); } public NectarFaerie(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NemataGroveGuardian.java b/Mage.Sets/src/mage/cards/n/NemataGroveGuardian.java index 124cb07626..1be970c426 100644 --- a/Mage.Sets/src/mage/cards/n/NemataGroveGuardian.java +++ b/Mage.Sets/src/mage/cards/n/NemataGroveGuardian.java @@ -35,10 +35,7 @@ import mage.abilities.effects.common.CreateTokenEffect; 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.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -56,8 +53,8 @@ public class NemataGroveGuardian extends CardImpl { private static final FilterControlledPermanent filter1 = new FilterControlledPermanent("Saproling"); static { - filter.add(new SubtypePredicate("Saproling")); - filter1.add(new SubtypePredicate("Saproling")); + filter.add(new SubtypePredicate(SubType.SAPROLING)); + filter1.add(new SubtypePredicate(SubType.SAPROLING)); } public NemataGroveGuardian(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NessianGameWarden.java b/Mage.Sets/src/mage/cards/n/NessianGameWarden.java index cdf1ee8396..1796a1c448 100644 --- a/Mage.Sets/src/mage/cards/n/NessianGameWarden.java +++ b/Mage.Sets/src/mage/cards/n/NessianGameWarden.java @@ -40,6 +40,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.FilterControlledPermanent; import mage.filter.common.FilterCreatureCard; @@ -81,7 +82,7 @@ class NessianGameWardenEffect extends OneShotEffect { private static final FilterControlledPermanent filter = new FilterControlledPermanent("forests you control"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public NessianGameWardenEffect() { diff --git a/Mage.Sets/src/mage/cards/n/NimbusMaze.java b/Mage.Sets/src/mage/cards/n/NimbusMaze.java index 730f013745..a5167840e4 100644 --- a/Mage.Sets/src/mage/cards/n/NimbusMaze.java +++ b/Mage.Sets/src/mage/cards/n/NimbusMaze.java @@ -41,6 +41,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.common.FilterControlledPermanent; @@ -56,8 +57,8 @@ public class NimbusMaze extends CardImpl { private static final FilterControlledPermanent controlPlains = new FilterControlledPermanent("you control a Plains"); static { - controlIsland.add(new SubtypePredicate("Island")); - controlPlains.add(new SubtypePredicate("Plains")); + controlIsland.add(new SubtypePredicate(SubType.ISLAND)); + controlPlains.add(new SubtypePredicate(SubType.PLAINS)); } public NimbusMaze(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NineRingedBo.java b/Mage.Sets/src/mage/cards/n/NineRingedBo.java index 996b9ded34..66a20e22ad 100644 --- a/Mage.Sets/src/mage/cards/n/NineRingedBo.java +++ b/Mage.Sets/src/mage/cards/n/NineRingedBo.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.ExileTargetIfDiesEffect; 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.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class NineRingedBo extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("spirit"); static { - filter.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); } public NineRingedBo(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NissaRevane.java b/Mage.Sets/src/mage/cards/n/NissaRevane.java index 5b6b874aef..4eb53872d2 100644 --- a/Mage.Sets/src/mage/cards/n/NissaRevane.java +++ b/Mage.Sets/src/mage/cards/n/NissaRevane.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.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.NamePredicate; @@ -56,7 +57,7 @@ public class NissaRevane extends CardImpl { static { nissasChosenFilter.add(new NamePredicate("Nissa's Chosen")); - elfFilter.add(new SubtypePredicate("Elf")); + elfFilter.add(new SubtypePredicate(SubType.ELF)); } public NissaRevane(UUID ownerId, CardSetInfo setInfo) { @@ -89,7 +90,7 @@ class NissaRevaneGainLifeEffect extends OneShotEffect { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public NissaRevaneGainLifeEffect() { diff --git a/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java b/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java index 2946502672..9b6ba2b1dc 100644 --- a/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java +++ b/Mage.Sets/src/mage/cards/n/NissasPilgrimage.java @@ -39,6 +39,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.FilterCard; import mage.filter.common.FilterBasicLandCard; @@ -76,7 +77,7 @@ class NissasPilgrimageEffect extends OneShotEffect { private static final FilterCard filter = new FilterBasicLandCard("basic Forest"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public NissasPilgrimageEffect() { diff --git a/Mage.Sets/src/mage/cards/n/NomadMythmaker.java b/Mage.Sets/src/mage/cards/n/NomadMythmaker.java index d006803bf9..bee96d0973 100644 --- a/Mage.Sets/src/mage/cards/n/NomadMythmaker.java +++ b/Mage.Sets/src/mage/cards/n/NomadMythmaker.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.FilterCard; import mage.filter.common.FilterControlledCreaturePermanent; @@ -60,7 +61,7 @@ public class NomadMythmaker extends CardImpl { static { FILTER.add(new CardTypePredicate(CardType.ENCHANTMENT)); - FILTER.add(new SubtypePredicate("Aura")); + FILTER.add(new SubtypePredicate(SubType.AURA)); } public NomadMythmaker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NoxiousGhoul.java b/Mage.Sets/src/mage/cards/n/NoxiousGhoul.java index 29ea4302ae..06280802e7 100644 --- a/Mage.Sets/src/mage/cards/n/NoxiousGhoul.java +++ b/Mage.Sets/src/mage/cards/n/NoxiousGhoul.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.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -61,11 +62,11 @@ public class NoxiousGhoul extends CardImpl { filter.add(Predicates.or( new CardIdPredicate(this.getId()), - new SubtypePredicate("Zombie"))); + new SubtypePredicate(SubType.ZOMBIE))); filter2.add(new CardTypePredicate(CardType.CREATURE)); filter2.add(Predicates.not( - new SubtypePredicate("Zombie"))); + new SubtypePredicate(SubType.ZOMBIE))); final String rule = "Whenever {this} or another Zombie enters the battlefield, all non-Zombie creatures get -1/-1 until end of turn."; diff --git a/Mage.Sets/src/mage/cards/n/Nullify.java b/Mage.Sets/src/mage/cards/n/Nullify.java index 2f0568f2f6..d41b992eca 100644 --- a/Mage.Sets/src/mage/cards/n/Nullify.java +++ b/Mage.Sets/src/mage/cards/n/Nullify.java @@ -32,6 +32,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.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -49,7 +50,7 @@ public class Nullify extends CardImpl { static { filter.add(Predicates.or( new CardTypePredicate(CardType.CREATURE), - new SubtypePredicate("Aura"))); + new SubtypePredicate(SubType.AURA))); } public Nullify(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/n/NutCollector.java b/Mage.Sets/src/mage/cards/n/NutCollector.java index 5a75fab756..d429f7628f 100644 --- a/Mage.Sets/src/mage/cards/n/NutCollector.java +++ b/Mage.Sets/src/mage/cards/n/NutCollector.java @@ -38,11 +38,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.BoostAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AbilityWord; -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.game.permanent.token.SquirrelToken; @@ -56,7 +52,7 @@ public class NutCollector extends CardImpl { private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("squirrel"); static { - filter.add(new SubtypePredicate("Squirrel")); + filter.add(new SubtypePredicate(SubType.SQUIRREL)); } public NutCollector(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/o/OathkeeperTakenosDaisho.java b/Mage.Sets/src/mage/cards/o/OathkeeperTakenosDaisho.java index b5cb61ddb0..f15649339e 100644 --- a/Mage.Sets/src/mage/cards/o/OathkeeperTakenosDaisho.java +++ b/Mage.Sets/src/mage/cards/o/OathkeeperTakenosDaisho.java @@ -56,7 +56,7 @@ public class OathkeeperTakenosDaisho extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("it's a Samurai card"); static { - filter.add(new SubtypePredicate("Samurai")); + filter.add(new SubtypePredicate(SubType.SAMURAI)); } public OathkeeperTakenosDaisho(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/o/OjutaiSoulOfWinter.java b/Mage.Sets/src/mage/cards/o/OjutaiSoulOfWinter.java index 00fb951429..fe28ec1cb5 100644 --- a/Mage.Sets/src/mage/cards/o/OjutaiSoulOfWinter.java +++ b/Mage.Sets/src/mage/cards/o/OjutaiSoulOfWinter.java @@ -36,10 +36,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.SetTargetPointer; -import mage.constants.SuperType; -import mage.constants.TargetController; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterNonlandPermanent; @@ -59,7 +56,7 @@ public class OjutaiSoulOfWinter extends CardImpl { private static final FilterPermanent filterNonlandPermanent = new FilterNonlandPermanent("nonland permanent an opponent controls"); static { - filterDragon.add(new SubtypePredicate("Dragon")); + filterDragon.add(new SubtypePredicate(SubType.DRAGON)); filterDragon.add(new ControllerPredicate(TargetController.YOU)); filterNonlandPermanent.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/o/OmnathLocusOfRage.java b/Mage.Sets/src/mage/cards/o/OmnathLocusOfRage.java index 217a8a7da1..78a5642b0d 100644 --- a/Mage.Sets/src/mage/cards/o/OmnathLocusOfRage.java +++ b/Mage.Sets/src/mage/cards/o/OmnathLocusOfRage.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.SuperType; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; @@ -54,7 +55,7 @@ public class OmnathLocusOfRage extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elemental you control"); static { - filter.add(new SubtypePredicate("Elemental")); + filter.add(new SubtypePredicate(SubType.ELEMENTAL)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/o/OnduCleric.java b/Mage.Sets/src/mage/cards/o/OnduCleric.java index 197b815be6..8a807dab0d 100644 --- a/Mage.Sets/src/mage/cards/o/OnduCleric.java +++ b/Mage.Sets/src/mage/cards/o/OnduCleric.java @@ -36,6 +36,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class OnduCleric extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Allies 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/o/OrbitalBombardment.java b/Mage.Sets/src/mage/cards/o/OrbitalBombardment.java index 6bff720b78..59bbebe14c 100644 --- a/Mage.Sets/src/mage/cards/o/OrbitalBombardment.java +++ b/Mage.Sets/src/mage/cards/o/OrbitalBombardment.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; @@ -45,7 +46,7 @@ public class OrbitalBombardment extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Starship creatures"); static { - filter.add(Predicates.not(new SubtypePredicate("Starship"))); + filter.add(Predicates.not(new SubtypePredicate(SubType.STARSHIP))); } public OrbitalBombardment(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/o/OrcGeneral.java b/Mage.Sets/src/mage/cards/o/OrcGeneral.java index 7fc187b7ef..3e65e5da72 100644 --- a/Mage.Sets/src/mage/cards/o/OrcGeneral.java +++ b/Mage.Sets/src/mage/cards/o/OrcGeneral.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; @@ -56,10 +57,10 @@ public class OrcGeneral extends CardImpl { private static final FilterCreaturePermanent filterOrc = new FilterCreaturePermanent("Other Orc creatures"); static { - filterOrcOrGoblin.add(Predicates.or(new SubtypePredicate("Orc"), - new SubtypePredicate("Goblin"))); + filterOrcOrGoblin.add(Predicates.or(new SubtypePredicate(SubType.ORC), + new SubtypePredicate(SubType.GOBLIN))); filterOrcOrGoblin.add(new AnotherPredicate()); - filterOrc.add(new SubtypePredicate("Orc")); + filterOrc.add(new SubtypePredicate(SubType.ORC)); } public OrcGeneral(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PearlspearCourier.java b/Mage.Sets/src/mage/cards/p/PearlspearCourier.java index a9b2e3a467..9325fb79e2 100644 --- a/Mage.Sets/src/mage/cards/p/PearlspearCourier.java +++ b/Mage.Sets/src/mage/cards/p/PearlspearCourier.java @@ -43,6 +43,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; @@ -57,7 +58,7 @@ public class PearlspearCourier extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Soldier creature"); static { - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public PearlspearCourier(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/Peppersmoke.java b/Mage.Sets/src/mage/cards/p/Peppersmoke.java index d5d85bc240..6d564077d6 100644 --- a/Mage.Sets/src/mage/cards/p/Peppersmoke.java +++ b/Mage.Sets/src/mage/cards/p/Peppersmoke.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; 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.common.TargetCreaturePermanent; @@ -50,7 +51,7 @@ public class Peppersmoke extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("If you control a Faerie,"); static { - filter.add(new SubtypePredicate("Faerie")); + filter.add(new SubtypePredicate(SubType.FAERIE)); } public Peppersmoke(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PerilousForays.java b/Mage.Sets/src/mage/cards/p/PerilousForays.java index 3f754a2efd..1e032d74b0 100644 --- a/Mage.Sets/src/mage/cards/p/PerilousForays.java +++ b/Mage.Sets/src/mage/cards/p/PerilousForays.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.FilterLandCard; import mage.filter.predicate.Predicates; @@ -54,11 +55,11 @@ public class PerilousForays extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Plains"), - new SubtypePredicate("Island"), - new SubtypePredicate("Swamp"), - new SubtypePredicate("Forest"), - new SubtypePredicate("Mountain"))); + new SubtypePredicate(SubType.PLAINS), + new SubtypePredicate(SubType.ISLAND), + new SubtypePredicate(SubType.SWAMP), + new SubtypePredicate(SubType.FOREST), + new SubtypePredicate(SubType.MOUNTAIN))); } public PerilousForays(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PestilenceRats.java b/Mage.Sets/src/mage/cards/p/PestilenceRats.java index fb1ada92fb..77a751b31c 100644 --- a/Mage.Sets/src/mage/cards/p/PestilenceRats.java +++ b/Mage.Sets/src/mage/cards/p/PestilenceRats.java @@ -30,6 +30,7 @@ package mage.cards.p; 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 PestilenceRats extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other Rats on the battlefield"); static{ - filter.add(new SubtypePredicate("Rat")); + filter.add(new SubtypePredicate(SubType.RAT)); filter.add(new AnotherCardPredicate()); } diff --git a/Mage.Sets/src/mage/cards/p/PhyrexianDriver.java b/Mage.Sets/src/mage/cards/p/PhyrexianDriver.java index 9985de5350..1ddce44f6d 100644 --- a/Mage.Sets/src/mage/cards/p/PhyrexianDriver.java +++ b/Mage.Sets/src/mage/cards/p/PhyrexianDriver.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.continuous.BoostAllEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.Duration; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class PhyrexianDriver extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Mercenary creatures"); static { - filter.add(new SubtypePredicate("Mercenary")); + filter.add(new SubtypePredicate(SubType.MERCENARY)); } public PhyrexianDriver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PietyCharm.java b/Mage.Sets/src/mage/cards/p/PietyCharm.java index ff8ee1c3a8..1fb1053e09 100644 --- a/Mage.Sets/src/mage/cards/p/PietyCharm.java +++ b/Mage.Sets/src/mage/cards/p/PietyCharm.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.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; @@ -55,9 +56,9 @@ public class PietyCharm extends CardImpl { private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Soldier creature"); static { - filter1.add(new SubtypePredicate("Aura")); + filter1.add(new SubtypePredicate(SubType.AURA)); filter1.add(new AttachedToPredicate(new FilterCreaturePermanent())); - filter2.add(new SubtypePredicate("Soldier")); + filter2.add(new SubtypePredicate(SubType.SOLDIER)); } public PietyCharm(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PlagueSliver.java b/Mage.Sets/src/mage/cards/p/PlagueSliver.java index f3e76656b6..1902d8d8dc 100644 --- a/Mage.Sets/src/mage/cards/p/PlagueSliver.java +++ b/Mage.Sets/src/mage/cards/p/PlagueSliver.java @@ -36,10 +36,7 @@ import mage.abilities.effects.common.DamageControllerEffect; 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.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +49,7 @@ public class PlagueSliver extends CardImpl { private static final FilterCreaturePermanent filterSliver = new FilterCreaturePermanent(); static { - filterSliver.add(new SubtypePredicate("Sliver")); + filterSliver.add(new SubtypePredicate(SubType.SLIVER)); } public PlagueSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PreeminentCaptain.java b/Mage.Sets/src/mage/cards/p/PreeminentCaptain.java index 4b059077ce..23fbd879ce 100644 --- a/Mage.Sets/src/mage/cards/p/PreeminentCaptain.java +++ b/Mage.Sets/src/mage/cards/p/PreeminentCaptain.java @@ -30,6 +30,7 @@ package mage.cards.p; import java.util.UUID; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; @@ -81,7 +82,7 @@ class PreeminentCaptainEffect extends OneShotEffect { private static final FilterCreatureCard filter = new FilterCreatureCard("a soldier creature card"); static { - filter.add(new SubtypePredicate("Soldier")); + filter.add(new SubtypePredicate(SubType.SOLDIER)); } public PreeminentCaptainEffect() { diff --git a/Mage.Sets/src/mage/cards/p/PrimalBellow.java b/Mage.Sets/src/mage/cards/p/PrimalBellow.java index 47002e28cb..eeab60d233 100644 --- a/Mage.Sets/src/mage/cards/p/PrimalBellow.java +++ b/Mage.Sets/src/mage/cards/p/PrimalBellow.java @@ -30,6 +30,7 @@ package mage.cards.p; import java.util.UUID; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.TargetController; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continuous.BoostTargetEffect; @@ -49,7 +50,7 @@ public class PrimalBellow extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Forest you control"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/p/PrincessLeia.java b/Mage.Sets/src/mage/cards/p/PrincessLeia.java index 36ba8248d0..6e94fa25c9 100644 --- a/Mage.Sets/src/mage/cards/p/PrincessLeia.java +++ b/Mage.Sets/src/mage/cards/p/PrincessLeia.java @@ -38,10 +38,7 @@ import mage.abilities.effects.common.continuous.BoostControlledEffect; 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.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -58,7 +55,7 @@ public class PrincessLeia extends CardImpl { private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("Rebel creature you control"); static { - SubtypePredicate rebel = new SubtypePredicate("Rebel"); + SubtypePredicate rebel = new SubtypePredicate(SubType.REBEL); filter1.add(new AnotherPredicate()); filter1.add(rebel); filter2.add(rebel); diff --git a/Mage.Sets/src/mage/cards/p/PsychicSpear.java b/Mage.Sets/src/mage/cards/p/PsychicSpear.java index f8c9a82c61..f3763e73e8 100644 --- a/Mage.Sets/src/mage/cards/p/PsychicSpear.java +++ b/Mage.Sets/src/mage/cards/p/PsychicSpear.java @@ -33,6 +33,7 @@ import mage.constants.CardType; import mage.abilities.effects.common.discard.DiscardCardYouChooseTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.constants.TargetController; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; @@ -48,7 +49,7 @@ public class PsychicSpear extends CardImpl { private static final FilterCard filter = new FilterCard("a Spirit or Arcane card to discard"); static { - filter.add(Predicates.or(new SubtypePredicate("Spirit"),new SubtypePredicate("Arcane"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.SPIRIT),new SubtypePredicate(SubType.ARCANE))); } public PsychicSpear(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/Pulverize.java b/Mage.Sets/src/mage/cards/p/Pulverize.java index 04cd66fd27..9082f0837d 100644 --- a/Mage.Sets/src/mage/cards/p/Pulverize.java +++ b/Mage.Sets/src/mage/cards/p/Pulverize.java @@ -34,6 +34,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.FilterArtifactPermanent; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class Pulverize extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("two Mountains"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public Pulverize(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PuresteelPaladin.java b/Mage.Sets/src/mage/cards/p/PuresteelPaladin.java index d5d2a062ae..f5b05431f4 100644 --- a/Mage.Sets/src/mage/cards/p/PuresteelPaladin.java +++ b/Mage.Sets/src/mage/cards/p/PuresteelPaladin.java @@ -29,10 +29,8 @@ package mage.cards.p; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.Zone; + +import mage.constants.*; import mage.MageInt; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; @@ -55,7 +53,7 @@ public class PuresteelPaladin extends CardImpl { private static final FilterPermanent filter = new FilterControlledPermanent("Equipment"); static { - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public PuresteelPaladin(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/q/QasaliAmbusher.java b/Mage.Sets/src/mage/cards/q/QasaliAmbusher.java index a229767c96..df04017d72 100644 --- a/Mage.Sets/src/mage/cards/q/QasaliAmbusher.java +++ b/Mage.Sets/src/mage/cards/q/QasaliAmbusher.java @@ -38,10 +38,7 @@ import mage.abilities.keyword.ReachAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.TimingRule; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -85,8 +82,8 @@ class QasaliAmbusherAbility extends ActivatedAbilityImpl { private static final FilterControlledLandPermanent filterForest = new FilterControlledLandPermanent(); static { - filterPlains.add(new SubtypePredicate("Plains")); - filterForest.add(new SubtypePredicate("Forest")); + filterPlains.add(new SubtypePredicate(SubType.PLAINS)); + filterForest.add(new SubtypePredicate(SubType.FOREST)); } public QasaliAmbusherAbility() { diff --git a/Mage.Sets/src/mage/cards/q/QuagSickness.java b/Mage.Sets/src/mage/cards/q/QuagSickness.java index d672a2c6d8..bd9359b9f8 100644 --- a/Mage.Sets/src/mage/cards/q/QuagSickness.java +++ b/Mage.Sets/src/mage/cards/q/QuagSickness.java @@ -29,11 +29,8 @@ package mage.cards.q; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.TargetController; -import mage.constants.Zone; + +import mage.constants.*; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.AttachEffect; @@ -56,7 +53,7 @@ public class QuagSickness extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp you control"); 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/q/QuestForTheGoblinLord.java b/Mage.Sets/src/mage/cards/q/QuestForTheGoblinLord.java index 5f7ef722a7..a6b525584e 100644 --- a/Mage.Sets/src/mage/cards/q/QuestForTheGoblinLord.java +++ b/Mage.Sets/src/mage/cards/q/QuestForTheGoblinLord.java @@ -36,10 +36,7 @@ import mage.abilities.effects.common.continuous.BoostAllEffect; 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.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.counters.CounterType; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledCreaturePermanent; @@ -59,7 +56,7 @@ public class QuestForTheGoblinLord extends CardImpl { static { filter.add(new ControllerPredicate(TargetController.YOU)); - goblinFilter.add(new SubtypePredicate("Goblin")); + goblinFilter.add(new SubtypePredicate(SubType.GOBLIN)); } public QuestForTheGoblinLord(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/q/QuestForTheHolyRelic.java b/Mage.Sets/src/mage/cards/q/QuestForTheHolyRelic.java index ce3d7dd9a9..adaedb23bc 100644 --- a/Mage.Sets/src/mage/cards/q/QuestForTheHolyRelic.java +++ b/Mage.Sets/src/mage/cards/q/QuestForTheHolyRelic.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.counters.CounterType; import mage.filter.FilterCard; @@ -103,7 +104,7 @@ class QuestForTheHolyRelicEffect extends OneShotEffect { } FilterCard filter = new FilterCard("Equipment"); - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); 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/q/QuestForUlasTemple.java b/Mage.Sets/src/mage/cards/q/QuestForUlasTemple.java index 96eb11c548..3d0a9b608e 100644 --- a/Mage.Sets/src/mage/cards/q/QuestForUlasTemple.java +++ b/Mage.Sets/src/mage/cards/q/QuestForUlasTemple.java @@ -37,10 +37,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.cards.Cards; import mage.cards.CardsImpl; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.counters.CounterType; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.Predicates; @@ -156,10 +153,10 @@ class QuestForUlasTempleEffect2 extends OneShotEffect { static { filter.add(Predicates.or( - new SubtypePredicate("Kraken"), - new SubtypePredicate("Leviathan"), - new SubtypePredicate("Octopus"), - new SubtypePredicate("Serpent"))); + new SubtypePredicate(SubType.KRAKEN), + new SubtypePredicate(SubType.LEVIATHAN), + new SubtypePredicate(SubType.OCTOPUS), + new SubtypePredicate(SubType.SERPENT))); } QuestForUlasTempleEffect2() { diff --git a/Mage.Sets/src/mage/cards/q/QuickSliver.java b/Mage.Sets/src/mage/cards/q/QuickSliver.java index a8c50c6e54..3fe1fe505c 100644 --- a/Mage.Sets/src/mage/cards/q/QuickSliver.java +++ b/Mage.Sets/src/mage/cards/q/QuickSliver.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.FilterCreatureCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class QuickSliver extends CardImpl { private static final FilterCreatureCard filter = new FilterCreatureCard("Sliver cards"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public QuickSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RakdosTheDefiler.java b/Mage.Sets/src/mage/cards/r/RakdosTheDefiler.java index e12a71153c..d8d332b4de 100644 --- a/Mage.Sets/src/mage/cards/r/RakdosTheDefiler.java +++ b/Mage.Sets/src/mage/cards/r/RakdosTheDefiler.java @@ -43,6 +43,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.SuperType; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledPermanent; @@ -59,8 +60,8 @@ public class RakdosTheDefiler extends CardImpl { private static final FilterPermanent damageToPlayerTriggerFilter = new FilterPermanent("the non-Demon permanents you control"); static { - attackTriggerFilter.add(Predicates.not(new SubtypePredicate("Demon"))); - damageToPlayerTriggerFilter.add(Predicates.not(new SubtypePredicate("Demon"))); + attackTriggerFilter.add(Predicates.not(new SubtypePredicate(SubType.DEMON))); + damageToPlayerTriggerFilter.add(Predicates.not(new SubtypePredicate(SubType.DEMON))); } public RakdosTheDefiler(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RamosianCaptain.java b/Mage.Sets/src/mage/cards/r/RamosianCaptain.java index c8a2b52d29..d202a84d8a 100644 --- a/Mage.Sets/src/mage/cards/r/RamosianCaptain.java +++ b/Mage.Sets/src/mage/cards/r/RamosianCaptain.java @@ -39,6 +39,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.common.FilterPermanentCard; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -56,7 +57,7 @@ public class RamosianCaptain extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 4 or less"); static { - filter.add(new SubtypePredicate("Rebel")); + filter.add(new SubtypePredicate(SubType.REBEL)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 5)); } diff --git a/Mage.Sets/src/mage/cards/r/RamosianRally.java b/Mage.Sets/src/mage/cards/r/RamosianRally.java index 366fe38c31..9f06541998 100644 --- a/Mage.Sets/src/mage/cards/r/RamosianRally.java +++ b/Mage.Sets/src/mage/cards/r/RamosianRally.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.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; @@ -54,7 +55,7 @@ public class RamosianRally extends CardImpl { private static final FilterControlledCreaturePermanent creatureFilter = new FilterControlledCreaturePermanent("an untapped creature you control"); static { - plainsFilter.add(new SubtypePredicate("Plains")); + plainsFilter.add(new SubtypePredicate(SubType.PLAINS)); creatureFilter.add(Predicates.not(new TappedPredicate())); } diff --git a/Mage.Sets/src/mage/cards/r/RamosianSergeant.java b/Mage.Sets/src/mage/cards/r/RamosianSergeant.java index 38110eeb6a..62a28e9956 100644 --- a/Mage.Sets/src/mage/cards/r/RamosianSergeant.java +++ b/Mage.Sets/src/mage/cards/r/RamosianSergeant.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; @@ -47,7 +48,6 @@ import mage.target.common.TargetCardInLibrary; import java.util.UUID; /** - * * @author Backfir3 */ public class RamosianSergeant extends CardImpl { @@ -55,12 +55,12 @@ public class RamosianSergeant extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 2 or less"); static { - filter.add(new SubtypePredicate("Rebel")); - filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 3)); + filter.add(new SubtypePredicate(SubType.REBEL)); + filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 3)); } public RamosianSergeant(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}"); this.subtype.add("Human"); this.subtype.add("Rebel"); diff --git a/Mage.Sets/src/mage/cards/r/RangersPath.java b/Mage.Sets/src/mage/cards/r/RangersPath.java index 86d67360d1..74168dca2d 100644 --- a/Mage.Sets/src/mage/cards/r/RangersPath.java +++ b/Mage.Sets/src/mage/cards/r/RangersPath.java @@ -32,6 +32,7 @@ import mage.constants.CardType; 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; @@ -45,7 +46,7 @@ public class RangersPath extends CardImpl { private static final FilterLandCard filter = new FilterLandCard("Forest cards"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public RangersPath(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RathiIntimidator.java b/Mage.Sets/src/mage/cards/r/RathiIntimidator.java index 18ab0f804e..2b3f1b9519 100644 --- a/Mage.Sets/src/mage/cards/r/RathiIntimidator.java +++ b/Mage.Sets/src/mage/cards/r/RathiIntimidator.java @@ -38,6 +38,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; @@ -55,7 +56,7 @@ public class RathiIntimidator extends CardImpl { private static final FilterPermanentCard filter = new FilterPermanentCard("Mercenary permanent card with converted mana cost 2 or less"); static { - filter.add(new SubtypePredicate("Mercenary")); + filter.add(new SubtypePredicate(SubType.MERCENARY)); filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 3)); } diff --git a/Mage.Sets/src/mage/cards/r/Rattlechains.java b/Mage.Sets/src/mage/cards/r/Rattlechains.java index f9079b6f33..226563116a 100644 --- a/Mage.Sets/src/mage/cards/r/Rattlechains.java +++ b/Mage.Sets/src/mage/cards/r/Rattlechains.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.FilterCard; import mage.filter.common.FilterCreaturePermanent; @@ -57,8 +58,8 @@ public class Rattlechains extends CardImpl { private static final FilterCard filterCard = new FilterCard("Spirit spells"); static { - filter.add(new SubtypePredicate("Spirit")); - filterCard.add(new SubtypePredicate("Spirit")); + filter.add(new SubtypePredicate(SubType.SPIRIT)); + filterCard.add(new SubtypePredicate(SubType.SPIRIT)); } public Rattlechains(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RecklessCohort.java b/Mage.Sets/src/mage/cards/r/RecklessCohort.java index 52b8500b2b..209a2955fb 100644 --- a/Mage.Sets/src/mage/cards/r/RecklessCohort.java +++ b/Mage.Sets/src/mage/cards/r/RecklessCohort.java @@ -29,7 +29,7 @@ package mage.cards.r; import java.util.UUID; import mage.MageInt; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.decorator.ConditionalRequirementEffect; @@ -37,9 +37,6 @@ import mage.abilities.effects.Effect; import mage.abilities.effects.common.combat.AttacksIfAbleSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.AnotherPredicate; @@ -54,7 +51,7 @@ public class RecklessCohort extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); } public RecklessCohort(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RelentlessDead.java b/Mage.Sets/src/mage/cards/r/RelentlessDead.java index a8c19b851c..06abcdef87 100644 --- a/Mage.Sets/src/mage/cards/r/RelentlessDead.java +++ b/Mage.Sets/src/mage/cards/r/RelentlessDead.java @@ -29,7 +29,7 @@ package mage.cards.r; import mage.MageInt; import mage.abilities.Ability; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.common.DiesTriggeredAbility; import mage.abilities.costs.Cost; import mage.abilities.costs.mana.GenericManaCost; @@ -41,9 +41,6 @@ import mage.abilities.keyword.MenaceAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Zone; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.AnotherCardPredicate; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -111,7 +108,7 @@ class RelentlessDeadEffect extends OneShotEffect { Cost cost = new GenericManaCost(costX); if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false, null)) { FilterCard filter = new FilterCard("Another target Zombie card with converted mana cost " + costX); - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); filter.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, costX)); filter.add(new AnotherCardPredicate()); TargetCardInYourGraveyard target = new TargetCardInYourGraveyard(filter); diff --git a/Mage.Sets/src/mage/cards/r/RenewingDawn.java b/Mage.Sets/src/mage/cards/r/RenewingDawn.java index 56fd4dd0d3..d82e305ce7 100644 --- a/Mage.Sets/src/mage/cards/r/RenewingDawn.java +++ b/Mage.Sets/src/mage/cards/r/RenewingDawn.java @@ -36,6 +36,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.TargetOpponent; @@ -49,7 +50,7 @@ public class RenewingDawn extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Mountain"); static { - filter.add(new SubtypePredicate("Mountain")); + filter.add(new SubtypePredicate(SubType.MOUNTAIN)); } public RenewingDawn(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/ReverentSilence.java b/Mage.Sets/src/mage/cards/r/ReverentSilence.java index cd5b871514..4bee85c2f1 100644 --- a/Mage.Sets/src/mage/cards/r/ReverentSilence.java +++ b/Mage.Sets/src/mage/cards/r/ReverentSilence.java @@ -35,6 +35,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.common.FilterEnchantmentPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class ReverentSilence 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 ReverentSilence(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RimeDryad.java b/Mage.Sets/src/mage/cards/r/RimeDryad.java index 17f06a52f4..6513f0c222 100644 --- a/Mage.Sets/src/mage/cards/r/RimeDryad.java +++ b/Mage.Sets/src/mage/cards/r/RimeDryad.java @@ -32,6 +32,7 @@ import mage.abilities.keyword.LandwalkAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class RimeDryad extends CardImpl { static { filter.add(new SupertypePredicate(SuperType.SNOW)); - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); } public RimeDryad(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RiotRingleader.java b/Mage.Sets/src/mage/cards/r/RiotRingleader.java index 60a2f85de7..295d7126f4 100644 --- a/Mage.Sets/src/mage/cards/r/RiotRingleader.java +++ b/Mage.Sets/src/mage/cards/r/RiotRingleader.java @@ -35,6 +35,7 @@ import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -47,7 +48,7 @@ public class RiotRingleader extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Human creatures"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public RiotRingleader(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RithsGrove.java b/Mage.Sets/src/mage/cards/r/RithsGrove.java index 9f62015fc3..91f62aadc0 100644 --- a/Mage.Sets/src/mage/cards/r/RithsGrove.java +++ b/Mage.Sets/src/mage/cards/r/RithsGrove.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 RithsGrove 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 RithsGrove(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RooftopStorm.java b/Mage.Sets/src/mage/cards/r/RooftopStorm.java index 4417f49fc4..1264d06240 100644 --- a/Mage.Sets/src/mage/cards/r/RooftopStorm.java +++ b/Mage.Sets/src/mage/cards/r/RooftopStorm.java @@ -72,7 +72,7 @@ class RooftopStormRuleEffect extends ContinuousEffectImpl { private static final FilterCard filter = new FilterCard("Zombie creature spells"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); filter.add(new CardTypePredicate(CardType.CREATURE)); } diff --git a/Mage.Sets/src/mage/cards/r/RootCage.java b/Mage.Sets/src/mage/cards/r/RootCage.java index 5cce6a97f4..fdf4c56229 100644 --- a/Mage.Sets/src/mage/cards/r/RootCage.java +++ b/Mage.Sets/src/mage/cards/r/RootCage.java @@ -32,10 +32,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; @@ -48,7 +45,7 @@ public class RootCage extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Mercenaries"); static { - filter.add(new SubtypePredicate("Mercenary")); + filter.add(new SubtypePredicate(SubType.MERCENARY)); } public RootCage(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RusticClachan.java b/Mage.Sets/src/mage/cards/r/RusticClachan.java index cc97ec35d3..93eea3332b 100644 --- a/Mage.Sets/src/mage/cards/r/RusticClachan.java +++ b/Mage.Sets/src/mage/cards/r/RusticClachan.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.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetCardInHand; @@ -50,7 +51,7 @@ public class RusticClachan extends CardImpl { private static final FilterCard filter = new FilterCard("a Kithkin card from your hand"); static { - filter.add(new SubtypePredicate("Kithkin")); + filter.add(new SubtypePredicate(SubType.KITHKIN)); } public RusticClachan(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SagesDousing.java b/Mage.Sets/src/mage/cards/s/SagesDousing.java index c516fed282..6002c3f326 100644 --- a/Mage.Sets/src/mage/cards/s/SagesDousing.java +++ b/Mage.Sets/src/mage/cards/s/SagesDousing.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.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetSpell; @@ -49,7 +50,7 @@ public class SagesDousing extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Wizard"); static { - filter.add(new SubtypePredicate("Wizard")); + filter.add(new SubtypePredicate(SubType.WIZARD)); } public SagesDousing(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SaruliGatekeepers.java b/Mage.Sets/src/mage/cards/s/SaruliGatekeepers.java index 70973530cf..ac08560d8a 100644 --- a/Mage.Sets/src/mage/cards/s/SaruliGatekeepers.java +++ b/Mage.Sets/src/mage/cards/s/SaruliGatekeepers.java @@ -39,6 +39,7 @@ import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.effects.common.GainLifeEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class SaruliGatekeepers extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent(); static { - filter.add(new SubtypePredicate("Gate")); + filter.add(new SubtypePredicate(SubType.GATE)); } public SaruliGatekeepers (UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/Scald.java b/Mage.Sets/src/mage/cards/s/Scald.java index 2bb552105a..4f58703169 100644 --- a/Mage.Sets/src/mage/cards/s/Scald.java +++ b/Mage.Sets/src/mage/cards/s/Scald.java @@ -34,6 +34,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SetTargetPointer; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -46,7 +47,7 @@ public class Scald extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("a player taps an Island"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public Scald(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ScaleguardSentinels.java b/Mage.Sets/src/mage/cards/s/ScaleguardSentinels.java index 83edeed9c9..60b1d432a8 100644 --- a/Mage.Sets/src/mage/cards/s/ScaleguardSentinels.java +++ b/Mage.Sets/src/mage/cards/s/ScaleguardSentinels.java @@ -39,6 +39,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityType; import mage.constants.CardType; +import mage.constants.SubType; import mage.counters.CounterType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,7 +58,7 @@ public class ScaleguardSentinels 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 ScaleguardSentinels(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/Scarecrone.java b/Mage.Sets/src/mage/cards/s/Scarecrone.java index 30832ae7f7..64b7d2f2f4 100644 --- a/Mage.Sets/src/mage/cards/s/Scarecrone.java +++ b/Mage.Sets/src/mage/cards/s/Scarecrone.java @@ -39,6 +39,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.FilterCard; import mage.filter.common.FilterControlledCreaturePermanent; @@ -57,7 +58,7 @@ public class Scarecrone extends CardImpl { static { filter.add(new CardTypePredicate(CardType.ARTIFACT)); filter.add(new CardTypePredicate(CardType.CREATURE)); - filterScarecrow.add(new SubtypePredicate("Scarecrow")); + filterScarecrow.add(new SubtypePredicate(SubType.SCARECROW)); } public Scarecrone(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ScionOfOona.java b/Mage.Sets/src/mage/cards/s/ScionOfOona.java index c33b3b5b4c..ff62c137aa 100644 --- a/Mage.Sets/src/mage/cards/s/ScionOfOona.java +++ b/Mage.Sets/src/mage/cards/s/ScionOfOona.java @@ -28,10 +28,8 @@ package mage.cards.s; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.TargetController; -import mage.constants.Zone; + +import mage.constants.*; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continuous.BoostControlledEffect; @@ -56,9 +54,9 @@ public class ScionOfOona extends CardImpl { private static final FilterCreaturePermanent filterCreature = new FilterCreaturePermanent("Faeries"); static { - filter.add(new SubtypePredicate("Faerie")); + filter.add(new SubtypePredicate(SubType.FAERIE)); filter.add(new ControllerPredicate(TargetController.YOU)); - filterCreature.add(new SubtypePredicate("Faerie")); + filterCreature.add(new SubtypePredicate(SubType.FAERIE)); filterCreature.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/s/ScourgeOfFleets.java b/Mage.Sets/src/mage/cards/s/ScourgeOfFleets.java index 5c405517c1..291eafaecb 100644 --- a/Mage.Sets/src/mage/cards/s/ScourgeOfFleets.java +++ b/Mage.Sets/src/mage/cards/s/ScourgeOfFleets.java @@ -29,17 +29,13 @@ package mage.cards.s; import mage.MageInt; import mage.abilities.Ability; -import mage.constants.ComparisonType; +import mage.constants.*; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.cards.Cards; import mage.cards.CardsImpl; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.TargetController; -import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -84,7 +80,7 @@ class ScourgeOfFleetsEffect extends OneShotEffect { private static final FilterControlledPermanent filter = new FilterControlledPermanent("number of Islands you control"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public ScourgeOfFleetsEffect() { diff --git a/Mage.Sets/src/mage/cards/s/ScourgeOfValkas.java b/Mage.Sets/src/mage/cards/s/ScourgeOfValkas.java index bf3811a2ca..b178e34ba9 100644 --- a/Mage.Sets/src/mage/cards/s/ScourgeOfValkas.java +++ b/Mage.Sets/src/mage/cards/s/ScourgeOfValkas.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.FilterControlledCreaturePermanent; import mage.filter.common.FilterCreaturePermanent; @@ -58,8 +59,8 @@ public class ScourgeOfValkas extends CardImpl { private final static FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("Dragons you control"); static { - filter.add(new SubtypePredicate("Dragon")); - filter2.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); + filter2.add(new SubtypePredicate(SubType.DRAGON)); } private static final String rule = "Whenever {this} or another Dragon enters the battlefield under your control, it deals X damage to target creature or player, where X is the number of Dragons you control."; diff --git a/Mage.Sets/src/mage/cards/s/ScoutTrooper.java b/Mage.Sets/src/mage/cards/s/ScoutTrooper.java index e61da9247c..83449ce21e 100644 --- a/Mage.Sets/src/mage/cards/s/ScoutTrooper.java +++ b/Mage.Sets/src/mage/cards/s/ScoutTrooper.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 ScoutTrooper extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures"); static { - filter.add(new SubtypePredicate("Trooper")); + filter.add(new SubtypePredicate(SubType.TROOPER)); } public ScoutTrooper(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SeaGateLoremaster.java b/Mage.Sets/src/mage/cards/s/SeaGateLoremaster.java index 33858e7235..3e6d939b03 100644 --- a/Mage.Sets/src/mage/cards/s/SeaGateLoremaster.java +++ b/Mage.Sets/src/mage/cards/s/SeaGateLoremaster.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.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class SeaGateLoremaster extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Ally you control"); static { - filter.add(new SubtypePredicate("Ally")); + filter.add(new SubtypePredicate(SubType.ALLY)); } public SeaGateLoremaster(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SelkieHedgeMage.java b/Mage.Sets/src/mage/cards/s/SelkieHedgeMage.java index 69bf2ac156..dae88ae72f 100644 --- a/Mage.Sets/src/mage/cards/s/SelkieHedgeMage.java +++ b/Mage.Sets/src/mage/cards/s/SelkieHedgeMage.java @@ -28,6 +28,7 @@ package mage.cards.s; import java.util.UUID; + import mage.MageInt; import mage.abilities.Ability; import mage.constants.ComparisonType; @@ -39,6 +40,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.common.FilterCreaturePermanent; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -46,9 +48,7 @@ import mage.filter.predicate.permanent.TappedPredicate; import mage.target.TargetPermanent; /** - * * @author jeffwadsworth - * */ public class SelkieHedgeMage extends CardImpl { @@ -57,8 +57,8 @@ public class SelkieHedgeMage extends CardImpl { private static final FilterCreaturePermanent filter3 = new FilterCreaturePermanent("tapped creature"); static { - filter.add(new SubtypePredicate("Forest")); - filter2.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.FOREST)); + filter2.add(new SubtypePredicate(SubType.ISLAND)); filter3.add(new TappedPredicate()); } @@ -66,7 +66,7 @@ public class SelkieHedgeMage extends CardImpl { private static final String rule2 = "When {this} enters the battlefield, if you control two or more Islands, you may return target tapped creature to its owner's hand."; public SelkieHedgeMage(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G/U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G/U}"); this.subtype.add("Merfolk"); this.subtype.add("Wizard"); diff --git a/Mage.Sets/src/mage/cards/s/SereneHeart.java b/Mage.Sets/src/mage/cards/s/SereneHeart.java index 6c5cbeb374..5a9e8a3bdf 100644 --- a/Mage.Sets/src/mage/cards/s/SereneHeart.java +++ b/Mage.Sets/src/mage/cards/s/SereneHeart.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.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -44,7 +45,7 @@ public class SereneHeart extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Auras"); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public SereneHeart(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ShadowTrooper.java b/Mage.Sets/src/mage/cards/s/ShadowTrooper.java index cb2335169d..3118ce9f75 100644 --- a/Mage.Sets/src/mage/cards/s/ShadowTrooper.java +++ b/Mage.Sets/src/mage/cards/s/ShadowTrooper.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.FilterCreatureCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class ShadowTrooper extends CardImpl { private static final FilterCreatureCard filter = new FilterCreatureCard("Trooper creatures"); static { - filter.add(new SubtypePredicate("Trooper")); + filter.add(new SubtypePredicate(SubType.TROOPER)); } public ShadowTrooper(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/Shapesharer.java b/Mage.Sets/src/mage/cards/s/Shapesharer.java index c286937ab4..7e67415fec 100644 --- a/Mage.Sets/src/mage/cards/s/Shapesharer.java +++ b/Mage.Sets/src/mage/cards/s/Shapesharer.java @@ -36,10 +36,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.ChangelingAbility; 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.mageobject.SubtypePredicate; import mage.game.Game; @@ -56,7 +53,7 @@ public class Shapesharer extends CardImpl { private static final FilterPermanent filterShapeshifter = new FilterPermanent("Shapeshifter"); static { - filterShapeshifter.add(new SubtypePredicate("Shapeshifter")); + filterShapeshifter.add(new SubtypePredicate(SubType.SHAPESHIFTER)); } public Shapesharer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ShepherdOfRot.java b/Mage.Sets/src/mage/cards/s/ShepherdOfRot.java index 862cdcb19b..fe72c6237f 100644 --- a/Mage.Sets/src/mage/cards/s/ShepherdOfRot.java +++ b/Mage.Sets/src/mage/cards/s/ShepherdOfRot.java @@ -37,6 +37,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.LoseLifeAllPlayersEffect; 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 ShepherdOfRot extends CardImpl { static final private FilterPermanent filter = new FilterPermanent("Zombie"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public ShepherdOfRot(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SigardaHeronsGrace.java b/Mage.Sets/src/mage/cards/s/SigardaHeronsGrace.java index e039265b39..977f398577 100644 --- a/Mage.Sets/src/mage/cards/s/SigardaHeronsGrace.java +++ b/Mage.Sets/src/mage/cards/s/SigardaHeronsGrace.java @@ -41,10 +41,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.HexproofAbility; 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.game.permanent.token.HumanSoldierToken; @@ -61,7 +58,7 @@ public class SigardaHeronsGrace 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 SigardaHeronsGrace(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SilumgarTheDriftingDeath.java b/Mage.Sets/src/mage/cards/s/SilumgarTheDriftingDeath.java index f608bfc2e5..703b397f5a 100644 --- a/Mage.Sets/src/mage/cards/s/SilumgarTheDriftingDeath.java +++ b/Mage.Sets/src/mage/cards/s/SilumgarTheDriftingDeath.java @@ -55,7 +55,7 @@ public class SilumgarTheDriftingDeath 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/s/SimaYiWeiFieldMarshal.java b/Mage.Sets/src/mage/cards/s/SimaYiWeiFieldMarshal.java index 97306898f6..d23d78c97b 100644 --- a/Mage.Sets/src/mage/cards/s/SimaYiWeiFieldMarshal.java +++ b/Mage.Sets/src/mage/cards/s/SimaYiWeiFieldMarshal.java @@ -33,10 +33,7 @@ import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.continuous.SetPowerSourceEffect; 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; @@ -51,7 +48,7 @@ public class SimaYiWeiFieldMarshal 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 SimaYiWeiFieldMarshal(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SimicGuildmage.java b/Mage.Sets/src/mage/cards/s/SimicGuildmage.java index 49a4a52627..00f3f23567 100644 --- a/Mage.Sets/src/mage/cards/s/SimicGuildmage.java +++ b/Mage.Sets/src/mage/cards/s/SimicGuildmage.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.counters.CounterType; import mage.filter.Filter; @@ -67,7 +68,7 @@ public class SimicGuildmage extends CardImpl { private static final FilterEnchantmentPermanent auraFilter = new FilterEnchantmentPermanent("Aura"); static { - auraFilter.add(new SubtypePredicate("Aura")); + auraFilter.add(new SubtypePredicate(SubType.AURA)); } public SimicGuildmage(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SkirkOutrider.java b/Mage.Sets/src/mage/cards/s/SkirkOutrider.java index 2f5fd9a476..13411ef64c 100644 --- a/Mage.Sets/src/mage/cards/s/SkirkOutrider.java +++ b/Mage.Sets/src/mage/cards/s/SkirkOutrider.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; @@ -53,7 +54,7 @@ public class SkirkOutrider extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Beast"); static { - filter.add(new SubtypePredicate("Beast")); + filter.add(new SubtypePredicate(SubType.BEAST)); } public SkirkOutrider(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SliverOverlord.java b/Mage.Sets/src/mage/cards/s/SliverOverlord.java index 712a053cdb..bc82a244ea 100644 --- a/Mage.Sets/src/mage/cards/s/SliverOverlord.java +++ b/Mage.Sets/src/mage/cards/s/SliverOverlord.java @@ -54,7 +54,7 @@ public class SliverOverlord extends CardImpl { private static final FilterCard filter = new FilterCard("Sliver card"); static{ - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public SliverOverlord(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SosukeSonOfSeshiro.java b/Mage.Sets/src/mage/cards/s/SosukeSonOfSeshiro.java index c4c8b0279c..e646f505b1 100644 --- a/Mage.Sets/src/mage/cards/s/SosukeSonOfSeshiro.java +++ b/Mage.Sets/src/mage/cards/s/SosukeSonOfSeshiro.java @@ -37,10 +37,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.game.Game; @@ -61,7 +58,7 @@ public class SosukeSonOfSeshiro extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Snake creatures"); static { - filter.add(new SubtypePredicate("Snake")); + filter.add(new SubtypePredicate(SubType.SNAKE)); } public SosukeSonOfSeshiro(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SosukesSummons.java b/Mage.Sets/src/mage/cards/s/SosukesSummons.java index d1b2b5b89f..a876029f04 100644 --- a/Mage.Sets/src/mage/cards/s/SosukesSummons.java +++ b/Mage.Sets/src/mage/cards/s/SosukesSummons.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.abilities.common.CreatureEntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; @@ -50,7 +51,7 @@ public class SosukesSummons extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken Snake"); static { - filter.add(new SubtypePredicate("Snake")); + filter.add(new SubtypePredicate(SubType.SNAKE)); filter.add(Predicates.not(new TokenPredicate())); } diff --git a/Mage.Sets/src/mage/cards/s/SpawnbinderMage.java b/Mage.Sets/src/mage/cards/s/SpawnbinderMage.java index ba8d803150..c4a9bee98c 100644 --- a/Mage.Sets/src/mage/cards/s/SpawnbinderMage.java +++ b/Mage.Sets/src/mage/cards/s/SpawnbinderMage.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; @@ -55,7 +56,7 @@ public class SpawnbinderMage 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/s/SpawnsireOfUlamog.java b/Mage.Sets/src/mage/cards/s/SpawnsireOfUlamog.java index f13314ef6f..0896027eae 100644 --- a/Mage.Sets/src/mage/cards/s/SpawnsireOfUlamog.java +++ b/Mage.Sets/src/mage/cards/s/SpawnsireOfUlamog.java @@ -36,6 +36,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.keyword.AnnihilatorAbility; 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; @@ -53,7 +54,7 @@ public class SpawnsireOfUlamog extends CardImpl { private static final FilterCard filter = new FilterCard("Eldrazi cards"); static { - filter.add(new SubtypePredicate("Eldrazi")); + filter.add(new SubtypePredicate(SubType.ELDRAZI)); } public SpawnsireOfUlamog(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SpeederTrooper.java b/Mage.Sets/src/mage/cards/s/SpeederTrooper.java index b05946fb88..0f429752cd 100644 --- a/Mage.Sets/src/mage/cards/s/SpeederTrooper.java +++ b/Mage.Sets/src/mage/cards/s/SpeederTrooper.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 SpeederTrooper extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Trooper creatures"); static { - filter.add(new SubtypePredicate("Trooper")); + filter.add(new SubtypePredicate(SubType.TROOPER)); } public SpeederTrooper(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SpiritMirror.java b/Mage.Sets/src/mage/cards/s/SpiritMirror.java index 017f0565a8..dca44a9f44 100644 --- a/Mage.Sets/src/mage/cards/s/SpiritMirror.java +++ b/Mage.Sets/src/mage/cards/s/SpiritMirror.java @@ -38,10 +38,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DestroyTargetEffect; 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.FilterPermanent; import mage.filter.predicate.mageobject.NamePredicate; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -57,7 +54,7 @@ public class SpiritMirror extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("Reflection"); static { - filter.add(new SubtypePredicate("Reflection")); + filter.add(new SubtypePredicate(SubType.REFLECTION)); } public SpiritMirror(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SpittingSliver.java b/Mage.Sets/src/mage/cards/s/SpittingSliver.java index d2242e2c42..4991ab4abc 100644 --- a/Mage.Sets/src/mage/cards/s/SpittingSliver.java +++ b/Mage.Sets/src/mage/cards/s/SpittingSliver.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; @@ -49,7 +50,7 @@ public class SpittingSliver extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public SpittingSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SpurredWolverine.java b/Mage.Sets/src/mage/cards/s/SpurredWolverine.java index f98f8ee121..b952bd9ba8 100644 --- a/Mage.Sets/src/mage/cards/s/SpurredWolverine.java +++ b/Mage.Sets/src/mage/cards/s/SpurredWolverine.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.predicate.Predicates; @@ -56,7 +57,7 @@ public class SpurredWolverine extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Beast")); + filter.add(new SubtypePredicate(SubType.BEAST)); } public SpurredWolverine(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SquelchingLeeches.java b/Mage.Sets/src/mage/cards/s/SquelchingLeeches.java index 7636232470..8a75973202 100644 --- a/Mage.Sets/src/mage/cards/s/SquelchingLeeches.java +++ b/Mage.Sets/src/mage/cards/s/SquelchingLeeches.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 SquelchingLeeches 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 SquelchingLeeches(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SquirrelMob.java b/Mage.Sets/src/mage/cards/s/SquirrelMob.java index 584804b053..7cee6def59 100644 --- a/Mage.Sets/src/mage/cards/s/SquirrelMob.java +++ b/Mage.Sets/src/mage/cards/s/SquirrelMob.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; @@ -59,7 +60,7 @@ public class SquirrelMob extends CardImpl { // Squirrel Mob gets +1/+1 for each other Squirrel on the battlefield. FilterCreaturePermanent filter = new FilterCreaturePermanent("other Squirrel"); - filter.add(new SubtypePredicate("Squirrel")); + filter.add(new SubtypePredicate(SubType.SQUIRREL)); filter.add(Predicates.not(new PermanentIdPredicate(this.getId()))); DynamicValue xValue = new PermanentsOnBattlefieldCount(filter); Effect effect = new BoostSourceEffect(xValue, xValue, Duration.WhileOnBattlefield, false); diff --git a/Mage.Sets/src/mage/cards/s/StaffOfTheMindMagus.java b/Mage.Sets/src/mage/cards/s/StaffOfTheMindMagus.java index 46c3480aed..35d3e0d08a 100644 --- a/Mage.Sets/src/mage/cards/s/StaffOfTheMindMagus.java +++ b/Mage.Sets/src/mage/cards/s/StaffOfTheMindMagus.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 StaffOfTheMindMagus extends CardImpl { static { filterSpell.add(new ColorPredicate(ObjectColor.BLUE)); - filterLand.add(new SubtypePredicate("Island")); + filterLand.add(new SubtypePredicate(SubType.ISLAND)); } public StaffOfTheMindMagus(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StarDestroyer.java b/Mage.Sets/src/mage/cards/s/StarDestroyer.java index e6f2488d77..54db0188f4 100644 --- a/Mage.Sets/src/mage/cards/s/StarDestroyer.java +++ b/Mage.Sets/src/mage/cards/s/StarDestroyer.java @@ -39,6 +39,7 @@ import mage.abilities.keyword.SpaceflightAbility; 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.common.FilterCreaturePermanent; @@ -60,7 +61,7 @@ public class StarDestroyer extends CardImpl { static { filter1.add(new CardTypePredicate(CardType.ARTIFACT)); - filter3.getCreatureFilter().add(Predicates.not(new SubtypePredicate("Starship"))); + filter3.getCreatureFilter().add(Predicates.not(new SubtypePredicate(SubType.STARSHIP))); } public StarDestroyer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SteelshaperApprentice.java b/Mage.Sets/src/mage/cards/s/SteelshaperApprentice.java index c65c13a1b1..64a8cf7911 100644 --- a/Mage.Sets/src/mage/cards/s/SteelshaperApprentice.java +++ b/Mage.Sets/src/mage/cards/s/SteelshaperApprentice.java @@ -32,6 +32,7 @@ import java.util.UUID; import mage.constants.CardType; import mage.constants.ColoredManaSymbol; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; @@ -56,7 +57,7 @@ public class SteelshaperApprentice extends CardImpl { static { filter.add(new CardTypePredicate(CardType.ARTIFACT)); - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public SteelshaperApprentice(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StinkdrinkerDaredevil.java b/Mage.Sets/src/mage/cards/s/StinkdrinkerDaredevil.java index e56f6e6036..b9bf7c5928 100644 --- a/Mage.Sets/src/mage/cards/s/StinkdrinkerDaredevil.java +++ b/Mage.Sets/src/mage/cards/s/StinkdrinkerDaredevil.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; @@ -47,7 +48,7 @@ public class StinkdrinkerDaredevil extends CardImpl { private static final FilterCard filter = new FilterCard("Giant spells"); static { - filter.add(new SubtypePredicate("Giant")); + filter.add(new SubtypePredicate(SubType.GIANT)); } public StinkdrinkerDaredevil(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StonehewerGiant.java b/Mage.Sets/src/mage/cards/s/StonehewerGiant.java index ebbb223000..145d5e4697 100644 --- a/Mage.Sets/src/mage/cards/s/StonehewerGiant.java +++ b/Mage.Sets/src/mage/cards/s/StonehewerGiant.java @@ -30,6 +30,7 @@ package mage.cards.s; import java.util.UUID; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; @@ -107,7 +108,7 @@ class StonehewerGiantEffect extends OneShotEffect { } FilterCard filter = new FilterCard("Equipment"); - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); TargetCardInLibrary target = new TargetCardInLibrary(filter); if (player.searchLibrary(target, game)) { Card card = player.getLibrary().getCard(target.getFirstTarget(), game); diff --git a/Mage.Sets/src/mage/cards/s/StonybrookBanneret.java b/Mage.Sets/src/mage/cards/s/StonybrookBanneret.java index f7c5f07cdd..09c1f71591 100644 --- a/Mage.Sets/src/mage/cards/s/StonybrookBanneret.java +++ b/Mage.Sets/src/mage/cards/s/StonybrookBanneret.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; @@ -50,8 +51,8 @@ public class StonybrookBanneret extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Merfolk"), - new SubtypePredicate("Wizard"))); + new SubtypePredicate(SubType.MERFOLK), + new SubtypePredicate(SubType.WIZARD))); } public StonybrookBanneret(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StormwingDragon.java b/Mage.Sets/src/mage/cards/s/StormwingDragon.java index cd0bc4c0a4..f1b626490c 100644 --- a/Mage.Sets/src/mage/cards/s/StormwingDragon.java +++ b/Mage.Sets/src/mage/cards/s/StormwingDragon.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.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,7 +54,7 @@ public class StormwingDragon extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Dragon")); + filter.add(new SubtypePredicate(SubType.DRAGON)); } public StormwingDragon(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StrengthOfArms.java b/Mage.Sets/src/mage/cards/s/StrengthOfArms.java index 6f41beb688..435deee1cf 100644 --- a/Mage.Sets/src/mage/cards/s/StrengthOfArms.java +++ b/Mage.Sets/src/mage/cards/s/StrengthOfArms.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.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.permanent.token.HumanSoldierToken; @@ -51,7 +52,7 @@ public class StrengthOfArms extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("If you control an Equipment,"); static { - filter.add(new SubtypePredicate("Equipment")); + filter.add(new SubtypePredicate(SubType.EQUIPMENT)); } public StrengthOfArms(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StripBare.java b/Mage.Sets/src/mage/cards/s/StripBare.java index e62468c9ed..cc54780ac2 100644 --- a/Mage.Sets/src/mage/cards/s/StripBare.java +++ b/Mage.Sets/src/mage/cards/s/StripBare.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.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -88,8 +89,8 @@ class StripBareEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { boolean applied = false; FilterPermanent filter = new FilterPermanent(); - filter.add(Predicates.or(new SubtypePredicate("Equipment"), - new SubtypePredicate("Aura"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.EQUIPMENT), + new SubtypePredicate(SubType.AURA))); Permanent targetCreature = game.getPermanent(source.getFirstTarget()); if (targetCreature != null && !targetCreature.getAttachments().isEmpty()) { diff --git a/Mage.Sets/src/mage/cards/s/StromkirkCaptain.java b/Mage.Sets/src/mage/cards/s/StromkirkCaptain.java index 4fd760a8ba..57b1e1589a 100644 --- a/Mage.Sets/src/mage/cards/s/StromkirkCaptain.java +++ b/Mage.Sets/src/mage/cards/s/StromkirkCaptain.java @@ -38,6 +38,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.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -50,7 +51,7 @@ public class StromkirkCaptain extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Vampire creatures"); static { - filter.add(new SubtypePredicate("Vampire")); + filter.add(new SubtypePredicate(SubType.VAMPIRE)); } public StromkirkCaptain(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/StromkirkNoble.java b/Mage.Sets/src/mage/cards/s/StromkirkNoble.java index cf4a505bd7..b14e9cc346 100644 --- a/Mage.Sets/src/mage/cards/s/StromkirkNoble.java +++ b/Mage.Sets/src/mage/cards/s/StromkirkNoble.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.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class StromkirkNoble extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Humans"); static { - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public StromkirkNoble(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SummonTheSchool.java b/Mage.Sets/src/mage/cards/s/SummonTheSchool.java index c456f6e6c1..8e1ecbbe10 100644 --- a/Mage.Sets/src/mage/cards/s/SummonTheSchool.java +++ b/Mage.Sets/src/mage/cards/s/SummonTheSchool.java @@ -34,6 +34,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.ReturnToHandSourceEffect; 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; @@ -54,7 +55,7 @@ public class SummonTheSchool extends CardImpl { static { filter.add(Predicates.not(new TappedPredicate())); - filter.add(new SubtypePredicate("Merfolk")); + filter.add(new SubtypePredicate(SubType.MERFOLK)); } public SummonTheSchool(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/SupremeInquisitor.java b/Mage.Sets/src/mage/cards/s/SupremeInquisitor.java index 17c902347f..7bcee8640e 100644 --- a/Mage.Sets/src/mage/cards/s/SupremeInquisitor.java +++ b/Mage.Sets/src/mage/cards/s/SupremeInquisitor.java @@ -40,6 +40,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.FilterCard; import mage.filter.common.FilterControlledPermanent; @@ -61,7 +62,7 @@ public class SupremeInquisitor extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("untapped Wizards 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/s/SylvanPrimordial.java b/Mage.Sets/src/mage/cards/s/SylvanPrimordial.java index e5d0da9903..19237dc437 100644 --- a/Mage.Sets/src/mage/cards/s/SylvanPrimordial.java +++ b/Mage.Sets/src/mage/cards/s/SylvanPrimordial.java @@ -38,6 +38,7 @@ import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; +import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.common.FilterLandCard; import mage.filter.predicate.Predicates; @@ -102,7 +103,7 @@ class SylvanPrimordialEffect extends OneShotEffect { private static final FilterLandCard filterForest = new FilterLandCard("Forest"); static{ - filterForest.add(new SubtypePredicate("Forest")); + filterForest.add(new SubtypePredicate(SubType.FOREST)); } public SylvanPrimordialEffect() { diff --git a/Mage.Sets/src/mage/cards/t/TakenoSamuraiGeneral.java b/Mage.Sets/src/mage/cards/t/TakenoSamuraiGeneral.java index c42e81577d..f5a017349b 100644 --- a/Mage.Sets/src/mage/cards/t/TakenoSamuraiGeneral.java +++ b/Mage.Sets/src/mage/cards/t/TakenoSamuraiGeneral.java @@ -78,7 +78,7 @@ class TakenoSamuraiGeneralEffect extends ContinuousEffectImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(); static { - filter.add(new SubtypePredicate("Samurai")); + filter.add(new SubtypePredicate(SubType.SAMURAI)); } public TakenoSamuraiGeneralEffect() { diff --git a/Mage.Sets/src/mage/cards/t/TalonSliver.java b/Mage.Sets/src/mage/cards/t/TalonSliver.java index 9d7e600c62..f8515a10fb 100644 --- a/Mage.Sets/src/mage/cards/t/TalonSliver.java +++ b/Mage.Sets/src/mage/cards/t/TalonSliver.java @@ -37,6 +37,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.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -49,7 +50,7 @@ public class TalonSliver extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("All Sliver creatures"); static { - filter.add(new SubtypePredicate("Sliver")); + filter.add(new SubtypePredicate(SubType.SLIVER)); } public TalonSliver(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TarPitcher.java b/Mage.Sets/src/mage/cards/t/TarPitcher.java index dae7fb7c05..17e07d1d2e 100644 --- a/Mage.Sets/src/mage/cards/t/TarPitcher.java +++ b/Mage.Sets/src/mage/cards/t/TarPitcher.java @@ -36,6 +36,7 @@ import mage.abilities.costs.common.TapSourceCost; 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.FilterControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent; @@ -53,7 +54,7 @@ public class TarPitcher extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Goblin"); static { - filter.add(new SubtypePredicate("Goblin")); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public TarPitcher(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TerentatekCub.java b/Mage.Sets/src/mage/cards/t/TerentatekCub.java index ece8dbac32..f582f06dbb 100644 --- a/Mage.Sets/src/mage/cards/t/TerentatekCub.java +++ b/Mage.Sets/src/mage/cards/t/TerentatekCub.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; @@ -52,7 +53,7 @@ public class TerentatekCub extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Hunter or Rogue card"); static { - filter.add(Predicates.or(new SubtypePredicate("Jedi"), new SubtypePredicate("Sith"))); + filter.add(Predicates.or(new SubtypePredicate(SubType.JEDI), new SubtypePredicate(SubType.SITH))); } public TerentatekCub(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/ThaliasLieutenant.java b/Mage.Sets/src/mage/cards/t/ThaliasLieutenant.java index 76ebad5e4d..fc12bf64bd 100644 --- a/Mage.Sets/src/mage/cards/t/ThaliasLieutenant.java +++ b/Mage.Sets/src/mage/cards/t/ThaliasLieutenant.java @@ -36,6 +36,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.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class ThaliasLieutenant extends CardImpl { static { filter.add(new AnotherPredicate()); - filter.add(new SubtypePredicate("Human")); + filter.add(new SubtypePredicate(SubType.HUMAN)); } public ThaliasLieutenant(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/ThallidDevourer.java b/Mage.Sets/src/mage/cards/t/ThallidDevourer.java index 345201cc08..d18b152e98 100644 --- a/Mage.Sets/src/mage/cards/t/ThallidDevourer.java +++ b/Mage.Sets/src/mage/cards/t/ThallidDevourer.java @@ -38,10 +38,7 @@ import mage.abilities.effects.common.continuous.BoostSourceEffect; 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.TargetController; -import mage.constants.Zone; +import mage.constants.*; import mage.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -56,7 +53,7 @@ public class ThallidDevourer extends CardImpl { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Saproling"); static { - filter.add(new SubtypePredicate("Saproling")); + filter.add(new SubtypePredicate(SubType.SAPROLING)); } public ThallidDevourer(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TheUnspeakable.java b/Mage.Sets/src/mage/cards/t/TheUnspeakable.java index 93b61d00b1..193caae9b8 100644 --- a/Mage.Sets/src/mage/cards/t/TheUnspeakable.java +++ b/Mage.Sets/src/mage/cards/t/TheUnspeakable.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.SuperType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -52,7 +53,7 @@ public class TheUnspeakable 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 TheUnspeakable(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/ThievingSprite.java b/Mage.Sets/src/mage/cards/t/ThievingSprite.java index 723dd9d993..b385ecb746 100644 --- a/Mage.Sets/src/mage/cards/t/ThievingSprite.java +++ b/Mage.Sets/src/mage/cards/t/ThievingSprite.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.FilterCard; import mage.filter.common.FilterControlledPermanent; @@ -112,7 +113,7 @@ class ThievingSpriteEffect extends OneShotEffect { } FilterControlledPermanent filter = new FilterControlledPermanent(); - filter.add(new SubtypePredicate("Faerie")); + filter.add(new SubtypePredicate(SubType.FAERIE)); int numberOfFaeries = game.getBattlefield().countAll(filter, controller.getId(), game); Cards revealedCards = new CardsImpl(); diff --git a/Mage.Sets/src/mage/cards/t/ThingFromTheDeep.java b/Mage.Sets/src/mage/cards/t/ThingFromTheDeep.java index 269b189fba..77aac5dc4d 100644 --- a/Mage.Sets/src/mage/cards/t/ThingFromTheDeep.java +++ b/Mage.Sets/src/mage/cards/t/ThingFromTheDeep.java @@ -36,6 +36,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; @@ -49,7 +50,7 @@ public class ThingFromTheDeep extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("an Island"); static{ - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public ThingFromTheDeep(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/Thoughtleech.java b/Mage.Sets/src/mage/cards/t/Thoughtleech.java index 3b1bc5ebcc..f9e4e6dcdb 100644 --- a/Mage.Sets/src/mage/cards/t/Thoughtleech.java +++ b/Mage.Sets/src/mage/cards/t/Thoughtleech.java @@ -33,6 +33,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.TargetController; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -48,7 +49,7 @@ public class Thoughtleech extends CardImpl { private static final FilterPermanent filter = new FilterPermanent("an Island an opponent controls"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); filter.add(new ControllerPredicate(TargetController.OPPONENT)); } diff --git a/Mage.Sets/src/mage/cards/t/ThunderOfHooves.java b/Mage.Sets/src/mage/cards/t/ThunderOfHooves.java index a01c311520..1c9f9b4867 100644 --- a/Mage.Sets/src/mage/cards/t/ThunderOfHooves.java +++ b/Mage.Sets/src/mage/cards/t/ThunderOfHooves.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.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; @@ -52,7 +53,7 @@ public class ThunderOfHooves extends CardImpl { static { filterNotFlying.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); - filterBeasts.add(new SubtypePredicate("Beast")); + filterBeasts.add(new SubtypePredicate(SubType.BEAST)); } public ThunderOfHooves(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/Thwart.java b/Mage.Sets/src/mage/cards/t/Thwart.java index f57fc2d2d6..cacfd94730 100644 --- a/Mage.Sets/src/mage/cards/t/Thwart.java +++ b/Mage.Sets/src/mage/cards/t/Thwart.java @@ -34,6 +34,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.common.FilterControlledLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.TargetSpell; @@ -46,7 +47,7 @@ import mage.target.common.TargetControlledPermanent; public class Thwart extends CardImpl { private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("Islands"); static{ - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public Thwart(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}{U}"); diff --git a/Mage.Sets/src/mage/cards/t/Tidewalker.java b/Mage.Sets/src/mage/cards/t/Tidewalker.java index 57b7a8e01d..fd4d072120 100644 --- a/Mage.Sets/src/mage/cards/t/Tidewalker.java +++ b/Mage.Sets/src/mage/cards/t/Tidewalker.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.FilterControlledPermanent; @@ -55,7 +56,7 @@ public class Tidewalker extends CardImpl { private static final FilterControlledPermanent filter = new FilterControlledPermanent("Island you control"); static { - filter.add(new SubtypePredicate("Island")); + filter.add(new SubtypePredicate(SubType.ISLAND)); } public Tidewalker(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TimbermawLarva.java b/Mage.Sets/src/mage/cards/t/TimbermawLarva.java index f6e5851529..f7299fb2b2 100644 --- a/Mage.Sets/src/mage/cards/t/TimbermawLarva.java +++ b/Mage.Sets/src/mage/cards/t/TimbermawLarva.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.TargetController; import mage.MageInt; import mage.abilities.common.AttacksTriggeredAbility; @@ -50,7 +51,7 @@ public class TimbermawLarva extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Forest you control"); static { - filter.add(new SubtypePredicate("Forest")); + filter.add(new SubtypePredicate(SubType.FOREST)); filter.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage.Sets/src/mage/cards/t/TimberwatchElf.java b/Mage.Sets/src/mage/cards/t/TimberwatchElf.java index ba394f15e7..cdcbc47bbd 100644 --- a/Mage.Sets/src/mage/cards/t/TimberwatchElf.java +++ b/Mage.Sets/src/mage/cards/t/TimberwatchElf.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 TimberwatchElf extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Elves"); static { - filter.add(new SubtypePredicate("Elf")); + filter.add(new SubtypePredicate(SubType.ELF)); } public TimberwatchElf(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/t/TradeFederationBattleship.java b/Mage.Sets/src/mage/cards/t/TradeFederationBattleship.java index a8ffb4ca95..61c3a10a8b 100644 --- a/Mage.Sets/src/mage/cards/t/TradeFederationBattleship.java +++ b/Mage.Sets/src/mage/cards/t/TradeFederationBattleship.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; @@ -53,7 +54,7 @@ public class TradeFederationBattleship extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Droid creatures"); static { - filter.add(new SubtypePredicate("Droid")); + filter.add(new SubtypePredicate(SubType.DROID)); } public TradeFederationBattleship(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/u/UmbraMystic.java b/Mage.Sets/src/mage/cards/u/UmbraMystic.java index dcc22f5c2e..bf73c13347 100644 --- a/Mage.Sets/src/mage/cards/u/UmbraMystic.java +++ b/Mage.Sets/src/mage/cards/u/UmbraMystic.java @@ -30,6 +30,7 @@ package mage.cards.u; 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; @@ -53,7 +54,7 @@ public class UmbraMystic extends CardImpl { private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Auras attached to permanents you control"); static { - filter.add(new SubtypePredicate("Aura")); + filter.add(new SubtypePredicate(SubType.AURA)); } public UmbraMystic(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/u/UnderworldSlums.java b/Mage.Sets/src/mage/cards/u/UnderworldSlums.java index 40fd6b2296..c100dc9ba1 100644 --- a/Mage.Sets/src/mage/cards/u/UnderworldSlums.java +++ b/Mage.Sets/src/mage/cards/u/UnderworldSlums.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 UnderworldSlums extends CardImpl { FilterCard filter = new FilterCard("basic Swamp, Mountain or Forest"); filter.add(new CardTypePredicate(CardType.LAND)); ArrayList> subtypePredicates = new ArrayList<>(); - subtypePredicates.add(new SubtypePredicate("Swamp")); - subtypePredicates.add(new SubtypePredicate("Mountain")); - subtypePredicates.add(new SubtypePredicate("Forest")); + subtypePredicates.add(new SubtypePredicate(SubType.SWAMP)); + subtypePredicates.add(new SubtypePredicate(SubType.MOUNTAIN)); + subtypePredicates.add(new SubtypePredicate(SubType.FOREST)); filter.add(Predicates.or(subtypePredicates)); filter.add(new SupertypePredicate(SuperType.BASIC)); TargetCardInLibrary target = new TargetCardInLibrary(filter); diff --git a/Mage.Sets/src/mage/cards/u/UnholyGrotto.java b/Mage.Sets/src/mage/cards/u/UnholyGrotto.java index 4a90e3b24c..781db54556 100644 --- a/Mage.Sets/src/mage/cards/u/UnholyGrotto.java +++ b/Mage.Sets/src/mage/cards/u/UnholyGrotto.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.FilterCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -51,7 +52,7 @@ public class UnholyGrotto extends CardImpl { private static final FilterCard filter = new FilterCard("Zombie card from your graveyard"); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } public UnholyGrotto(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/u/UrgentExorcism.java b/Mage.Sets/src/mage/cards/u/UrgentExorcism.java index 311b16933c..3746cf9e5c 100644 --- a/Mage.Sets/src/mage/cards/u/UrgentExorcism.java +++ b/Mage.Sets/src/mage/cards/u/UrgentExorcism.java @@ -31,6 +31,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.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -49,7 +50,7 @@ public class UrgentExorcism extends CardImpl { static { filter.add(Predicates.or( - new SubtypePredicate("Spirit"), + new SubtypePredicate(SubType.SPIRIT), new CardTypePredicate(CardType.ENCHANTMENT))); } diff --git a/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java b/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java index ed8ea6d699..a16fcc5b9f 100644 --- a/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java +++ b/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java @@ -38,10 +38,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.common.FilterControlledLandPermanent; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -85,7 +82,7 @@ class VastwoodAnimistEffect extends OneShotEffect { final static FilterControlledPermanent filterAllies = new FilterControlledPermanent("allies you control"); static { - filterAllies.add(new SubtypePredicate("Ally")); + filterAllies.add(new SubtypePredicate(SubType.ALLY)); } public VastwoodAnimistEffect() { diff --git a/Mage.Sets/src/mage/cards/v/VedalkenShackles.java b/Mage.Sets/src/mage/cards/v/VedalkenShackles.java index d8eaabff95..db3b6e338e 100644 --- a/Mage.Sets/src/mage/cards/v/VedalkenShackles.java +++ b/Mage.Sets/src/mage/cards/v/VedalkenShackles.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.common.FilterLandPermanent; @@ -92,7 +93,7 @@ class PowerIslandPredicate implements ObjectPlayerPredicate { this.subtype = subtype; } - public SubtypePredicate(String subtype){ - this.subtype = SubType.byDescription(subtype); - } @Override public boolean apply(MageObject input, Game game) { diff --git a/Mage/src/main/java/mage/game/command/emblems/KothOfTheHammerEmblem.java b/Mage/src/main/java/mage/game/command/emblems/KothOfTheHammerEmblem.java index 67c125adfd..d38928cfad 100644 --- a/Mage/src/main/java/mage/game/command/emblems/KothOfTheHammerEmblem.java +++ b/Mage/src/main/java/mage/game/command/emblems/KothOfTheHammerEmblem.java @@ -33,13 +33,10 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.common.DamageTargetEffect; -import mage.constants.Duration; -import mage.constants.Layer; +import mage.constants.*; + import static mage.constants.Layer.AbilityAddingRemovingEffects_6; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.constants.TargetController; -import mage.constants.Zone; + import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.ControllerPredicate; @@ -66,7 +63,7 @@ class KothOfTheHammerThirdEffect extends ContinuousEffectImpl { static final FilterLandPermanent mountains = new FilterLandPermanent("Mountain you control"); static { - mountains.add(new SubtypePredicate("Mountain")); + mountains.add(new SubtypePredicate(SubType.MOUNTAIN)); mountains.add(new ControllerPredicate(TargetController.YOU)); } diff --git a/Mage/src/main/java/mage/game/command/emblems/LilianaTheLastHopeEmblem.java b/Mage/src/main/java/mage/game/command/emblems/LilianaTheLastHopeEmblem.java index aa52f16db0..824ea46097 100644 --- a/Mage/src/main/java/mage/game/command/emblems/LilianaTheLastHopeEmblem.java +++ b/Mage/src/main/java/mage/game/command/emblems/LilianaTheLastHopeEmblem.java @@ -32,6 +32,7 @@ import mage.abilities.common.BeginningOfEndStepTriggeredAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateTokenEffect; +import mage.constants.SubType; import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; @@ -59,7 +60,7 @@ class LilianaZombiesCount implements DynamicValue { private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(); static { - filter.add(new SubtypePredicate("Zombie")); + filter.add(new SubtypePredicate(SubType.ZOMBIE)); } @Override From de8737697dbfac1b0fa77688ecbaa9d9313834ac Mon Sep 17 00:00:00 2001 From: igoudt Date: Sat, 20 May 2017 22:54:52 +0200 Subject: [PATCH 5/6] complete planeswalker subtypes --- .../src/main/java/mage/constants/SubType.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/Mage/src/main/java/mage/constants/SubType.java b/Mage/src/main/java/mage/constants/SubType.java index b271733549..ecaa41e641 100644 --- a/Mage/src/main/java/mage/constants/SubType.java +++ b/Mage/src/main/java/mage/constants/SubType.java @@ -308,16 +308,39 @@ public enum SubType { ZUBERA("Zubera", SubTypeSet.CreatureType, false), AJANI("Ajani", SubTypeSet.PlaneswalkerType, false), + ARLINN("Arlinn", SubTypeSet.PlaneswalkerType, false), + ASHIOK("Ashiok", SubTypeSet.PlaneswalkerType, false), BOLAS("Bolas", SubTypeSet.PlaneswalkerType, false), CHANDRA("Chandra", SubTypeSet.PlaneswalkerType, false), + DACK("Dack", SubTypeSet.PlaneswalkerType, false), + DARETTI("Daretti", SubTypeSet.PlaneswalkerType, false), + DOMRI("Domri", SubTypeSet.PlaneswalkerType, false), + DOVIN("Dovin", SubTypeSet.PlaneswalkerType, false), + ELSPETH("Elspeth", SubTypeSet.PlaneswalkerType, false), + FREYALISE("Freyalise", SubTypeSet.PlaneswalkerType, false), + GARRUK("Garruk", SubTypeSet.PlaneswalkerType, false), GIDEON("Gideon", SubTypeSet.PlaneswalkerType, false), JACE("Jace", SubTypeSet.PlaneswalkerType, false), KARN("Karn", SubTypeSet.PlaneswalkerType, false), + KIORA("Kiora", SubTypeSet.PlaneswalkerType, false), + KOTH("Koth", SubTypeSet.PlaneswalkerType, false), LILIANA("Liliana", SubTypeSet.PlaneswalkerType, false), + NAHIRI("Nahiri", SubTypeSet.PlaneswalkerType, false), + NARSET("Narset", SubTypeSet.PlaneswalkerType, false), NISSA("Nissa", SubTypeSet.PlaneswalkerType, false), + NIXILIS("Nixilis", SubTypeSet.PlaneswalkerType,false), + RAL("Ral", SubTypeSet.PlaneswalkerType, false), + SAHEELI("Saheeli", SubTypeSet.PlaneswalkerType, false), + SARKHAN("Sarkhan", SubTypeSet.PlaneswalkerType, false), + SORIN("Sorin", SubTypeSet.PlaneswalkerType, false), TAMIYO("Tamiyo", SubTypeSet.PlaneswalkerType, false), + TEFERI("Teferi", SubTypeSet.PlaneswalkerType, false), TEZZERET("Tezzeret", SubTypeSet.PlaneswalkerType, false), - UGIN("Ugin", SubTypeSet.PlaneswalkerType, false); + TIBALT("Tibalt", SubTypeSet.PlaneswalkerType, false), + UGIN("Ugin", SubTypeSet.PlaneswalkerType, false), + VENSER("Venser", SubTypeSet.PlaneswalkerType, false), + VRASKA("Vraska", SubTypeSet.PlaneswalkerType, false), + XENAGOS("Xenagos", SubTypeSet.PlaneswalkerType, false); private final SubTypeSet subTypeSet; From f244f9d6bca45da55801933801699734b3cd0a45 Mon Sep 17 00:00:00 2001 From: igoudt Date: Sat, 20 May 2017 23:09:56 +0200 Subject: [PATCH 6/6] fix last compile issues --- Mage.Sets/src/mage/cards/b/BloodlineShaman.java | 3 ++- Mage.Sets/src/mage/cards/c/CallToTheKindred.java | 3 ++- Mage.Sets/src/mage/cards/c/ChoArrimLegate.java | 5 +++-- Mage.Sets/src/mage/cards/c/CoordinatedBarrage.java | 5 +++-- Mage.Sets/src/mage/cards/c/CorpseHarvester.java | 3 ++- Mage.Sets/src/mage/cards/c/CrypticGateway.java | 5 +++-- Mage.Sets/src/mage/cards/d/DeepwoodLegate.java | 5 +++-- Mage.Sets/src/mage/cards/d/DistantMelody.java | 3 ++- Mage.Sets/src/mage/cards/d/DoorOfDestinies.java | 2 +- Mage.Sets/src/mage/cards/e/Extinction.java | 5 +++-- Mage.Sets/src/mage/cards/g/GemOfBecoming.java | 3 ++- Mage.Sets/src/mage/cards/g/GoblinBurrows.java | 3 ++- Mage.Sets/src/mage/cards/k/KaronaFalseGod.java | 2 +- Mage.Sets/src/mage/cards/k/KyrenLegate.java | 5 +++-- Mage.Sets/src/mage/cards/m/MoggSalvage.java | 5 +++-- Mage.Sets/src/mage/cards/p/PacksDisdain.java | 3 ++- Mage.Sets/src/mage/cards/p/PatriarchsBidding.java | 3 ++- Mage.Sets/src/mage/cards/p/PlanarOverlay.java | 9 +++------ Mage.Sets/src/mage/cards/r/RefreshingRain.java | 5 +++-- Mage.Sets/src/mage/cards/r/RiptideChronologist.java | 5 +++-- Mage.Sets/src/mage/cards/r/RushwoodLegate.java | 5 +++-- Mage.Sets/src/mage/cards/s/ShardConvergence.java | 3 ++- Mage.Sets/src/mage/cards/s/SharedAnimosity.java | 8 ++------ Mage.Sets/src/mage/cards/v/VisionCharm.java | 8 ++------ 24 files changed, 57 insertions(+), 49 deletions(-) diff --git a/Mage.Sets/src/mage/cards/b/BloodlineShaman.java b/Mage.Sets/src/mage/cards/b/BloodlineShaman.java index bcfb5017d9..7d7675a549 100644 --- a/Mage.Sets/src/mage/cards/b/BloodlineShaman.java +++ b/Mage.Sets/src/mage/cards/b/BloodlineShaman.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.predicate.mageobject.SubtypePredicate; @@ -113,7 +114,7 @@ class BloodlineShamanEffect extends OneShotEffect { } FilterCard filterSubtype = new FilterCard(); - filterSubtype.add(new SubtypePredicate(typeChoice.getChoice())); + filterSubtype.add(new SubtypePredicate(SubType.byDescription(typeChoice.getChoice()))); // Reveal the top card of your library. if (controller.getLibrary().hasCards()) { diff --git a/Mage.Sets/src/mage/cards/c/CallToTheKindred.java b/Mage.Sets/src/mage/cards/c/CallToTheKindred.java index effdb2c78c..3b1c1611c0 100644 --- a/Mage.Sets/src/mage/cards/c/CallToTheKindred.java +++ b/Mage.Sets/src/mage/cards/c/CallToTheKindred.java @@ -37,6 +37,7 @@ import mage.abilities.keyword.EnchantAbility; import mage.cards.*; import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterCreatureCard; import mage.filter.predicate.Predicate; @@ -124,7 +125,7 @@ class CallToTheKindredEffect extends OneShotEffect { StringBuilder sb = new StringBuilder("creature card with at least one subtype from: "); ArrayList> subtypes = new ArrayList<>(); for (String subtype : creature.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/c/ChoArrimLegate.java b/Mage.Sets/src/mage/cards/c/ChoArrimLegate.java index 58ccf05ebe..d641af08c8 100644 --- a/Mage.Sets/src/mage/cards/c/ChoArrimLegate.java +++ b/Mage.Sets/src/mage/cards/c/ChoArrimLegate.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.filter.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -53,8 +54,8 @@ public class ChoArrimLegate 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 ChoArrimLegate(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/c/CoordinatedBarrage.java b/Mage.Sets/src/mage/cards/c/CoordinatedBarrage.java index fe7cd9f403..e235f5a94b 100644 --- a/Mage.Sets/src/mage/cards/c/CoordinatedBarrage.java +++ b/Mage.Sets/src/mage/cards/c/CoordinatedBarrage.java @@ -36,6 +36,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,11 +92,11 @@ class CoordinatedBarrageEffect extends OneShotEffect { if (controller != null) { Choice choice = new ChoiceImpl(true); choice.setMessage("Choose a creature type"); - choice.setChoices(CardRepository.instance.getCreatureTypes()); + choice.setChoices(SubType.getCreatureTypes(false)); if (controller.choose(Outcome.Damage, choice, game)) { String chosenType = choice.getChoice(); FilterControlledPermanent filter = new FilterControlledPermanent(); - filter.add(new SubtypePredicate(chosenType)); + filter.add(new SubtypePredicate(SubType.byDescription(chosenType))); int damageDealt = game.getBattlefield().count(filter, source.getSourceId(), source.getControllerId(), game); Permanent permanent = game.getPermanent(this.getTargetPointer().getFirst(game, source)); if (permanent != null) { diff --git a/Mage.Sets/src/mage/cards/c/CorpseHarvester.java b/Mage.Sets/src/mage/cards/c/CorpseHarvester.java index 4eeab32157..0c88c43b69 100644 --- a/Mage.Sets/src/mage/cards/c/CorpseHarvester.java +++ b/Mage.Sets/src/mage/cards/c/CorpseHarvester.java @@ -37,6 +37,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.common.FilterControlledPermanent; @@ -113,7 +114,7 @@ class CorpseHarvesterEffect extends OneShotEffect { private void searchCard(Player player, Ability source, Game game, Cards cards, String subtype) { FilterCard filter = new FilterCard(subtype); - filter.add(new SubtypePredicate(subtype)); + filter.add(new SubtypePredicate(SubType.byDescription(subtype))); TargetCardInLibrary target = new TargetCardInLibrary(filter); if (player.searchLibrary(target, game)) { Card card = player.getLibrary().remove(target.getFirstTarget(), game); diff --git a/Mage.Sets/src/mage/cards/c/CrypticGateway.java b/Mage.Sets/src/mage/cards/c/CrypticGateway.java index beca9ec21b..7d54ab9939 100644 --- a/Mage.Sets/src/mage/cards/c/CrypticGateway.java +++ b/Mage.Sets/src/mage/cards/c/CrypticGateway.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.FilterCard; import mage.filter.common.FilterControlledCreaturePermanent; @@ -203,14 +204,14 @@ class CrypticGatewayEffect extends OneShotEffect { for (String subtype : creature.getSubtype(game)) { if (creature2.getSubtype(game).contains(subtype) || changeling2) { - subtypes.add(new SubtypePredicate(subtype)); + subtypes.add(new SubtypePredicate(SubType.byDescription(subtype))); commonSubType = true; } } for (String subtype : creature2.getSubtype(game)) { if (creature.getSubtype(game).contains(subtype) || changeling) { - subtypes.add(new SubtypePredicate(subtype)); + subtypes.add(new SubtypePredicate(SubType.byDescription(subtype))); commonSubType = true; } } diff --git a/Mage.Sets/src/mage/cards/d/DeepwoodLegate.java b/Mage.Sets/src/mage/cards/d/DeepwoodLegate.java index dca7edda60..a04e82c68d 100644 --- a/Mage.Sets/src/mage/cards/d/DeepwoodLegate.java +++ b/Mage.Sets/src/mage/cards/d/DeepwoodLegate.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; @@ -56,8 +57,8 @@ public class DeepwoodLegate extends CardImpl { private static final FilterPermanent filterSwamp = new FilterPermanent(); static { - filterForest.add(new SubtypePredicate(("Forest"))); - filterSwamp.add(new SubtypePredicate(("Swamp"))); + filterForest.add(new SubtypePredicate(SubType.FOREST)); + filterSwamp.add(new SubtypePredicate(SubType.SWAMP)); } public DeepwoodLegate(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/d/DistantMelody.java b/Mage.Sets/src/mage/cards/d/DistantMelody.java index 95b64f2e0e..4a3eab2757 100644 --- a/Mage.Sets/src/mage/cards/d/DistantMelody.java +++ b/Mage.Sets/src/mage/cards/d/DistantMelody.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.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -98,7 +99,7 @@ class DistantMelodyEffect extends OneShotEffect { } } FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(); - filter.add(new SubtypePredicate(typeChoice.getChoice())); + filter.add(new SubtypePredicate(SubType.byDescription(typeChoice.getChoice()))); return new DrawCardSourceControllerEffect(new PermanentsOnBattlefieldCount(filter)).apply(game, source); } return false; diff --git a/Mage.Sets/src/mage/cards/d/DoorOfDestinies.java b/Mage.Sets/src/mage/cards/d/DoorOfDestinies.java index f2908393a7..46c5aae433 100644 --- a/Mage.Sets/src/mage/cards/d/DoorOfDestinies.java +++ b/Mage.Sets/src/mage/cards/d/DoorOfDestinies.java @@ -106,7 +106,7 @@ class AddCounterAbility extends TriggeredAbilityImpl { if (subtype != null) { FilterSpell filter = new FilterSpell(); filter.add(new ControllerPredicate(TargetController.YOU)); - filter.add(new SubtypePredicate(subtype)); + filter.add(new SubtypePredicate(SubType.byDescription(subtype))); Spell spell = game.getStack().getSpell(event.getTargetId()); if (spell != null && filter.match(spell, getSourceId(), getControllerId(), game)) { return true; diff --git a/Mage.Sets/src/mage/cards/e/Extinction.java b/Mage.Sets/src/mage/cards/e/Extinction.java index 4d0739cbc1..5de5956951 100644 --- a/Mage.Sets/src/mage/cards/e/Extinction.java +++ b/Mage.Sets/src/mage/cards/e/Extinction.java @@ -37,6 +37,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.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -86,7 +87,7 @@ class ExtinctionEffect 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; @@ -96,7 +97,7 @@ class ExtinctionEffect 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()))); for (Permanent creature : game.getBattlefield().getActivePermanents(filterCreaturePermanent, source.getSourceId(), game)) { creature.destroy(source.getSourceId(), game, true); } diff --git a/Mage.Sets/src/mage/cards/g/GemOfBecoming.java b/Mage.Sets/src/mage/cards/g/GemOfBecoming.java index c73e94ac6a..f36e50ace8 100644 --- a/Mage.Sets/src/mage/cards/g/GemOfBecoming.java +++ b/Mage.Sets/src/mage/cards/g/GemOfBecoming.java @@ -36,6 +36,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.common.FilterLandCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -109,7 +110,7 @@ class GemOfBecomingEffect extends OneShotEffect { private void searchLand(Player player, Ability source, Game game, Cards cards, String subtype) { FilterLandCard filter = new FilterLandCard(subtype); - filter.add(new SubtypePredicate(subtype)); + filter.add(new SubtypePredicate(SubType.byDescription(subtype))); TargetCardInLibrary target = new TargetCardInLibrary(filter); if (player.searchLibrary(target, game)) { Card card = player.getLibrary().remove(target.getFirstTarget(), game); diff --git a/Mage.Sets/src/mage/cards/g/GoblinBurrows.java b/Mage.Sets/src/mage/cards/g/GoblinBurrows.java index abdfebcaa0..1f33e112e8 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinBurrows.java +++ b/Mage.Sets/src/mage/cards/g/GoblinBurrows.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 GoblinBurrows extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblin creature"); static { - filter.add(new SubtypePredicate(("Goblin"))); + filter.add(new SubtypePredicate(SubType.GOBLIN)); } public GoblinBurrows(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/k/KaronaFalseGod.java b/Mage.Sets/src/mage/cards/k/KaronaFalseGod.java index c90e50cde7..381cd1c82f 100644 --- a/Mage.Sets/src/mage/cards/k/KaronaFalseGod.java +++ b/Mage.Sets/src/mage/cards/k/KaronaFalseGod.java @@ -165,7 +165,7 @@ class KaronaFalseGodEffect extends OneShotEffect { if (!typeChosen.isEmpty()) { game.informPlayers(controller.getLogName() + " has chosen " + typeChosen); FilterCreaturePermanent filter = new FilterCreaturePermanent(); - filter.add(new SubtypePredicate(typeChosen)); + filter.add(new SubtypePredicate(SubType.byDescription(typeChosen))); game.addEffect(new BoostAllEffect(3, 3, Duration.EndOfTurn, filter, false), source); } return true; diff --git a/Mage.Sets/src/mage/cards/k/KyrenLegate.java b/Mage.Sets/src/mage/cards/k/KyrenLegate.java index 27ecabb828..92378237c6 100644 --- a/Mage.Sets/src/mage/cards/k/KyrenLegate.java +++ b/Mage.Sets/src/mage/cards/k/KyrenLegate.java @@ -38,6 +38,7 @@ import mage.abilities.keyword.HasteAbility; 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 KyrenLegate extends CardImpl { private static final FilterPermanent filterMountain = new FilterPermanent(); static { - filterPlains.add(new SubtypePredicate(("Plains"))); - filterMountain.add(new SubtypePredicate(("Mountain"))); + filterPlains.add(new SubtypePredicate(SubType.PLAINS)); + filterMountain.add(new SubtypePredicate(SubType.MOUNTAIN)); } public KyrenLegate(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/m/MoggSalvage.java b/Mage.Sets/src/mage/cards/m/MoggSalvage.java index 70a35c91da..8ec4a4d554 100644 --- a/Mage.Sets/src/mage/cards/m/MoggSalvage.java +++ b/Mage.Sets/src/mage/cards/m/MoggSalvage.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.FilterPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.target.common.TargetArtifactPermanent; @@ -51,8 +52,8 @@ public class MoggSalvage 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 MoggSalvage(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/p/PacksDisdain.java b/Mage.Sets/src/mage/cards/p/PacksDisdain.java index 2d832e3ad1..e8cc2b1ded 100644 --- a/Mage.Sets/src/mage/cards/p/PacksDisdain.java +++ b/Mage.Sets/src/mage/cards/p/PacksDisdain.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.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -102,7 +103,7 @@ class PacksDisdainEffect extends OneShotEffect { } } FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(); - filter.add(new SubtypePredicate(typeChoice.getChoice())); + filter.add(new SubtypePredicate(SubType.byDescription(typeChoice.getChoice()))); DynamicValue negativePermanentsCount = new PermanentsOnBattlefieldCount(filter, -1); ContinuousEffect effect = new BoostTargetEffect(negativePermanentsCount, negativePermanentsCount, Duration.EndOfTurn, true); effect.setTargetPointer(new FixedTarget(source.getFirstTarget())); diff --git a/Mage.Sets/src/mage/cards/p/PatriarchsBidding.java b/Mage.Sets/src/mage/cards/p/PatriarchsBidding.java index ebec1afb7a..265ad05b7a 100644 --- a/Mage.Sets/src/mage/cards/p/PatriarchsBidding.java +++ b/Mage.Sets/src/mage/cards/p/PatriarchsBidding.java @@ -42,6 +42,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; @@ -113,7 +114,7 @@ class PatriarchsBiddingEffect extends OneShotEffect { List predicates = new ArrayList<>(); for (String type : chosenTypes) { - predicates.add(new SubtypePredicate(type)); + predicates.add(new SubtypePredicate(SubType.byDescription(type))); } FilterCard filter = new FilterCreatureCard(); filter.add(Predicates.or(predicates)); diff --git a/Mage.Sets/src/mage/cards/p/PlanarOverlay.java b/Mage.Sets/src/mage/cards/p/PlanarOverlay.java index c52593e50f..e51c8ae44c 100644 --- a/Mage.Sets/src/mage/cards/p/PlanarOverlay.java +++ b/Mage.Sets/src/mage/cards/p/PlanarOverlay.java @@ -35,10 +35,7 @@ import mage.abilities.effects.OneShotEffect; import mage.cards.Card; 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.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.permanent.ControllerPredicate; @@ -94,9 +91,9 @@ class PlanarOverlayEffect extends OneShotEffect { for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { Player player = game.getPlayer(playerId); if (player != null) { - for (String landName : new String[]{"Plains", "Island", "Mountain", "Swamp", "Forest"}) { + for (String landName : SubType.getBasicLands(false)) { FilterLandPermanent filter = new FilterLandPermanent(landName + " to return to hand"); - filter.add(new SubtypePredicate(landName)); + filter.add(new SubtypePredicate(SubType.byDescription(landName))); filter.add(new ControllerPredicate(TargetController.YOU)); Target target = new TargetLandPermanent(1, 1, filter, true); if (target.canChoose(source.getSourceId(), player.getId(), game)) { diff --git a/Mage.Sets/src/mage/cards/r/RefreshingRain.java b/Mage.Sets/src/mage/cards/r/RefreshingRain.java index fcfd4ff96f..29f81d94a5 100644 --- a/Mage.Sets/src/mage/cards/r/RefreshingRain.java +++ b/Mage.Sets/src/mage/cards/r/RefreshingRain.java @@ -37,6 +37,7 @@ import mage.abilities.effects.common.GainLifeTargetEffect; 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; @@ -51,8 +52,8 @@ public class RefreshingRain extends CardImpl { private static final FilterPermanent filterSwamp = new FilterPermanent(); static { - filterForest.add(new SubtypePredicate(("Forest"))); - filterSwamp.add(new SubtypePredicate(("Swamp"))); + filterForest.add(new SubtypePredicate(SubType.FOREST)); + filterSwamp.add(new SubtypePredicate(SubType.SWAMP)); } public RefreshingRain(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/r/RiptideChronologist.java b/Mage.Sets/src/mage/cards/r/RiptideChronologist.java index a89232bf02..7cdcfa71f0 100644 --- a/Mage.Sets/src/mage/cards/r/RiptideChronologist.java +++ b/Mage.Sets/src/mage/cards/r/RiptideChronologist.java @@ -42,6 +42,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.FilterCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -96,7 +97,7 @@ class RiptideChronologistEffect 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; @@ -106,7 +107,7 @@ class RiptideChronologistEffect 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()))); for (Permanent creature : game.getBattlefield().getActivePermanents(filterCreaturePermanent, source.getSourceId(), game)) { creature.untap(game); } diff --git a/Mage.Sets/src/mage/cards/r/RushwoodLegate.java b/Mage.Sets/src/mage/cards/r/RushwoodLegate.java index dc9084cc70..932062e5dd 100644 --- a/Mage.Sets/src/mage/cards/r/RushwoodLegate.java +++ b/Mage.Sets/src/mage/cards/r/RushwoodLegate.java @@ -37,6 +37,7 @@ import mage.abilities.costs.AlternativeCostSourceAbility; 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; @@ -50,8 +51,8 @@ public class RushwoodLegate extends CardImpl { private static final FilterPermanent filterForest = 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 RushwoodLegate(UUID ownerId, CardSetInfo setInfo) { diff --git a/Mage.Sets/src/mage/cards/s/ShardConvergence.java b/Mage.Sets/src/mage/cards/s/ShardConvergence.java index e036bcbf40..d794424e35 100644 --- a/Mage.Sets/src/mage/cards/s/ShardConvergence.java +++ b/Mage.Sets/src/mage/cards/s/ShardConvergence.java @@ -38,6 +38,7 @@ import mage.cards.CardSetInfo; import mage.cards.Cards; import mage.cards.CardsImpl; import mage.constants.Outcome; +import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterLandCard; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -101,7 +102,7 @@ class ShardConvergenceEffect extends OneShotEffect { private void searchLand(Player player, Ability source, Game game, Cards cards, String subtype) { FilterLandCard filter = new FilterLandCard(subtype); - filter.add(new SubtypePredicate(subtype)); + filter.add(new SubtypePredicate(SubType.byDescription(subtype))); TargetCardInLibrary target = new TargetCardInLibrary(filter); if (player.searchLibrary(target, game)) { Card card = player.getLibrary().remove(target.getFirstTarget(), game); diff --git a/Mage.Sets/src/mage/cards/s/SharedAnimosity.java b/Mage.Sets/src/mage/cards/s/SharedAnimosity.java index 868d25ace2..4dbe52428c 100644 --- a/Mage.Sets/src/mage/cards/s/SharedAnimosity.java +++ b/Mage.Sets/src/mage/cards/s/SharedAnimosity.java @@ -30,7 +30,7 @@ package mage.cards.s; import java.util.ArrayList; import java.util.UUID; -import mage.constants.CardType; +import mage.constants.*; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.Mode; @@ -39,10 +39,6 @@ import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.keyword.ChangelingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicate; import mage.filter.predicate.Predicates; @@ -116,7 +112,7 @@ class SharedAnimosityEffect extends ContinuousEffectImpl { if(!allCreatureTypes){ ArrayList> predicateList = new ArrayList<>(); for(String subtype : permanent.getSubtype(game)){ - predicateList.add(new SubtypePredicate(subtype)); + predicateList.add(new SubtypePredicate(SubType.byDescription(subtype))); } filter.add(Predicates.or(predicateList)); } diff --git a/Mage.Sets/src/mage/cards/v/VisionCharm.java b/Mage.Sets/src/mage/cards/v/VisionCharm.java index d567dbfbed..fea2422cbe 100644 --- a/Mage.Sets/src/mage/cards/v/VisionCharm.java +++ b/Mage.Sets/src/mage/cards/v/VisionCharm.java @@ -45,11 +45,7 @@ import mage.cards.CardSetInfo; import mage.choices.Choice; import mage.choices.ChoiceBasicLandType; import mage.choices.ChoiceLandType; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; +import mage.constants.*; import mage.filter.FilterPermanent; import mage.filter.common.FilterLandPermanent; import mage.filter.predicate.mageobject.SubtypePredicate; @@ -128,7 +124,7 @@ class VisionCharmEffect extends ContinuousEffectImpl { this.discard(); } FilterPermanent filter = new FilterLandPermanent(); - filter.add(new SubtypePredicate(targetLandType)); + filter.add(new SubtypePredicate(SubType.byDescription(targetLandType))); if (this.affectedObjectsSet) { for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, game)) { affectedObjectList.add(new MageObjectReference(permanent, game));