From c44c301f5b1860a433aacd5167d3e6ecab97c022 Mon Sep 17 00:00:00 2001 From: igoudt Date: Tue, 16 May 2017 22:11:47 +0200 Subject: [PATCH] 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