From 54203c16d3505dcfb55da5f861beea160ad66f17 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Thu, 10 Feb 2022 10:25:23 -0500 Subject: [PATCH] [NEO] Implementing Compleated mechanic and hybrid phyrexian mana (ready for review) (#8677) * [NEO] Implemented Tamiyo, Compleated Sage * replaced PhyrexianManaCost calls with ManaCostsImpl calls * updated phyrexian mana implementation * added phyrexian hybrid symbol support * updated starting loyalty implementation for planeswalkers * change compleated to singleton * implemented Compleated ability * added some missing loyalty setters * changed when loyalty is added to a walker to fix bugs * slight change to some tests to fix them from failing * fixed token issue --- .../card/dl/sources/GathererSymbols.java | 1 + .../dl/sources/ScryfallSymbolsSource.java | 1 + .../java/mage/player/ai/ComputerPlayer.java | 2 +- .../mage/cards/a/AjaniAdversaryOfTyrants.java | 3 +- .../mage/cards/a/AjaniCallerOfThePride.java | 3 +- Mage.Sets/src/mage/cards/a/AjaniGoldmane.java | 3 +- .../mage/cards/a/AjaniInspiringLeader.java | 3 +- .../src/mage/cards/a/AjaniMentorOfHeroes.java | 3 +- .../src/mage/cards/a/AjaniSteadfast.java | 3 +- .../mage/cards/a/AjaniStrengthOfThePride.java | 3 +- .../mage/cards/a/AjaniTheGreathearted.java | 3 +- .../src/mage/cards/a/AjaniUnyielding.java | 3 +- .../mage/cards/a/AjaniValiantProtector.java | 3 +- Mage.Sets/src/mage/cards/a/AjaniVengeant.java | 3 +- .../src/mage/cards/a/AjaniWiseCounselor.java | 3 +- .../mage/cards/a/AminatouTheFateshifter.java | 3 +- .../mage/cards/a/AngrathCaptainOfChaos.java | 3 +- .../mage/cards/a/AngrathMinotaurPirate.java | 3 +- .../mage/cards/a/AngrathTheFlameChained.java | 3 +- Mage.Sets/src/mage/cards/a/ArlinnKord.java | 3 +- .../src/mage/cards/a/ArlinnTheMoonsFury.java | 3 +- .../src/mage/cards/a/ArlinnThePacksHope.java | 3 +- .../mage/cards/a/ArlinnVoiceOfThePack.java | 3 +- .../src/mage/cards/a/AshiokDreamRender.java | 3 +- .../src/mage/cards/a/AshiokNightmareMuse.java | 3 +- .../mage/cards/a/AshiokNightmareWeaver.java | 3 +- .../mage/cards/a/AshiokSculptorOfFears.java | 3 +- .../src/mage/cards/a/AurraSingBaneOfJedi.java | 3 +- .../src/mage/cards/b/BasriDevotedPaladin.java | 3 +- Mage.Sets/src/mage/cards/b/BasriKet.java | 3 +- .../src/mage/cards/b/BlindingSouleater.java | 15 +- .../src/mage/cards/c/CalixDestinysHand.java | 3 +- Mage.Sets/src/mage/cards/c/ChandraAblaze.java | 3 +- .../mage/cards/c/ChandraAcolyteOfFlame.java | 3 +- .../mage/cards/c/ChandraAwakenedInferno.java | 3 +- .../mage/cards/c/ChandraBoldPyromancer.java | 3 +- .../mage/cards/c/ChandraDressedToKill.java | 3 +- .../src/mage/cards/c/ChandraFireArtisan.java | 3 +- .../src/mage/cards/c/ChandraFlamecaller.java | 3 +- .../mage/cards/c/ChandraFlamesCatalyst.java | 3 +- .../src/mage/cards/c/ChandraFlamesFury.java | 3 +- .../mage/cards/c/ChandraGremlinWrangler.java | 3 +- .../src/mage/cards/c/ChandraHeartOfFire.java | 3 +- Mage.Sets/src/mage/cards/c/ChandraNalaar.java | 3 +- .../mage/cards/c/ChandraNovicePyromancer.java | 3 +- .../src/mage/cards/c/ChandraPyrogenius.java | 3 +- .../src/mage/cards/c/ChandraPyromaster.java | 3 +- .../src/mage/cards/c/ChandraRoaringFlame.java | 3 +- .../src/mage/cards/c/ChandraTheFirebrand.java | 3 +- .../mage/cards/c/ChandraTorchOfDefiance.java | 3 +- Mage.Sets/src/mage/cards/d/DackFayden.java | 3 +- .../src/mage/cards/d/DakkonShadowSlayer.java | 3 +- .../cards/d/DarettiIngeniousIconoclast.java | 3 +- .../src/mage/cards/d/DarettiScrapSavant.java | 3 +- .../mage/cards/d/DarthSidiousSithLord.java | 3 +- .../cards/d/DarthTyranusCountOfSerenno.java | 3 +- .../mage/cards/d/DavrielRogueShadowmage.java | 3 +- .../src/mage/cards/d/DomriAnarchOfBolas.java | 3 +- .../src/mage/cards/d/DomriChaosBringer.java | 3 +- .../src/mage/cards/d/DomriCitySmasher.java | 3 +- Mage.Sets/src/mage/cards/d/DomriRade.java | 3 +- .../src/mage/cards/d/DovinArchitectOfLaw.java | 3 +- Mage.Sets/src/mage/cards/d/DovinBaan.java | 4 +- .../src/mage/cards/d/DovinGrandArbiter.java | 3 +- .../src/mage/cards/d/DovinHandOfControl.java | 3 +- .../src/mage/cards/e/EllywickTumblestrum.java | 3 +- .../src/mage/cards/e/ElspethKnightErrant.java | 3 +- .../src/mage/cards/e/ElspethSunsChampion.java | 3 +- .../src/mage/cards/e/ElspethSunsNemesis.java | 3 +- Mage.Sets/src/mage/cards/e/ElspethTirel.java | 3 +- .../mage/cards/e/ElspethUndauntedHero.java | 3 +- .../src/mage/cards/e/EstridTheMasked.java | 3 +- .../mage/cards/f/FreyaliseLlanowarsFury.java | 3 +- .../src/mage/cards/g/GarrukApexPredator.java | 3 +- .../mage/cards/g/GarrukCallerOfBeasts.java | 3 +- .../mage/cards/g/GarrukCursedHuntsman.java | 3 +- .../src/mage/cards/g/GarrukPrimalHunter.java | 3 +- .../src/mage/cards/g/GarrukRelentless.java | 3 +- .../src/mage/cards/g/GarrukSavageHerald.java | 3 +- .../src/mage/cards/g/GarrukUnleashed.java | 3 +- .../src/mage/cards/g/GarrukWildspeaker.java | 3 +- .../src/mage/cards/g/GeyadroneDihada.java | 3 +- .../mage/cards/g/GideonAllyOfZendikar.java | 3 +- .../src/mage/cards/g/GideonBattleForged.java | 3 +- .../src/mage/cards/g/GideonBlackblade.java | 3 +- .../mage/cards/g/GideonChampionOfJustice.java | 3 +- Mage.Sets/src/mage/cards/g/GideonJura.java | 3 +- .../mage/cards/g/GideonMartialParagon.java | 3 +- .../src/mage/cards/g/GideonOfTheTrials.java | 3 +- .../src/mage/cards/g/GideonTheOathsworn.java | 3 +- .../mage/cards/g/GrandMasterOfFlowers.java | 3 +- .../src/mage/cards/g/GristTheHungerTide.java | 3 +- .../mage/cards/h/HuatliDinosaurKnight.java | 3 +- .../mage/cards/h/HuatliRadiantChampion.java | 3 +- .../src/mage/cards/h/HuatliTheSunsHeart.java | 3 +- .../src/mage/cards/h/HuatliWarriorPoet.java | 3 +- .../src/mage/cards/i/ImmolatingSouleater.java | 19 +- .../src/mage/cards/i/InsatiableSouleater.java | 19 +- .../mage/cards/j/JaceArcaneStrategist.java | 3 +- .../mage/cards/j/JaceArchitectOfThought.java | 4 +- Mage.Sets/src/mage/cards/j/JaceBeleren.java | 3 +- .../src/mage/cards/j/JaceCunningCastaway.java | 3 +- .../mage/cards/j/JaceIngeniousMindMage.java | 3 +- .../src/mage/cards/j/JaceMemoryAdept.java | 3 +- .../src/mage/cards/j/JaceMirrorMage.java | 3 +- .../src/mage/cards/j/JaceTelepathUnbound.java | 3 +- .../mage/cards/j/JaceTheLivingGuildpact.java | 3 +- .../src/mage/cards/j/JaceTheMindSculptor.java | 3 +- .../mage/cards/j/JaceUnravelerOfSecrets.java | 3 +- .../mage/cards/j/JaceWielderOfMysteries.java | 3 +- Mage.Sets/src/mage/cards/j/JayaBallard.java | 3 +- .../mage/cards/j/JayaVeneratedFiremage.java | 3 +- .../src/mage/cards/j/JeskaThriceReborn.java | 1 + Mage.Sets/src/mage/cards/j/JiangYanggu.java | 3 +- .../mage/cards/j/JiangYangguWildcrafter.java | 3 +- Mage.Sets/src/mage/cards/k/KaitoShizuki.java | 3 +- Mage.Sets/src/mage/cards/k/KarnLiberated.java | 3 +- .../src/mage/cards/k/KarnScionOfUrza.java | 3 +- .../src/mage/cards/k/KarnTheGreatCreator.java | 3 +- .../src/mage/cards/k/KasminaEnigmaSage.java | 3 +- .../mage/cards/k/KasminaEnigmaticMentor.java | 3 +- .../src/mage/cards/k/KayaBaneOfTheDead.java | 3 +- .../src/mage/cards/k/KayaGeistHunter.java | 3 +- .../src/mage/cards/k/KayaGhostAssassin.java | 3 +- .../src/mage/cards/k/KayaOrzhovUsurper.java | 3 +- .../src/mage/cards/k/KayaTheInexorable.java | 3 +- .../mage/cards/k/KioraBehemothBeckoner.java | 3 +- .../mage/cards/k/KioraMasterOfTheDepths.java | 3 +- .../mage/cards/k/KioraTheCrashingWave.java | 3 +- .../src/mage/cards/k/KothOfTheHammer.java | 3 +- .../src/mage/cards/l/LilianaDeathMage.java | 3 +- .../src/mage/cards/l/LilianaDeathWielder.java | 3 +- .../mage/cards/l/LilianaDeathsMajesty.java | 3 +- .../cards/l/LilianaDefiantNecromancer.java | 3 +- .../cards/l/LilianaDreadhordeGeneral.java | 3 +- .../mage/cards/l/LilianaOfTheDarkRealms.java | 3 +- .../src/mage/cards/l/LilianaOfTheVeil.java | 3 +- .../src/mage/cards/l/LilianaTheLastHope.java | 3 +- .../mage/cards/l/LilianaTheNecromancer.java | 3 +- .../mage/cards/l/LilianaUntouchedByDeath.java | 3 +- Mage.Sets/src/mage/cards/l/LilianaVess.java | 3 +- .../mage/cards/l/LilianaWakerOfTheDead.java | 3 +- .../src/mage/cards/l/LolthSpiderQueen.java | 3 +- Mage.Sets/src/mage/cards/l/LordWindgrace.java | 3 +- .../cards/l/LukeSkywalkerTheLastJedi.java | 3 +- .../mage/cards/l/LukkaCoppercoatOutcast.java | 3 +- .../src/mage/cards/m/MilaCraftyCompanion.java | 3 +- .../src/mage/cards/m/MoltensteelDragon.java | 19 +- Mage.Sets/src/mage/cards/m/Mordenkainen.java | 3 +- Mage.Sets/src/mage/cards/m/MuYanling.java | 3 +- .../mage/cards/m/MuYanlingCelestialWind.java | 3 +- .../src/mage/cards/m/MuYanlingSkyDancer.java | 3 +- .../mage/cards/n/NahiriHeirOfTheAncients.java | 3 +- .../src/mage/cards/n/NahiriStormOfStone.java | 3 +- .../src/mage/cards/n/NahiriTheHarbinger.java | 3 +- .../mage/cards/n/NahiriTheLithomancer.java | 3 +- .../mage/cards/n/NarsetOfTheAncientWay.java | 3 +- .../src/mage/cards/n/NarsetParterOfVeils.java | 3 +- .../src/mage/cards/n/NarsetTranscendent.java | 3 +- .../src/mage/cards/n/NicolBolasDragonGod.java | 3 +- .../mage/cards/n/NicolBolasGodPharaoh.java | 3 +- .../mage/cards/n/NicolBolasPlaneswalker.java | 3 +- .../src/mage/cards/n/NicolBolasTheArisen.java | 3 +- .../mage/cards/n/NicolBolasTheDeceiver.java | 3 +- Mage.Sets/src/mage/cards/n/NikoAris.java | 3 +- .../src/mage/cards/n/NissaGenesisMage.java | 3 +- .../src/mage/cards/n/NissaNaturesArtisan.java | 3 +- .../mage/cards/n/NissaOfShadowedBoughs.java | 3 +- Mage.Sets/src/mage/cards/n/NissaRevane.java | 4 +- .../src/mage/cards/n/NissaSageAnimist.java | 3 +- .../mage/cards/n/NissaStewardOfElements.java | 15 +- .../src/mage/cards/n/NissaVitalForce.java | 3 +- .../mage/cards/n/NissaVoiceOfZendikar.java | 3 +- .../mage/cards/n/NissaWhoShakesTheWorld.java | 3 +- .../src/mage/cards/n/NissaWorldwaker.java | 3 +- .../mage/cards/o/ObNixilisOfTheBlackOath.java | 3 +- .../src/mage/cards/o/ObNixilisReignited.java | 3 +- .../mage/cards/o/ObNixilisTheHateTwisted.java | 3 +- Mage.Sets/src/mage/cards/o/ObiWanKenobi.java | 3 +- .../src/mage/cards/o/OkoTheTrickster.java | 3 +- .../src/mage/cards/o/OkoThiefOfCrowns.java | 3 +- .../src/mage/cards/p/PestilentSouleater.java | 19 +- Mage.Sets/src/mage/cards/p/ProfessorOnyx.java | 3 +- Mage.Sets/src/mage/cards/r/RageExtractor.java | 94 ++++----- .../src/mage/cards/r/RalCallerOfStorms.java | 3 +- .../src/mage/cards/r/RalIzzetViceroy.java | 3 +- .../src/mage/cards/r/RalStormConduit.java | 3 +- Mage.Sets/src/mage/cards/r/RalZarek.java | 3 +- .../mage/cards/r/RowanFearlessSparkmage.java | 3 +- Mage.Sets/src/mage/cards/r/RowanKenrith.java | 3 +- .../mage/cards/r/RowanScholarOfSparks.java | 5 +- Mage.Sets/src/mage/cards/s/SaheeliRai.java | 3 +- .../mage/cards/s/SaheeliSublimeArtificer.java | 3 +- .../src/mage/cards/s/SaheeliTheGifted.java | 3 +- .../src/mage/cards/s/SamutTheTested.java | 3 +- .../src/mage/cards/s/SamutTyrantSmasher.java | 3 +- .../src/mage/cards/s/SarkhanDragonsoul.java | 3 +- .../src/mage/cards/s/SarkhanFireblood.java | 3 +- .../mage/cards/s/SarkhanTheDragonspeaker.java | 3 +- Mage.Sets/src/mage/cards/s/SarkhanTheMad.java | 3 +- .../mage/cards/s/SarkhanTheMasterless.java | 3 +- .../src/mage/cards/s/SarkhanUnbroken.java | 3 +- Mage.Sets/src/mage/cards/s/SarkhanVol.java | 3 +- .../src/mage/cards/s/SerraTheBenevolent.java | 3 +- .../src/mage/cards/s/SorinGrimNemesis.java | 3 +- .../mage/cards/s/SorinImperiousBloodlord.java | 3 +- .../mage/cards/s/SorinLordOfInnistrad.java | 3 +- Mage.Sets/src/mage/cards/s/SorinMarkov.java | 3 +- .../src/mage/cards/s/SorinSolemnVisitor.java | 3 +- .../src/mage/cards/s/SorinTheMirthless.java | 3 +- .../src/mage/cards/s/SorinVampireLord.java | 3 +- .../mage/cards/s/SorinVengefulBloodlord.java | 3 +- .../src/mage/cards/s/SupremeLeaderSnoke.java | 3 +- .../mage/cards/t/TamiyoCollectorOfTales.java | 3 +- .../mage/cards/t/TamiyoCompleatedSage.java | 115 +++++++++++ .../mage/cards/t/TamiyoFieldResearcher.java | 3 +- .../src/mage/cards/t/TamiyoTheMoonSage.java | 3 +- .../mage/cards/t/TeferiHeroOfDominaria.java | 3 +- .../src/mage/cards/t/TeferiMasterOfTime.java | 3 +- .../mage/cards/t/TeferiTemporalArchmage.java | 3 +- .../src/mage/cards/t/TeferiTimeRaveler.java | 3 +- .../src/mage/cards/t/TeferiTimebender.java | 3 +- .../mage/cards/t/TeferiTimelessVoyager.java | 3 +- .../mage/cards/t/TeferiWhoSlowsTheSunset.java | 3 +- .../mage/cards/t/TeveshSzatDoomOfFools.java | 3 +- .../src/mage/cards/t/TeyoTheShieldmage.java | 3 +- .../mage/cards/t/TezzeretAgentOfBolas.java | 3 +- .../mage/cards/t/TezzeretArtificeMaster.java | 3 +- .../mage/cards/t/TezzeretBetrayerOfFlesh.java | 3 +- .../mage/cards/t/TezzeretCruelMachinist.java | 3 +- .../mage/cards/t/TezzeretMasterOfMetal.java | 3 +- .../cards/t/TezzeretMasterOfTheBridge.java | 3 +- .../src/mage/cards/t/TezzeretTheSchemer.java | 3 +- .../src/mage/cards/t/TezzeretTheSeeker.java | 3 +- .../src/mage/cards/t/TheRoyalScions.java | 3 +- Mage.Sets/src/mage/cards/t/TheWanderer.java | 3 +- .../src/mage/cards/t/TheWanderingEmperor.java | 3 +- .../mage/cards/t/TibaltRakishInstigator.java | 3 +- .../mage/cards/t/TibaltTheFiendBlooded.java | 3 +- .../mage/cards/t/TrespassingSouleater.java | 19 +- Mage.Sets/src/mage/cards/t/TyvarKell.java | 3 +- .../src/mage/cards/u/UginTheIneffable.java | 3 +- .../src/mage/cards/u/UginTheSpiritDragon.java | 3 +- .../mage/cards/u/UrzaAcademyHeadmaster.java | 3 +- .../src/mage/cards/v/ValkiGodOfLies.java | 3 +- .../src/mage/cards/v/VenserTheSojourner.java | 3 +- .../src/mage/cards/v/VivienArkbowRanger.java | 3 +- .../cards/v/VivienChampionOfTheWilds.java | 3 +- .../mage/cards/v/VivienMonstersAdvocate.java | 3 +- .../mage/cards/v/VivienNaturesAvenger.java | 3 +- .../src/mage/cards/v/VivienOfTheArkbow.java | 3 +- Mage.Sets/src/mage/cards/v/VivienReid.java | 3 +- .../src/mage/cards/v/VraskaGolgariQueen.java | 3 +- .../src/mage/cards/v/VraskaRegalGorgon.java | 3 +- .../src/mage/cards/v/VraskaRelicSeeker.java | 3 +- .../mage/cards/v/VraskaSchemingGorgon.java | 3 +- .../mage/cards/v/VraskaSwarmsEminence.java | 3 +- .../src/mage/cards/v/VraskaTheUnseen.java | 3 +- Mage.Sets/src/mage/cards/w/WillKenrith.java | 3 +- Mage.Sets/src/mage/cards/w/WrennAndSeven.java | 3 +- Mage.Sets/src/mage/cards/w/WrennAndSix.java | 3 +- .../src/mage/cards/x/XenagosTheReveler.java | 3 +- .../src/mage/cards/y/YodaJediMaster.java | 3 +- .../mage/cards/z/ZarielArchdukeOfAvernus.java | 3 +- .../src/mage/sets/KamigawaNeonDynasty.java | 1 + .../abilities/keywords/CompleatedTest.java | 47 +++++ .../mage/test/cards/copy/SparkDoubleTest.java | 2 - .../NissaStewardOfElementsTest.java | 54 +++++ .../cards/single/khm/ValkiGodOfLiesTest.java | 1 - .../test/commander/duel/OpalPalaceTest.java | 1 - Mage/src/main/java/mage/MageObjectImpl.java | 16 +- Mage/src/main/java/mage/ManaSymbol.java | 10 + .../main/java/mage/abilities/AbilityImpl.java | 22 +- .../mage/abilities/ActivatedAbilityImpl.java | 41 +--- ...alkerEntersWithLoyaltyCountersAbility.java | 39 ---- .../abilities/costs/mana/ColoredManaCost.java | 2 +- .../abilities/costs/mana/HybridManaCost.java | 8 +- .../mage/abilities/costs/mana/ManaCost.java | 7 +- .../abilities/costs/mana/ManaCostImpl.java | 15 ++ .../mage/abilities/costs/mana/ManaCosts.java | 4 + .../abilities/costs/mana/ManaCostsImpl.java | 189 ++++++++++-------- .../costs/mana/PhyrexianManaCost.java | 40 ---- .../abilities/effects/common/CopyEffect.java | 1 + .../abilities/keyword/CompleatedAbility.java | 42 ++++ .../abilities/keyword/TransformAbility.java | 1 + .../java/mage/cards/repository/CardInfo.java | 22 +- .../mage/game/permanent/PermanentCard.java | 1 + .../mage/game/permanent/PermanentImpl.java | 32 ++- .../mage/game/permanent/PermanentToken.java | 1 + .../permanent/token/TamiyosNotebookToken.java | 34 ++++ .../util/functions/CopyTokenFunction.java | 1 + Utils/cardClass.tmpl | 3 +- Utils/keywords.txt | 1 + 293 files changed, 865 insertions(+), 870 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/t/TamiyoCompleatedSage.java create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/CompleatedTest.java create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/planeswalker/NissaStewardOfElementsTest.java delete mode 100644 Mage/src/main/java/mage/abilities/common/PlaneswalkerEntersWithLoyaltyCountersAbility.java delete mode 100644 Mage/src/main/java/mage/abilities/costs/mana/PhyrexianManaCost.java create mode 100644 Mage/src/main/java/mage/abilities/keyword/CompleatedAbility.java create mode 100644 Mage/src/main/java/mage/game/permanent/token/TamiyosNotebookToken.java diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GathererSymbols.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GathererSymbols.java index 963c0ac1d2..6e4dc613b9 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GathererSymbols.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GathererSymbols.java @@ -28,6 +28,7 @@ public class GathererSymbols implements Iterable { private static final String[] symbols = {"W", "U", "B", "R", "G", "W/U", "U/B", "B/R", "R/G", "G/W", "W/B", "U/R", "B/G", "R/W", "G/U", + "W/U/P", "U/B/P", "B/R/P", "R/G/P", "G/W/P", "W/B/P", "U/R/P", "B/G/P", "R/W/P", "G/U/P", "2/W", "2/U", "2/B", "2/R", "2/G", "WP", "UP", "BP", "RP", "GP", "X", "S", "T", "Q", "C", "E"}; diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallSymbolsSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallSymbolsSource.java index b4728feabf..5e22e80d35 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallSymbolsSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallSymbolsSource.java @@ -42,6 +42,7 @@ public class ScryfallSymbolsSource implements Iterable { // copy-past symbols list from gatherer download private static final String[] SYMBOLS_LIST = {"W", "U", "B", "R", "G", "W/U", "U/B", "B/R", "R/G", "G/W", "W/B", "U/R", "B/G", "R/W", "G/U", + "W/U/P", "U/B/P", "B/R/P", "R/G/P", "G/W/P", "W/B/P", "U/R/P", "B/G/P", "R/W/P", "G/U/P", "2/W", "2/U", "2/B", "2/R", "2/G", "WP", "UP", "BP", "RP", "GP", "X", "S", "T", "Q", "C", "E"}; diff --git a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java index d7deb819b4..b24b302109 100644 --- a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java @@ -1668,7 +1668,7 @@ public class ComputerPlayer extends PlayerImpl implements Player { } // pay phyrexian life costs - if (cost instanceof PhyrexianManaCost) { + if (cost.isPhyrexian()) { return cost.pay(ability, game, ability, playerId, false, null) || approvingObject != null; } diff --git a/Mage.Sets/src/mage/cards/a/AjaniAdversaryOfTyrants.java b/Mage.Sets/src/mage/cards/a/AjaniAdversaryOfTyrants.java index c6efc37d16..2fc62a83bc 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniAdversaryOfTyrants.java +++ b/Mage.Sets/src/mage/cards/a/AjaniAdversaryOfTyrants.java @@ -3,7 +3,6 @@ package mage.cards.a; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; @@ -38,7 +37,7 @@ public final class AjaniAdversaryOfTyrants extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.AJANI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Put a +1/+1 counter on each of up to two target creatures. Ability ability = new LoyaltyAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), 1); diff --git a/Mage.Sets/src/mage/cards/a/AjaniCallerOfThePride.java b/Mage.Sets/src/mage/cards/a/AjaniCallerOfThePride.java index 22cf714c4b..67d51825f0 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniCallerOfThePride.java +++ b/Mage.Sets/src/mage/cards/a/AjaniCallerOfThePride.java @@ -4,7 +4,6 @@ package mage.cards.a; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.ControllerLifeCount; import mage.abilities.effects.Effect; import mage.abilities.effects.Effects; @@ -34,7 +33,7 @@ public final class AjaniCallerOfThePride extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.AJANI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Put a +1/+1 counter on up to one target creature. Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance()); effect.setText("Put a +1/+1 counter on up to one target creature"); diff --git a/Mage.Sets/src/mage/cards/a/AjaniGoldmane.java b/Mage.Sets/src/mage/cards/a/AjaniGoldmane.java index 6efe3fc8d7..c0b364b259 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniGoldmane.java +++ b/Mage.Sets/src/mage/cards/a/AjaniGoldmane.java @@ -4,7 +4,6 @@ package mage.cards.a; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.Effects; @@ -35,7 +34,7 @@ public final class AjaniGoldmane extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.AJANI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: You gain 2 life. this.addAbility(new LoyaltyAbility(new GainLifeEffect(2), 1)); diff --git a/Mage.Sets/src/mage/cards/a/AjaniInspiringLeader.java b/Mage.Sets/src/mage/cards/a/AjaniInspiringLeader.java index 87c510e8f3..e7eeb863bb 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniInspiringLeader.java +++ b/Mage.Sets/src/mage/cards/a/AjaniInspiringLeader.java @@ -2,7 +2,6 @@ package mage.cards.a; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; @@ -31,7 +30,7 @@ public final class AjaniInspiringLeader extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.AJANI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +2: You gain 2 life. Put two +1/+1 counters on up to one target creature. Ability ability = new LoyaltyAbility(new GainLifeEffect(2), 2); diff --git a/Mage.Sets/src/mage/cards/a/AjaniMentorOfHeroes.java b/Mage.Sets/src/mage/cards/a/AjaniMentorOfHeroes.java index f4cb427e1e..d79182900b 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniMentorOfHeroes.java +++ b/Mage.Sets/src/mage/cards/a/AjaniMentorOfHeroes.java @@ -4,7 +4,6 @@ package mage.cards.a; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; import mage.abilities.effects.common.counter.DistributeCountersEffect; @@ -43,7 +42,7 @@ public final class AjaniMentorOfHeroes extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.AJANI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Distribute three +1/+1 counters among one, two, or three target creatures you control Ability ability = new LoyaltyAbility(new DistributeCountersEffect(CounterType.P1P1, 3, false, "one, two, or three target creatures you control"), 1); diff --git a/Mage.Sets/src/mage/cards/a/AjaniSteadfast.java b/Mage.Sets/src/mage/cards/a/AjaniSteadfast.java index c951d1b4f0..4d84300953 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniSteadfast.java +++ b/Mage.Sets/src/mage/cards/a/AjaniSteadfast.java @@ -3,7 +3,6 @@ package mage.cards.a; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; @@ -44,7 +43,7 @@ public final class AjaniSteadfast extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.AJANI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Until end of turn, up to one target creature gets +1/+1 and gains first strike, vigilance, and lifelink. Effect effect = new BoostTargetEffect(1, 1, Duration.EndOfTurn); diff --git a/Mage.Sets/src/mage/cards/a/AjaniStrengthOfThePride.java b/Mage.Sets/src/mage/cards/a/AjaniStrengthOfThePride.java index d0f076bbe3..b8154b1c06 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniStrengthOfThePride.java +++ b/Mage.Sets/src/mage/cards/a/AjaniStrengthOfThePride.java @@ -2,7 +2,6 @@ package mage.cards.a; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; @@ -32,7 +31,7 @@ public final class AjaniStrengthOfThePride extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.AJANI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: You gain life equal to the number of creatures you control plus the number of planeswalkers you control. this.addAbility(new LoyaltyAbility(new GainLifeEffect( diff --git a/Mage.Sets/src/mage/cards/a/AjaniTheGreathearted.java b/Mage.Sets/src/mage/cards/a/AjaniTheGreathearted.java index 837660006d..04fed49727 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniTheGreathearted.java +++ b/Mage.Sets/src/mage/cards/a/AjaniTheGreathearted.java @@ -2,7 +2,6 @@ package mage.cards.a; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; @@ -38,7 +37,7 @@ public final class AjaniTheGreathearted extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.AJANI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Creatures you control have vigilance. this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( diff --git a/Mage.Sets/src/mage/cards/a/AjaniUnyielding.java b/Mage.Sets/src/mage/cards/a/AjaniUnyielding.java index 50a5472824..a6c189f003 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniUnyielding.java +++ b/Mage.Sets/src/mage/cards/a/AjaniUnyielding.java @@ -3,7 +3,6 @@ package mage.cards.a; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.ExileAndGainLifeEqualPowerTargetEffect; import mage.abilities.effects.common.RevealLibraryPutIntoHandEffect; import mage.abilities.effects.common.counter.AddCountersAllEffect; @@ -41,7 +40,7 @@ public final class AjaniUnyielding extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.AJANI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +2: Reveal the top three cards of your library. Put all nonland permanent cards revealed this way into your hand and the rest on the bottom of your library in any order. this.addAbility(new LoyaltyAbility(new RevealLibraryPutIntoHandEffect(3, nonlandPermanentFilter, Zone.LIBRARY), 2)); diff --git a/Mage.Sets/src/mage/cards/a/AjaniValiantProtector.java b/Mage.Sets/src/mage/cards/a/AjaniValiantProtector.java index 5e8025bcb7..1bff23aab2 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniValiantProtector.java +++ b/Mage.Sets/src/mage/cards/a/AjaniValiantProtector.java @@ -3,7 +3,6 @@ package mage.cards.a; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.ControllerLifeCount; import mage.abilities.effects.Effect; import mage.abilities.effects.common.RevealCardsFromLibraryUntilEffect; @@ -32,7 +31,7 @@ public final class AjaniValiantProtector extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.AJANI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +2: Put two +1/+1 counters on up to one target creature. Ability ability = new LoyaltyAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance(2)), 2); diff --git a/Mage.Sets/src/mage/cards/a/AjaniVengeant.java b/Mage.Sets/src/mage/cards/a/AjaniVengeant.java index 57eee39eda..2832571797 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniVengeant.java +++ b/Mage.Sets/src/mage/cards/a/AjaniVengeant.java @@ -3,7 +3,6 @@ package mage.cards.a; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effects; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DestroyAllControlledTargetEffect; @@ -36,7 +35,7 @@ public final class AjaniVengeant extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.AJANI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Target permanent doesn't untap during its controller's next untap step. LoyaltyAbility ability1 = new LoyaltyAbility(new DontUntapInControllersNextUntapStepTargetEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/a/AjaniWiseCounselor.java b/Mage.Sets/src/mage/cards/a/AjaniWiseCounselor.java index e7fd5f8837..33feec0fdd 100644 --- a/Mage.Sets/src/mage/cards/a/AjaniWiseCounselor.java +++ b/Mage.Sets/src/mage/cards/a/AjaniWiseCounselor.java @@ -2,7 +2,6 @@ package mage.cards.a; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.ControllerLifeCount; import mage.abilities.dynamicvalue.common.CreaturesYouControlCount; import mage.abilities.effects.common.GainLifeEffect; @@ -29,7 +28,7 @@ public final class AjaniWiseCounselor extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.AJANI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +2: You gain 1 life for each creature you control. this.addAbility(new LoyaltyAbility(new GainLifeEffect(CreaturesYouControlCount.instance) diff --git a/Mage.Sets/src/mage/cards/a/AminatouTheFateshifter.java b/Mage.Sets/src/mage/cards/a/AminatouTheFateshifter.java index 9125e8fc0f..6ef5a39ee3 100644 --- a/Mage.Sets/src/mage/cards/a/AminatouTheFateshifter.java +++ b/Mage.Sets/src/mage/cards/a/AminatouTheFateshifter.java @@ -3,7 +3,6 @@ package mage.cards.a; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.CanBeYourCommanderAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.ExileTargetForSourceEffect; @@ -46,7 +45,7 @@ public class AminatouTheFateshifter extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.AMINATOU); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Draw a card, then put a card from your hand on top of your library. Ability ability = new LoyaltyAbility(new AminatouPlusEffect(), +1); diff --git a/Mage.Sets/src/mage/cards/a/AngrathCaptainOfChaos.java b/Mage.Sets/src/mage/cards/a/AngrathCaptainOfChaos.java index 9827fa6684..57c302b73f 100644 --- a/Mage.Sets/src/mage/cards/a/AngrathCaptainOfChaos.java +++ b/Mage.Sets/src/mage/cards/a/AngrathCaptainOfChaos.java @@ -1,7 +1,6 @@ package mage.cards.a; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.keyword.AmassEffect; @@ -26,7 +25,7 @@ public final class AngrathCaptainOfChaos extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ANGRATH); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Creatures you control have menace. this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( diff --git a/Mage.Sets/src/mage/cards/a/AngrathMinotaurPirate.java b/Mage.Sets/src/mage/cards/a/AngrathMinotaurPirate.java index 69a0669e36..33a1590efc 100644 --- a/Mage.Sets/src/mage/cards/a/AngrathMinotaurPirate.java +++ b/Mage.Sets/src/mage/cards/a/AngrathMinotaurPirate.java @@ -2,7 +2,6 @@ package mage.cards.a; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effects; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageAllControlledTargetEffect; @@ -37,7 +36,7 @@ public final class AngrathMinotaurPirate extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ANGRATH); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +2: Angrath, Minotaur Pirate deals 1 damage to target opponent and each creature that player controls. Effects effects1 = new Effects(); diff --git a/Mage.Sets/src/mage/cards/a/AngrathTheFlameChained.java b/Mage.Sets/src/mage/cards/a/AngrathTheFlameChained.java index 294fdd7e7a..b9de629fde 100644 --- a/Mage.Sets/src/mage/cards/a/AngrathTheFlameChained.java +++ b/Mage.Sets/src/mage/cards/a/AngrathTheFlameChained.java @@ -5,7 +5,6 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.LoseLifeOpponentsEffect; @@ -41,7 +40,7 @@ public final class AngrathTheFlameChained extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ANGRATH); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Each opponent discards a card and loses 2 life. LoyaltyAbility ability = new LoyaltyAbility(new DiscardEachPlayerEffect(TargetController.OPPONENT), 1); diff --git a/Mage.Sets/src/mage/cards/a/ArlinnKord.java b/Mage.Sets/src/mage/cards/a/ArlinnKord.java index 96f3e33cc2..1c9db9b355 100644 --- a/Mage.Sets/src/mage/cards/a/ArlinnKord.java +++ b/Mage.Sets/src/mage/cards/a/ArlinnKord.java @@ -3,7 +3,6 @@ package mage.cards.a; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.TransformSourceEffect; @@ -34,7 +33,7 @@ public final class ArlinnKord extends CardImpl { this.secondSideCardClazz = ArlinnEmbracedByTheMoon.class; - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Until end of turn, up to one target creature gets +2/+2 and gains vigilance and haste. Effect effect = new BoostTargetEffect(2, 2, Duration.EndOfTurn); diff --git a/Mage.Sets/src/mage/cards/a/ArlinnTheMoonsFury.java b/Mage.Sets/src/mage/cards/a/ArlinnTheMoonsFury.java index f6ce1f507a..3488bbb9a9 100644 --- a/Mage.Sets/src/mage/cards/a/ArlinnTheMoonsFury.java +++ b/Mage.Sets/src/mage/cards/a/ArlinnTheMoonsFury.java @@ -3,7 +3,6 @@ package mage.cards.a; import mage.Mana; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.mana.BasicManaEffect; import mage.abilities.keyword.HasteAbility; @@ -28,7 +27,7 @@ public final class ArlinnTheMoonsFury extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ARLINN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); this.color.setRed(true); this.color.setGreen(true); this.nightCard = true; diff --git a/Mage.Sets/src/mage/cards/a/ArlinnThePacksHope.java b/Mage.Sets/src/mage/cards/a/ArlinnThePacksHope.java index 7a7a2ccf99..14d73c31ae 100644 --- a/Mage.Sets/src/mage/cards/a/ArlinnThePacksHope.java +++ b/Mage.Sets/src/mage/cards/a/ArlinnThePacksHope.java @@ -2,7 +2,6 @@ package mage.cards.a; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.CastAsThoughItHadFlashAllEffect; @@ -33,7 +32,7 @@ public final class ArlinnThePacksHope extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ARLINN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); this.secondSideCardClazz = mage.cards.a.ArlinnTheMoonsFury.class; // Daybound diff --git a/Mage.Sets/src/mage/cards/a/ArlinnVoiceOfThePack.java b/Mage.Sets/src/mage/cards/a/ArlinnVoiceOfThePack.java index 0f671dc4c7..c1ea5e18b5 100644 --- a/Mage.Sets/src/mage/cards/a/ArlinnVoiceOfThePack.java +++ b/Mage.Sets/src/mage/cards/a/ArlinnVoiceOfThePack.java @@ -2,7 +2,6 @@ package mage.cards.a; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.common.CreateTokenEffect; @@ -28,7 +27,7 @@ public final class ArlinnVoiceOfThePack extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ARLINN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(7)); + this.setStartingLoyalty(7); // Each creature you control that's a Wolf or Werewolf enters the battlefield with an additional +1/+1 counter on it. this.addAbility(new SimpleStaticAbility(new ArlinnVoiceOfThePackReplacementEffect())); diff --git a/Mage.Sets/src/mage/cards/a/AshiokDreamRender.java b/Mage.Sets/src/mage/cards/a/AshiokDreamRender.java index ac680020c0..cd5f208f85 100644 --- a/Mage.Sets/src/mage/cards/a/AshiokDreamRender.java +++ b/Mage.Sets/src/mage/cards/a/AshiokDreamRender.java @@ -3,7 +3,6 @@ package mage.cards.a; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousRuleModifyingEffectImpl; import mage.abilities.effects.common.ExileGraveyardAllPlayersEffect; @@ -29,7 +28,7 @@ public final class AshiokDreamRender extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ASHIOK); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Spells and abilities your opponents control can't cause their controller to search their library. this.addAbility(new SimpleStaticAbility(new AshiokDreamRenderEffect())); diff --git a/Mage.Sets/src/mage/cards/a/AshiokNightmareMuse.java b/Mage.Sets/src/mage/cards/a/AshiokNightmareMuse.java index 6c783fb101..b9bf0eee65 100644 --- a/Mage.Sets/src/mage/cards/a/AshiokNightmareMuse.java +++ b/Mage.Sets/src/mage/cards/a/AshiokNightmareMuse.java @@ -4,7 +4,6 @@ import java.util.UUID; import mage.ApprovingObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.Card; @@ -30,7 +29,7 @@ public final class AshiokNightmareMuse extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ASHIOK); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Create a 2/3 blue and black Nightmare creature token with "Whenever this creature attacks or blocks, each opponent exiles the top two cards of their library." this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new AshiokNightmareMuseToken()), 1)); diff --git a/Mage.Sets/src/mage/cards/a/AshiokNightmareWeaver.java b/Mage.Sets/src/mage/cards/a/AshiokNightmareWeaver.java index e52d691113..5dbeb2719a 100644 --- a/Mage.Sets/src/mage/cards/a/AshiokNightmareWeaver.java +++ b/Mage.Sets/src/mage/cards/a/AshiokNightmareWeaver.java @@ -4,7 +4,6 @@ package mage.cards.a; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.costs.Cost; import mage.abilities.costs.common.PayVariableLoyaltyCost; import mage.abilities.effects.ContinuousEffectImpl; @@ -35,7 +34,7 @@ public final class AshiokNightmareWeaver extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ASHIOK); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +2: Exile the top three cards of target opponent's library. LoyaltyAbility ability = new LoyaltyAbility(new AshiokNightmareWeaverExileEffect(), 2); diff --git a/Mage.Sets/src/mage/cards/a/AshiokSculptorOfFears.java b/Mage.Sets/src/mage/cards/a/AshiokSculptorOfFears.java index ec9e24c8fd..a2feb01581 100644 --- a/Mage.Sets/src/mage/cards/a/AshiokSculptorOfFears.java +++ b/Mage.Sets/src/mage/cards/a/AshiokSculptorOfFears.java @@ -2,7 +2,6 @@ package mage.cards.a; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.MillCardsEachPlayerEffect; @@ -34,7 +33,7 @@ public final class AshiokSculptorOfFears extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ASHIOK); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +2: Draw a card. Each player puts the top two cards of their library into their graveyard. Ability ability = new LoyaltyAbility( diff --git a/Mage.Sets/src/mage/cards/a/AurraSingBaneOfJedi.java b/Mage.Sets/src/mage/cards/a/AurraSingBaneOfJedi.java index 0d33dabdcc..ff4648cf3e 100644 --- a/Mage.Sets/src/mage/cards/a/AurraSingBaneOfJedi.java +++ b/Mage.Sets/src/mage/cards/a/AurraSingBaneOfJedi.java @@ -2,7 +2,6 @@ package mage.cards.a; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageControllerEffect; @@ -38,7 +37,7 @@ public final class AurraSingBaneOfJedi extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.AURRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: You may have {this} deal 2 damage to target creature. If you don't, {this} deals 1 damage to you. Ability ability = new LoyaltyAbility(new AurraSingBaneOfJediEffect(), +1); diff --git a/Mage.Sets/src/mage/cards/b/BasriDevotedPaladin.java b/Mage.Sets/src/mage/cards/b/BasriDevotedPaladin.java index c484ec5995..310a1694c4 100644 --- a/Mage.Sets/src/mage/cards/b/BasriDevotedPaladin.java +++ b/Mage.Sets/src/mage/cards/b/BasriDevotedPaladin.java @@ -3,7 +3,6 @@ package mage.cards.b; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; @@ -39,7 +38,7 @@ public final class BasriDevotedPaladin extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.BASRI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Put a +1/+1 counter on up to one target creature. It gains vigilance until end of turn. Ability ability = new LoyaltyAbility(new AddCountersTargetEffect( diff --git a/Mage.Sets/src/mage/cards/b/BasriKet.java b/Mage.Sets/src/mage/cards/b/BasriKet.java index 2c4bd29ff9..d1fbff6063 100644 --- a/Mage.Sets/src/mage/cards/b/BasriKet.java +++ b/Mage.Sets/src/mage/cards/b/BasriKet.java @@ -3,7 +3,6 @@ package mage.cards.b; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -39,7 +38,7 @@ public final class BasriKet extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.BASRI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Put a +1/+1 counter on up to one target creature. It gains indestructible until end of turn. Ability ability = new LoyaltyAbility(new AddCountersTargetEffect( diff --git a/Mage.Sets/src/mage/cards/b/BlindingSouleater.java b/Mage.Sets/src/mage/cards/b/BlindingSouleater.java index b2e5100586..e9fd4a7a2e 100644 --- a/Mage.Sets/src/mage/cards/b/BlindingSouleater.java +++ b/Mage.Sets/src/mage/cards/b/BlindingSouleater.java @@ -1,28 +1,25 @@ - package mage.cards.b; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.costs.mana.PhyrexianManaCost; +import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.TapTargetEffect; 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.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author North */ public final class BlindingSouleater extends CardImpl { public BlindingSouleater(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}"); this.subtype.add(SubType.PHYREXIAN); this.subtype.add(SubType.CLERIC); @@ -30,9 +27,7 @@ public final class BlindingSouleater extends CardImpl { this.toughness = new MageInt(3); // {W/P},{T}: Tap target creature. ( can be paid with either or 2 life.) - SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, - new TapTargetEffect(), - new PhyrexianManaCost(ColoredManaSymbol.W)); + SimpleActivatedAbility ability = new SimpleActivatedAbility(new TapTargetEffect(), new ManaCostsImpl<>("{W/P}")); ability.addCost(new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/c/CalixDestinysHand.java b/Mage.Sets/src/mage/cards/c/CalixDestinysHand.java index 13460df08d..544d46fbda 100644 --- a/Mage.Sets/src/mage/cards/c/CalixDestinysHand.java +++ b/Mage.Sets/src/mage/cards/c/CalixDestinysHand.java @@ -4,7 +4,6 @@ import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; @@ -55,7 +54,7 @@ public final class CalixDestinysHand extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CALIX); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Look at the top four cards of your library. You may reveal an enchantment card from among them and put that card into your hand. Put the rest on the bottom of your library in a random order. this.addAbility(new LoyaltyAbility(new LookLibraryAndPickControllerEffect( diff --git a/Mage.Sets/src/mage/cards/c/ChandraAblaze.java b/Mage.Sets/src/mage/cards/c/ChandraAblaze.java index 2e665564df..9dbc678a2d 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraAblaze.java +++ b/Mage.Sets/src/mage/cards/c/ChandraAblaze.java @@ -3,7 +3,6 @@ package mage.cards.c; import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DrawCardAllEffect; @@ -39,7 +38,7 @@ public final class ChandraAblaze extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Discard a card. If a red card is discarded this way, Chandra Ablaze deals 4 damage to any target. LoyaltyAbility ability = new LoyaltyAbility(new ChandraAblazeEffect1(), 1); diff --git a/Mage.Sets/src/mage/cards/c/ChandraAcolyteOfFlame.java b/Mage.Sets/src/mage/cards/c/ChandraAcolyteOfFlame.java index acce249973..2ceeb02b12 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraAcolyteOfFlame.java +++ b/Mage.Sets/src/mage/cards/c/ChandraAcolyteOfFlame.java @@ -3,7 +3,6 @@ package mage.cards.c; import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.effects.*; import mage.abilities.effects.common.InfoEffect; @@ -55,7 +54,7 @@ public final class ChandraAcolyteOfFlame extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // 0: Put a loyalty counter on each red planeswalker you control. this.addAbility(new LoyaltyAbility(new AddCountersAllEffect(CounterType.LOYALTY.createInstance(), filter), 0)); diff --git a/Mage.Sets/src/mage/cards/c/ChandraAwakenedInferno.java b/Mage.Sets/src/mage/cards/c/ChandraAwakenedInferno.java index a9781b1009..d188189f6f 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraAwakenedInferno.java +++ b/Mage.Sets/src/mage/cards/c/ChandraAwakenedInferno.java @@ -3,7 +3,6 @@ package mage.cards.c; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.CantBeCounteredSourceAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.GetXLoyaltyValue; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageAllEffect; @@ -40,7 +39,7 @@ public final class ChandraAwakenedInferno extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(6)); + this.setStartingLoyalty(6); // This spell can't be countered. this.addAbility(new CantBeCounteredSourceAbility()); diff --git a/Mage.Sets/src/mage/cards/c/ChandraBoldPyromancer.java b/Mage.Sets/src/mage/cards/c/ChandraBoldPyromancer.java index 3687ef58e8..c48a05742d 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraBoldPyromancer.java +++ b/Mage.Sets/src/mage/cards/c/ChandraBoldPyromancer.java @@ -5,7 +5,6 @@ import java.util.UUID; import mage.Mana; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effects; import mage.abilities.effects.mana.BasicManaEffect; import mage.abilities.effects.common.DamageAllControlledTargetEffect; @@ -30,7 +29,7 @@ public final class ChandraBoldPyromancer extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Add {R}{R}. Chandra, Bold Pyromancer deals 2 damage to target player. Ability ability = new LoyaltyAbility(new BasicManaEffect(Mana.RedMana(2)), +1); diff --git a/Mage.Sets/src/mage/cards/c/ChandraDressedToKill.java b/Mage.Sets/src/mage/cards/c/ChandraDressedToKill.java index ead71a7256..be5a74be30 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraDressedToKill.java +++ b/Mage.Sets/src/mage/cards/c/ChandraDressedToKill.java @@ -7,7 +7,6 @@ import mage.MageObject; import mage.Mana; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -39,7 +38,7 @@ public final class ChandraDressedToKill extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Add {R}. Chandra, Dressed to Kill deals 1 damage to up to one target player or planeswalker. Ability ability = new LoyaltyAbility(new AddManaToManaPoolSourceControllerEffect(new Mana(ManaType.RED, 1)), 1); diff --git a/Mage.Sets/src/mage/cards/c/ChandraFireArtisan.java b/Mage.Sets/src/mage/cards/c/ChandraFireArtisan.java index bd3011a153..85cb7459a9 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraFireArtisan.java +++ b/Mage.Sets/src/mage/cards/c/ChandraFireArtisan.java @@ -4,7 +4,6 @@ import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageTargetEffect; @@ -29,7 +28,7 @@ public final class ChandraFireArtisan extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // Whenever one or more loyalty counters are removed from Chandra, Fire Artisan, she deals that much damage to target opponent or planeswalker. this.addAbility(new ChandraFireArtisanTriggeredAbility()); diff --git a/Mage.Sets/src/mage/cards/c/ChandraFlamecaller.java b/Mage.Sets/src/mage/cards/c/ChandraFlamecaller.java index 7a27babd50..97e7fa4380 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraFlamecaller.java +++ b/Mage.Sets/src/mage/cards/c/ChandraFlamecaller.java @@ -2,7 +2,6 @@ package mage.cards.c; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.GetXLoyaltyValue; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; @@ -30,7 +29,7 @@ public final class ChandraFlamecaller extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Create two 3/1 red Elemental creature tokens with haste. Exile them at the beginning of the next end step. this.addAbility(new LoyaltyAbility(new ChandraElementalEffect(), 1)); diff --git a/Mage.Sets/src/mage/cards/c/ChandraFlamesCatalyst.java b/Mage.Sets/src/mage/cards/c/ChandraFlamesCatalyst.java index 9c78e245a3..91763674b5 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraFlamesCatalyst.java +++ b/Mage.Sets/src/mage/cards/c/ChandraFlamesCatalyst.java @@ -3,7 +3,6 @@ package mage.cards.c; import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.CastCardFromGraveyardThenExileItEffect; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamagePlayersEffect; @@ -39,7 +38,7 @@ public final class ChandraFlamesCatalyst extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Chandra, Flame's Catalyst deals 3 damage to each opponent. this.addAbility(new LoyaltyAbility(new DamagePlayersEffect(3, TargetController.OPPONENT), 1)); diff --git a/Mage.Sets/src/mage/cards/c/ChandraFlamesFury.java b/Mage.Sets/src/mage/cards/c/ChandraFlamesFury.java index 454b0153f8..8ed4fa1f39 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraFlamesFury.java +++ b/Mage.Sets/src/mage/cards/c/ChandraFlamesFury.java @@ -2,7 +2,6 @@ package mage.cards.c; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageAllControlledTargetEffect; import mage.abilities.effects.common.DamageTargetEffect; @@ -32,7 +31,7 @@ public final class ChandraFlamesFury extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Chandra, Flame's Fury deals 2 damage to any target. Ability ability = new LoyaltyAbility(new DamageTargetEffect(2), 1); diff --git a/Mage.Sets/src/mage/cards/c/ChandraGremlinWrangler.java b/Mage.Sets/src/mage/cards/c/ChandraGremlinWrangler.java index 643baa27a8..d4cf5ff561 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraGremlinWrangler.java +++ b/Mage.Sets/src/mage/cards/c/ChandraGremlinWrangler.java @@ -2,7 +2,6 @@ package mage.cards.c; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.CreateTokenEffect; @@ -37,7 +36,7 @@ public final class ChandraGremlinWrangler extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Create a 2/2 red Gremlin creature token. this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new GremlinToken()), 1)); diff --git a/Mage.Sets/src/mage/cards/c/ChandraHeartOfFire.java b/Mage.Sets/src/mage/cards/c/ChandraHeartOfFire.java index 4453a0e426..1a0f543285 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraHeartOfFire.java +++ b/Mage.Sets/src/mage/cards/c/ChandraHeartOfFire.java @@ -4,7 +4,6 @@ import mage.Mana; import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageTargetEffect; @@ -43,7 +42,7 @@ public final class ChandraHeartOfFire extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Discard your hand, then exile the top three cards of your library. Until end of turn, you may play cards exiled this way. Ability ability = new LoyaltyAbility(new DiscardHandControllerEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/c/ChandraNalaar.java b/Mage.Sets/src/mage/cards/c/ChandraNalaar.java index 09c6b32953..f4ef053a68 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraNalaar.java +++ b/Mage.Sets/src/mage/cards/c/ChandraNalaar.java @@ -2,7 +2,6 @@ package mage.cards.c; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.GetXLoyaltyValue; import mage.abilities.effects.Effects; import mage.abilities.effects.common.DamageAllControlledTargetEffect; @@ -28,7 +27,7 @@ public final class ChandraNalaar extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(6)); + this.setStartingLoyalty(6); // +1: Chandra Nalaar deals 1 damage to target player or planeswalker. LoyaltyAbility ability1 = new LoyaltyAbility(new DamageTargetEffect(1), 1); diff --git a/Mage.Sets/src/mage/cards/c/ChandraNovicePyromancer.java b/Mage.Sets/src/mage/cards/c/ChandraNovicePyromancer.java index e262ee17f9..cfa960e489 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraNovicePyromancer.java +++ b/Mage.Sets/src/mage/cards/c/ChandraNovicePyromancer.java @@ -3,7 +3,6 @@ package mage.cards.c; import mage.Mana; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.mana.BasicManaEffect; @@ -31,7 +30,7 @@ public final class ChandraNovicePyromancer extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Elementals you control get +2/+0 until end of turn. this.addAbility(new LoyaltyAbility( diff --git a/Mage.Sets/src/mage/cards/c/ChandraPyrogenius.java b/Mage.Sets/src/mage/cards/c/ChandraPyrogenius.java index 3c4249d7b1..3797718013 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraPyrogenius.java +++ b/Mage.Sets/src/mage/cards/c/ChandraPyrogenius.java @@ -3,7 +3,6 @@ package mage.cards.c; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.Effects; import mage.abilities.effects.common.DamageAllControlledTargetEffect; @@ -31,7 +30,7 @@ public final class ChandraPyrogenius extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +2: Chandra, Pyrogenius deals 2 damage to each opponent. this.addAbility(new LoyaltyAbility(new DamagePlayersEffect(Outcome.Damage, StaticValue.get(2), TargetController.OPPONENT), 2)); diff --git a/Mage.Sets/src/mage/cards/c/ChandraPyromaster.java b/Mage.Sets/src/mage/cards/c/ChandraPyromaster.java index 7ab9781e7c..3eb7d4bcc1 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraPyromaster.java +++ b/Mage.Sets/src/mage/cards/c/ChandraPyromaster.java @@ -7,7 +7,6 @@ import mage.ApprovingObject; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.asthought.PlayFromNotOwnHandZoneTargetEffect; @@ -36,7 +35,7 @@ public final class ChandraPyromaster extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Chandra, Pyromaster deals 1 damage to target player and 1 damage to // up to one target creature that player controls. That creature can't block this turn. diff --git a/Mage.Sets/src/mage/cards/c/ChandraRoaringFlame.java b/Mage.Sets/src/mage/cards/c/ChandraRoaringFlame.java index 0308ad1de7..ce08c704fe 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraRoaringFlame.java +++ b/Mage.Sets/src/mage/cards/c/ChandraRoaringFlame.java @@ -2,7 +2,6 @@ package mage.cards.c; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; @@ -34,7 +33,7 @@ public final class ChandraRoaringFlame extends CardImpl { this.nightCard = true; - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Chandra, Roaring Flame deals 2 damage to target player. LoyaltyAbility loyaltyAbility = new LoyaltyAbility(new DamageTargetEffect(2), 1); diff --git a/Mage.Sets/src/mage/cards/c/ChandraTheFirebrand.java b/Mage.Sets/src/mage/cards/c/ChandraTheFirebrand.java index 2f18156678..aa85c501d1 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraTheFirebrand.java +++ b/Mage.Sets/src/mage/cards/c/ChandraTheFirebrand.java @@ -4,7 +4,6 @@ package mage.cards.c; import java.util.UUID; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CopyTargetSpellEffect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; @@ -32,7 +31,7 @@ public final class ChandraTheFirebrand extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Chandra, the Firebrand deals 1 damage to any target. LoyaltyAbility ability1 = new LoyaltyAbility(new DamageTargetEffect(1), 1); diff --git a/Mage.Sets/src/mage/cards/c/ChandraTorchOfDefiance.java b/Mage.Sets/src/mage/cards/c/ChandraTorchOfDefiance.java index 0f921f1fd2..651e30a7e3 100644 --- a/Mage.Sets/src/mage/cards/c/ChandraTorchOfDefiance.java +++ b/Mage.Sets/src/mage/cards/c/ChandraTorchOfDefiance.java @@ -6,7 +6,6 @@ import mage.MageObject; import mage.Mana; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamagePlayersEffect; @@ -38,7 +37,7 @@ public final class ChandraTorchOfDefiance extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.CHANDRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Exile the top card of your library. You may cast that card. If you don't, Chandra, Torch of Defiance deals 2 damage to each opponent. LoyaltyAbility ability = new LoyaltyAbility(new ChandraTorchOfDefianceEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/d/DackFayden.java b/Mage.Sets/src/mage/cards/d/DackFayden.java index 6262699e04..bec6d58041 100644 --- a/Mage.Sets/src/mage/cards/d/DackFayden.java +++ b/Mage.Sets/src/mage/cards/d/DackFayden.java @@ -3,7 +3,6 @@ package mage.cards.d; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardTargetEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -27,7 +26,7 @@ public final class DackFayden extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.DACK); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Target player draws two cards, then discards two cards. LoyaltyAbility ability = new LoyaltyAbility(new DrawCardTargetEffect(2), 1); diff --git a/Mage.Sets/src/mage/cards/d/DakkonShadowSlayer.java b/Mage.Sets/src/mage/cards/d/DakkonShadowSlayer.java index 16e694976c..0d398ef26c 100644 --- a/Mage.Sets/src/mage/cards/d/DakkonShadowSlayer.java +++ b/Mage.Sets/src/mage/cards/d/DakkonShadowSlayer.java @@ -3,7 +3,6 @@ package mage.cards.d; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.EntersBattlefieldAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.LandsYouControlCount; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.ExileTargetEffect; @@ -35,7 +34,7 @@ public final class DakkonShadowSlayer extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.DAKKON); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(0)); + this.setStartingLoyalty(0); // Dakkon, Shadow Slayer enters the battlefield with a number of loyalty counters on him equal to the number of lands you control. this.addAbility(new EntersBattlefieldAbility( diff --git a/Mage.Sets/src/mage/cards/d/DarettiIngeniousIconoclast.java b/Mage.Sets/src/mage/cards/d/DarettiIngeniousIconoclast.java index 21f49b8396..fdb27d8017 100644 --- a/Mage.Sets/src/mage/cards/d/DarettiIngeniousIconoclast.java +++ b/Mage.Sets/src/mage/cards/d/DarettiIngeniousIconoclast.java @@ -2,7 +2,6 @@ package mage.cards.d; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.CreateTokenCopyTargetEffect; import mage.abilities.effects.common.CreateTokenEffect; @@ -43,7 +42,7 @@ public final class DarettiIngeniousIconoclast extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.DARETTI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Create a 1/1 colorless Construct artifact creature token with defender. this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new DarettiConstructToken()), 1)); diff --git a/Mage.Sets/src/mage/cards/d/DarettiScrapSavant.java b/Mage.Sets/src/mage/cards/d/DarettiScrapSavant.java index 0a3f91aa63..b5bb44a572 100644 --- a/Mage.Sets/src/mage/cards/d/DarettiScrapSavant.java +++ b/Mage.Sets/src/mage/cards/d/DarettiScrapSavant.java @@ -3,7 +3,6 @@ package mage.cards.d; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.CanBeYourCommanderAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.discard.DiscardAndDrawThatManyEffect; @@ -33,7 +32,7 @@ public final class DarettiScrapSavant extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.DARETTI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +2: Discard up to two cards, then draw that many cards. this.addAbility(new LoyaltyAbility(new DiscardAndDrawThatManyEffect(2), 2)); diff --git a/Mage.Sets/src/mage/cards/d/DarthSidiousSithLord.java b/Mage.Sets/src/mage/cards/d/DarthSidiousSithLord.java index a8d859d128..b06238c860 100644 --- a/Mage.Sets/src/mage/cards/d/DarthSidiousSithLord.java +++ b/Mage.Sets/src/mage/cards/d/DarthSidiousSithLord.java @@ -4,7 +4,6 @@ package mage.cards.d; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.SacrificeEffect; @@ -39,7 +38,7 @@ public final class DarthSidiousSithLord extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SIDIOUS); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +3: Destroy target noncreature permanent. Ability ability = new LoyaltyAbility(new DestroyTargetEffect(), +3); diff --git a/Mage.Sets/src/mage/cards/d/DarthTyranusCountOfSerenno.java b/Mage.Sets/src/mage/cards/d/DarthTyranusCountOfSerenno.java index 5207ab9898..cfa20e3ece 100644 --- a/Mage.Sets/src/mage/cards/d/DarthTyranusCountOfSerenno.java +++ b/Mage.Sets/src/mage/cards/d/DarthTyranusCountOfSerenno.java @@ -4,7 +4,6 @@ package mage.cards.d; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.SearchEffect; @@ -39,7 +38,7 @@ public final class DarthTyranusCountOfSerenno extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.DOOKU); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Up to one target creature gets -6/-0 until your next turn. Effect effect = new BoostTargetEffect(-6, 0, Duration.UntilYourNextTurn); diff --git a/Mage.Sets/src/mage/cards/d/DavrielRogueShadowmage.java b/Mage.Sets/src/mage/cards/d/DavrielRogueShadowmage.java index 7209a03555..efbca10c54 100644 --- a/Mage.Sets/src/mage/cards/d/DavrielRogueShadowmage.java +++ b/Mage.Sets/src/mage/cards/d/DavrielRogueShadowmage.java @@ -3,7 +3,6 @@ package mage.cards.d; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.condition.Condition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.DamageTargetEffect; @@ -27,7 +26,7 @@ public final class DavrielRogueShadowmage extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.DAVRIEL); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // At the beginning of each opponent's upkeep, if that player has one or fewer cards in hand, Davriel, Rogue Shadowmage deals 2 damage to them. this.addAbility(new ConditionalInterveningIfTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/d/DomriAnarchOfBolas.java b/Mage.Sets/src/mage/cards/d/DomriAnarchOfBolas.java index ef161e24f0..9dbe48f6fb 100644 --- a/Mage.Sets/src/mage/cards/d/DomriAnarchOfBolas.java +++ b/Mage.Sets/src/mage/cards/d/DomriAnarchOfBolas.java @@ -3,7 +3,6 @@ package mage.cards.d; import mage.Mana; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CantBeCounteredControlledEffect; @@ -30,7 +29,7 @@ public final class DomriAnarchOfBolas extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.DOMRI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // Creatures you control get +1/+0. this.addAbility(new SimpleStaticAbility( diff --git a/Mage.Sets/src/mage/cards/d/DomriChaosBringer.java b/Mage.Sets/src/mage/cards/d/DomriChaosBringer.java index 17e1e62751..f2e5334c50 100644 --- a/Mage.Sets/src/mage/cards/d/DomriChaosBringer.java +++ b/Mage.Sets/src/mage/cards/d/DomriChaosBringer.java @@ -5,7 +5,6 @@ import mage.Mana; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -38,7 +37,7 @@ public final class DomriChaosBringer extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.DOMRI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Add {R} or {G}. If that mana is spent on a creature spell, it gains riot. this.addAbility(new LoyaltyAbility(new DomriChaosBringerEffect(), 1)); diff --git a/Mage.Sets/src/mage/cards/d/DomriCitySmasher.java b/Mage.Sets/src/mage/cards/d/DomriCitySmasher.java index 2475c5f7d1..b719cb3d4c 100644 --- a/Mage.Sets/src/mage/cards/d/DomriCitySmasher.java +++ b/Mage.Sets/src/mage/cards/d/DomriCitySmasher.java @@ -2,7 +2,6 @@ package mage.cards.d; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; @@ -31,7 +30,7 @@ public final class DomriCitySmasher extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.DOMRI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +2: Creatures you control get +1/+1 and gain haste until end of turn. Ability ability = new LoyaltyAbility(new BoostControlledEffect( diff --git a/Mage.Sets/src/mage/cards/d/DomriRade.java b/Mage.Sets/src/mage/cards/d/DomriRade.java index 137e79e033..631d3251ea 100644 --- a/Mage.Sets/src/mage/cards/d/DomriRade.java +++ b/Mage.Sets/src/mage/cards/d/DomriRade.java @@ -3,7 +3,6 @@ package mage.cards.d; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.FightTargetsEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -31,7 +30,7 @@ public final class DomriRade extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.DOMRI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Look at the top card of your library. If it's a creature card, you may reveal it and put it into your hand. this.addAbility(new LoyaltyAbility(new DomriRadeEffect1(), 1)); diff --git a/Mage.Sets/src/mage/cards/d/DovinArchitectOfLaw.java b/Mage.Sets/src/mage/cards/d/DovinArchitectOfLaw.java index 997df68c94..ee86a72467 100644 --- a/Mage.Sets/src/mage/cards/d/DovinArchitectOfLaw.java +++ b/Mage.Sets/src/mage/cards/d/DovinArchitectOfLaw.java @@ -2,7 +2,6 @@ package mage.cards.d; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.*; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -25,7 +24,7 @@ public final class DovinArchitectOfLaw extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.DOVIN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: You gain 2 life and draw a card. Ability ability = new LoyaltyAbility(new GainLifeEffect(2), 1); diff --git a/Mage.Sets/src/mage/cards/d/DovinBaan.java b/Mage.Sets/src/mage/cards/d/DovinBaan.java index e2c59790d5..dd266aa886 100644 --- a/Mage.Sets/src/mage/cards/d/DovinBaan.java +++ b/Mage.Sets/src/mage/cards/d/DovinBaan.java @@ -4,7 +4,6 @@ package mage.cards.d; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousRuleModifyingEffectImpl; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; @@ -21,7 +20,6 @@ import mage.constants.SuperType; import mage.game.Game; import mage.game.command.emblems.DovinBaanEmblem; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.target.common.TargetCreaturePermanent; /** @@ -35,7 +33,7 @@ public final class DovinBaan extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.DOVIN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Until your next turn, up to one target creature gets -3/-0 and its activated abilities can't be activated. Effect effect = new BoostTargetEffect(-3, 0, Duration.UntilYourNextTurn); diff --git a/Mage.Sets/src/mage/cards/d/DovinGrandArbiter.java b/Mage.Sets/src/mage/cards/d/DovinGrandArbiter.java index 4d7d713cfc..dae9751410 100644 --- a/Mage.Sets/src/mage/cards/d/DovinGrandArbiter.java +++ b/Mage.Sets/src/mage/cards/d/DovinGrandArbiter.java @@ -3,7 +3,6 @@ package mage.cards.d; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; import mage.abilities.effects.common.CreateTokenEffect; @@ -33,7 +32,7 @@ public final class DovinGrandArbiter extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.DOVIN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Until end of turn, whenever a creature you control deals combat damage to a player, put a loyalty counter on Dovin, Grand Arbiter. this.addAbility(new LoyaltyAbility(new CreateDelayedTriggeredAbilityEffect( diff --git a/Mage.Sets/src/mage/cards/d/DovinHandOfControl.java b/Mage.Sets/src/mage/cards/d/DovinHandOfControl.java index dc14c627a5..796e70c88f 100644 --- a/Mage.Sets/src/mage/cards/d/DovinHandOfControl.java +++ b/Mage.Sets/src/mage/cards/d/DovinHandOfControl.java @@ -2,7 +2,6 @@ package mage.cards.d; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.PreventDamageByTargetEffect; import mage.abilities.effects.common.PreventDamageToTargetEffect; @@ -36,7 +35,7 @@ public final class DovinHandOfControl extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.DOVIN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Artifact, instant, and sorcery spells your opponents cast cost {1} more to cast. this.addAbility(new SimpleStaticAbility(new SpellsCostIncreasingAllEffect(1, filter, TargetController.OPPONENT))); diff --git a/Mage.Sets/src/mage/cards/e/EllywickTumblestrum.java b/Mage.Sets/src/mage/cards/e/EllywickTumblestrum.java index e7634ce174..f85be8f763 100644 --- a/Mage.Sets/src/mage/cards/e/EllywickTumblestrum.java +++ b/Mage.Sets/src/mage/cards/e/EllywickTumblestrum.java @@ -2,7 +2,6 @@ package mage.cards.e; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.keyword.VentureIntoTheDungeonEffect; @@ -27,7 +26,7 @@ public final class EllywickTumblestrum extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ELLYWICK); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Venture into the dungeon. this.addAbility(new LoyaltyAbility(new VentureIntoTheDungeonEffect(), 1)); diff --git a/Mage.Sets/src/mage/cards/e/ElspethKnightErrant.java b/Mage.Sets/src/mage/cards/e/ElspethKnightErrant.java index 5a24864ad4..d1a7b7671c 100644 --- a/Mage.Sets/src/mage/cards/e/ElspethKnightErrant.java +++ b/Mage.Sets/src/mage/cards/e/ElspethKnightErrant.java @@ -3,7 +3,6 @@ package mage.cards.e; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.Effects; import mage.abilities.effects.common.CreateTokenEffect; @@ -33,7 +32,7 @@ public final class ElspethKnightErrant extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ELSPETH); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Create a 1/1 white Soldier creature token. Token token = new SoldierToken(); diff --git a/Mage.Sets/src/mage/cards/e/ElspethSunsChampion.java b/Mage.Sets/src/mage/cards/e/ElspethSunsChampion.java index 5f6454a3d0..0eedf89b8d 100644 --- a/Mage.Sets/src/mage/cards/e/ElspethSunsChampion.java +++ b/Mage.Sets/src/mage/cards/e/ElspethSunsChampion.java @@ -3,7 +3,6 @@ package mage.cards.e; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DestroyAllEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -35,7 +34,7 @@ public final class ElspethSunsChampion extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ELSPETH); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Create three 1/1 white Soldier creature tokens. this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new SoldierToken(), 3), 1)); diff --git a/Mage.Sets/src/mage/cards/e/ElspethSunsNemesis.java b/Mage.Sets/src/mage/cards/e/ElspethSunsNemesis.java index 22c8b5ef11..6c3901a421 100644 --- a/Mage.Sets/src/mage/cards/e/ElspethSunsNemesis.java +++ b/Mage.Sets/src/mage/cards/e/ElspethSunsNemesis.java @@ -2,7 +2,6 @@ package mage.cards.e; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; @@ -27,7 +26,7 @@ public final class ElspethSunsNemesis extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ELSPETH); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // −1: Up to two target creatures you control each get +2/+1 until end of turn. Ability ability = new LoyaltyAbility(new BoostTargetEffect(2, 1) diff --git a/Mage.Sets/src/mage/cards/e/ElspethTirel.java b/Mage.Sets/src/mage/cards/e/ElspethTirel.java index ee656aefad..b260785149 100644 --- a/Mage.Sets/src/mage/cards/e/ElspethTirel.java +++ b/Mage.Sets/src/mage/cards/e/ElspethTirel.java @@ -4,7 +4,6 @@ package mage.cards.e; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.cards.CardImpl; @@ -31,7 +30,7 @@ public final class ElspethTirel extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ELSPETH); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); this.addAbility(new LoyaltyAbility(new ElspethTirelFirstEffect(), 2)); this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new SoldierToken(), 3), -2)); diff --git a/Mage.Sets/src/mage/cards/e/ElspethUndauntedHero.java b/Mage.Sets/src/mage/cards/e/ElspethUndauntedHero.java index d04129b353..e2c2a7cfa2 100644 --- a/Mage.Sets/src/mage/cards/e/ElspethUndauntedHero.java +++ b/Mage.Sets/src/mage/cards/e/ElspethUndauntedHero.java @@ -2,7 +2,6 @@ package mage.cards.e; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; @@ -39,7 +38,7 @@ public final class ElspethUndauntedHero extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ELSPETH); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +2: Put a +1/+1 counter on each of up to two target creatures. Ability ability = new LoyaltyAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance()), 2); diff --git a/Mage.Sets/src/mage/cards/e/EstridTheMasked.java b/Mage.Sets/src/mage/cards/e/EstridTheMasked.java index 06d4ff5601..796383b3ea 100644 --- a/Mage.Sets/src/mage/cards/e/EstridTheMasked.java +++ b/Mage.Sets/src/mage/cards/e/EstridTheMasked.java @@ -4,7 +4,6 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.CanBeYourCommanderAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.MillCardsControllerEffect; @@ -46,7 +45,7 @@ public final class EstridTheMasked extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ESTRID); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +2: Untap each enchanted permanent you control. this.addAbility(new LoyaltyAbility(new UntapAllControllerEffect( diff --git a/Mage.Sets/src/mage/cards/f/FreyaliseLlanowarsFury.java b/Mage.Sets/src/mage/cards/f/FreyaliseLlanowarsFury.java index afab8b04b8..b4ea2016cb 100644 --- a/Mage.Sets/src/mage/cards/f/FreyaliseLlanowarsFury.java +++ b/Mage.Sets/src/mage/cards/f/FreyaliseLlanowarsFury.java @@ -3,7 +3,6 @@ package mage.cards.f; import mage.ObjectColor; import mage.abilities.LoyaltyAbility; import mage.abilities.common.CanBeYourCommanderAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DestroyTargetEffect; @@ -38,7 +37,7 @@ public final class FreyaliseLlanowarsFury extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.FREYALISE); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +2: Create a 1/1 green Elf Druid creature token with "{T}: Add {G}." this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new ElfDruidToken()), 2)); diff --git a/Mage.Sets/src/mage/cards/g/GarrukApexPredator.java b/Mage.Sets/src/mage/cards/g/GarrukApexPredator.java index dbdfb81473..d5972b7ea9 100644 --- a/Mage.Sets/src/mage/cards/g/GarrukApexPredator.java +++ b/Mage.Sets/src/mage/cards/g/GarrukApexPredator.java @@ -2,7 +2,6 @@ package mage.cards.g; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; @@ -44,7 +43,7 @@ public final class GarrukApexPredator extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.GARRUK); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Destroy another target planeswalker. LoyaltyAbility ability = new LoyaltyAbility(new DestroyTargetEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/g/GarrukCallerOfBeasts.java b/Mage.Sets/src/mage/cards/g/GarrukCallerOfBeasts.java index 85060e3b69..1293041c4f 100644 --- a/Mage.Sets/src/mage/cards/g/GarrukCallerOfBeasts.java +++ b/Mage.Sets/src/mage/cards/g/GarrukCallerOfBeasts.java @@ -4,7 +4,6 @@ package mage.cards.g; import java.util.UUID; import mage.ObjectColor; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.PutCardFromHandOntoBattlefieldEffect; import mage.abilities.effects.common.RevealLibraryPutIntoHandEffect; @@ -35,7 +34,7 @@ public final class GarrukCallerOfBeasts extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.GARRUK); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Reveal the top 5 cards of your library. Put all creature cards revealed this way into your hand and the rest on the bottom of your library in any order. this.addAbility(new LoyaltyAbility(new RevealLibraryPutIntoHandEffect(5, new FilterCreatureCard("creature cards"), Zone.LIBRARY), 1)); diff --git a/Mage.Sets/src/mage/cards/g/GarrukCursedHuntsman.java b/Mage.Sets/src/mage/cards/g/GarrukCursedHuntsman.java index fbd0483c5a..e16b41871b 100644 --- a/Mage.Sets/src/mage/cards/g/GarrukCursedHuntsman.java +++ b/Mage.Sets/src/mage/cards/g/GarrukCursedHuntsman.java @@ -2,7 +2,6 @@ package mage.cards.g; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; @@ -28,7 +27,7 @@ public final class GarrukCursedHuntsman extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.GARRUK); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // 0: Create two 2/2 black and green Wolf creature tokens with "When this creature dies, put a loyalty counter on each Garruk you control." this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new GarrukCursedHuntsmanToken(), 2), 0)); diff --git a/Mage.Sets/src/mage/cards/g/GarrukPrimalHunter.java b/Mage.Sets/src/mage/cards/g/GarrukPrimalHunter.java index 5ce38d35bf..c31694f980 100644 --- a/Mage.Sets/src/mage/cards/g/GarrukPrimalHunter.java +++ b/Mage.Sets/src/mage/cards/g/GarrukPrimalHunter.java @@ -4,7 +4,6 @@ package mage.cards.g; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; @@ -36,7 +35,7 @@ public final class GarrukPrimalHunter extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.GARRUK); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Create a 3/3 green Beast creature token. this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new BeastToken()), 1)); diff --git a/Mage.Sets/src/mage/cards/g/GarrukRelentless.java b/Mage.Sets/src/mage/cards/g/GarrukRelentless.java index 1ac3ece0df..f81ee1874a 100644 --- a/Mage.Sets/src/mage/cards/g/GarrukRelentless.java +++ b/Mage.Sets/src/mage/cards/g/GarrukRelentless.java @@ -4,7 +4,6 @@ package mage.cards.g; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.StateTriggeredAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.TransformSourceEffect; @@ -33,7 +32,7 @@ public final class GarrukRelentless extends CardImpl { this.secondSideCardClazz = GarrukTheVeilCursed.class; - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // When Garruk Relentless has two or fewer loyalty counters on him, transform him. this.addAbility(new TransformAbility()); diff --git a/Mage.Sets/src/mage/cards/g/GarrukSavageHerald.java b/Mage.Sets/src/mage/cards/g/GarrukSavageHerald.java index d668ae3abe..efa4203c13 100644 --- a/Mage.Sets/src/mage/cards/g/GarrukSavageHerald.java +++ b/Mage.Sets/src/mage/cards/g/GarrukSavageHerald.java @@ -3,7 +3,6 @@ package mage.cards.g; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.DamageAsThoughNotBlockedAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; @@ -39,7 +38,7 @@ public final class GarrukSavageHerald extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.GARRUK); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Reveal the top card of your library. If it's a creature card, put it into your hand. Otherwise, put it on the bottom of your library. this.addAbility(new LoyaltyAbility(new GarrukSavageHeraldEffect(), 1)); diff --git a/Mage.Sets/src/mage/cards/g/GarrukUnleashed.java b/Mage.Sets/src/mage/cards/g/GarrukUnleashed.java index 44e56a1345..6ec137afbc 100644 --- a/Mage.Sets/src/mage/cards/g/GarrukUnleashed.java +++ b/Mage.Sets/src/mage/cards/g/GarrukUnleashed.java @@ -1,7 +1,6 @@ package mage.cards.g; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.condition.common.OpponentControlsMoreCondition; import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.Effect; @@ -36,7 +35,7 @@ public final class GarrukUnleashed extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.GARRUK); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Up to one target creature gets +3/+3 and gains trample until end of turn. Effect effect = new BoostTargetEffect(3, 3, Duration.EndOfTurn) diff --git a/Mage.Sets/src/mage/cards/g/GarrukWildspeaker.java b/Mage.Sets/src/mage/cards/g/GarrukWildspeaker.java index c6a719311f..fae4c36f53 100644 --- a/Mage.Sets/src/mage/cards/g/GarrukWildspeaker.java +++ b/Mage.Sets/src/mage/cards/g/GarrukWildspeaker.java @@ -3,7 +3,6 @@ package mage.cards.g; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.Effects; import mage.abilities.effects.common.CreateTokenEffect; @@ -34,7 +33,7 @@ public final class GarrukWildspeaker extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.GARRUK); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Untap two target lands. LoyaltyAbility ability1 = new LoyaltyAbility(new UntapTargetEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/g/GeyadroneDihada.java b/Mage.Sets/src/mage/cards/g/GeyadroneDihada.java index 67bc26f82c..41a627a630 100644 --- a/Mage.Sets/src/mage/cards/g/GeyadroneDihada.java +++ b/Mage.Sets/src/mage/cards/g/GeyadroneDihada.java @@ -4,7 +4,6 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.LoseLifeOpponentsEffect; import mage.abilities.effects.common.UntapTargetEffect; @@ -47,7 +46,7 @@ public final class GeyadroneDihada extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.DIHADA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // Protection from permanents with corruption counters on them this.addAbility(new ProtectionAbility(filter)); diff --git a/Mage.Sets/src/mage/cards/g/GideonAllyOfZendikar.java b/Mage.Sets/src/mage/cards/g/GideonAllyOfZendikar.java index df069125b5..d58a6d72ca 100644 --- a/Mage.Sets/src/mage/cards/g/GideonAllyOfZendikar.java +++ b/Mage.Sets/src/mage/cards/g/GideonAllyOfZendikar.java @@ -4,7 +4,6 @@ package mage.cards.g; import java.util.UUID; import mage.MageInt; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -32,7 +31,7 @@ public final class GideonAllyOfZendikar extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.GIDEON); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Until end of turn, Gideon, Ally of Zendikar becomes a 5/5 Human Soldier Ally creature with indestructible that's still a planeswalker. Prevent all damage that would be dealt to him this turn. LoyaltyAbility ability = new LoyaltyAbility(new BecomesCreatureSourceEffect(new GideonAllyOfZendikarToken(), "planeswalker", Duration.EndOfTurn), 1); diff --git a/Mage.Sets/src/mage/cards/g/GideonBattleForged.java b/Mage.Sets/src/mage/cards/g/GideonBattleForged.java index 740ad27a0b..67ddfbe2f5 100644 --- a/Mage.Sets/src/mage/cards/g/GideonBattleForged.java +++ b/Mage.Sets/src/mage/cards/g/GideonBattleForged.java @@ -4,7 +4,6 @@ import mage.MageInt; import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.RequirementEffect; import mage.abilities.effects.common.PreventAllDamageToSourceEffect; @@ -43,7 +42,7 @@ public final class GideonBattleForged extends CardImpl { this.nightCard = true; - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +2: Up to one target creature an opponent controls attacks Gideon, Battle-Forged during its controller's next turn if able. LoyaltyAbility loyaltyAbility = new LoyaltyAbility(new GideonBattleForgedAttacksIfAbleTargetEffect(Duration.Custom), 2); diff --git a/Mage.Sets/src/mage/cards/g/GideonBlackblade.java b/Mage.Sets/src/mage/cards/g/GideonBlackblade.java index 00e7ec80c0..9e8e88aa42 100644 --- a/Mage.Sets/src/mage/cards/g/GideonBlackblade.java +++ b/Mage.Sets/src/mage/cards/g/GideonBlackblade.java @@ -3,7 +3,6 @@ package mage.cards.g; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.MyTurnCondition; import mage.abilities.decorator.ConditionalContinuousEffect; @@ -52,7 +51,7 @@ public final class GideonBlackblade extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.GIDEON); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // As long as it's your turn, Gideon Blackblade is a 4/4 Human Soldier creature with indestructible that's still a planeswalker. this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( diff --git a/Mage.Sets/src/mage/cards/g/GideonChampionOfJustice.java b/Mage.Sets/src/mage/cards/g/GideonChampionOfJustice.java index 93e3ba6cf0..9927006592 100644 --- a/Mage.Sets/src/mage/cards/g/GideonChampionOfJustice.java +++ b/Mage.Sets/src/mage/cards/g/GideonChampionOfJustice.java @@ -4,7 +4,6 @@ import mage.MageInt; import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.LockedInDynamicValue; import mage.abilities.dynamicvalue.common.CountersSourceCount; import mage.abilities.dynamicvalue.common.PermanentsTargetOpponentControlsCount; @@ -39,7 +38,7 @@ public final class GideonChampionOfJustice extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.GIDEON); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Put a loyalty counter on Gideon, Champion of Justice for each creature target opponent controls. LoyaltyAbility ability1 = new LoyaltyAbility( diff --git a/Mage.Sets/src/mage/cards/g/GideonJura.java b/Mage.Sets/src/mage/cards/g/GideonJura.java index 335e547b33..6da6c4e7ef 100644 --- a/Mage.Sets/src/mage/cards/g/GideonJura.java +++ b/Mage.Sets/src/mage/cards/g/GideonJura.java @@ -4,7 +4,6 @@ import mage.MageInt; import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.RequirementEffect; import mage.abilities.effects.common.DestroyTargetEffect; @@ -39,7 +38,7 @@ public final class GideonJura extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.GIDEON); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(6)); + this.setStartingLoyalty(6); // +2: During target opponent's next turn, creatures that player controls attack Gideon Jura if able. LoyaltyAbility ability1 = new LoyaltyAbility(new GideonJuraEffect(), 2); diff --git a/Mage.Sets/src/mage/cards/g/GideonMartialParagon.java b/Mage.Sets/src/mage/cards/g/GideonMartialParagon.java index 4f500d35a0..92d5e3c294 100644 --- a/Mage.Sets/src/mage/cards/g/GideonMartialParagon.java +++ b/Mage.Sets/src/mage/cards/g/GideonMartialParagon.java @@ -4,7 +4,6 @@ package mage.cards.g; import java.util.UUID; import mage.MageInt; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.PreventAllDamageToSourceEffect; import mage.abilities.effects.common.TapAllEffect; @@ -34,7 +33,7 @@ public final class GideonMartialParagon extends CardImpl { this.subtype.add(SubType.GIDEON); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +2: Untap all creatures you control. Those creatures get +1/+1 until end of turn. LoyaltyAbility ability = new LoyaltyAbility(new UntapAllEffect(new FilterControlledCreaturePermanent()), 2); diff --git a/Mage.Sets/src/mage/cards/g/GideonOfTheTrials.java b/Mage.Sets/src/mage/cards/g/GideonOfTheTrials.java index eb3a160815..594df5eab7 100644 --- a/Mage.Sets/src/mage/cards/g/GideonOfTheTrials.java +++ b/Mage.Sets/src/mage/cards/g/GideonOfTheTrials.java @@ -4,7 +4,6 @@ package mage.cards.g; import java.util.UUID; import mage.MageInt; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.PreventAllDamageToSourceEffect; @@ -33,7 +32,7 @@ public final class GideonOfTheTrials extends CardImpl { this.subtype.add(SubType.GIDEON); //Starting Loyalty: 3 - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Until your next turn, prevent all damage target permanent would deal. Effect effect = new PreventDamageByTargetEffect(Duration.UntilYourNextTurn); diff --git a/Mage.Sets/src/mage/cards/g/GideonTheOathsworn.java b/Mage.Sets/src/mage/cards/g/GideonTheOathsworn.java index e110f6619a..463ae961d0 100644 --- a/Mage.Sets/src/mage/cards/g/GideonTheOathsworn.java +++ b/Mage.Sets/src/mage/cards/g/GideonTheOathsworn.java @@ -5,7 +5,6 @@ import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.ExileAllEffect; import mage.abilities.effects.common.ExileSourceEffect; @@ -35,7 +34,7 @@ public final class GideonTheOathsworn extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.GIDEON); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // Whenever you attack with two or more non-Gideon creatures, put a +1/+1 counter on each of those creatures. this.addAbility(new GideonTheOathswornTriggeredAbility()); diff --git a/Mage.Sets/src/mage/cards/g/GrandMasterOfFlowers.java b/Mage.Sets/src/mage/cards/g/GrandMasterOfFlowers.java index 14815a5691..623682eb1a 100644 --- a/Mage.Sets/src/mage/cards/g/GrandMasterOfFlowers.java +++ b/Mage.Sets/src/mage/cards/g/GrandMasterOfFlowers.java @@ -2,7 +2,6 @@ package mage.cards.g; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.common.combat.CantAttackTargetEffect; @@ -47,7 +46,7 @@ public final class GrandMasterOfFlowers extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.BAHAMUT); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // As long as Grand Master of Flowers has seven or more loyalty counters on him, he's a 7/7 Dragon God creature with flying and indestructible. this.addAbility(new SimpleStaticAbility(new GrandMasterOfFlowersEffect())); diff --git a/Mage.Sets/src/mage/cards/g/GristTheHungerTide.java b/Mage.Sets/src/mage/cards/g/GristTheHungerTide.java index 2db1bc837a..c97b6fc2d0 100644 --- a/Mage.Sets/src/mage/cards/g/GristTheHungerTide.java +++ b/Mage.Sets/src/mage/cards/g/GristTheHungerTide.java @@ -3,7 +3,6 @@ package mage.cards.g; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.delayed.ReflexiveTriggeredAbility; import mage.abilities.costs.common.SacrificeTargetCost; @@ -44,7 +43,7 @@ public final class GristTheHungerTide extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.GRIST); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // As long as Grist, the Hunger Tide isn't on the battlefield, it's a 1/1 Insect creature in addition to its other types. this.addAbility(new SimpleStaticAbility(Zone.ALL, new GristTheHungerTideTypeEffect())); diff --git a/Mage.Sets/src/mage/cards/h/HuatliDinosaurKnight.java b/Mage.Sets/src/mage/cards/h/HuatliDinosaurKnight.java index 6129e2ed0a..0969ef69d8 100644 --- a/Mage.Sets/src/mage/cards/h/HuatliDinosaurKnight.java +++ b/Mage.Sets/src/mage/cards/h/HuatliDinosaurKnight.java @@ -2,7 +2,6 @@ package mage.cards.h; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DamageWithPowerFromOneToAnotherTargetEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; @@ -36,7 +35,7 @@ public final class HuatliDinosaurKnight extends CardImpl { addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.HUATLI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +2: Put two +1/+1 counters on up to one target Dinosaur you control. Ability ability = new LoyaltyAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance(2)) diff --git a/Mage.Sets/src/mage/cards/h/HuatliRadiantChampion.java b/Mage.Sets/src/mage/cards/h/HuatliRadiantChampion.java index 8879c3524f..1e2730baed 100644 --- a/Mage.Sets/src/mage/cards/h/HuatliRadiantChampion.java +++ b/Mage.Sets/src/mage/cards/h/HuatliRadiantChampion.java @@ -1,7 +1,6 @@ package mage.cards.h; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; @@ -30,7 +29,7 @@ public final class HuatliRadiantChampion extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.HUATLI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Put a loyalty counter on Huatli, Radiant Champion for each creature you control. this.addAbility(new LoyaltyAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(0), diff --git a/Mage.Sets/src/mage/cards/h/HuatliTheSunsHeart.java b/Mage.Sets/src/mage/cards/h/HuatliTheSunsHeart.java index f6e0b0a5a7..ec58e07e7e 100644 --- a/Mage.Sets/src/mage/cards/h/HuatliTheSunsHeart.java +++ b/Mage.Sets/src/mage/cards/h/HuatliTheSunsHeart.java @@ -1,7 +1,6 @@ package mage.cards.h; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.GreatestToughnessAmongControlledCreaturesValue; import mage.abilities.effects.common.GainLifeEffect; @@ -25,7 +24,7 @@ public final class HuatliTheSunsHeart extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.HUATLI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(7)); + this.setStartingLoyalty(7); // Each creature you control assigns combat damage equal to its toughness rather than its power. this.addAbility(new SimpleStaticAbility(new CombatDamageByToughnessEffect( diff --git a/Mage.Sets/src/mage/cards/h/HuatliWarriorPoet.java b/Mage.Sets/src/mage/cards/h/HuatliWarriorPoet.java index 9f436f45bd..3bc125fbce 100644 --- a/Mage.Sets/src/mage/cards/h/HuatliWarriorPoet.java +++ b/Mage.Sets/src/mage/cards/h/HuatliWarriorPoet.java @@ -3,7 +3,6 @@ package mage.cards.h; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.Mode; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.GetXLoyaltyValue; import mage.abilities.dynamicvalue.common.GreatestPowerAmongControlledCreaturesValue; import mage.abilities.effects.ContinuousEffect; @@ -34,7 +33,7 @@ public final class HuatliWarriorPoet extends CardImpl { addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.HUATLI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +2: You gain life equal to the greatest power among creatures you control. this.addAbility(new LoyaltyAbility(new GainLifeEffect( diff --git a/Mage.Sets/src/mage/cards/i/ImmolatingSouleater.java b/Mage.Sets/src/mage/cards/i/ImmolatingSouleater.java index c795d8e54e..465997d5d6 100644 --- a/Mage.Sets/src/mage/cards/i/ImmolatingSouleater.java +++ b/Mage.Sets/src/mage/cards/i/ImmolatingSouleater.java @@ -1,36 +1,33 @@ - package mage.cards.i; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; -import mage.abilities.costs.mana.PhyrexianManaCost; +import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.ColoredManaSymbol; import mage.constants.Duration; -import mage.constants.Zone; +import mage.constants.SubType; + +import java.util.UUID; /** - * * @author North */ public final class ImmolatingSouleater extends CardImpl { public ImmolatingSouleater(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}"); this.subtype.add(SubType.PHYREXIAN); this.subtype.add(SubType.DOG); this.power = new MageInt(1); this.toughness = new MageInt(1); - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, - new BoostSourceEffect(1, 0, Duration.EndOfTurn), - new PhyrexianManaCost(ColoredManaSymbol.R))); + this.addAbility(new SimpleActivatedAbility(new BoostSourceEffect( + 1, 0, Duration.EndOfTurn + ), new ManaCostsImpl<>("{R/P}"))); } private ImmolatingSouleater(final ImmolatingSouleater card) { diff --git a/Mage.Sets/src/mage/cards/i/InsatiableSouleater.java b/Mage.Sets/src/mage/cards/i/InsatiableSouleater.java index b6e2d3b19c..31bdf5df35 100644 --- a/Mage.Sets/src/mage/cards/i/InsatiableSouleater.java +++ b/Mage.Sets/src/mage/cards/i/InsatiableSouleater.java @@ -1,37 +1,34 @@ - package mage.cards.i; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; -import mage.abilities.costs.mana.PhyrexianManaCost; +import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.ColoredManaSymbol; import mage.constants.Duration; -import mage.constants.Zone; +import mage.constants.SubType; + +import java.util.UUID; /** - * * @author North */ public final class InsatiableSouleater extends CardImpl { public InsatiableSouleater(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}"); this.subtype.add(SubType.PHYREXIAN); this.subtype.add(SubType.BEAST); this.power = new MageInt(5); this.toughness = new MageInt(1); - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, - new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.EndOfTurn), - new PhyrexianManaCost(ColoredManaSymbol.G))); + this.addAbility(new SimpleActivatedAbility(new GainAbilitySourceEffect( + TrampleAbility.getInstance(), Duration.EndOfTurn + ), new ManaCostsImpl<>("{G/P}"))); } private InsatiableSouleater(final InsatiableSouleater card) { diff --git a/Mage.Sets/src/mage/cards/j/JaceArcaneStrategist.java b/Mage.Sets/src/mage/cards/j/JaceArcaneStrategist.java index cec4fe502c..3ed23ece1d 100644 --- a/Mage.Sets/src/mage/cards/j/JaceArcaneStrategist.java +++ b/Mage.Sets/src/mage/cards/j/JaceArcaneStrategist.java @@ -3,7 +3,6 @@ package mage.cards.j; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.DrawSecondCardTriggeredAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.combat.CantBeBlockedAllEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; @@ -29,7 +28,7 @@ public final class JaceArcaneStrategist extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.JACE); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // Whenever you draw your second card each turn, put a +1/+1 counter on target creature you control. Ability ability = new DrawSecondCardTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/j/JaceArchitectOfThought.java b/Mage.Sets/src/mage/cards/j/JaceArchitectOfThought.java index 400790cc83..f30379f876 100644 --- a/Mage.Sets/src/mage/cards/j/JaceArchitectOfThought.java +++ b/Mage.Sets/src/mage/cards/j/JaceArchitectOfThought.java @@ -3,7 +3,6 @@ package mage.cards.j; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.*; @@ -16,7 +15,6 @@ import mage.filter.predicate.other.PlayerIdPredicate; import mage.game.ExileZone; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.TargetCard; @@ -40,7 +38,7 @@ public final class JaceArchitectOfThought extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.JACE); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Until your next turn, whenever a creature an opponent controls attacks, it gets -1/-0 until end of turn. this.addAbility(new LoyaltyAbility(new JaceArchitectOfThoughtStartEffect1(), 1)); diff --git a/Mage.Sets/src/mage/cards/j/JaceBeleren.java b/Mage.Sets/src/mage/cards/j/JaceBeleren.java index 27a93f560b..7ea444b851 100644 --- a/Mage.Sets/src/mage/cards/j/JaceBeleren.java +++ b/Mage.Sets/src/mage/cards/j/JaceBeleren.java @@ -3,7 +3,6 @@ package mage.cards.j; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DrawCardAllEffect; import mage.abilities.effects.common.DrawCardTargetEffect; import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect; @@ -25,7 +24,7 @@ public final class JaceBeleren extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.JACE); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +2: Each player draws a card. this.addAbility(new LoyaltyAbility(new DrawCardAllEffect(1), 2)); diff --git a/Mage.Sets/src/mage/cards/j/JaceCunningCastaway.java b/Mage.Sets/src/mage/cards/j/JaceCunningCastaway.java index ec38cad3e7..7b83bde8d7 100644 --- a/Mage.Sets/src/mage/cards/j/JaceCunningCastaway.java +++ b/Mage.Sets/src/mage/cards/j/JaceCunningCastaway.java @@ -4,7 +4,6 @@ package mage.cards.j; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenCopyTargetEffect; import mage.abilities.effects.common.CreateTokenEffect; @@ -34,7 +33,7 @@ public final class JaceCunningCastaway extends CardImpl { addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.JACE); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Whenever one or more creatures you control deal combat damage to a player this turn, draw a card, then discard a card. this.addAbility(new LoyaltyAbility(new JaceCunningCastawayEffect1(), 1)); diff --git a/Mage.Sets/src/mage/cards/j/JaceIngeniousMindMage.java b/Mage.Sets/src/mage/cards/j/JaceIngeniousMindMage.java index 686cdc5f70..dc7a2f301d 100644 --- a/Mage.Sets/src/mage/cards/j/JaceIngeniousMindMage.java +++ b/Mage.Sets/src/mage/cards/j/JaceIngeniousMindMage.java @@ -4,7 +4,6 @@ package mage.cards.j; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.UntapAllControllerEffect; import mage.abilities.effects.common.continuous.GainControlTargetEffect; @@ -29,7 +28,7 @@ public final class JaceIngeniousMindMage extends CardImpl { addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.JACE); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Draw a card. this.addAbility(new LoyaltyAbility(new DrawCardSourceControllerEffect(1), 1)); diff --git a/Mage.Sets/src/mage/cards/j/JaceMemoryAdept.java b/Mage.Sets/src/mage/cards/j/JaceMemoryAdept.java index 1d15ffea26..04ab1c419a 100644 --- a/Mage.Sets/src/mage/cards/j/JaceMemoryAdept.java +++ b/Mage.Sets/src/mage/cards/j/JaceMemoryAdept.java @@ -5,7 +5,6 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.Mode; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardTargetEffect; import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect; @@ -28,7 +27,7 @@ public final class JaceMemoryAdept extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.JACE); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Draw a card. Target player puts the top card of their library into their graveyard. LoyaltyAbility ability1 = new LoyaltyAbility(new DrawCardSourceControllerEffect(1), 1); diff --git a/Mage.Sets/src/mage/cards/j/JaceMirrorMage.java b/Mage.Sets/src/mage/cards/j/JaceMirrorMage.java index faabc94065..f16da18f0b 100644 --- a/Mage.Sets/src/mage/cards/j/JaceMirrorMage.java +++ b/Mage.Sets/src/mage/cards/j/JaceMirrorMage.java @@ -3,7 +3,6 @@ package mage.cards.j; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.condition.common.KickedCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.OneShotEffect; @@ -36,7 +35,7 @@ public final class JaceMirrorMage extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.JACE); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // Kicker {2} this.addAbility(new KickerAbility("{2}")); diff --git a/Mage.Sets/src/mage/cards/j/JaceTelepathUnbound.java b/Mage.Sets/src/mage/cards/j/JaceTelepathUnbound.java index 2ae3ad22e5..bc67fa20ea 100644 --- a/Mage.Sets/src/mage/cards/j/JaceTelepathUnbound.java +++ b/Mage.Sets/src/mage/cards/j/JaceTelepathUnbound.java @@ -3,7 +3,6 @@ package mage.cards.j; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.*; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; @@ -32,7 +31,7 @@ public final class JaceTelepathUnbound extends CardImpl { this.color.setBlue(true); this.nightCard = true; - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Up to one target creature gets -2/-0 until your next turn. Effect effect = new BoostTargetEffect(-2, 0, Duration.UntilYourNextTurn); diff --git a/Mage.Sets/src/mage/cards/j/JaceTheLivingGuildpact.java b/Mage.Sets/src/mage/cards/j/JaceTheLivingGuildpact.java index c905f3cacc..3aa4233e08 100644 --- a/Mage.Sets/src/mage/cards/j/JaceTheLivingGuildpact.java +++ b/Mage.Sets/src/mage/cards/j/JaceTheLivingGuildpact.java @@ -2,7 +2,6 @@ package mage.cards.j; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; @@ -38,7 +37,7 @@ public final class JaceTheLivingGuildpact extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.JACE); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Look at the top two cards of your library. Put one of them into your graveyard. Effect effect = new LookLibraryAndPickControllerEffect( diff --git a/Mage.Sets/src/mage/cards/j/JaceTheMindSculptor.java b/Mage.Sets/src/mage/cards/j/JaceTheMindSculptor.java index b4ae3b8e6c..1575599843 100644 --- a/Mage.Sets/src/mage/cards/j/JaceTheMindSculptor.java +++ b/Mage.Sets/src/mage/cards/j/JaceTheMindSculptor.java @@ -4,7 +4,6 @@ package mage.cards.j; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.BrainstormEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect; @@ -33,7 +32,7 @@ public final class JaceTheMindSculptor extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.JACE); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +2: Look at the top card of target player's library. You may put that card on the bottom of that player's library. LoyaltyAbility ability1 = new LoyaltyAbility(new JaceTheMindSculptorEffect1(), 2); diff --git a/Mage.Sets/src/mage/cards/j/JaceUnravelerOfSecrets.java b/Mage.Sets/src/mage/cards/j/JaceUnravelerOfSecrets.java index c7354d62bf..4d9c3b5ed9 100644 --- a/Mage.Sets/src/mage/cards/j/JaceUnravelerOfSecrets.java +++ b/Mage.Sets/src/mage/cards/j/JaceUnravelerOfSecrets.java @@ -4,7 +4,6 @@ package mage.cards.j; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -31,7 +30,7 @@ public final class JaceUnravelerOfSecrets extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.JACE); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Scry 1, then draw a card. Ability ability = new LoyaltyAbility(new ScryEffect(1, false), 1); diff --git a/Mage.Sets/src/mage/cards/j/JaceWielderOfMysteries.java b/Mage.Sets/src/mage/cards/j/JaceWielderOfMysteries.java index dcb6ec7f37..e08bf8945b 100644 --- a/Mage.Sets/src/mage/cards/j/JaceWielderOfMysteries.java +++ b/Mage.Sets/src/mage/cards/j/JaceWielderOfMysteries.java @@ -2,7 +2,6 @@ package mage.cards.j; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.ReplacementEffectImpl; @@ -33,7 +32,7 @@ public final class JaceWielderOfMysteries extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.JACE); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // If you would draw a card while your library has no cards in it, you win the game instead. this.addAbility(new SimpleStaticAbility(new JaceWielderOfMysteriesContinuousEffect())); diff --git a/Mage.Sets/src/mage/cards/j/JayaBallard.java b/Mage.Sets/src/mage/cards/j/JayaBallard.java index 5a1e88a84a..bf01d7cfe4 100644 --- a/Mage.Sets/src/mage/cards/j/JayaBallard.java +++ b/Mage.Sets/src/mage/cards/j/JayaBallard.java @@ -2,7 +2,6 @@ package mage.cards.j; import mage.Mana; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.discard.DiscardAndDrawThatManyEffect; import mage.abilities.effects.mana.AddConditionalManaEffect; @@ -27,7 +26,7 @@ public final class JayaBallard extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.JAYA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Add {R}{R}{R}. Spend this mana only to cast instant or sorcery spells. this.addAbility(new LoyaltyAbility(new AddConditionalManaEffect( diff --git a/Mage.Sets/src/mage/cards/j/JayaVeneratedFiremage.java b/Mage.Sets/src/mage/cards/j/JayaVeneratedFiremage.java index f124de4b77..1f451a7815 100644 --- a/Mage.Sets/src/mage/cards/j/JayaVeneratedFiremage.java +++ b/Mage.Sets/src/mage/cards/j/JayaVeneratedFiremage.java @@ -3,7 +3,6 @@ package mage.cards.j; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.common.DamageTargetEffect; @@ -28,7 +27,7 @@ public final class JayaVeneratedFiremage extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.JAYA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // If another red source you control would deal damage to a permanent or player, it deals that much damage plus 1 to that permanent or player instead. this.addAbility(new SimpleStaticAbility(new JayaVeneratedFiremageEffect())); diff --git a/Mage.Sets/src/mage/cards/j/JeskaThriceReborn.java b/Mage.Sets/src/mage/cards/j/JeskaThriceReborn.java index 34aba889bd..bfe7a8e07d 100644 --- a/Mage.Sets/src/mage/cards/j/JeskaThriceReborn.java +++ b/Mage.Sets/src/mage/cards/j/JeskaThriceReborn.java @@ -38,6 +38,7 @@ public final class JeskaThriceReborn extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.JESKA); + this.setStartingLoyalty(0); // Jeska, Thrice Reborn enters the battlefield with a loyalty counter on it for each time you've cast a commander from the command zone this game. this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect( diff --git a/Mage.Sets/src/mage/cards/j/JiangYanggu.java b/Mage.Sets/src/mage/cards/j/JiangYanggu.java index 193e63b41e..3a390631b1 100644 --- a/Mage.Sets/src/mage/cards/j/JiangYanggu.java +++ b/Mage.Sets/src/mage/cards/j/JiangYanggu.java @@ -4,7 +4,6 @@ package mage.cards.j; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.condition.InvertCondition; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.decorator.ConditionalOneShotEffect; @@ -43,7 +42,7 @@ public final class JiangYanggu extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.YANGGU); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Target creature gets +2/+2 until end of turn. Ability ability = new LoyaltyAbility(new BoostTargetEffect(2, 2, Duration.EndOfTurn), 1); diff --git a/Mage.Sets/src/mage/cards/j/JiangYangguWildcrafter.java b/Mage.Sets/src/mage/cards/j/JiangYangguWildcrafter.java index 36fea642e1..685f63ef6a 100644 --- a/Mage.Sets/src/mage/cards/j/JiangYangguWildcrafter.java +++ b/Mage.Sets/src/mage/cards/j/JiangYangguWildcrafter.java @@ -2,7 +2,6 @@ package mage.cards.j; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; @@ -29,7 +28,7 @@ public final class JiangYangguWildcrafter extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.YANGGU); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // Each creature you control with a +1/+1 counter on it has "{T}: Add one mana of any color." this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( diff --git a/Mage.Sets/src/mage/cards/k/KaitoShizuki.java b/Mage.Sets/src/mage/cards/k/KaitoShizuki.java index 55f0322f2c..d6916b1dea 100644 --- a/Mage.Sets/src/mage/cards/k/KaitoShizuki.java +++ b/Mage.Sets/src/mage/cards/k/KaitoShizuki.java @@ -3,7 +3,6 @@ package mage.cards.k; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.BeginningOfEndStepTriggeredAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.condition.Condition; import mage.abilities.condition.InvertCondition; import mage.abilities.condition.common.RaidCondition; @@ -41,7 +40,7 @@ public final class KaitoShizuki extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.KAITO); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // At the beginning of your end step, if Kaito Shizuki entered the battlefield this turn, he phases out. this.addAbility(new BeginningOfEndStepTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/k/KarnLiberated.java b/Mage.Sets/src/mage/cards/k/KarnLiberated.java index f9fb4e0cfd..0908f788ed 100644 --- a/Mage.Sets/src/mage/cards/k/KarnLiberated.java +++ b/Mage.Sets/src/mage/cards/k/KarnLiberated.java @@ -4,7 +4,6 @@ import mage.MageObject; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.ExileTargetForSourceEffect; import mage.cards.*; @@ -35,7 +34,7 @@ public final class KarnLiberated extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{7}"); this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.KARN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(6)); + this.setStartingLoyalty(6); // +4: Target player exiles a card from their hand. LoyaltyAbility ability1 = new LoyaltyAbility(new KarnPlayerExileEffect(), 4); diff --git a/Mage.Sets/src/mage/cards/k/KarnScionOfUrza.java b/Mage.Sets/src/mage/cards/k/KarnScionOfUrza.java index ed5784b42a..3192b09c4c 100644 --- a/Mage.Sets/src/mage/cards/k/KarnScionOfUrza.java +++ b/Mage.Sets/src/mage/cards/k/KarnScionOfUrza.java @@ -3,7 +3,6 @@ package mage.cards.k; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.hint.common.ArtifactYouControlHint; @@ -33,7 +32,7 @@ public final class KarnScionOfUrza extends CardImpl { addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.KARN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Reveal the top two cards of your library. An opponent chooses one of them. Put that card into your hand and exile the other with a silver counter on it. LoyaltyAbility ability1 = new LoyaltyAbility(new KarnPlus1Effect(), 1); diff --git a/Mage.Sets/src/mage/cards/k/KarnTheGreatCreator.java b/Mage.Sets/src/mage/cards/k/KarnTheGreatCreator.java index a65402c901..0c28284bed 100644 --- a/Mage.Sets/src/mage/cards/k/KarnTheGreatCreator.java +++ b/Mage.Sets/src/mage/cards/k/KarnTheGreatCreator.java @@ -2,7 +2,6 @@ package mage.cards.k; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.RestrictionEffect; @@ -38,7 +37,7 @@ public final class KarnTheGreatCreator extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.KARN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Activated abilities of artifacts your opponents control can't be activated. this.addAbility(new SimpleStaticAbility(new KarnTheGreatCreatorCantActivateEffect())); diff --git a/Mage.Sets/src/mage/cards/k/KasminaEnigmaSage.java b/Mage.Sets/src/mage/cards/k/KasminaEnigmaSage.java index 1855519454..f0cc27190e 100644 --- a/Mage.Sets/src/mage/cards/k/KasminaEnigmaSage.java +++ b/Mage.Sets/src/mage/cards/k/KasminaEnigmaSage.java @@ -3,7 +3,6 @@ package mage.cards.k; import mage.ApprovingObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.GetXLoyaltyValue; import mage.abilities.effects.ContinuousEffectImpl; @@ -37,7 +36,7 @@ public final class KasminaEnigmaSage extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.KASMINA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(2)); + this.setStartingLoyalty(2); // Each other planeswalker you control has the loyalty abilities of Kasmina, Enigma Sage. this.addAbility(new SimpleStaticAbility(new KasminaEnigmaSageGainAbilitiesEffect())); diff --git a/Mage.Sets/src/mage/cards/k/KasminaEnigmaticMentor.java b/Mage.Sets/src/mage/cards/k/KasminaEnigmaticMentor.java index 1d88da9af4..fef968cad2 100644 --- a/Mage.Sets/src/mage/cards/k/KasminaEnigmaticMentor.java +++ b/Mage.Sets/src/mage/cards/k/KasminaEnigmaticMentor.java @@ -3,7 +3,6 @@ package mage.cards.k; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.SpellAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DrawDiscardControllerEffect; @@ -31,7 +30,7 @@ public final class KasminaEnigmaticMentor extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.KASMINA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Spells your opponents cast that target a creature or planeswalker you control cost {2} more to cast. this.addAbility(new SimpleStaticAbility(new KasminaEnigmaticMentorCostModificationEffect())); diff --git a/Mage.Sets/src/mage/cards/k/KayaBaneOfTheDead.java b/Mage.Sets/src/mage/cards/k/KayaBaneOfTheDead.java index 13ab5564c8..a61bb1afb9 100644 --- a/Mage.Sets/src/mage/cards/k/KayaBaneOfTheDead.java +++ b/Mage.Sets/src/mage/cards/k/KayaBaneOfTheDead.java @@ -2,7 +2,6 @@ package mage.cards.k; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.AsThoughEffectImpl; import mage.abilities.effects.common.ExileTargetEffect; @@ -25,7 +24,7 @@ public final class KayaBaneOfTheDead extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.KAYA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(7)); + this.setStartingLoyalty(7); // Your opponents and permanents your opponents control with hexproof can be the target of spells and abilities you control as though they didn't have hexproof. this.addAbility(new SimpleStaticAbility(new KayaBaneOfTheDeadEffect())); diff --git a/Mage.Sets/src/mage/cards/k/KayaGeistHunter.java b/Mage.Sets/src/mage/cards/k/KayaGeistHunter.java index e2770582a6..36c28eb247 100644 --- a/Mage.Sets/src/mage/cards/k/KayaGeistHunter.java +++ b/Mage.Sets/src/mage/cards/k/KayaGeistHunter.java @@ -2,7 +2,6 @@ package mage.cards.k; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; @@ -44,7 +43,7 @@ public final class KayaGeistHunter extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.KAYA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Creatures you control gain deathtouch until end of turn. Put a +1/+1 counter on up to one target creature token you control. Ability ability = new LoyaltyAbility(new GainAbilityControlledEffect( diff --git a/Mage.Sets/src/mage/cards/k/KayaGhostAssassin.java b/Mage.Sets/src/mage/cards/k/KayaGhostAssassin.java index 75183e4414..b30e9f5050 100644 --- a/Mage.Sets/src/mage/cards/k/KayaGhostAssassin.java +++ b/Mage.Sets/src/mage/cards/k/KayaGhostAssassin.java @@ -2,7 +2,6 @@ package mage.cards.k; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.delayed.AtTheBeginOfYourNextUpkeepDelayedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; @@ -35,7 +34,7 @@ public final class KayaGhostAssassin extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.KAYA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // 0: Exile Kaya, Ghost Assassin or up to one target creature. Return that card to the battlefield under its owner's control at the beginning of your next upkeep. // You lose 2 life. diff --git a/Mage.Sets/src/mage/cards/k/KayaOrzhovUsurper.java b/Mage.Sets/src/mage/cards/k/KayaOrzhovUsurper.java index 5b9dc2e380..b2a67af473 100644 --- a/Mage.Sets/src/mage/cards/k/KayaOrzhovUsurper.java +++ b/Mage.Sets/src/mage/cards/k/KayaOrzhovUsurper.java @@ -2,7 +2,6 @@ package mage.cards.k; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.ExileTargetEffect; import mage.cards.*; @@ -37,7 +36,7 @@ public final class KayaOrzhovUsurper extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.KAYA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Exile up to two target cards from a single graveyard. You gain 2 life if at least one creature card was exiled this way. Ability ability = new LoyaltyAbility(new KayaOrzhovUsurperExileEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/k/KayaTheInexorable.java b/Mage.Sets/src/mage/cards/k/KayaTheInexorable.java index a5109c9bdd..c919a5adfc 100644 --- a/Mage.Sets/src/mage/cards/k/KayaTheInexorable.java +++ b/Mage.Sets/src/mage/cards/k/KayaTheInexorable.java @@ -5,7 +5,6 @@ import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.ExileTargetEffect; @@ -47,7 +46,7 @@ public final class KayaTheInexorable extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.KAYA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Put a ghostform counter on up to one target nontoken creature. It gains "When this creature dies or is put into exile, return it to its owner's hand and create a 1/1 white Spirit creature token with flying." LoyaltyAbility ability = new LoyaltyAbility(new AddCountersTargetEffect(CounterType.GHOSTFORM.createInstance()), 1); diff --git a/Mage.Sets/src/mage/cards/k/KioraBehemothBeckoner.java b/Mage.Sets/src/mage/cards/k/KioraBehemothBeckoner.java index 4e2483500a..1c741ab6b1 100644 --- a/Mage.Sets/src/mage/cards/k/KioraBehemothBeckoner.java +++ b/Mage.Sets/src/mage/cards/k/KioraBehemothBeckoner.java @@ -3,7 +3,6 @@ package mage.cards.k; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.UntapTargetEffect; import mage.cards.CardImpl; @@ -33,7 +32,7 @@ public final class KioraBehemothBeckoner extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.KIORA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(7)); + this.setStartingLoyalty(7); // Whenever a creature with power 4 or greater enters the battlefield under your control, draw a card. this.addAbility(new EntersBattlefieldControlledTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/k/KioraMasterOfTheDepths.java b/Mage.Sets/src/mage/cards/k/KioraMasterOfTheDepths.java index dafd0b930d..b43bd8a474 100644 --- a/Mage.Sets/src/mage/cards/k/KioraMasterOfTheDepths.java +++ b/Mage.Sets/src/mage/cards/k/KioraMasterOfTheDepths.java @@ -3,7 +3,6 @@ package mage.cards.k; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -36,7 +35,7 @@ public final class KioraMasterOfTheDepths extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.KIORA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Untap up to one target creature and up to one target land. LoyaltyAbility ability = new LoyaltyAbility(new KioraUntapEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/k/KioraTheCrashingWave.java b/Mage.Sets/src/mage/cards/k/KioraTheCrashingWave.java index 8034982a79..9361f0c87b 100644 --- a/Mage.Sets/src/mage/cards/k/KioraTheCrashingWave.java +++ b/Mage.Sets/src/mage/cards/k/KioraTheCrashingWave.java @@ -4,7 +4,6 @@ package mage.cards.k; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.PreventionEffectImpl; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -42,7 +41,7 @@ public final class KioraTheCrashingWave extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.KIORA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(2)); + this.setStartingLoyalty(2); // +1: Until your next turn, prevent all damage that would be dealt to and dealt by target permanent an opponent controls. LoyaltyAbility ability = new LoyaltyAbility(new KioraPreventionEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/k/KothOfTheHammer.java b/Mage.Sets/src/mage/cards/k/KothOfTheHammer.java index 6f0b674845..864a76c9f8 100644 --- a/Mage.Sets/src/mage/cards/k/KothOfTheHammer.java +++ b/Mage.Sets/src/mage/cards/k/KothOfTheHammer.java @@ -6,7 +6,6 @@ import mage.MageInt; import mage.Mana; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.mana.DynamicManaEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -43,7 +42,7 @@ public final class KothOfTheHammer extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.KOTH); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Untap target Mountain. It becomes a 4/4 red Elemental creature until end of turn. It's still a land. Ability ability = new LoyaltyAbility(new UntapTargetEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/l/LilianaDeathMage.java b/Mage.Sets/src/mage/cards/l/LilianaDeathMage.java index 4c7d3bb390..3942a1ec3d 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaDeathMage.java +++ b/Mage.Sets/src/mage/cards/l/LilianaDeathMage.java @@ -2,7 +2,6 @@ package mage.cards.l; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.LoseLifeTargetControllerEffect; @@ -34,7 +33,7 @@ public final class LilianaDeathMage extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.LILIANA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Return up to one target creature card from your graveyard to your hand. Ability plusAbility = new LoyaltyAbility(new LilianaDeathMagePlusEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/l/LilianaDeathWielder.java b/Mage.Sets/src/mage/cards/l/LilianaDeathWielder.java index 45625088b1..9744b354e4 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaDeathWielder.java +++ b/Mage.Sets/src/mage/cards/l/LilianaDeathWielder.java @@ -4,7 +4,6 @@ package mage.cards.l; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; @@ -39,7 +38,7 @@ public final class LilianaDeathWielder extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.LILIANA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +2: Put a -1/-1 counter on up to one target creature. LoyaltyAbility ability = new LoyaltyAbility(new AddCountersTargetEffect(CounterType.M1M1.createInstance(1)), 2); diff --git a/Mage.Sets/src/mage/cards/l/LilianaDeathsMajesty.java b/Mage.Sets/src/mage/cards/l/LilianaDeathsMajesty.java index e7433ed24d..3c759a02ec 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaDeathsMajesty.java +++ b/Mage.Sets/src/mage/cards/l/LilianaDeathsMajesty.java @@ -3,7 +3,6 @@ package mage.cards.l; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DestroyAllEffect; import mage.abilities.effects.common.MillCardsControllerEffect; @@ -38,7 +37,7 @@ public final class LilianaDeathsMajesty extends CardImpl { this.subtype.add(SubType.LILIANA); //Starting Loyalty: 5 - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Create a 2/2 black Zombie creature token. Put the top two cards of your library into your graveyard. LoyaltyAbility ability = new LoyaltyAbility(new CreateTokenEffect(new ZombieToken()), 1); diff --git a/Mage.Sets/src/mage/cards/l/LilianaDefiantNecromancer.java b/Mage.Sets/src/mage/cards/l/LilianaDefiantNecromancer.java index 53587507f1..90f93f7558 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaDefiantNecromancer.java +++ b/Mage.Sets/src/mage/cards/l/LilianaDefiantNecromancer.java @@ -2,7 +2,6 @@ package mage.cards.l; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.costs.Cost; import mage.abilities.costs.common.PayVariableLoyaltyCost; import mage.abilities.effects.common.GetEmblemEffect; @@ -44,7 +43,7 @@ public final class LilianaDefiantNecromancer extends CardImpl { this.nightCard = true; - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +2: Each player discards a card. this.addAbility(new LoyaltyAbility(new DiscardEachPlayerEffect(1, false), 2)); diff --git a/Mage.Sets/src/mage/cards/l/LilianaDreadhordeGeneral.java b/Mage.Sets/src/mage/cards/l/LilianaDreadhordeGeneral.java index a3aae6bee5..906097c5f7 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaDreadhordeGeneral.java +++ b/Mage.Sets/src/mage/cards/l/LilianaDreadhordeGeneral.java @@ -3,7 +3,6 @@ package mage.cards.l; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.DiesCreatureTriggeredAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; @@ -38,7 +37,7 @@ public final class LilianaDreadhordeGeneral extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.LILIANA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(6)); + this.setStartingLoyalty(6); // Whenever a creature you control dies, draw a card. this.addAbility(new DiesCreatureTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/l/LilianaOfTheDarkRealms.java b/Mage.Sets/src/mage/cards/l/LilianaOfTheDarkRealms.java index 59add5556b..1eb3210e05 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaOfTheDarkRealms.java +++ b/Mage.Sets/src/mage/cards/l/LilianaOfTheDarkRealms.java @@ -2,7 +2,6 @@ package mage.cards.l; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; @@ -37,7 +36,7 @@ public final class LilianaOfTheDarkRealms extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.LILIANA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Search your library for a Swamp card, reveal it, and put it into your hand. Then shuffle your library. this.addAbility(new LoyaltyAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true), 1)); diff --git a/Mage.Sets/src/mage/cards/l/LilianaOfTheVeil.java b/Mage.Sets/src/mage/cards/l/LilianaOfTheVeil.java index 0206587777..bf41716944 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaOfTheVeil.java +++ b/Mage.Sets/src/mage/cards/l/LilianaOfTheVeil.java @@ -6,7 +6,6 @@ import java.util.List; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.SacrificeEffect; import mage.abilities.effects.common.discard.DiscardEachPlayerEffect; @@ -35,7 +34,7 @@ public final class LilianaOfTheVeil extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.LILIANA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Each player discards a card. this.addAbility(new LoyaltyAbility(new DiscardEachPlayerEffect(), 1)); diff --git a/Mage.Sets/src/mage/cards/l/LilianaTheLastHope.java b/Mage.Sets/src/mage/cards/l/LilianaTheLastHope.java index 9d2d78f3b7..fedfde8ecd 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaTheLastHope.java +++ b/Mage.Sets/src/mage/cards/l/LilianaTheLastHope.java @@ -4,7 +4,6 @@ package mage.cards.l; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -37,7 +36,7 @@ public final class LilianaTheLastHope extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.LILIANA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Up to one target creature gets -2/-1 until your next turn. Effect effect = new BoostTargetEffect(-2, -1, Duration.UntilYourNextTurn); diff --git a/Mage.Sets/src/mage/cards/l/LilianaTheNecromancer.java b/Mage.Sets/src/mage/cards/l/LilianaTheNecromancer.java index 32fbb00af8..aa26135117 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaTheNecromancer.java +++ b/Mage.Sets/src/mage/cards/l/LilianaTheNecromancer.java @@ -3,7 +3,6 @@ package mage.cards.l; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; @@ -39,7 +38,7 @@ public final class LilianaTheNecromancer extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.LILIANA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Target player loses 2 life. Ability ability = new LoyaltyAbility(new LoseLifeTargetEffect(2), 1); diff --git a/Mage.Sets/src/mage/cards/l/LilianaUntouchedByDeath.java b/Mage.Sets/src/mage/cards/l/LilianaUntouchedByDeath.java index f15486a688..d7915caf2f 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaUntouchedByDeath.java +++ b/Mage.Sets/src/mage/cards/l/LilianaUntouchedByDeath.java @@ -2,7 +2,6 @@ package mage.cards.l; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.AsThoughEffectImpl; @@ -33,7 +32,7 @@ public final class LilianaUntouchedByDeath extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.LILIANA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Put the top three cards of your library into your graveyard. If at least one of them is a Zombie card, each opponent loses 2 life and you gain 2 life. this.addAbility(new LoyaltyAbility(new LilianaUntouchedByDeathEffect(), 1)); diff --git a/Mage.Sets/src/mage/cards/l/LilianaVess.java b/Mage.Sets/src/mage/cards/l/LilianaVess.java index f5cc13bdc6..d378c51db8 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaVess.java +++ b/Mage.Sets/src/mage/cards/l/LilianaVess.java @@ -5,7 +5,6 @@ import java.util.Set; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.discard.DiscardTargetEffect; import mage.abilities.effects.common.search.SearchLibraryPutOnLibraryEffect; @@ -34,7 +33,7 @@ public final class LilianaVess extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.LILIANA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Target player discards a card. LoyaltyAbility ability1 = new LoyaltyAbility(new DiscardTargetEffect(1), 1); ability1.addTarget(new TargetPlayer()); diff --git a/Mage.Sets/src/mage/cards/l/LilianaWakerOfTheDead.java b/Mage.Sets/src/mage/cards/l/LilianaWakerOfTheDead.java index 81087aab8e..4d59e896f1 100644 --- a/Mage.Sets/src/mage/cards/l/LilianaWakerOfTheDead.java +++ b/Mage.Sets/src/mage/cards/l/LilianaWakerOfTheDead.java @@ -2,7 +2,6 @@ package mage.cards.l; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount; import mage.abilities.effects.OneShotEffect; @@ -40,7 +39,7 @@ public final class LilianaWakerOfTheDead extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.LILIANA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Each player discards a card. Each opponent who can't loses 3 life. this.addAbility(new LoyaltyAbility(new LilianaWakerOfTheDeadDiscardEffect(), 1)); diff --git a/Mage.Sets/src/mage/cards/l/LolthSpiderQueen.java b/Mage.Sets/src/mage/cards/l/LolthSpiderQueen.java index 986ee74bd5..ed17d8a2a2 100644 --- a/Mage.Sets/src/mage/cards/l/LolthSpiderQueen.java +++ b/Mage.Sets/src/mage/cards/l/LolthSpiderQueen.java @@ -3,7 +3,6 @@ package mage.cards.l; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.DiesCreatureTriggeredAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -31,7 +30,7 @@ public final class LolthSpiderQueen extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.LOLTH); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // Whenever a creature you control dies, put a loyalty counter on Lolth, Spider Queen. this.addAbility(new DiesCreatureTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/l/LordWindgrace.java b/Mage.Sets/src/mage/cards/l/LordWindgrace.java index e57753a410..b230820030 100644 --- a/Mage.Sets/src/mage/cards/l/LordWindgrace.java +++ b/Mage.Sets/src/mage/cards/l/LordWindgrace.java @@ -4,7 +4,6 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.CanBeYourCommanderAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DestroyTargetEffect; @@ -42,7 +41,7 @@ public final class LordWindgrace extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.WINDGRACE); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +2: Discard a card, then draw a card. If a land card is discarded this way, draw an additional card. this.addAbility(new LoyaltyAbility(new LordWindgraceEffect(), 2)); diff --git a/Mage.Sets/src/mage/cards/l/LukeSkywalkerTheLastJedi.java b/Mage.Sets/src/mage/cards/l/LukeSkywalkerTheLastJedi.java index 108eaadae3..610f5c6794 100644 --- a/Mage.Sets/src/mage/cards/l/LukeSkywalkerTheLastJedi.java +++ b/Mage.Sets/src/mage/cards/l/LukeSkywalkerTheLastJedi.java @@ -4,7 +4,6 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.ExileSourceEffect; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.PutOnLibraryTargetEffect; @@ -38,7 +37,7 @@ public final class LukeSkywalkerTheLastJedi extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.LUKE); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Put two +1/+1 counters on up to one target creature. Ability ability1 = new LoyaltyAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance(2)), 2); diff --git a/Mage.Sets/src/mage/cards/l/LukkaCoppercoatOutcast.java b/Mage.Sets/src/mage/cards/l/LukkaCoppercoatOutcast.java index 0cfdb483c9..b38b7b3e10 100644 --- a/Mage.Sets/src/mage/cards/l/LukkaCoppercoatOutcast.java +++ b/Mage.Sets/src/mage/cards/l/LukkaCoppercoatOutcast.java @@ -2,7 +2,6 @@ package mage.cards.l; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.AsThoughEffectImpl; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.OneShotEffect; @@ -33,7 +32,7 @@ public final class LukkaCoppercoatOutcast extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.LUKKA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Exile the top three cards of your library. Creature cards exiled this way gain "You may cast this card from exile as long as you control a Lukka planeswalker." this.addAbility(new LoyaltyAbility(new LukkaCoppercoatOutcastExileEffect(), 1)); diff --git a/Mage.Sets/src/mage/cards/m/MilaCraftyCompanion.java b/Mage.Sets/src/mage/cards/m/MilaCraftyCompanion.java index 26e8c32f14..37f1b436b9 100644 --- a/Mage.Sets/src/mage/cards/m/MilaCraftyCompanion.java +++ b/Mage.Sets/src/mage/cards/m/MilaCraftyCompanion.java @@ -4,7 +4,6 @@ import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.BecomesTargetControlledPermanentTriggeredAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.delayed.AtTheBeginOfYourNextUpkeepDelayedTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; @@ -64,7 +63,7 @@ public final class MilaCraftyCompanion extends ModalDoubleFacesCard { // Lukka, Wayward Bonder // Legendary Planeswalker - Lukka this.getRightHalfCard().addSuperType(SuperType.LEGENDARY); - this.getRightHalfCard().addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.getRightHalfCard().setStartingLoyalty(5); // +1: You may discard a card. If you do, draw a card. If a creature card was discarded this way, draw two cards instead. this.getRightHalfCard().addAbility(new LoyaltyAbility(new LukkaWaywardBonderDiscardEffect(), 1)); diff --git a/Mage.Sets/src/mage/cards/m/MoltensteelDragon.java b/Mage.Sets/src/mage/cards/m/MoltensteelDragon.java index ad9430c080..141964fa61 100644 --- a/Mage.Sets/src/mage/cards/m/MoltensteelDragon.java +++ b/Mage.Sets/src/mage/cards/m/MoltensteelDragon.java @@ -1,28 +1,25 @@ - package mage.cards.m; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; -import mage.abilities.costs.mana.PhyrexianManaCost; +import mage.abilities.costs.mana.ManaCostsImpl; 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.SubType; -import mage.constants.ColoredManaSymbol; import mage.constants.Duration; -import mage.constants.Zone; +import mage.constants.SubType; + +import java.util.UUID; /** - * * @author North */ public final class MoltensteelDragon extends CardImpl { public MoltensteelDragon(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}{R/P}{R/P}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}{R/P}{R/P}"); this.subtype.add(SubType.PHYREXIAN); this.subtype.add(SubType.DRAGON); @@ -32,9 +29,9 @@ public final class MoltensteelDragon extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, - new BoostSourceEffect(1, 0, Duration.EndOfTurn), - new PhyrexianManaCost(ColoredManaSymbol.R))); + this.addAbility(new SimpleActivatedAbility(new BoostSourceEffect( + 1, 0, Duration.EndOfTurn + ), new ManaCostsImpl<>("{R/P}"))); } private MoltensteelDragon(final MoltensteelDragon card) { diff --git a/Mage.Sets/src/mage/cards/m/Mordenkainen.java b/Mage.Sets/src/mage/cards/m/Mordenkainen.java index e55f74548f..76b69d4501 100644 --- a/Mage.Sets/src/mage/cards/m/Mordenkainen.java +++ b/Mage.Sets/src/mage/cards/m/Mordenkainen.java @@ -4,7 +4,6 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -27,7 +26,7 @@ public final class Mordenkainen extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.MORDENKAINEN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +2: Draw two cards, then put a card from your hand on the bottom of your library. this.addAbility(new LoyaltyAbility(new MordenkainenDrawEffect(), 2)); diff --git a/Mage.Sets/src/mage/cards/m/MuYanling.java b/Mage.Sets/src/mage/cards/m/MuYanling.java index 3ec4c77f52..60f0889275 100644 --- a/Mage.Sets/src/mage/cards/m/MuYanling.java +++ b/Mage.Sets/src/mage/cards/m/MuYanling.java @@ -4,7 +4,6 @@ package mage.cards.m; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; @@ -32,7 +31,7 @@ public final class MuYanling extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.YANLING); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +2: Target creature can't be blocked this turn. LoyaltyAbility ability = new LoyaltyAbility(new CantBeBlockedTargetEffect(), 2); diff --git a/Mage.Sets/src/mage/cards/m/MuYanlingCelestialWind.java b/Mage.Sets/src/mage/cards/m/MuYanlingCelestialWind.java index 709b92c774..1b9abc9ce0 100644 --- a/Mage.Sets/src/mage/cards/m/MuYanlingCelestialWind.java +++ b/Mage.Sets/src/mage/cards/m/MuYanlingCelestialWind.java @@ -2,7 +2,6 @@ package mage.cards.m; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.effects.common.continuous.BoostAllEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; @@ -33,7 +32,7 @@ public final class MuYanlingCelestialWind extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.YANLING); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Until your next turn, up to one target creature gets -5/-0. Ability ability = new LoyaltyAbility(new BoostTargetEffect( diff --git a/Mage.Sets/src/mage/cards/m/MuYanlingSkyDancer.java b/Mage.Sets/src/mage/cards/m/MuYanlingSkyDancer.java index b137052617..25c122b870 100644 --- a/Mage.Sets/src/mage/cards/m/MuYanlingSkyDancer.java +++ b/Mage.Sets/src/mage/cards/m/MuYanlingSkyDancer.java @@ -2,7 +2,6 @@ package mage.cards.m; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; @@ -30,7 +29,7 @@ public final class MuYanlingSkyDancer extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.YANLING); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(2)); + this.setStartingLoyalty(2); // +2: Until your next turn, up to one target creature gets -2/-0 and loses flying. Ability ability = new LoyaltyAbility(new BoostTargetEffect( diff --git a/Mage.Sets/src/mage/cards/n/NahiriHeirOfTheAncients.java b/Mage.Sets/src/mage/cards/n/NahiriHeirOfTheAncients.java index 4a8981a596..571dc51406 100644 --- a/Mage.Sets/src/mage/cards/n/NahiriHeirOfTheAncients.java +++ b/Mage.Sets/src/mage/cards/n/NahiriHeirOfTheAncients.java @@ -3,7 +3,6 @@ package mage.cards.n; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.dynamicvalue.common.StaticValue; @@ -53,7 +52,7 @@ public final class NahiriHeirOfTheAncients extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NAHIRI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Create a 1/1 white Kor Warrior creature token. You may attach an Equipment you control to it. this.addAbility(new LoyaltyAbility(new NahiriHeirOfTheAncientsEffect(), 1)); diff --git a/Mage.Sets/src/mage/cards/n/NahiriStormOfStone.java b/Mage.Sets/src/mage/cards/n/NahiriStormOfStone.java index ace6fe386a..0270fe1df3 100644 --- a/Mage.Sets/src/mage/cards/n/NahiriStormOfStone.java +++ b/Mage.Sets/src/mage/cards/n/NahiriStormOfStone.java @@ -2,7 +2,6 @@ package mage.cards.n; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.MyTurnCondition; import mage.abilities.decorator.ConditionalContinuousEffect; @@ -44,7 +43,7 @@ public final class NahiriStormOfStone extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NAHIRI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(6)); + this.setStartingLoyalty(6); // As long as it's your turn, creatures you control have first strike and equip abilities you activate cost {1} less to activate. Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect( diff --git a/Mage.Sets/src/mage/cards/n/NahiriTheHarbinger.java b/Mage.Sets/src/mage/cards/n/NahiriTheHarbinger.java index 934edb37f7..3d71874464 100644 --- a/Mage.Sets/src/mage/cards/n/NahiriTheHarbinger.java +++ b/Mage.Sets/src/mage/cards/n/NahiriTheHarbinger.java @@ -4,7 +4,6 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.costs.common.DiscardCardCost; import mage.abilities.effects.ContinuousEffect; @@ -57,7 +56,7 @@ public final class NahiriTheHarbinger extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NAHIRI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +2: You may discard a card. If you do, draw a card. this.addAbility(new LoyaltyAbility(new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new DiscardCardCost()), 2)); diff --git a/Mage.Sets/src/mage/cards/n/NahiriTheLithomancer.java b/Mage.Sets/src/mage/cards/n/NahiriTheLithomancer.java index 0ae039061f..1b4db2b232 100644 --- a/Mage.Sets/src/mage/cards/n/NahiriTheLithomancer.java +++ b/Mage.Sets/src/mage/cards/n/NahiriTheLithomancer.java @@ -5,7 +5,6 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.CanBeYourCommanderAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; @@ -41,7 +40,7 @@ public final class NahiriTheLithomancer extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NAHIRI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +2: Create a 1/1 white Kor Soldier creature token. You may attach an Equipment you control to it. this.addAbility(new LoyaltyAbility(new NahiriTheLithomancerFirstAbilityEffect(), 2)); diff --git a/Mage.Sets/src/mage/cards/n/NarsetOfTheAncientWay.java b/Mage.Sets/src/mage/cards/n/NarsetOfTheAncientWay.java index b69562ce7e..31e88316cc 100644 --- a/Mage.Sets/src/mage/cards/n/NarsetOfTheAncientWay.java +++ b/Mage.Sets/src/mage/cards/n/NarsetOfTheAncientWay.java @@ -5,7 +5,6 @@ import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.SpellAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.delayed.ReflexiveTriggeredAbility; import mage.abilities.condition.Condition; import mage.abilities.costs.Cost; @@ -38,7 +37,7 @@ public final class NarsetOfTheAncientWay extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NARSET); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: You gain 2 life. Add {U}, {R}, or {W}. Spend this mana only to cast a noncreature spell. this.addAbility(new LoyaltyAbility(new NarsetOfTheAncientWayManaEffect(), 1)); diff --git a/Mage.Sets/src/mage/cards/n/NarsetParterOfVeils.java b/Mage.Sets/src/mage/cards/n/NarsetParterOfVeils.java index 20996fe8a0..fec48a5f7d 100644 --- a/Mage.Sets/src/mage/cards/n/NarsetParterOfVeils.java +++ b/Mage.Sets/src/mage/cards/n/NarsetParterOfVeils.java @@ -2,7 +2,6 @@ package mage.cards.n; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.ContinuousRuleModifyingEffectImpl; @@ -36,7 +35,7 @@ public final class NarsetParterOfVeils extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NARSET); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Each opponent can't draw more than one card each turn. this.addAbility(new SimpleStaticAbility(new NarsetParterOfVeilsEffect()), new CardsAmountDrawnThisTurnWatcher()); diff --git a/Mage.Sets/src/mage/cards/n/NarsetTranscendent.java b/Mage.Sets/src/mage/cards/n/NarsetTranscendent.java index 17813fe54b..a47d27c528 100644 --- a/Mage.Sets/src/mage/cards/n/NarsetTranscendent.java +++ b/Mage.Sets/src/mage/cards/n/NarsetTranscendent.java @@ -5,7 +5,6 @@ import mage.MageObject; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; @@ -42,7 +41,7 @@ public final class NarsetTranscendent extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NARSET); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(6)); + this.setStartingLoyalty(6); // +1: Look at the top card of your library. If it's a noncreature, nonland card, you may reveal it and put it into your hand. this.addAbility(new LoyaltyAbility(new NarsetTranscendentEffect1(), 1)); diff --git a/Mage.Sets/src/mage/cards/n/NicolBolasDragonGod.java b/Mage.Sets/src/mage/cards/n/NicolBolasDragonGod.java index fb6d6a6fd5..a92ed571ec 100644 --- a/Mage.Sets/src/mage/cards/n/NicolBolasDragonGod.java +++ b/Mage.Sets/src/mage/cards/n/NicolBolasDragonGod.java @@ -3,7 +3,6 @@ package mage.cards.n; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.OneShotEffect; @@ -37,7 +36,7 @@ public final class NicolBolasDragonGod extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.BOLAS); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // Nicol Bolas, Dragon-God has all loyalty abilities of all other planeswalkers on the battlefield. this.addAbility(new SimpleStaticAbility(new NicolBolasDragonGodGainAbilitiesEffect())); diff --git a/Mage.Sets/src/mage/cards/n/NicolBolasGodPharaoh.java b/Mage.Sets/src/mage/cards/n/NicolBolasGodPharaoh.java index a496767a99..b61ac32190 100644 --- a/Mage.Sets/src/mage/cards/n/NicolBolasGodPharaoh.java +++ b/Mage.Sets/src/mage/cards/n/NicolBolasGodPharaoh.java @@ -2,7 +2,6 @@ package mage.cards.n; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageTargetEffect; @@ -47,7 +46,7 @@ public final class NicolBolasGodPharaoh extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.BOLAS); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(7)); + this.setStartingLoyalty(7); // +2: Target opponent exiles cards from the top of their library until they exile a nonland card. Until end of turn, you may cast that card without paying its mana cost. LoyaltyAbility ability = new LoyaltyAbility(new NicolBolasGodPharaohPlusTwoEffect(), 2); diff --git a/Mage.Sets/src/mage/cards/n/NicolBolasPlaneswalker.java b/Mage.Sets/src/mage/cards/n/NicolBolasPlaneswalker.java index c7a0fd8f8d..d62befa2e3 100644 --- a/Mage.Sets/src/mage/cards/n/NicolBolasPlaneswalker.java +++ b/Mage.Sets/src/mage/cards/n/NicolBolasPlaneswalker.java @@ -3,7 +3,6 @@ package mage.cards.n; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.SacrificeEffect; @@ -38,7 +37,7 @@ public final class NicolBolasPlaneswalker extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.BOLAS); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +3: Destroy target noncreature permanent. LoyaltyAbility ability = new LoyaltyAbility(new DestroyTargetEffect(), 3); diff --git a/Mage.Sets/src/mage/cards/n/NicolBolasTheArisen.java b/Mage.Sets/src/mage/cards/n/NicolBolasTheArisen.java index de5f1adbe8..3c5ca837b9 100644 --- a/Mage.Sets/src/mage/cards/n/NicolBolasTheArisen.java +++ b/Mage.Sets/src/mage/cards/n/NicolBolasTheArisen.java @@ -3,7 +3,6 @@ package mage.cards.n; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; @@ -49,7 +48,7 @@ public final class NicolBolasTheArisen extends CardImpl { this.color.setRed(true); this.nightCard = true; - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(7)); + this.setStartingLoyalty(7); // +2: Draw two cards. this.addAbility(new LoyaltyAbility(new DrawCardSourceControllerEffect(2), 2)); diff --git a/Mage.Sets/src/mage/cards/n/NicolBolasTheDeceiver.java b/Mage.Sets/src/mage/cards/n/NicolBolasTheDeceiver.java index 40e68414f2..5f3d56ac0a 100644 --- a/Mage.Sets/src/mage/cards/n/NicolBolasTheDeceiver.java +++ b/Mage.Sets/src/mage/cards/n/NicolBolasTheDeceiver.java @@ -4,7 +4,6 @@ package mage.cards.n; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamagePlayersEffect; import mage.abilities.effects.common.DestroyTargetEffect; @@ -34,7 +33,7 @@ public final class NicolBolasTheDeceiver extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{5}{U}{B}{R}"); this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.BOLAS); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +3: Each opponent loses 3 life unless that player sacrifices a nonland permanent or discards a card. this.addAbility(new LoyaltyAbility(new NicolBolasTheDeceiverFirstEffect(), 3)); diff --git a/Mage.Sets/src/mage/cards/n/NikoAris.java b/Mage.Sets/src/mage/cards/n/NikoAris.java index 5f2871f4b5..84c23b95cb 100644 --- a/Mage.Sets/src/mage/cards/n/NikoAris.java +++ b/Mage.Sets/src/mage/cards/n/NikoAris.java @@ -4,7 +4,6 @@ import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.MultipliedValue; import mage.abilities.dynamicvalue.common.CardsDrawnThisTurnDynamicValue; @@ -52,7 +51,7 @@ public final class NikoAris extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NIKO); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // When Niko Aris enters the battlefield, create X Shard tokens. this.addAbility(new EntersBattlefieldTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/n/NissaGenesisMage.java b/Mage.Sets/src/mage/cards/n/NissaGenesisMage.java index c1c242dedc..1ec5a10b4c 100644 --- a/Mage.Sets/src/mage/cards/n/NissaGenesisMage.java +++ b/Mage.Sets/src/mage/cards/n/NissaGenesisMage.java @@ -4,7 +4,6 @@ package mage.cards.n; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; import mage.abilities.effects.common.UntapTargetEffect; @@ -42,7 +41,7 @@ public final class NissaGenesisMage extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NISSA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); //+2: Untap up to two target creatures and up to two target lands. Ability ability = new LoyaltyAbility(new UntapTargetEffect(false).setText("Untap up to two target creatures and up to two target lands"), +2); diff --git a/Mage.Sets/src/mage/cards/n/NissaNaturesArtisan.java b/Mage.Sets/src/mage/cards/n/NissaNaturesArtisan.java index e8ad1de5d8..fb9927141e 100644 --- a/Mage.Sets/src/mage/cards/n/NissaNaturesArtisan.java +++ b/Mage.Sets/src/mage/cards/n/NissaNaturesArtisan.java @@ -6,7 +6,6 @@ import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.GainLifeEffect; @@ -39,7 +38,7 @@ public final class NissaNaturesArtisan extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NISSA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +3: You gain 3 life. this.addAbility(new LoyaltyAbility(new GainLifeEffect(3), 3)); diff --git a/Mage.Sets/src/mage/cards/n/NissaOfShadowedBoughs.java b/Mage.Sets/src/mage/cards/n/NissaOfShadowedBoughs.java index 1b3a3667d4..b805cc4422 100644 --- a/Mage.Sets/src/mage/cards/n/NissaOfShadowedBoughs.java +++ b/Mage.Sets/src/mage/cards/n/NissaOfShadowedBoughs.java @@ -3,7 +3,6 @@ package mage.cards.n; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.LandfallAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect; @@ -42,7 +41,7 @@ public final class NissaOfShadowedBoughs extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NISSA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // Landfall — Whenever a land enters the battlefield under your control, put a loyalty counter on Nissa of Shadowed Boughs. this.addAbility(new LandfallAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance()))); diff --git a/Mage.Sets/src/mage/cards/n/NissaRevane.java b/Mage.Sets/src/mage/cards/n/NissaRevane.java index 794f46ea94..3e3d138264 100644 --- a/Mage.Sets/src/mage/cards/n/NissaRevane.java +++ b/Mage.Sets/src/mage/cards/n/NissaRevane.java @@ -4,7 +4,6 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; @@ -14,7 +13,6 @@ import mage.constants.Outcome; import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.FilterCard; -import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.NamePredicate; import mage.game.Game; @@ -38,7 +36,7 @@ public final class NissaRevane extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{G}{G}"); this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NISSA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(2)); + this.setStartingLoyalty(2); LoyaltyAbility ability1 = new LoyaltyAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(1, nissasChosenFilter)), 1); this.addAbility(ability1); diff --git a/Mage.Sets/src/mage/cards/n/NissaSageAnimist.java b/Mage.Sets/src/mage/cards/n/NissaSageAnimist.java index 0d50bfa2ba..c212bc3aaf 100644 --- a/Mage.Sets/src/mage/cards/n/NissaSageAnimist.java +++ b/Mage.Sets/src/mage/cards/n/NissaSageAnimist.java @@ -4,7 +4,6 @@ import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; @@ -38,7 +37,7 @@ public final class NissaSageAnimist extends CardImpl { this.nightCard = true; - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Reveal the top card of your library. If it's a land card, put it onto the battlefield. Otherwise, put it into your hand. this.addAbility(new LoyaltyAbility(new NissaSageAnimistPlusOneEffect(), 1)); diff --git a/Mage.Sets/src/mage/cards/n/NissaStewardOfElements.java b/Mage.Sets/src/mage/cards/n/NissaStewardOfElements.java index 60717a9fbc..b5f975d406 100644 --- a/Mage.Sets/src/mage/cards/n/NissaStewardOfElements.java +++ b/Mage.Sets/src/mage/cards/n/NissaStewardOfElements.java @@ -1,21 +1,21 @@ package mage.cards.n; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.dynamicvalue.common.CountersSourceCount; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.EntersBattlefieldWithXCountersEffect; import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect; import mage.abilities.effects.keyword.ScryEffect; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.HasteAbility; -import mage.cards.*; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.cards.CardsImpl; import mage.constants.*; import mage.counters.CounterType; import mage.filter.common.FilterControlledLandPermanent; @@ -27,8 +27,9 @@ import mage.game.permanent.token.TokenImpl; import mage.players.Player; import mage.target.TargetPermanent; +import java.util.UUID; + /** - * * @author fireshoes */ public final class NissaStewardOfElements extends CardImpl { @@ -38,9 +39,7 @@ public final class NissaStewardOfElements extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NISSA); - Ability abilityETB = new EntersBattlefieldAbility(new EntersBattlefieldWithXCountersEffect(CounterType.LOYALTY.createInstance())); - abilityETB.setRuleVisible(false); - this.addAbility(abilityETB); + this.setStartingLoyalty(-2); // -2 loyalty means X // +2: Scry 2. this.addAbility(new LoyaltyAbility(new ScryEffect(2), 2)); diff --git a/Mage.Sets/src/mage/cards/n/NissaVitalForce.java b/Mage.Sets/src/mage/cards/n/NissaVitalForce.java index 5150a71ecc..a6f68fbb60 100644 --- a/Mage.Sets/src/mage/cards/n/NissaVitalForce.java +++ b/Mage.Sets/src/mage/cards/n/NissaVitalForce.java @@ -4,7 +4,6 @@ package mage.cards.n; import java.util.UUID; import mage.MageInt; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.effects.common.UntapTargetEffect; @@ -41,7 +40,7 @@ public final class NissaVitalForce extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NISSA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Untap target land you control. Until your next turn, it becomes a 5/5 Elemental creature with haste. It's still a land. LoyaltyAbility ability = new LoyaltyAbility(new UntapTargetEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/n/NissaVoiceOfZendikar.java b/Mage.Sets/src/mage/cards/n/NissaVoiceOfZendikar.java index 65d034ef76..b3e25056c9 100644 --- a/Mage.Sets/src/mage/cards/n/NissaVoiceOfZendikar.java +++ b/Mage.Sets/src/mage/cards/n/NissaVoiceOfZendikar.java @@ -3,7 +3,6 @@ package mage.cards.n; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateTokenEffect; @@ -38,7 +37,7 @@ public final class NissaVoiceOfZendikar extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NISSA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Create a 0/1 green Plant creature token. this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new PlantToken()), 1)); diff --git a/Mage.Sets/src/mage/cards/n/NissaWhoShakesTheWorld.java b/Mage.Sets/src/mage/cards/n/NissaWhoShakesTheWorld.java index 3f85834cac..2ff7174e0f 100644 --- a/Mage.Sets/src/mage/cards/n/NissaWhoShakesTheWorld.java +++ b/Mage.Sets/src/mage/cards/n/NissaWhoShakesTheWorld.java @@ -4,7 +4,6 @@ import mage.MageInt; import mage.Mana; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect; @@ -52,7 +51,7 @@ public final class NissaWhoShakesTheWorld extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NISSA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Whenever you tap a Forest for mana, add an additional {G}. this.addAbility(new NissaWhoShakesTheWorldTriggeredAbility()); diff --git a/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java b/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java index 9eab0f0dfd..3318c4d700 100644 --- a/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java +++ b/Mage.Sets/src/mage/cards/n/NissaWorldwaker.java @@ -4,7 +4,6 @@ package mage.cards.n; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.UntapTargetEffect; @@ -40,7 +39,7 @@ public final class NissaWorldwaker extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NISSA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Target land you control becomes a 4/4 Elemental creature with trample. It's still a land. LoyaltyAbility ability = new LoyaltyAbility(new BecomesCreatureTargetEffect(new NissaWorldwakerToken(), false, true, Duration.Custom), 1); diff --git a/Mage.Sets/src/mage/cards/o/ObNixilisOfTheBlackOath.java b/Mage.Sets/src/mage/cards/o/ObNixilisOfTheBlackOath.java index 6bd31e361d..71fcec21b8 100644 --- a/Mage.Sets/src/mage/cards/o/ObNixilisOfTheBlackOath.java +++ b/Mage.Sets/src/mage/cards/o/ObNixilisOfTheBlackOath.java @@ -5,7 +5,6 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.CanBeYourCommanderAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -32,7 +31,7 @@ public final class ObNixilisOfTheBlackOath extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NIXILIS); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +2: Each opponent loses 1 life. You gain life equal to the life lost this way. this.addAbility(new LoyaltyAbility(new ObNixilisOfTheBlackOathEffect1(), 2)); diff --git a/Mage.Sets/src/mage/cards/o/ObNixilisReignited.java b/Mage.Sets/src/mage/cards/o/ObNixilisReignited.java index 3a59579b59..3c96f68cb0 100644 --- a/Mage.Sets/src/mage/cards/o/ObNixilisReignited.java +++ b/Mage.Sets/src/mage/cards/o/ObNixilisReignited.java @@ -1,7 +1,6 @@ package mage.cards.o; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; @@ -28,7 +27,7 @@ public final class ObNixilisReignited extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NIXILIS); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: You draw a card and you lose 1 life. Effect effect = new DrawCardSourceControllerEffect(1, "you"); diff --git a/Mage.Sets/src/mage/cards/o/ObNixilisTheHateTwisted.java b/Mage.Sets/src/mage/cards/o/ObNixilisTheHateTwisted.java index 71d1cbf9ee..993fb79192 100644 --- a/Mage.Sets/src/mage/cards/o/ObNixilisTheHateTwisted.java +++ b/Mage.Sets/src/mage/cards/o/ObNixilisTheHateTwisted.java @@ -3,7 +3,6 @@ package mage.cards.o; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.DrawCardOpponentTriggeredAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; @@ -29,7 +28,7 @@ public final class ObNixilisTheHateTwisted extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.NIXILIS); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Whenever an opponent draws a card, Ob Nixilis, the Hate-Twisted deals 1 damage to that player. this.addAbility(new DrawCardOpponentTriggeredAbility(new DamageTargetEffect( diff --git a/Mage.Sets/src/mage/cards/o/ObiWanKenobi.java b/Mage.Sets/src/mage/cards/o/ObiWanKenobi.java index 0ad5ca8a1c..383dcae136 100644 --- a/Mage.Sets/src/mage/cards/o/ObiWanKenobi.java +++ b/Mage.Sets/src/mage/cards/o/ObiWanKenobi.java @@ -4,7 +4,6 @@ package mage.cards.o; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.TapTargetEffect; @@ -31,7 +30,7 @@ public final class ObiWanKenobi extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.OBI_WAN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1:Up to one target creature you control gains vigilance and protection from color of your choice until end of turn. Effect effect = new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn); diff --git a/Mage.Sets/src/mage/cards/o/OkoTheTrickster.java b/Mage.Sets/src/mage/cards/o/OkoTheTrickster.java index 86e1ed6c1b..cb98c9ec02 100644 --- a/Mage.Sets/src/mage/cards/o/OkoTheTrickster.java +++ b/Mage.Sets/src/mage/cards/o/OkoTheTrickster.java @@ -2,7 +2,6 @@ package mage.cards.o; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.PreventAllDamageToSourceEffect; import mage.abilities.effects.common.continuous.GainAbilityAllEffect; @@ -31,7 +30,7 @@ public final class OkoTheTrickster extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.OKO); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Put two +1/+1 counters on up to one target creature you control. Ability ability = new LoyaltyAbility( diff --git a/Mage.Sets/src/mage/cards/o/OkoThiefOfCrowns.java b/Mage.Sets/src/mage/cards/o/OkoThiefOfCrowns.java index f2b391b7a1..57804a6465 100644 --- a/Mage.Sets/src/mage/cards/o/OkoThiefOfCrowns.java +++ b/Mage.Sets/src/mage/cards/o/OkoThiefOfCrowns.java @@ -2,7 +2,6 @@ package mage.cards.o; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.ExchangeControlTargetEffect; @@ -37,7 +36,7 @@ public final class OkoThiefOfCrowns extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.OKO); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +2: Create a Food token. this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new FoodToken()), 2)); diff --git a/Mage.Sets/src/mage/cards/p/PestilentSouleater.java b/Mage.Sets/src/mage/cards/p/PestilentSouleater.java index d9b448d442..7f631d8a1a 100644 --- a/Mage.Sets/src/mage/cards/p/PestilentSouleater.java +++ b/Mage.Sets/src/mage/cards/p/PestilentSouleater.java @@ -1,37 +1,34 @@ - package mage.cards.p; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; -import mage.abilities.costs.mana.PhyrexianManaCost; +import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.keyword.InfectAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.ColoredManaSymbol; import mage.constants.Duration; -import mage.constants.Zone; +import mage.constants.SubType; + +import java.util.UUID; /** - * * @author North */ public final class PestilentSouleater extends CardImpl { public PestilentSouleater(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}"); this.subtype.add(SubType.PHYREXIAN); this.subtype.add(SubType.INSECT); this.power = new MageInt(3); this.toughness = new MageInt(3); - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, - new GainAbilitySourceEffect(InfectAbility.getInstance(), Duration.EndOfTurn), - new PhyrexianManaCost(ColoredManaSymbol.B))); + this.addAbility(new SimpleActivatedAbility(new GainAbilitySourceEffect( + InfectAbility.getInstance(), Duration.EndOfTurn + ), new ManaCostsImpl<>("{B/P}"))); } private PestilentSouleater(final PestilentSouleater card) { diff --git a/Mage.Sets/src/mage/cards/p/ProfessorOnyx.java b/Mage.Sets/src/mage/cards/p/ProfessorOnyx.java index 090d468a5e..2ed5ca66be 100644 --- a/Mage.Sets/src/mage/cards/p/ProfessorOnyx.java +++ b/Mage.Sets/src/mage/cards/p/ProfessorOnyx.java @@ -5,7 +5,6 @@ import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.MagecraftAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.*; @@ -45,7 +44,7 @@ public final class ProfessorOnyx extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.LILIANA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Magecraft — Whenever you cast or copy an instant or sorcery spell, each opponent loses 2 life and you gain 2 life. Ability ability = new MagecraftAbility(new LoseLifeOpponentsEffect(2), false); diff --git a/Mage.Sets/src/mage/cards/r/RageExtractor.java b/Mage.Sets/src/mage/cards/r/RageExtractor.java index 9c4d203be7..ef77b41705 100644 --- a/Mage.Sets/src/mage/cards/r/RageExtractor.java +++ b/Mage.Sets/src/mage/cards/r/RageExtractor.java @@ -1,31 +1,44 @@ - package mage.cards.r; -import java.util.UUID; -import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.Ability; +import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.costs.mana.ManaCost; -import mage.abilities.costs.mana.PhyrexianManaCost; -import mage.abilities.dynamicvalue.common.StaticValue; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Zone; +import mage.filter.FilterSpell; +import mage.filter.predicate.Predicate; import mage.game.Game; -import mage.game.events.GameEvent; import mage.game.stack.Spell; +import mage.game.stack.StackObject; import mage.target.common.TargetAnyTarget; +import java.util.UUID; + /** * @author Loki */ public final class RageExtractor extends CardImpl { + private static final FilterSpell filter = new FilterSpell("a spell with {P} in its mana cost"); + + static { + filter.add(RageExtractorPredicate.instance); + } + public RageExtractor(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}{R/P}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}{R/P}"); - - this.addAbility(new RageExtractorTriggeredAbility()); + Ability ability = new SpellCastControllerTriggeredAbility( + new DamageTargetEffect(RageExtractorValue.instance) + .setText("{this} deals damage equal to that spell's mana value to any target"), + filter, false + ); + ability.addTarget(new TargetAnyTarget()); + this.addAbility(ability); } private RageExtractor(final RageExtractor card) { @@ -38,44 +51,31 @@ public final class RageExtractor extends CardImpl { } } -class RageExtractorTriggeredAbility extends TriggeredAbilityImpl { - RageExtractorTriggeredAbility() { - super(Zone.BATTLEFIELD, new DamageTargetEffect(0)); - this.addTarget(new TargetAnyTarget()); - } - - RageExtractorTriggeredAbility(final RageExtractorTriggeredAbility ability) { - super(ability); - } +enum RageExtractorPredicate implements Predicate { + instance; @Override - public RageExtractorTriggeredAbility copy() { - return new RageExtractorTriggeredAbility(this); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.SPELL_CAST; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - if (event.getPlayerId().equals(this.controllerId)) { - Spell spell = (Spell) game.getStack().getStackObject(event.getTargetId()); - if (spell != null) { - for (ManaCost cost : spell.getCard().getManaCost()) { - if (cost instanceof PhyrexianManaCost) { - ((DamageTargetEffect)getEffects().get(0)).setAmount(StaticValue.get(spell.getManaValue())); - return true; - } - } - } - } - return false; - } - - @Override - public String getRule() { - return "Whenever you cast a spell with {P} in its mana cost, {this} deals damage equal to that spell's mana value to any target."; + public boolean apply(StackObject input, Game game) { + return ((Spell) input).getCard().getManaCost().stream().anyMatch(ManaCost::isPhyrexian); + } +} + +enum RageExtractorValue implements DynamicValue { + instance; + + @Override + public int calculate(Game game, Ability sourceAbility, Effect effect) { + Spell spell = (Spell) effect.getValue("spellCast"); + return spell != null ? spell.getManaValue() : 0; + } + + @Override + public RageExtractorValue copy() { + return this; + } + + @Override + public String getMessage() { + return ""; } } diff --git a/Mage.Sets/src/mage/cards/r/RalCallerOfStorms.java b/Mage.Sets/src/mage/cards/r/RalCallerOfStorms.java index a0759f424a..efa9187358 100644 --- a/Mage.Sets/src/mage/cards/r/RalCallerOfStorms.java +++ b/Mage.Sets/src/mage/cards/r/RalCallerOfStorms.java @@ -3,7 +3,6 @@ package mage.cards.r; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.effects.common.DamageMultiEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; @@ -28,7 +27,7 @@ public final class RalCallerOfStorms extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.RAL); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Draw a card. this.addAbility(new LoyaltyAbility( diff --git a/Mage.Sets/src/mage/cards/r/RalIzzetViceroy.java b/Mage.Sets/src/mage/cards/r/RalIzzetViceroy.java index afd6b54e81..9839f1948a 100644 --- a/Mage.Sets/src/mage/cards/r/RalIzzetViceroy.java +++ b/Mage.Sets/src/mage/cards/r/RalIzzetViceroy.java @@ -2,7 +2,6 @@ package mage.cards.r; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.InstantSorceryExileGraveyardCount; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.DamageTargetEffect; @@ -36,7 +35,7 @@ public final class RalIzzetViceroy extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.RAL); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Look at the top two cards of your library. Put one of them into your hand and the other into your graveyard. this.addAbility(new LoyaltyAbility( diff --git a/Mage.Sets/src/mage/cards/r/RalStormConduit.java b/Mage.Sets/src/mage/cards/r/RalStormConduit.java index 2585a926a2..caa6a54e3d 100644 --- a/Mage.Sets/src/mage/cards/r/RalStormConduit.java +++ b/Mage.Sets/src/mage/cards/r/RalStormConduit.java @@ -3,7 +3,6 @@ package mage.cards.r; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CopyTargetSpellEffect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; @@ -30,7 +29,7 @@ public final class RalStormConduit extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.RAL); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // Whenever you cast or copy an instant or sorcery spell, Ral, Storm Conduit deals 1 damage to target opponent or planeswalker. this.addAbility(new RalStormConduitTriggeredAbility()); diff --git a/Mage.Sets/src/mage/cards/r/RalZarek.java b/Mage.Sets/src/mage/cards/r/RalZarek.java index edfebbc843..bbc6520f49 100644 --- a/Mage.Sets/src/mage/cards/r/RalZarek.java +++ b/Mage.Sets/src/mage/cards/r/RalZarek.java @@ -4,7 +4,6 @@ package mage.cards.r; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageTargetEffect; @@ -42,7 +41,7 @@ public final class RalZarek extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.RAL); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Tap target permanent, then untap another target permanent. LoyaltyAbility ability1 = new LoyaltyAbility(new TapTargetEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/r/RowanFearlessSparkmage.java b/Mage.Sets/src/mage/cards/r/RowanFearlessSparkmage.java index aa673718ad..1e73be6fd1 100644 --- a/Mage.Sets/src/mage/cards/r/RowanFearlessSparkmage.java +++ b/Mage.Sets/src/mage/cards/r/RowanFearlessSparkmage.java @@ -2,7 +2,6 @@ package mage.cards.r; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.UntapAllEffect; import mage.abilities.effects.common.combat.CantBlockTargetEffect; @@ -33,7 +32,7 @@ public final class RowanFearlessSparkmage extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ROWAN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Up to one target creature gets +3/+0 and gains first strike until end of turn. Ability ability = new LoyaltyAbility(new BoostTargetEffect( diff --git a/Mage.Sets/src/mage/cards/r/RowanKenrith.java b/Mage.Sets/src/mage/cards/r/RowanKenrith.java index 45ec313fe4..fa10de5ed8 100644 --- a/Mage.Sets/src/mage/cards/r/RowanKenrith.java +++ b/Mage.Sets/src/mage/cards/r/RowanKenrith.java @@ -3,7 +3,6 @@ package mage.cards.r; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.CanBeYourCommanderAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.RequirementEffect; @@ -33,7 +32,7 @@ public final class RowanKenrith extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ROWAN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +2: During target player's next turn, each creature that player controls attacks if able. LoyaltyAbility ability = new LoyaltyAbility(new RowanKenrithAttackEffect(), 2); diff --git a/Mage.Sets/src/mage/cards/r/RowanScholarOfSparks.java b/Mage.Sets/src/mage/cards/r/RowanScholarOfSparks.java index 8d8ff3c1cc..31fbc9caa2 100644 --- a/Mage.Sets/src/mage/cards/r/RowanScholarOfSparks.java +++ b/Mage.Sets/src/mage/cards/r/RowanScholarOfSparks.java @@ -3,7 +3,6 @@ package mage.cards.r; import mage.MageItem; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.Condition; import mage.abilities.decorator.ConditionalOneShotEffect; @@ -55,7 +54,7 @@ public final class RowanScholarOfSparks extends ModalDoubleFacesCard { // Rowan, Scholar of Sparks // Legendary Planeswalker - Rowan this.getLeftHalfCard().addSuperType(SuperType.LEGENDARY); - this.getLeftHalfCard().addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(2)); + this.getLeftHalfCard().setStartingLoyalty(2); // Instant and sorcery spells you cast cost {1} less to cast. this.getLeftHalfCard().addAbility(new SimpleStaticAbility(new SpellsCostReductionControllerEffect(filter, 1))); @@ -79,7 +78,7 @@ public final class RowanScholarOfSparks extends ModalDoubleFacesCard { // Will, Scholar of Frost // Legendary Planeswalker - Will this.getRightHalfCard().addSuperType(SuperType.LEGENDARY); - this.getRightHalfCard().addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.getRightHalfCard().setStartingLoyalty(4); // Instant and sorcery spells you cast cost {1} less to cast. this.getRightHalfCard().addAbility(new SimpleStaticAbility( diff --git a/Mage.Sets/src/mage/cards/s/SaheeliRai.java b/Mage.Sets/src/mage/cards/s/SaheeliRai.java index 904f5891f4..b707602ef8 100644 --- a/Mage.Sets/src/mage/cards/s/SaheeliRai.java +++ b/Mage.Sets/src/mage/cards/s/SaheeliRai.java @@ -3,7 +3,6 @@ package mage.cards.s; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; @@ -37,7 +36,7 @@ public final class SaheeliRai extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SAHEELI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Scry 1. Saheeli Rai deals 1 damage to each opponent. Effect effect = new ScryEffect(1); diff --git a/Mage.Sets/src/mage/cards/s/SaheeliSublimeArtificer.java b/Mage.Sets/src/mage/cards/s/SaheeliSublimeArtificer.java index 64e6698024..53dcfabab8 100644 --- a/Mage.Sets/src/mage/cards/s/SaheeliSublimeArtificer.java +++ b/Mage.Sets/src/mage/cards/s/SaheeliSublimeArtificer.java @@ -3,7 +3,6 @@ package mage.cards.s; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.OneShotEffect; @@ -50,7 +49,7 @@ public final class SaheeliSublimeArtificer extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SAHEELI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Whenever you cast a noncreature spell, create a 1/1 colorless Servo artifact creature token. this.addAbility(new SpellCastControllerTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/s/SaheeliTheGifted.java b/Mage.Sets/src/mage/cards/s/SaheeliTheGifted.java index 99cf88d951..3ce79c4066 100644 --- a/Mage.Sets/src/mage/cards/s/SaheeliTheGifted.java +++ b/Mage.Sets/src/mage/cards/s/SaheeliTheGifted.java @@ -5,7 +5,6 @@ import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.SpellAbility; import mage.abilities.common.CanBeYourCommanderAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenCopyTargetEffect; import mage.abilities.effects.common.CreateTokenEffect; @@ -37,7 +36,7 @@ public final class SaheeliTheGifted extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SAHEELI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Create a 1/1 colorless Servo artifact creature token. this.addAbility(new LoyaltyAbility( diff --git a/Mage.Sets/src/mage/cards/s/SamutTheTested.java b/Mage.Sets/src/mage/cards/s/SamutTheTested.java index 7ba6c6c79e..bf1211792e 100644 --- a/Mage.Sets/src/mage/cards/s/SamutTheTested.java +++ b/Mage.Sets/src/mage/cards/s/SamutTheTested.java @@ -3,7 +3,6 @@ package mage.cards.s; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageMultiEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; @@ -37,7 +36,7 @@ public final class SamutTheTested extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SAMUT); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Up to one target creature gains double strike until end of turn. Effect effect = new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn); diff --git a/Mage.Sets/src/mage/cards/s/SamutTyrantSmasher.java b/Mage.Sets/src/mage/cards/s/SamutTyrantSmasher.java index a26b5c343f..901df60986 100644 --- a/Mage.Sets/src/mage/cards/s/SamutTyrantSmasher.java +++ b/Mage.Sets/src/mage/cards/s/SamutTyrantSmasher.java @@ -3,7 +3,6 @@ package mage.cards.s; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; @@ -29,7 +28,7 @@ public final class SamutTyrantSmasher extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SAMUT); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Creatures you control have haste. this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( diff --git a/Mage.Sets/src/mage/cards/s/SarkhanDragonsoul.java b/Mage.Sets/src/mage/cards/s/SarkhanDragonsoul.java index ff556006ac..28e355e1dc 100644 --- a/Mage.Sets/src/mage/cards/s/SarkhanDragonsoul.java +++ b/Mage.Sets/src/mage/cards/s/SarkhanDragonsoul.java @@ -3,7 +3,6 @@ package mage.cards.s; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.effects.common.DamagePlayersEffect; import mage.abilities.effects.common.DamageTargetEffect; @@ -36,7 +35,7 @@ public final class SarkhanDragonsoul extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SARKHAN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +2: Sarkhan, Dragonsoul deals 1 damage to each opponent and each creature your opponents control. Ability ability = new LoyaltyAbility(new DamagePlayersEffect(1, TargetController.OPPONENT), 2); diff --git a/Mage.Sets/src/mage/cards/s/SarkhanFireblood.java b/Mage.Sets/src/mage/cards/s/SarkhanFireblood.java index 52bb787e3a..b55b3ff995 100644 --- a/Mage.Sets/src/mage/cards/s/SarkhanFireblood.java +++ b/Mage.Sets/src/mage/cards/s/SarkhanFireblood.java @@ -2,7 +2,6 @@ package mage.cards.s; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.costs.common.DiscardCardCost; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.CreateTokenEffect; @@ -35,7 +34,7 @@ public final class SarkhanFireblood extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SARKHAN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: You may discard a card. If you do, draw a card. this.addAbility(new LoyaltyAbility(new DoIfCostPaid( diff --git a/Mage.Sets/src/mage/cards/s/SarkhanTheDragonspeaker.java b/Mage.Sets/src/mage/cards/s/SarkhanTheDragonspeaker.java index 628e26ff4e..3bc34e6da7 100644 --- a/Mage.Sets/src/mage/cards/s/SarkhanTheDragonspeaker.java +++ b/Mage.Sets/src/mage/cards/s/SarkhanTheDragonspeaker.java @@ -6,7 +6,6 @@ import mage.MageObjectReference; import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DamageTargetEffect; @@ -34,7 +33,7 @@ public final class SarkhanTheDragonspeaker extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SARKHAN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Until end of turn, Sarkhan, the Dragonspeaker becomes a legendary 4/4 red Dragon creature with flying, indestructible, and haste. this.addAbility(new LoyaltyAbility(new SarkhanTheDragonspeakerEffect(), 1)); diff --git a/Mage.Sets/src/mage/cards/s/SarkhanTheMad.java b/Mage.Sets/src/mage/cards/s/SarkhanTheMad.java index 7d51f4caf2..a3f3627df2 100644 --- a/Mage.Sets/src/mage/cards/s/SarkhanTheMad.java +++ b/Mage.Sets/src/mage/cards/s/SarkhanTheMad.java @@ -6,7 +6,6 @@ import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.cards.CardImpl; @@ -37,7 +36,7 @@ public final class SarkhanTheMad extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{B}{R}"); this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SARKHAN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(7)); + this.setStartingLoyalty(7); this.addAbility(new LoyaltyAbility(new SarkhanTheMadRevealAndDrawEffect(), 0)); diff --git a/Mage.Sets/src/mage/cards/s/SarkhanTheMasterless.java b/Mage.Sets/src/mage/cards/s/SarkhanTheMasterless.java index 2751d320e6..0a3a0bb222 100644 --- a/Mage.Sets/src/mage/cards/s/SarkhanTheMasterless.java +++ b/Mage.Sets/src/mage/cards/s/SarkhanTheMasterless.java @@ -5,7 +5,6 @@ import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.AttacksAllTriggeredAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; @@ -30,7 +29,7 @@ public final class SarkhanTheMasterless extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SARKHAN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Whenever a creature attacks you or a planeswalker you control, each Dragon you control deals 1 damage to that creature. this.addAbility(new AttacksAllTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/s/SarkhanUnbroken.java b/Mage.Sets/src/mage/cards/s/SarkhanUnbroken.java index 4b3eeb7774..f756e26b03 100644 --- a/Mage.Sets/src/mage/cards/s/SarkhanUnbroken.java +++ b/Mage.Sets/src/mage/cards/s/SarkhanUnbroken.java @@ -7,7 +7,6 @@ import java.util.UUID; import mage.Mana; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; @@ -42,7 +41,7 @@ public final class SarkhanUnbroken extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SARKHAN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Draw a card, then add one mana of any color. this.addAbility(new LoyaltyAbility(new SarkhanUnbrokenAbility1(), 1)); diff --git a/Mage.Sets/src/mage/cards/s/SarkhanVol.java b/Mage.Sets/src/mage/cards/s/SarkhanVol.java index f9bfb4fc45..98dbf17303 100644 --- a/Mage.Sets/src/mage/cards/s/SarkhanVol.java +++ b/Mage.Sets/src/mage/cards/s/SarkhanVol.java @@ -1,7 +1,6 @@ package mage.cards.s; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effects; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.UntapTargetEffect; @@ -34,7 +33,7 @@ public final class SarkhanVol extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SARKHAN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Creatures you control get +1/+1 and gain haste until end of turn. Effects effects1 = new Effects(); diff --git a/Mage.Sets/src/mage/cards/s/SerraTheBenevolent.java b/Mage.Sets/src/mage/cards/s/SerraTheBenevolent.java index bcffe715a3..38c30822e0 100644 --- a/Mage.Sets/src/mage/cards/s/SerraTheBenevolent.java +++ b/Mage.Sets/src/mage/cards/s/SerraTheBenevolent.java @@ -1,7 +1,6 @@ package mage.cards.s; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; @@ -36,7 +35,7 @@ public final class SerraTheBenevolent extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SERRA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +2: Creatures you control with flying get +1/+1 until end of turn. this.addAbility(new LoyaltyAbility(new BoostControlledEffect(1, 1, Duration.EndOfTurn, filter) diff --git a/Mage.Sets/src/mage/cards/s/SorinGrimNemesis.java b/Mage.Sets/src/mage/cards/s/SorinGrimNemesis.java index 3f480e6625..ddd6121791 100644 --- a/Mage.Sets/src/mage/cards/s/SorinGrimNemesis.java +++ b/Mage.Sets/src/mage/cards/s/SorinGrimNemesis.java @@ -2,7 +2,6 @@ package mage.cards.s; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.GetXLoyaltyValue; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; @@ -28,7 +27,7 @@ public final class SorinGrimNemesis extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SORIN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(6)); + this.setStartingLoyalty(6); // +1: Reveal the top card of your library and put that card into your hand. Each opponent loses life equal to its converted mana cost. this.addAbility(new LoyaltyAbility(new SorinGrimNemesisRevealEffect(), 1)); diff --git a/Mage.Sets/src/mage/cards/s/SorinImperiousBloodlord.java b/Mage.Sets/src/mage/cards/s/SorinImperiousBloodlord.java index e1a7394fd9..b5431960c1 100644 --- a/Mage.Sets/src/mage/cards/s/SorinImperiousBloodlord.java +++ b/Mage.Sets/src/mage/cards/s/SorinImperiousBloodlord.java @@ -2,7 +2,6 @@ package mage.cards.s; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.delayed.ReflexiveTriggeredAbility; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.OneShotEffect; @@ -52,7 +51,7 @@ public final class SorinImperiousBloodlord extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SORIN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Target creature you control gains deathtouch and lifelink until end of turn. If it's a Vampire, put a +1/+1 counter on it. Ability ability = new LoyaltyAbility(new SorinImperiousBloodlordEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/s/SorinLordOfInnistrad.java b/Mage.Sets/src/mage/cards/s/SorinLordOfInnistrad.java index 0c4afea24b..5a32d0a34a 100644 --- a/Mage.Sets/src/mage/cards/s/SorinLordOfInnistrad.java +++ b/Mage.Sets/src/mage/cards/s/SorinLordOfInnistrad.java @@ -6,7 +6,6 @@ import java.util.Set; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -46,7 +45,7 @@ public final class SorinLordOfInnistrad extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SORIN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Create a 1/1 black Vampire creature token with lifelink. this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new SorinLordOfInnistradVampireToken()), 1)); diff --git a/Mage.Sets/src/mage/cards/s/SorinMarkov.java b/Mage.Sets/src/mage/cards/s/SorinMarkov.java index ec6f36d097..55141a923f 100644 --- a/Mage.Sets/src/mage/cards/s/SorinMarkov.java +++ b/Mage.Sets/src/mage/cards/s/SorinMarkov.java @@ -4,7 +4,6 @@ package mage.cards.s; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.GainLifeEffect; @@ -32,7 +31,7 @@ public final class SorinMarkov extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SORIN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +2: Sorin Markov deals 2 damage to any target and you gain 2 life. LoyaltyAbility ability1 = new LoyaltyAbility(new DamageTargetEffect(2), 2); diff --git a/Mage.Sets/src/mage/cards/s/SorinSolemnVisitor.java b/Mage.Sets/src/mage/cards/s/SorinSolemnVisitor.java index c4db2f47e8..16670a0dfb 100644 --- a/Mage.Sets/src/mage/cards/s/SorinSolemnVisitor.java +++ b/Mage.Sets/src/mage/cards/s/SorinSolemnVisitor.java @@ -3,7 +3,6 @@ package mage.cards.s; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -31,7 +30,7 @@ public final class SorinSolemnVisitor extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SORIN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Until your next turn, creatures you control get +1/+0 and gain lifelink. Effect effect = new BoostControlledEffect(1, 0, Duration.UntilYourNextTurn, StaticFilters.FILTER_PERMANENT_CREATURES); diff --git a/Mage.Sets/src/mage/cards/s/SorinTheMirthless.java b/Mage.Sets/src/mage/cards/s/SorinTheMirthless.java index bdb1a4a056..9985c1a51c 100644 --- a/Mage.Sets/src/mage/cards/s/SorinTheMirthless.java +++ b/Mage.Sets/src/mage/cards/s/SorinTheMirthless.java @@ -4,7 +4,6 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DamageTargetEffect; @@ -27,7 +26,7 @@ public final class SorinTheMirthless extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SORIN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Look at the top card of your library. You may reveal that card and put it into your hand. If you do, you lose life equal to its mana value. this.addAbility(new LoyaltyAbility(new SorinTheMirthlessEffect(), 1)); diff --git a/Mage.Sets/src/mage/cards/s/SorinVampireLord.java b/Mage.Sets/src/mage/cards/s/SorinVampireLord.java index e82870f88d..0be6b50dda 100644 --- a/Mage.Sets/src/mage/cards/s/SorinVampireLord.java +++ b/Mage.Sets/src/mage/cards/s/SorinVampireLord.java @@ -2,7 +2,6 @@ package mage.cards.s; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.DamageTargetEffect; @@ -35,7 +34,7 @@ public final class SorinVampireLord extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SORIN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Up to one target creature gets +2/+0 until end of turn. Ability ability = new LoyaltyAbility(new BoostTargetEffect(2, 0), 1); diff --git a/Mage.Sets/src/mage/cards/s/SorinVengefulBloodlord.java b/Mage.Sets/src/mage/cards/s/SorinVengefulBloodlord.java index a19cba0367..fad3bfe7b0 100644 --- a/Mage.Sets/src/mage/cards/s/SorinVengefulBloodlord.java +++ b/Mage.Sets/src/mage/cards/s/SorinVengefulBloodlord.java @@ -2,7 +2,6 @@ package mage.cards.s; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.MyTurnCondition; import mage.abilities.costs.Cost; @@ -39,7 +38,7 @@ public final class SorinVengefulBloodlord extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SORIN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // As long as it's your turn, creatures and planeswalkers you control have lifelink. this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( diff --git a/Mage.Sets/src/mage/cards/s/SupremeLeaderSnoke.java b/Mage.Sets/src/mage/cards/s/SupremeLeaderSnoke.java index 4959cd037f..17c764b6f0 100644 --- a/Mage.Sets/src/mage/cards/s/SupremeLeaderSnoke.java +++ b/Mage.Sets/src/mage/cards/s/SupremeLeaderSnoke.java @@ -2,7 +2,6 @@ package mage.cards.s; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.costs.Cost; import mage.abilities.costs.common.PayVariableLoyaltyCost; @@ -42,7 +41,7 @@ public final class SupremeLeaderSnoke extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SNOKE); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Put a loyalty counter on Supreme Leader Snoke for each life lost by all opponents from noncombat sources this turn. Ability ability1 = new LoyaltyAbility(new SupremeLeaderSnokeCounterEffect(CounterType.LOYALTY.createInstance()), 1); diff --git a/Mage.Sets/src/mage/cards/t/TamiyoCollectorOfTales.java b/Mage.Sets/src/mage/cards/t/TamiyoCollectorOfTales.java index 11e4b8bff8..ccabdb0fc4 100644 --- a/Mage.Sets/src/mage/cards/t/TamiyoCollectorOfTales.java +++ b/Mage.Sets/src/mage/cards/t/TamiyoCollectorOfTales.java @@ -2,7 +2,6 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousRuleModifyingEffectImpl; import mage.abilities.effects.OneShotEffect; @@ -31,7 +30,7 @@ public final class TamiyoCollectorOfTales extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TAMIYO); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Spells and abilities your opponents control can't cause you to discard cards or sacrifice permanents. this.addAbility(new SimpleStaticAbility(new TamiyoCollectorOfTalesRuleEffect())); diff --git a/Mage.Sets/src/mage/cards/t/TamiyoCompleatedSage.java b/Mage.Sets/src/mage/cards/t/TamiyoCompleatedSage.java new file mode 100644 index 0000000000..36bc4cddf4 --- /dev/null +++ b/Mage.Sets/src/mage/cards/t/TamiyoCompleatedSage.java @@ -0,0 +1,115 @@ +package mage.cards.t; + +import mage.abilities.Ability; +import mage.abilities.LoyaltyAbility; +import mage.abilities.dynamicvalue.common.GetXLoyaltyValue; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.CreateTokenCopyTargetEffect; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect; +import mage.abilities.effects.common.TapTargetEffect; +import mage.abilities.keyword.CompleatedAbility; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.filter.FilterCard; +import mage.filter.StaticFilters; +import mage.filter.common.FilterPermanentCard; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ManaValuePredicate; +import mage.game.Game; +import mage.game.permanent.PermanentCard; +import mage.game.permanent.token.TamiyosNotebookToken; +import mage.players.Player; +import mage.target.TargetPermanent; +import mage.target.common.TargetCardInYourGraveyard; +import mage.target.targetadjustment.TargetAdjuster; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class TamiyoCompleatedSage extends CardImpl { + + public TamiyoCompleatedSage(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{G}{G/U/P}{U}"); + + this.addSuperType(SuperType.LEGENDARY); + this.subtype.add(SubType.TAMIYO); + this.setStartingLoyalty(5); + + // Compleated + this.addAbility(CompleatedAbility.getInstance()); + + // +1: Tap up to one target artifact or creature. It doesn't untap during its controller's next untap step. + Ability ability = new LoyaltyAbility(new TapTargetEffect(), 1); + ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("it")); + ability.addTarget(new TargetPermanent( + 0, 1, StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_CREATURE + )); + this.addAbility(ability); + + // −X: Exile target nonland permanent card with mana value X from your graveyard. Create a token that's a copy of that card. + this.addAbility(new LoyaltyAbility(new TamiyoCompleatedSageEffect()).setTargetAdjuster(TamiyoCompleatedSageAdjuster.instance)); + + // −7: Create Tamiyo's Notebook, a legendary colorless artifact token with "Spells you cast cost {2} less to cast" and "{T}: Draw a card." + this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new TamiyosNotebookToken()), -7)); + } + + private TamiyoCompleatedSage(final TamiyoCompleatedSage card) { + super(card); + } + + @Override + public TamiyoCompleatedSage copy() { + return new TamiyoCompleatedSage(this); + } +} + +enum TamiyoCompleatedSageAdjuster implements TargetAdjuster { + instance; + + @Override + public void adjustTargets(Ability ability, Game game) { + int xValue = GetXLoyaltyValue.instance.calculate(game, ability, null); + FilterCard filter = new FilterPermanentCard("nonland permanent card with mana value " + xValue); + filter.add(Predicates.not(CardType.LAND.getPredicate())); + filter.add(new ManaValuePredicate(ComparisonType.EQUAL_TO, xValue)); + ability.getTargets().clear(); + ability.addTarget(new TargetCardInYourGraveyard(filter)); + } +} + +class TamiyoCompleatedSageEffect extends OneShotEffect { + + TamiyoCompleatedSageEffect() { + super(Outcome.Benefit); + staticText = "exile target nonland permanent card with mana value X " + + "from your graveyard. Create a token that's a copy of that card"; + } + + private TamiyoCompleatedSageEffect(final TamiyoCompleatedSageEffect effect) { + super(effect); + } + + @Override + public TamiyoCompleatedSageEffect copy() { + return new TamiyoCompleatedSageEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + Card card = game.getCard(source.getFirstTarget()); + if (player == null || card == null) { + return false; + } + player.moveCards(card, Zone.EXILED, source, game); + return new CreateTokenCopyTargetEffect().setSavedPermanent( + new PermanentCard(card, source.getControllerId(), game) + ).apply(game, source); + } +} +// aqua got norted diff --git a/Mage.Sets/src/mage/cards/t/TamiyoFieldResearcher.java b/Mage.Sets/src/mage/cards/t/TamiyoFieldResearcher.java index 8c9b21198d..a3062ca82c 100644 --- a/Mage.Sets/src/mage/cards/t/TamiyoFieldResearcher.java +++ b/Mage.Sets/src/mage/cards/t/TamiyoFieldResearcher.java @@ -5,7 +5,6 @@ import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; @@ -51,7 +50,7 @@ public final class TamiyoFieldResearcher extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TAMIYO); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Choose up to two target creatures. Until your next turn, whenever either of those creatures deals combat damage, you draw a card. Ability ability = new LoyaltyAbility(new TamiyoFieldResearcherEffect1(), 1); diff --git a/Mage.Sets/src/mage/cards/t/TamiyoTheMoonSage.java b/Mage.Sets/src/mage/cards/t/TamiyoTheMoonSage.java index 1b25f0ce93..88d27e8ad8 100644 --- a/Mage.Sets/src/mage/cards/t/TamiyoTheMoonSage.java +++ b/Mage.Sets/src/mage/cards/t/TamiyoTheMoonSage.java @@ -4,7 +4,6 @@ package mage.cards.t; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect; @@ -35,7 +34,7 @@ public final class TamiyoTheMoonSage extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TAMIYO); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Tap target permanent. It doesn't untap during its controller's next untap step. LoyaltyAbility ability = new LoyaltyAbility(new TapTargetEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/t/TeferiHeroOfDominaria.java b/Mage.Sets/src/mage/cards/t/TeferiHeroOfDominaria.java index 76918d6299..73116eaebf 100644 --- a/Mage.Sets/src/mage/cards/t/TeferiHeroOfDominaria.java +++ b/Mage.Sets/src/mage/cards/t/TeferiHeroOfDominaria.java @@ -4,7 +4,6 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; @@ -36,7 +35,7 @@ public final class TeferiHeroOfDominaria extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TEFERI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Draw a card. At the beginning of the next end step, untap up to two lands. LoyaltyAbility ability = new LoyaltyAbility(new DrawCardSourceControllerEffect(1), 1); diff --git a/Mage.Sets/src/mage/cards/t/TeferiMasterOfTime.java b/Mage.Sets/src/mage/cards/t/TeferiMasterOfTime.java index 8673079ba5..1cef3aac95 100644 --- a/Mage.Sets/src/mage/cards/t/TeferiMasterOfTime.java +++ b/Mage.Sets/src/mage/cards/t/TeferiMasterOfTime.java @@ -2,7 +2,6 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.AsThoughEffectImpl; import mage.abilities.effects.OneShotEffect; @@ -28,7 +27,7 @@ public final class TeferiMasterOfTime extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TEFERI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // You may activate loyalty abilities of Teferi, Master of Time on any player's turn any time you could cast an instant. this.addAbility(new SimpleStaticAbility(new TeferiMasterOfTimeActivationEffect())); diff --git a/Mage.Sets/src/mage/cards/t/TeferiTemporalArchmage.java b/Mage.Sets/src/mage/cards/t/TeferiTemporalArchmage.java index bb40bd0aca..d8b152d4d6 100644 --- a/Mage.Sets/src/mage/cards/t/TeferiTemporalArchmage.java +++ b/Mage.Sets/src/mage/cards/t/TeferiTemporalArchmage.java @@ -4,7 +4,6 @@ package mage.cards.t; import java.util.UUID; import mage.abilities.LoyaltyAbility; import mage.abilities.common.CanBeYourCommanderAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; @@ -31,7 +30,7 @@ public final class TeferiTemporalArchmage extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TEFERI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Look at the top two cards of your library. Put one of them into your hand and the other on the bottom of your library. this.addAbility(new LoyaltyAbility(new LookLibraryAndPickControllerEffect( diff --git a/Mage.Sets/src/mage/cards/t/TeferiTimeRaveler.java b/Mage.Sets/src/mage/cards/t/TeferiTimeRaveler.java index 3cfed14c3f..93559f22df 100644 --- a/Mage.Sets/src/mage/cards/t/TeferiTimeRaveler.java +++ b/Mage.Sets/src/mage/cards/t/TeferiTimeRaveler.java @@ -3,7 +3,6 @@ package mage.cards.t; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.ContinuousRuleModifyingEffectImpl; import mage.abilities.effects.common.DrawCardSourceControllerEffect; @@ -44,7 +43,7 @@ public final class TeferiTimeRaveler extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TEFERI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // Each opponent can cast spells only any time they could cast a sorcery. this.addAbility(new SimpleStaticAbility(new TeferiTimeRavelerReplacementEffect())); diff --git a/Mage.Sets/src/mage/cards/t/TeferiTimebender.java b/Mage.Sets/src/mage/cards/t/TeferiTimebender.java index be09d8f4cf..542925bb87 100644 --- a/Mage.Sets/src/mage/cards/t/TeferiTimebender.java +++ b/Mage.Sets/src/mage/cards/t/TeferiTimebender.java @@ -3,7 +3,6 @@ package mage.cards.t; import java.util.UUID; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.UntapTargetEffect; @@ -28,7 +27,7 @@ public final class TeferiTimebender extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TEFERI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +2: Untap up to one target artifact or creature. FilterPermanent filter = new FilterPermanent("artifact or creature"); diff --git a/Mage.Sets/src/mage/cards/t/TeferiTimelessVoyager.java b/Mage.Sets/src/mage/cards/t/TeferiTimelessVoyager.java index ec3ab59fc1..3e6d1e2e98 100644 --- a/Mage.Sets/src/mage/cards/t/TeferiTimelessVoyager.java +++ b/Mage.Sets/src/mage/cards/t/TeferiTimelessVoyager.java @@ -3,7 +3,6 @@ package mage.cards.t; import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousRuleModifyingEffectImpl; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; @@ -30,7 +29,7 @@ public final class TeferiTimelessVoyager extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TEFERI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Draw a card. this.addAbility(new LoyaltyAbility(new DrawCardSourceControllerEffect(1), 1)); diff --git a/Mage.Sets/src/mage/cards/t/TeferiWhoSlowsTheSunset.java b/Mage.Sets/src/mage/cards/t/TeferiWhoSlowsTheSunset.java index 5a521f76f2..faa9180f89 100644 --- a/Mage.Sets/src/mage/cards/t/TeferiWhoSlowsTheSunset.java +++ b/Mage.Sets/src/mage/cards/t/TeferiWhoSlowsTheSunset.java @@ -2,7 +2,6 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.GainLifeEffect; @@ -35,7 +34,7 @@ public final class TeferiWhoSlowsTheSunset extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TEFERI); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Choose up to one target artifact, up to one target creature, and up to one target land. Untap the chosen permanents you control. Tap the chosen permanents you don't control. You gain 2 life. Ability ability = new LoyaltyAbility(new TeferiWhoSlowsTheSunsetEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/t/TeveshSzatDoomOfFools.java b/Mage.Sets/src/mage/cards/t/TeveshSzatDoomOfFools.java index 67a9ae5eb0..6069af8cf4 100644 --- a/Mage.Sets/src/mage/cards/t/TeveshSzatDoomOfFools.java +++ b/Mage.Sets/src/mage/cards/t/TeveshSzatDoomOfFools.java @@ -3,7 +3,6 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.CanBeYourCommanderAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.GainControlTargetEffect; @@ -41,7 +40,7 @@ public final class TeveshSzatDoomOfFools extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SZAT); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +2: Create two 0/1 black Thrull creature tokens. this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new BreedingPitThrullToken(), 2), 2)); diff --git a/Mage.Sets/src/mage/cards/t/TeyoTheShieldmage.java b/Mage.Sets/src/mage/cards/t/TeyoTheShieldmage.java index 6a86256161..88173d0b7f 100644 --- a/Mage.Sets/src/mage/cards/t/TeyoTheShieldmage.java +++ b/Mage.Sets/src/mage/cards/t/TeyoTheShieldmage.java @@ -1,7 +1,6 @@ package mage.cards.t; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.GainAbilityControllerEffect; @@ -25,7 +24,7 @@ public final class TeyoTheShieldmage extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TEYO); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // You have hexproof. this.addAbility(new SimpleStaticAbility(new GainAbilityControllerEffect(HexproofAbility.getInstance()))); diff --git a/Mage.Sets/src/mage/cards/t/TezzeretAgentOfBolas.java b/Mage.Sets/src/mage/cards/t/TezzeretAgentOfBolas.java index 76c27ebc5e..3efbb5d90a 100644 --- a/Mage.Sets/src/mage/cards/t/TezzeretAgentOfBolas.java +++ b/Mage.Sets/src/mage/cards/t/TezzeretAgentOfBolas.java @@ -4,7 +4,6 @@ package mage.cards.t; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; @@ -42,7 +41,7 @@ public final class TezzeretAgentOfBolas extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TEZZERET); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Look at the top five cards of your library. You may reveal an artifact card from among them and put it into your hand. Put the rest on the bottom of your library in any order. this.addAbility(new LoyaltyAbility(new LookLibraryAndPickControllerEffect(5, 1, filter, true), 1)); diff --git a/Mage.Sets/src/mage/cards/t/TezzeretArtificeMaster.java b/Mage.Sets/src/mage/cards/t/TezzeretArtificeMaster.java index 722a9103fd..d84a8477d7 100644 --- a/Mage.Sets/src/mage/cards/t/TezzeretArtificeMaster.java +++ b/Mage.Sets/src/mage/cards/t/TezzeretArtificeMaster.java @@ -1,7 +1,6 @@ package mage.cards.t; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.condition.common.MetalcraftCondition; import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; @@ -29,7 +28,7 @@ public final class TezzeretArtificeMaster extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TEZZERET); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Create a colorless Thopter artifact creature token with flying. this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new ThopterColorlessToken()), 1)); diff --git a/Mage.Sets/src/mage/cards/t/TezzeretBetrayerOfFlesh.java b/Mage.Sets/src/mage/cards/t/TezzeretBetrayerOfFlesh.java index 26f01646fd..6279e949f5 100644 --- a/Mage.Sets/src/mage/cards/t/TezzeretBetrayerOfFlesh.java +++ b/Mage.Sets/src/mage/cards/t/TezzeretBetrayerOfFlesh.java @@ -3,7 +3,6 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.ActivatedAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.DiscardCardCost; import mage.abilities.effects.ContinuousEffectImpl; @@ -38,7 +37,7 @@ public final class TezzeretBetrayerOfFlesh extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TEZZERET); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // The first activated ability of an artifact you activate each turn costs {2} less to activate. this.addAbility(new SimpleStaticAbility( diff --git a/Mage.Sets/src/mage/cards/t/TezzeretCruelMachinist.java b/Mage.Sets/src/mage/cards/t/TezzeretCruelMachinist.java index a8ffc25434..2bd0f76373 100644 --- a/Mage.Sets/src/mage/cards/t/TezzeretCruelMachinist.java +++ b/Mage.Sets/src/mage/cards/t/TezzeretCruelMachinist.java @@ -3,7 +3,6 @@ package mage.cards.t; import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; @@ -36,7 +35,7 @@ public final class TezzeretCruelMachinist extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TEZZERET); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Draw a card. this.addAbility(new LoyaltyAbility(new DrawCardSourceControllerEffect(1), 1)); diff --git a/Mage.Sets/src/mage/cards/t/TezzeretMasterOfMetal.java b/Mage.Sets/src/mage/cards/t/TezzeretMasterOfMetal.java index a08d1dfaaf..d05b96e43b 100644 --- a/Mage.Sets/src/mage/cards/t/TezzeretMasterOfMetal.java +++ b/Mage.Sets/src/mage/cards/t/TezzeretMasterOfMetal.java @@ -2,7 +2,6 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.ContinuousEffect; @@ -36,7 +35,7 @@ public final class TezzeretMasterOfMetal extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TEZZERET); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Reveal cards from the top of your library until you reveal an artifact card. Put that card into your hand and the rest on the bottom of your library in a random order. this.addAbility(new LoyaltyAbility(new RevealCardsFromLibraryUntilEffect(new FilterArtifactCard(), Zone.HAND, Zone.LIBRARY), 1)); diff --git a/Mage.Sets/src/mage/cards/t/TezzeretMasterOfTheBridge.java b/Mage.Sets/src/mage/cards/t/TezzeretMasterOfTheBridge.java index 90e4661e19..31b421e3b0 100644 --- a/Mage.Sets/src/mage/cards/t/TezzeretMasterOfTheBridge.java +++ b/Mage.Sets/src/mage/cards/t/TezzeretMasterOfTheBridge.java @@ -2,7 +2,6 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.OneShotEffect; @@ -43,7 +42,7 @@ public final class TezzeretMasterOfTheBridge extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TEZZERET); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Creature and planeswalker spells you cast have affinity for artifacts. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledSpellsEffect( diff --git a/Mage.Sets/src/mage/cards/t/TezzeretTheSchemer.java b/Mage.Sets/src/mage/cards/t/TezzeretTheSchemer.java index 8244bb7318..9aec7c2632 100644 --- a/Mage.Sets/src/mage/cards/t/TezzeretTheSchemer.java +++ b/Mage.Sets/src/mage/cards/t/TezzeretTheSchemer.java @@ -4,7 +4,6 @@ package mage.cards.t; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.dynamicvalue.common.SignInversionDynamicValue; @@ -33,7 +32,7 @@ public final class TezzeretTheSchemer extends CardImpl { this.subtype.add(SubType.TEZZERET); //Starting Loyalty - 5 - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Create a colorless artifact token named Etherium Cell which has "{T}, Sacrifice this artifact: Add one mana of any color." this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new EtheriumCellToken()), 1)); diff --git a/Mage.Sets/src/mage/cards/t/TezzeretTheSeeker.java b/Mage.Sets/src/mage/cards/t/TezzeretTheSeeker.java index 581046db95..852cc6630a 100644 --- a/Mage.Sets/src/mage/cards/t/TezzeretTheSeeker.java +++ b/Mage.Sets/src/mage/cards/t/TezzeretTheSeeker.java @@ -5,7 +5,6 @@ import java.util.List; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.costs.Cost; import mage.abilities.costs.common.PayVariableLoyaltyCost; import mage.abilities.effects.ContinuousEffectImpl; @@ -35,7 +34,7 @@ public final class TezzeretTheSeeker extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TEZZERET); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Untap up to two target artifacts. LoyaltyAbility ability = new LoyaltyAbility(new UntapTargetEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/t/TheRoyalScions.java b/Mage.Sets/src/mage/cards/t/TheRoyalScions.java index 291bbe9b25..e5c59b1db9 100644 --- a/Mage.Sets/src/mage/cards/t/TheRoyalScions.java +++ b/Mage.Sets/src/mage/cards/t/TheRoyalScions.java @@ -2,7 +2,6 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.delayed.ReflexiveTriggeredAbility; import mage.abilities.dynamicvalue.common.CardsInControllerHandCount; import mage.abilities.effects.Effect; @@ -34,7 +33,7 @@ public final class TheRoyalScions extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.WILL); this.subtype.add(SubType.ROWAN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Draw a card, then discard a card. this.addAbility(new LoyaltyAbility(new DrawDiscardControllerEffect(1, 1), 1)); diff --git a/Mage.Sets/src/mage/cards/t/TheWanderer.java b/Mage.Sets/src/mage/cards/t/TheWanderer.java index 1b4a1bc002..7191a319d5 100644 --- a/Mage.Sets/src/mage/cards/t/TheWanderer.java +++ b/Mage.Sets/src/mage/cards/t/TheWanderer.java @@ -2,7 +2,6 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.ExileTargetEffect; import mage.abilities.effects.common.PreventAllNonCombatDamageToAllEffect; @@ -40,7 +39,7 @@ public final class TheWanderer extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{3}{W}"); this.addSuperType(SuperType.LEGENDARY); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Prevent all noncombat damage that would be dealt to you and other permanents you control. this.addAbility(new SimpleStaticAbility(new PreventAllNonCombatDamageToAllEffect( diff --git a/Mage.Sets/src/mage/cards/t/TheWanderingEmperor.java b/Mage.Sets/src/mage/cards/t/TheWanderingEmperor.java index a114a2be2e..5b8bfa900a 100644 --- a/Mage.Sets/src/mage/cards/t/TheWanderingEmperor.java +++ b/Mage.Sets/src/mage/cards/t/TheWanderingEmperor.java @@ -2,7 +2,6 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.AsThoughEffectImpl; import mage.abilities.effects.common.CreateTokenEffect; @@ -42,7 +41,7 @@ public final class TheWanderingEmperor extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{W}{W}"); this.addSuperType(SuperType.LEGENDARY); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // Flash this.addAbility(FlashAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/t/TibaltRakishInstigator.java b/Mage.Sets/src/mage/cards/t/TibaltRakishInstigator.java index a7b685b0da..4eefa1ffa8 100644 --- a/Mage.Sets/src/mage/cards/t/TibaltRakishInstigator.java +++ b/Mage.Sets/src/mage/cards/t/TibaltRakishInstigator.java @@ -1,7 +1,6 @@ package mage.cards.t; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.CantGainLifeAllEffect; @@ -22,7 +21,7 @@ public final class TibaltRakishInstigator extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TIBALT); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Your opponents can't gain life. this.addAbility(new SimpleStaticAbility( diff --git a/Mage.Sets/src/mage/cards/t/TibaltTheFiendBlooded.java b/Mage.Sets/src/mage/cards/t/TibaltTheFiendBlooded.java index 75c95923b0..641ed0497d 100644 --- a/Mage.Sets/src/mage/cards/t/TibaltTheFiendBlooded.java +++ b/Mage.Sets/src/mage/cards/t/TibaltTheFiendBlooded.java @@ -3,7 +3,6 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.CardsInTargetHandCount; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.ContinuousEffectImpl; @@ -38,7 +37,7 @@ public final class TibaltTheFiendBlooded extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TIBALT); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(2)); + this.setStartingLoyalty(2); // +1: Draw a card, then discard a card at random. LoyaltyAbility ability = new LoyaltyAbility(new DrawCardSourceControllerEffect(1), 1); diff --git a/Mage.Sets/src/mage/cards/t/TrespassingSouleater.java b/Mage.Sets/src/mage/cards/t/TrespassingSouleater.java index 6dc1726a4a..6457bd0c57 100644 --- a/Mage.Sets/src/mage/cards/t/TrespassingSouleater.java +++ b/Mage.Sets/src/mage/cards/t/TrespassingSouleater.java @@ -1,27 +1,24 @@ - package mage.cards.t; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; -import mage.abilities.costs.mana.PhyrexianManaCost; +import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.ColoredManaSymbol; import mage.constants.Duration; -import mage.constants.Zone; +import mage.constants.SubType; + +import java.util.UUID; /** - * * @author North */ public final class TrespassingSouleater extends CardImpl { public TrespassingSouleater(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}"); this.subtype.add(SubType.PHYREXIAN); this.subtype.add(SubType.CONSTRUCT); @@ -29,9 +26,9 @@ public final class TrespassingSouleater extends CardImpl { this.toughness = new MageInt(2); // {U/P}: Trespassing Souleater can't be blocked this turn. - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, - new CantBeBlockedSourceEffect(Duration.EndOfTurn), - new PhyrexianManaCost(ColoredManaSymbol.U))); + this.addAbility(new SimpleActivatedAbility( + new CantBeBlockedSourceEffect(Duration.EndOfTurn), new ManaCostsImpl<>("{U/P}") + )); } private TrespassingSouleater(final TrespassingSouleater card) { diff --git a/Mage.Sets/src/mage/cards/t/TyvarKell.java b/Mage.Sets/src/mage/cards/t/TyvarKell.java index d8bb915daa..fd3ababcc8 100644 --- a/Mage.Sets/src/mage/cards/t/TyvarKell.java +++ b/Mage.Sets/src/mage/cards/t/TyvarKell.java @@ -2,7 +2,6 @@ package mage.cards.t; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -39,7 +38,7 @@ public final class TyvarKell extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.TYVAR); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // Elves you control have "{T}: Add {B}." this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( diff --git a/Mage.Sets/src/mage/cards/u/UginTheIneffable.java b/Mage.Sets/src/mage/cards/u/UginTheIneffable.java index 2c2c652346..8b3743724e 100644 --- a/Mage.Sets/src/mage/cards/u/UginTheIneffable.java +++ b/Mage.Sets/src/mage/cards/u/UginTheIneffable.java @@ -5,7 +5,6 @@ import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.AsThoughEffectImpl; import mage.abilities.effects.Effect; @@ -57,7 +56,7 @@ public final class UginTheIneffable extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.UGIN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // Colorless spells you cast cost {2} less to cast. this.addAbility(new SimpleStaticAbility(new SpellsCostReductionControllerEffect( diff --git a/Mage.Sets/src/mage/cards/u/UginTheSpiritDragon.java b/Mage.Sets/src/mage/cards/u/UginTheSpiritDragon.java index b8170dd9fc..53bdc9bb34 100644 --- a/Mage.Sets/src/mage/cards/u/UginTheSpiritDragon.java +++ b/Mage.Sets/src/mage/cards/u/UginTheSpiritDragon.java @@ -6,7 +6,6 @@ import java.util.Set; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.costs.Cost; import mage.abilities.costs.common.PayVariableLoyaltyCost; import mage.abilities.effects.OneShotEffect; @@ -42,7 +41,7 @@ public final class UginTheSpiritDragon extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.UGIN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(7)); + this.setStartingLoyalty(7); // +2: Ugin, the Spirit Dragon deals 3 damage to any target. LoyaltyAbility ability = new LoyaltyAbility(new DamageTargetEffect(3), 2); diff --git a/Mage.Sets/src/mage/cards/u/UrzaAcademyHeadmaster.java b/Mage.Sets/src/mage/cards/u/UrzaAcademyHeadmaster.java index 43021ee3c4..56481232f3 100644 --- a/Mage.Sets/src/mage/cards/u/UrzaAcademyHeadmaster.java +++ b/Mage.Sets/src/mage/cards/u/UrzaAcademyHeadmaster.java @@ -3,7 +3,6 @@ package mage.cards.u; import mage.Mana; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.ControllerLifeCount; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.dynamicvalue.common.PermanentsTargetOpponentControlsCount; @@ -55,7 +54,7 @@ public final class UrzaAcademyHeadmaster extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.URZA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Head to AskUrza.com and click +1. this.addAbility(new LoyaltyAbility(new UrzaAcademyHeadmasterRandomEffect(1, setInfo), 1)); diff --git a/Mage.Sets/src/mage/cards/v/ValkiGodOfLies.java b/Mage.Sets/src/mage/cards/v/ValkiGodOfLies.java index 3769775caa..92ae7b8520 100644 --- a/Mage.Sets/src/mage/cards/v/ValkiGodOfLies.java +++ b/Mage.Sets/src/mage/cards/v/ValkiGodOfLies.java @@ -11,7 +11,6 @@ import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; import mage.abilities.common.AsEntersBattlefieldAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.ContinuousEffect; @@ -67,7 +66,7 @@ public final class ValkiGodOfLies extends ModalDoubleFacesCard { // Tibalt, Cosmic Impostor // Legendary Planeswalker — Tibalt this.getRightHalfCard().addSuperType(SuperType.LEGENDARY); - this.getRightHalfCard().addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.getRightHalfCard().setStartingLoyalty(5); // As Tibalt enters the battlefield, you get an emblem with “You may play cards exiled with Tibalt, Cosmic Impostor, and you may spend mana as though it were mana of any color to cast those spells.” this.getRightHalfCard().addAbility(new AsEntersBattlefieldAbility(new GetEmblemEffect(new TibaltCosmicImpostorEmblem()))); diff --git a/Mage.Sets/src/mage/cards/v/VenserTheSojourner.java b/Mage.Sets/src/mage/cards/v/VenserTheSojourner.java index 1afea41ade..72974ed9c5 100644 --- a/Mage.Sets/src/mage/cards/v/VenserTheSojourner.java +++ b/Mage.Sets/src/mage/cards/v/VenserTheSojourner.java @@ -5,7 +5,6 @@ import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; @@ -41,7 +40,7 @@ public final class VenserTheSojourner extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.VENSER); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +2: Exile target permanent you own. Return it to the battlefield under your control at the beginning of the next end step. LoyaltyAbility ability1 = new LoyaltyAbility(new VenserTheSojournerEffect(), 2); diff --git a/Mage.Sets/src/mage/cards/v/VivienArkbowRanger.java b/Mage.Sets/src/mage/cards/v/VivienArkbowRanger.java index ac170c7e55..97f6c5c36d 100644 --- a/Mage.Sets/src/mage/cards/v/VivienArkbowRanger.java +++ b/Mage.Sets/src/mage/cards/v/VivienArkbowRanger.java @@ -2,7 +2,6 @@ package mage.cards.v; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DamageWithPowerFromOneToAnotherTargetEffect; import mage.abilities.effects.common.WishEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; @@ -35,7 +34,7 @@ public final class VivienArkbowRanger extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.VIVIEN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Distribute two +1/+1 counters among up to two target creatures. They gain trample until end of turn. Ability ability = new LoyaltyAbility(new DistributeCountersEffect( diff --git a/Mage.Sets/src/mage/cards/v/VivienChampionOfTheWilds.java b/Mage.Sets/src/mage/cards/v/VivienChampionOfTheWilds.java index 2549312f7e..1b2432a676 100644 --- a/Mage.Sets/src/mage/cards/v/VivienChampionOfTheWilds.java +++ b/Mage.Sets/src/mage/cards/v/VivienChampionOfTheWilds.java @@ -2,7 +2,6 @@ package mage.cards.v; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.AsThoughEffectImpl; import mage.abilities.effects.ContinuousEffect; @@ -40,7 +39,7 @@ public final class VivienChampionOfTheWilds extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.VIVIEN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // You may cast creature spells as though they had flash. this.addAbility(new SimpleStaticAbility(new CastAsThoughItHadFlashAllEffect( diff --git a/Mage.Sets/src/mage/cards/v/VivienMonstersAdvocate.java b/Mage.Sets/src/mage/cards/v/VivienMonstersAdvocate.java index 1985e62cf9..5349862629 100644 --- a/Mage.Sets/src/mage/cards/v/VivienMonstersAdvocate.java +++ b/Mage.Sets/src/mage/cards/v/VivienMonstersAdvocate.java @@ -3,7 +3,6 @@ package mage.cards.v; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; @@ -46,7 +45,7 @@ public final class VivienMonstersAdvocate extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.VIVIEN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // You may look at the top card of your library any time. this.addAbility(new SimpleStaticAbility(new LookAtTopCardOfLibraryAnyTimeEffect())); diff --git a/Mage.Sets/src/mage/cards/v/VivienNaturesAvenger.java b/Mage.Sets/src/mage/cards/v/VivienNaturesAvenger.java index 09e97030e5..3280173988 100644 --- a/Mage.Sets/src/mage/cards/v/VivienNaturesAvenger.java +++ b/Mage.Sets/src/mage/cards/v/VivienNaturesAvenger.java @@ -2,7 +2,6 @@ package mage.cards.v; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.RevealCardsFromLibraryUntilEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; @@ -27,7 +26,7 @@ public final class VivienNaturesAvenger extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.VIVIEN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Put three +1/+1 counters on up to one target creature. Ability ability = new LoyaltyAbility(new AddCountersTargetEffect( diff --git a/Mage.Sets/src/mage/cards/v/VivienOfTheArkbow.java b/Mage.Sets/src/mage/cards/v/VivienOfTheArkbow.java index 34c82d0c40..c48c7ff6b9 100644 --- a/Mage.Sets/src/mage/cards/v/VivienOfTheArkbow.java +++ b/Mage.Sets/src/mage/cards/v/VivienOfTheArkbow.java @@ -2,7 +2,6 @@ package mage.cards.v; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DamageWithPowerFromOneToAnotherTargetEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; @@ -31,7 +30,7 @@ public final class VivienOfTheArkbow extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.VIVIEN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +2: Put two +1/+1 counters on up to one target creature. Ability ability = new LoyaltyAbility(new AddCountersTargetEffect(CounterType.P1P1.createInstance(2)), 2); diff --git a/Mage.Sets/src/mage/cards/v/VivienReid.java b/Mage.Sets/src/mage/cards/v/VivienReid.java index 74e03a599d..f104b84fcd 100644 --- a/Mage.Sets/src/mage/cards/v/VivienReid.java +++ b/Mage.Sets/src/mage/cards/v/VivienReid.java @@ -3,7 +3,6 @@ package mage.cards.v; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -51,7 +50,7 @@ public final class VivienReid extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.VIVIEN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Look at the top four cards of your library. You may reveal a creature or land card from among them and put it into your hand. Put the rest on the bottom of your library in any order. this.addAbility(new LoyaltyAbility( diff --git a/Mage.Sets/src/mage/cards/v/VraskaGolgariQueen.java b/Mage.Sets/src/mage/cards/v/VraskaGolgariQueen.java index 209f27da52..c69f628b9b 100644 --- a/Mage.Sets/src/mage/cards/v/VraskaGolgariQueen.java +++ b/Mage.Sets/src/mage/cards/v/VraskaGolgariQueen.java @@ -3,7 +3,6 @@ package mage.cards.v; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DoIfCostPaid; @@ -46,7 +45,7 @@ public final class VraskaGolgariQueen extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.VRASKA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +2: You may sacrifice another permanent. If you do, you gain 1 life and draw a card. DoIfCostPaid effect = new DoIfCostPaid( diff --git a/Mage.Sets/src/mage/cards/v/VraskaRegalGorgon.java b/Mage.Sets/src/mage/cards/v/VraskaRegalGorgon.java index d04676476d..0f008121a2 100644 --- a/Mage.Sets/src/mage/cards/v/VraskaRegalGorgon.java +++ b/Mage.Sets/src/mage/cards/v/VraskaRegalGorgon.java @@ -3,7 +3,6 @@ package mage.cards.v; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; @@ -34,7 +33,7 @@ public final class VraskaRegalGorgon extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.VRASKA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +2: Put a +1/+1 counter on up to one target creature. That creature gains menace until end of turn. Ability ability = new LoyaltyAbility(new AddCountersTargetEffect( diff --git a/Mage.Sets/src/mage/cards/v/VraskaRelicSeeker.java b/Mage.Sets/src/mage/cards/v/VraskaRelicSeeker.java index 906ccb60e4..e38e6e63a9 100644 --- a/Mage.Sets/src/mage/cards/v/VraskaRelicSeeker.java +++ b/Mage.Sets/src/mage/cards/v/VraskaRelicSeeker.java @@ -2,7 +2,6 @@ package mage.cards.v; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DestroyTargetEffect; @@ -33,7 +32,7 @@ public final class VraskaRelicSeeker extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.VRASKA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(6)); + this.setStartingLoyalty(6); //+2: Create a 2/2 black Pirate creature token with menace. this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new PirateToken()), 2)); diff --git a/Mage.Sets/src/mage/cards/v/VraskaSchemingGorgon.java b/Mage.Sets/src/mage/cards/v/VraskaSchemingGorgon.java index 6a7e023b2b..cc97be2605 100644 --- a/Mage.Sets/src/mage/cards/v/VraskaSchemingGorgon.java +++ b/Mage.Sets/src/mage/cards/v/VraskaSchemingGorgon.java @@ -3,7 +3,6 @@ package mage.cards.v; import mage.abilities.LoyaltyAbility; import mage.abilities.TriggeredAbility; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.LoseGameTargetPlayerEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; @@ -29,7 +28,7 @@ public final class VraskaSchemingGorgon extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.VRASKA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +2: Creatures you control get +1/+0 until end of turn. this.addAbility(new LoyaltyAbility(new BoostControlledEffect(1, 0, Duration.EndOfTurn), 2)); diff --git a/Mage.Sets/src/mage/cards/v/VraskaSwarmsEminence.java b/Mage.Sets/src/mage/cards/v/VraskaSwarmsEminence.java index 2c0746be50..5f556ed1e5 100644 --- a/Mage.Sets/src/mage/cards/v/VraskaSwarmsEminence.java +++ b/Mage.Sets/src/mage/cards/v/VraskaSwarmsEminence.java @@ -2,7 +2,6 @@ package mage.cards.v; import mage.abilities.LoyaltyAbility; import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; @@ -41,7 +40,7 @@ public final class VraskaSwarmsEminence extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.VRASKA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // Whenever a creature you control with deathtouch deals damage to a player or planeswalker, put a +1/+1 counter on that creature. this.addAbility(new VraskaSwarmsEminenceTriggeredAbility(Zone.BATTLEFIELD, diff --git a/Mage.Sets/src/mage/cards/v/VraskaTheUnseen.java b/Mage.Sets/src/mage/cards/v/VraskaTheUnseen.java index 4d3d28fab7..c55e5e1c35 100644 --- a/Mage.Sets/src/mage/cards/v/VraskaTheUnseen.java +++ b/Mage.Sets/src/mage/cards/v/VraskaTheUnseen.java @@ -3,7 +3,6 @@ package mage.cards.v; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateTokenEffect; @@ -37,7 +36,7 @@ public final class VraskaTheUnseen extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.VRASKA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Until your next turn, whenever a creature deals combat damage to Vraska the Unseen, destroy that creature. this.addAbility(new LoyaltyAbility(new VraskaTheUnseenGainAbilityEffect(new VraskaTheUnseenTriggeredAbility()), 1)); diff --git a/Mage.Sets/src/mage/cards/w/WillKenrith.java b/Mage.Sets/src/mage/cards/w/WillKenrith.java index 5cf2c4e771..acf8238397 100644 --- a/Mage.Sets/src/mage/cards/w/WillKenrith.java +++ b/Mage.Sets/src/mage/cards/w/WillKenrith.java @@ -3,7 +3,6 @@ package mage.cards.w; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; import mage.abilities.common.CanBeYourCommanderAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.DrawCardTargetEffect; @@ -34,7 +33,7 @@ public final class WillKenrith extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.WILL); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +2: Until your next turn, up to two target creatures each have base power and toughness 0/3 and lose all abilities. Ability ability = new LoyaltyAbility( diff --git a/Mage.Sets/src/mage/cards/w/WrennAndSeven.java b/Mage.Sets/src/mage/cards/w/WrennAndSeven.java index e1d9d4270d..524b56c76a 100644 --- a/Mage.Sets/src/mage/cards/w/WrennAndSeven.java +++ b/Mage.Sets/src/mage/cards/w/WrennAndSeven.java @@ -2,7 +2,6 @@ package mage.cards.w; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.GetEmblemEffect; @@ -30,7 +29,7 @@ public final class WrennAndSeven extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.WRENN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); + this.setStartingLoyalty(5); // +1: Reveal the top four cards of your library. Put all land cards revealed this way into your hand and the rest into your graveyard. this.addAbility(new LoyaltyAbility(new RevealLibraryPutIntoHandEffect( diff --git a/Mage.Sets/src/mage/cards/w/WrennAndSix.java b/Mage.Sets/src/mage/cards/w/WrennAndSix.java index 8288e659d4..6a5a1cbada 100644 --- a/Mage.Sets/src/mage/cards/w/WrennAndSix.java +++ b/Mage.Sets/src/mage/cards/w/WrennAndSix.java @@ -2,7 +2,6 @@ package mage.cards.w; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; @@ -35,7 +34,7 @@ public final class WrennAndSix extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.WRENN); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Return up to one target land card from your graveyard to your hand. Ability ability = new LoyaltyAbility(new ReturnFromGraveyardToHandTargetEffect(), 1); diff --git a/Mage.Sets/src/mage/cards/x/XenagosTheReveler.java b/Mage.Sets/src/mage/cards/x/XenagosTheReveler.java index f78038fa4c..05c76f1fd2 100644 --- a/Mage.Sets/src/mage/cards/x/XenagosTheReveler.java +++ b/Mage.Sets/src/mage/cards/x/XenagosTheReveler.java @@ -3,7 +3,6 @@ package mage.cards.x; import mage.Mana; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.hint.common.CreaturesYouControlHint; @@ -32,7 +31,7 @@ public final class XenagosTheReveler extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.XENAGOS); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Add X mana in any combination of {R} and/or {G}, where X is the number of creatures you control. this.addAbility(new LoyaltyAbility(new XenagosManaEffect(), +1) diff --git a/Mage.Sets/src/mage/cards/y/YodaJediMaster.java b/Mage.Sets/src/mage/cards/y/YodaJediMaster.java index f1d3a4b06d..9da18dcf9c 100644 --- a/Mage.Sets/src/mage/cards/y/YodaJediMaster.java +++ b/Mage.Sets/src/mage/cards/y/YodaJediMaster.java @@ -4,7 +4,6 @@ package mage.cards.y; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.Effect; @@ -47,7 +46,7 @@ public final class YodaJediMaster extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.YODA); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); + this.setStartingLoyalty(3); // +1: Look at the top two cards of your library. Put one on the bottom of your library. Effect effect = new LookLibraryAndPickControllerEffect(StaticValue.get(2), false, StaticValue.get(1), diff --git a/Mage.Sets/src/mage/cards/z/ZarielArchdukeOfAvernus.java b/Mage.Sets/src/mage/cards/z/ZarielArchdukeOfAvernus.java index 8a36922cf4..4e78a8c215 100644 --- a/Mage.Sets/src/mage/cards/z/ZarielArchdukeOfAvernus.java +++ b/Mage.Sets/src/mage/cards/z/ZarielArchdukeOfAvernus.java @@ -2,7 +2,6 @@ package mage.cards.z; import mage.abilities.Ability; import mage.abilities.LoyaltyAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; @@ -30,7 +29,7 @@ public final class ZarielArchdukeOfAvernus extends CardImpl { this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.ZARIEL); - this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); + this.setStartingLoyalty(4); // +1: Creatures you control get +1/+0 and gain haste until end of turn. Ability ability = new LoyaltyAbility(new BoostControlledEffect( diff --git a/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java b/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java index df69f905e2..46db019b24 100644 --- a/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java +++ b/Mage.Sets/src/mage/sets/KamigawaNeonDynasty.java @@ -281,6 +281,7 @@ public final class KamigawaNeonDynasty extends ExpansionSet { cards.add(new SetCardInfo("Tameshi, Reality Architect", 82, Rarity.RARE, mage.cards.t.TameshiRealityArchitect.class)); cards.add(new SetCardInfo("Tamiyo's Compleation", 83, Rarity.COMMON, mage.cards.t.TamiyosCompleation.class)); cards.add(new SetCardInfo("Tamiyo's Safekeeping", 211, Rarity.COMMON, mage.cards.t.TamiyosSafekeeping.class)); + cards.add(new SetCardInfo("Tamiyo, Compleated Sage", 238, Rarity.MYTHIC, mage.cards.t.TamiyoCompleatedSage.class)); cards.add(new SetCardInfo("Tatsunari, Toad Rider", 123, Rarity.RARE, mage.cards.t.TatsunariToadRider.class)); cards.add(new SetCardInfo("Teachings of the Kirin", 212, Rarity.RARE, mage.cards.t.TeachingsOfTheKirin.class)); cards.add(new SetCardInfo("Tempered in Solitude", 165, Rarity.UNCOMMON, mage.cards.t.TemperedInSolitude.class)); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/CompleatedTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/CompleatedTest.java new file mode 100644 index 0000000000..1bd21b656a --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/CompleatedTest.java @@ -0,0 +1,47 @@ +package org.mage.test.cards.abilities.keywords; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import mage.counters.CounterType; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * @author TheElk801 + */ +public class CompleatedTest extends CardTestPlayerBase { + + private static final String tamiyo = "Tamiyo, Compleated Sage"; + + @Test + public void testLifePaid() { + addCard(Zone.BATTLEFIELD, playerA, "Tropical Island", 4); + addCard(Zone.HAND, playerA, tamiyo); + + setChoice(playerA, true); + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, tamiyo); + + setStrictChooseMode(true); + setStopAt(1, PhaseStep.END_TURN); + execute(); + assertAllCommandsUsed(); + + assertCounterCount(playerA, tamiyo, CounterType.LOYALTY, 3); + } + + @Test + public void testManaPaid() { + addCard(Zone.BATTLEFIELD, playerA, "Tropical Island", 5); + addCard(Zone.HAND, playerA, tamiyo); + + setChoice(playerA, false); + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, tamiyo); + + setStrictChooseMode(true); + setStopAt(1, PhaseStep.END_TURN); + execute(); + assertAllCommandsUsed(); + + assertCounterCount(playerA, tamiyo, CounterType.LOYALTY, 5); + } +} diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/copy/SparkDoubleTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/copy/SparkDoubleTest.java index dbdebe836f..300c0fd0ba 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/copy/SparkDoubleTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/copy/SparkDoubleTest.java @@ -68,7 +68,6 @@ public class SparkDoubleTest extends CardTestPlayerBase { castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Spark Double"); setChoice(playerA, true); setChoice(playerA, "Ajani, the Greathearted"); - setChoice(playerA, "Ajani, the Greathearted"); // two etb effects (own + copy) setStrictChooseMode(true); setStopAt(1, PhaseStep.BEGIN_COMBAT); @@ -120,7 +119,6 @@ public class SparkDoubleTest extends CardTestPlayerBase { castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Spark Double"); setChoice(playerA, true); setChoice(playerA, "Gideon, Ally of Zendikar"); - setChoice(playerA, "Gideon, Ally of Zendikar"); // two etb effects (own + copy) setStrictChooseMode(true); setStopAt(1, PhaseStep.END_TURN); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/planeswalker/NissaStewardOfElementsTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/planeswalker/NissaStewardOfElementsTest.java new file mode 100644 index 0000000000..478ab343a9 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/planeswalker/NissaStewardOfElementsTest.java @@ -0,0 +1,54 @@ +package org.mage.test.cards.planeswalker; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import mage.counters.CounterType; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * @author TheElk801 + */ +public class NissaStewardOfElementsTest extends CardTestPlayerBase { + + private static final String nissa = "Nissa, Steward of Elements"; + + private void doTest(int xValue) { + addCard(Zone.BATTLEFIELD, playerA, "Tropical Island", 2 + xValue); + addCard(Zone.HAND, playerA, nissa); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, nissa); + setChoice(playerA, "X=" + xValue); + + setStrictChooseMode(true); + setStopAt(1, PhaseStep.POSTCOMBAT_MAIN); + execute(); + assertAllCommandsUsed(); + + if (xValue == 0) { + assertGraveyardCount(playerA, nissa, 1); + } else { + assertCounterCount(playerA, nissa, CounterType.LOYALTY, xValue); + } + } + + @Test + public void test0Counters() { + doTest(0); + } + + @Test + public void test1Counter() { + doTest(1); + } + + @Test + public void test2Counters() { + doTest(2); + } + + @Test + public void test10Counters() { + doTest(10); + } +} diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/khm/ValkiGodOfLiesTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/khm/ValkiGodOfLiesTest.java index 77ed48941e..a705bddecf 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/khm/ValkiGodOfLiesTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/khm/ValkiGodOfLiesTest.java @@ -18,7 +18,6 @@ public class ValkiGodOfLiesTest extends CardTestPlayerBase { addCard(Zone.LIBRARY, playerB, "Ephemerate"); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Tibalt, Cosmic Impostor"); - setChoice(playerA, "Tibalt, Cosmic Impostor"); // two etb effects activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "+2: Exile the top card of each player's library."); playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Plains"); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Ephemerate", "Grizzly Bears"); diff --git a/Mage.Tests/src/test/java/org/mage/test/commander/duel/OpalPalaceTest.java b/Mage.Tests/src/test/java/org/mage/test/commander/duel/OpalPalaceTest.java index 82a06303bb..cc62b292f5 100644 --- a/Mage.Tests/src/test/java/org/mage/test/commander/duel/OpalPalaceTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/commander/duel/OpalPalaceTest.java @@ -32,7 +32,6 @@ public class OpalPalaceTest extends CardTestCommanderDuelBase { // showAvailableAbilities("abi", 1, PhaseStep.PRECOMBAT_MAIN, playerA); activateManaAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Add {G}"); activateManaAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{1}, {T}"); - setChoice(playerA, "Opal Palace"); // activate mana replace effect first (+3 counters) castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Ob Nixilis of the Black Oath"); // {3}{B}{B} setStrictChooseMode(true); diff --git a/Mage/src/main/java/mage/MageObjectImpl.java b/Mage/src/main/java/mage/MageObjectImpl.java index eb797933bc..83a51295ca 100644 --- a/Mage/src/main/java/mage/MageObjectImpl.java +++ b/Mage/src/main/java/mage/MageObjectImpl.java @@ -3,7 +3,6 @@ package mage; import mage.abilities.Abilities; import mage.abilities.AbilitiesImpl; import mage.abilities.Ability; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.abilities.costs.mana.ManaCost; import mage.abilities.costs.mana.ManaCosts; import mage.abilities.costs.mana.ManaCostsImpl; @@ -40,6 +39,7 @@ public abstract class MageObjectImpl implements MageObject { protected String text; protected MageInt power; protected MageInt toughness; + protected int startingLoyalty = -1; // -2 means X, -1 means none, 0 and up is normal protected boolean copy; protected MageObject copyFrom; // copied card INFO (used to call original adjusters) @@ -68,6 +68,7 @@ public abstract class MageObjectImpl implements MageObject { frameStyle = object.frameStyle; power = object.power.copy(); toughness = object.toughness.copy(); + startingLoyalty = object.startingLoyalty; abilities = object.abilities.copy(); this.cardType.addAll(object.cardType); this.subtype.copyFrom(object.subtype); @@ -167,21 +168,12 @@ public abstract class MageObjectImpl implements MageObject { @Override public int getStartingLoyalty() { - for (Ability ab : getAbilities()) { - if (ab instanceof PlaneswalkerEntersWithLoyaltyCountersAbility) { - return ((PlaneswalkerEntersWithLoyaltyCountersAbility) ab).getStartingLoyalty(); - } - } - return 0; + return startingLoyalty; } @Override public void setStartingLoyalty(int startingLoyalty) { - for (Ability ab : getAbilities()) { - if (ab instanceof PlaneswalkerEntersWithLoyaltyCountersAbility) { - ((PlaneswalkerEntersWithLoyaltyCountersAbility) ab).setStartingLoyalty(startingLoyalty); - } - } + this.startingLoyalty = startingLoyalty; } @Override diff --git a/Mage/src/main/java/mage/ManaSymbol.java b/Mage/src/main/java/mage/ManaSymbol.java index 35b692de7b..ca46df5cb1 100644 --- a/Mage/src/main/java/mage/ManaSymbol.java +++ b/Mage/src/main/java/mage/ManaSymbol.java @@ -83,6 +83,16 @@ public enum ManaSymbol { PHYREXIAN_R("{R/P}", R, Type.PHYREXIAN, Type.COLORED, Type.MONOCOLORED), PHYREXIAN_B("{B/P}", B, Type.PHYREXIAN, Type.COLORED, Type.MONOCOLORED), PHYREXIAN_U("{U/P}", U, Type.PHYREXIAN, Type.COLORED, Type.MONOCOLORED), + PHYREXIAN_HYBRID_WU("{W/U/P}", W, U, Type.PHYREXIAN, Type.HYBRID, Type.COLORED), + PHYREXIAN_HYBRID_WB("{W/B/P}", W, B, Type.PHYREXIAN, Type.HYBRID, Type.COLORED), + PHYREXIAN_HYBRID_UB("{U/B/P}", U, B, Type.PHYREXIAN, Type.HYBRID, Type.COLORED), + PHYREXIAN_HYBRID_UR("{U/R/P}", U, R, Type.PHYREXIAN, Type.HYBRID, Type.COLORED), + PHYREXIAN_HYBRID_BR("{B/R/P}", B, R, Type.PHYREXIAN, Type.HYBRID, Type.COLORED), + PHYREXIAN_HYBRID_BG("{B/G/P}", B, G, Type.PHYREXIAN, Type.HYBRID, Type.COLORED), + PHYREXIAN_HYBRID_RG("{R/G/P}", R, G, Type.PHYREXIAN, Type.HYBRID, Type.COLORED), + PHYREXIAN_HYBRID_RW("{R/W/P}", R, W, Type.PHYREXIAN, Type.HYBRID, Type.COLORED), + PHYREXIAN_HYBRID_GW("{G/W/P}", G, W, Type.PHYREXIAN, Type.HYBRID, Type.COLORED), + PHYREXIAN_HYBRID_GU("{G/U/P}", G, U, Type.PHYREXIAN, Type.HYBRID, Type.COLORED), SNOW("{S}", Type.SNOW); private enum Type { diff --git a/Mage/src/main/java/mage/abilities/AbilityImpl.java b/Mage/src/main/java/mage/abilities/AbilityImpl.java index 1ab3dec13c..4de229cbf4 100644 --- a/Mage/src/main/java/mage/abilities/AbilityImpl.java +++ b/Mage/src/main/java/mage/abilities/AbilityImpl.java @@ -4,7 +4,10 @@ import mage.MageIdentifier; import mage.MageObject; import mage.abilities.costs.*; import mage.abilities.costs.common.PayLifeCost; -import mage.abilities.costs.mana.*; +import mage.abilities.costs.mana.ManaCost; +import mage.abilities.costs.mana.ManaCosts; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.costs.mana.VariableManaCost; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.Effect; import mage.abilities.effects.Effects; @@ -536,14 +539,15 @@ public abstract class AbilityImpl implements Ability { while (costIterator.hasNext()) { ManaCost cost = costIterator.next(); - if (cost instanceof PhyrexianManaCost) { - PhyrexianManaCost phyrexianManaCost = (PhyrexianManaCost) cost; - PayLifeCost payLifeCost = new PayLifeCost(2); - if (payLifeCost.canPay(this, this, controller.getId(), game) - && controller.chooseUse(Outcome.LoseLife, "Pay 2 life instead of " + phyrexianManaCost.getBaseText() + '?', this, game)) { - costIterator.remove(); - costs.add(payLifeCost); - } + if (!cost.isPhyrexian()) { + continue; + } + PayLifeCost payLifeCost = new PayLifeCost(2); + if (payLifeCost.canPay(this, this, controller.getId(), game) + && controller.chooseUse(Outcome.LoseLife, "Pay 2 life instead of " + cost.getText().replace("/P", "") + '?', this, game)) { + costIterator.remove(); + costs.add(payLifeCost); + manaCostsToPay.incrPhyrexianPaid(); } } } diff --git a/Mage/src/main/java/mage/abilities/ActivatedAbilityImpl.java b/Mage/src/main/java/mage/abilities/ActivatedAbilityImpl.java index 2149d7fe87..54575f4678 100644 --- a/Mage/src/main/java/mage/abilities/ActivatedAbilityImpl.java +++ b/Mage/src/main/java/mage/abilities/ActivatedAbilityImpl.java @@ -6,7 +6,6 @@ import mage.abilities.condition.Condition; import mage.abilities.costs.Cost; import mage.abilities.costs.Costs; import mage.abilities.costs.mana.ManaCosts; -import mage.abilities.costs.mana.PhyrexianManaCost; import mage.abilities.effects.Effect; import mage.abilities.effects.Effects; import mage.abilities.keyword.FlashAbility; @@ -61,19 +60,13 @@ public abstract class ActivatedAbilityImpl extends AbilityImpl implements Activa public ActivatedAbilityImpl(Zone zone, Effect effect) { super(AbilityType.ACTIVATED, zone); - if (effect != null) { - this.addEffect(effect); - } + this.addEffect(effect); } public ActivatedAbilityImpl(Zone zone, Effect effect, ManaCosts cost) { super(AbilityType.ACTIVATED, zone); - if (effect != null) { - this.addEffect(effect); - } - if (cost != null) { - this.addManaCost(cost); - } + this.addEffect(effect); + this.addManaCost(cost); } public ActivatedAbilityImpl(Zone zone, Effects effects, ManaCosts cost) { @@ -83,30 +76,18 @@ public abstract class ActivatedAbilityImpl extends AbilityImpl implements Activa this.addEffect(effect); } } - if (cost != null) { - this.addManaCost(cost); - } + this.addManaCost(cost); } public ActivatedAbilityImpl(Zone zone, Effect effect, Cost cost) { super(AbilityType.ACTIVATED, zone); - if (effect != null) { - this.addEffect(effect); - } - if (cost != null) { - if (cost instanceof PhyrexianManaCost) { - this.addManaCost((PhyrexianManaCost) cost); - } else { - this.addCost(cost); - } - } + this.addEffect(effect); + this.addCost(cost); } public ActivatedAbilityImpl(Zone zone, Effect effect, Costs costs) { super(AbilityType.ACTIVATED, zone); - if (effect != null) { - this.addEffect(effect); - } + this.addEffect(effect); if (costs != null) { for (Cost cost : costs) { this.addCost(cost); @@ -121,15 +102,13 @@ public abstract class ActivatedAbilityImpl extends AbilityImpl implements Activa this.addEffect(effect); } } - if (cost != null) { - this.addCost(cost); - } + this.addCost(cost); } public ActivatedAbilityImpl(Zone zone, Effects effects, Costs costs) { super(AbilityType.ACTIVATED, zone); - for (Effect effect : effects) { - if (effect != null) { + if (effects != null) { + for (Effect effect : effects) { this.addEffect(effect); } } diff --git a/Mage/src/main/java/mage/abilities/common/PlaneswalkerEntersWithLoyaltyCountersAbility.java b/Mage/src/main/java/mage/abilities/common/PlaneswalkerEntersWithLoyaltyCountersAbility.java deleted file mode 100644 index db7355e37a..0000000000 --- a/Mage/src/main/java/mage/abilities/common/PlaneswalkerEntersWithLoyaltyCountersAbility.java +++ /dev/null @@ -1,39 +0,0 @@ -package mage.abilities.common; - -import mage.abilities.effects.EntersBattlefieldEffect; -import mage.abilities.effects.common.counter.AddCountersSourceEffect; -import mage.counters.CounterType; - -/** - * @author LevelX2 - */ -public class PlaneswalkerEntersWithLoyaltyCountersAbility extends EntersBattlefieldAbility { - - private int startingLoyalty; - - public PlaneswalkerEntersWithLoyaltyCountersAbility(int loyalty) { - super(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(loyalty))); - startingLoyalty = loyalty; - setRuleVisible(false); - } - - public PlaneswalkerEntersWithLoyaltyCountersAbility(final PlaneswalkerEntersWithLoyaltyCountersAbility ability) { - super(ability); - startingLoyalty = ability.startingLoyalty; - } - - public int getStartingLoyalty() { - return startingLoyalty; - } - - public void setStartingLoyalty(int startingLoyalty) { - this.startingLoyalty = startingLoyalty; - this.getEffects().clear(); - this.addEffect(new EntersBattlefieldEffect(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(startingLoyalty)))); - } - - @Override - public PlaneswalkerEntersWithLoyaltyCountersAbility copy() { - return new PlaneswalkerEntersWithLoyaltyCountersAbility(this); - } -} diff --git a/Mage/src/main/java/mage/abilities/costs/mana/ColoredManaCost.java b/Mage/src/main/java/mage/abilities/costs/mana/ColoredManaCost.java index 87319e0172..6369c9dc79 100644 --- a/Mage/src/main/java/mage/abilities/costs/mana/ColoredManaCost.java +++ b/Mage/src/main/java/mage/abilities/costs/mana/ColoredManaCost.java @@ -43,7 +43,7 @@ public class ColoredManaCost extends ManaCostImpl { @Override public String getText() { - return '{' + mana.toString() + '}'; + return '{' + mana.toString() + (this.phyrexian ? "/P" : "") + '}'; } @Override diff --git a/Mage/src/main/java/mage/abilities/costs/mana/HybridManaCost.java b/Mage/src/main/java/mage/abilities/costs/mana/HybridManaCost.java index 9c2193aa56..e15bc56054 100644 --- a/Mage/src/main/java/mage/abilities/costs/mana/HybridManaCost.java +++ b/Mage/src/main/java/mage/abilities/costs/mana/HybridManaCost.java @@ -1,8 +1,5 @@ - package mage.abilities.costs.mana; -import java.util.ArrayList; -import java.util.List; import mage.Mana; import mage.abilities.Ability; import mage.abilities.costs.Cost; @@ -10,6 +7,9 @@ import mage.constants.ColoredManaSymbol; import mage.game.Game; import mage.players.ManaPool; +import java.util.ArrayList; +import java.util.List; + public class HybridManaCost extends ManaCostImpl { private final ColoredManaSymbol mana1; @@ -50,7 +50,7 @@ public class HybridManaCost extends ManaCostImpl { @Override public String getText() { - return '{' + mana1.toString() + '/' + mana2.toString() + '}'; + return '{' + mana1.toString() + '/' + mana2.toString() + (this.phyrexian ? "/P" : "") + '}'; } @Override diff --git a/Mage/src/main/java/mage/abilities/costs/mana/ManaCost.java b/Mage/src/main/java/mage/abilities/costs/mana/ManaCost.java index 9f5a3ed02d..91a3f0194f 100644 --- a/Mage/src/main/java/mage/abilities/costs/mana/ManaCost.java +++ b/Mage/src/main/java/mage/abilities/costs/mana/ManaCost.java @@ -1,7 +1,5 @@ - package mage.abilities.costs.mana; -import java.util.List; import mage.Mana; import mage.abilities.Ability; import mage.abilities.costs.Cost; @@ -11,6 +9,8 @@ import mage.filter.Filter; import mage.game.Game; import mage.players.ManaPool; +import java.util.List; + public interface ManaCost extends Cost { int manaValue(); @@ -45,4 +45,7 @@ public interface ManaCost extends Cost { @Override ManaCost copy(); + boolean isPhyrexian(); + + void setPhyrexian(boolean phyrexian); } diff --git a/Mage/src/main/java/mage/abilities/costs/mana/ManaCostImpl.java b/Mage/src/main/java/mage/abilities/costs/mana/ManaCostImpl.java index d0503b870c..59122a61ed 100644 --- a/Mage/src/main/java/mage/abilities/costs/mana/ManaCostImpl.java +++ b/Mage/src/main/java/mage/abilities/costs/mana/ManaCostImpl.java @@ -25,6 +25,7 @@ public abstract class ManaCostImpl extends CostImpl implements ManaCost { protected Mana cost; protected ManaOptions options; protected Filter sourceFilter; + protected boolean phyrexian = false; public ManaCostImpl() { payment = new Mana(); @@ -41,6 +42,7 @@ public abstract class ManaCostImpl extends CostImpl implements ManaCost { if (manaCost.sourceFilter != null) { this.sourceFilter = manaCost.sourceFilter.copy(); } + this.phyrexian = manaCost.phyrexian; } @Override @@ -288,4 +290,17 @@ public abstract class ManaCostImpl extends CostImpl implements ManaCost { public String toString() { return getText(); } + + @Override + public boolean isPhyrexian() { + return phyrexian; + } + + @Override + public void setPhyrexian(boolean phyrexian) { + if (phyrexian) { + this.options.add(Mana.GenericMana(0)); + } + this.phyrexian = phyrexian; + } } diff --git a/Mage/src/main/java/mage/abilities/costs/mana/ManaCosts.java b/Mage/src/main/java/mage/abilities/costs/mana/ManaCosts.java index c1196269e3..def7aef85c 100644 --- a/Mage/src/main/java/mage/abilities/costs/mana/ManaCosts.java +++ b/Mage/src/main/java/mage/abilities/costs/mana/ManaCosts.java @@ -54,4 +54,8 @@ public interface ManaCosts extends List, ManaCost { .collect(Collectors.toCollection(ManaCostsImpl::new)); } + + void incrPhyrexianPaid(); + + int getPhyrexianPaid(); } diff --git a/Mage/src/main/java/mage/abilities/costs/mana/ManaCostsImpl.java b/Mage/src/main/java/mage/abilities/costs/mana/ManaCostsImpl.java index 59e2e9dbd7..1e2126737d 100644 --- a/Mage/src/main/java/mage/abilities/costs/mana/ManaCostsImpl.java +++ b/Mage/src/main/java/mage/abilities/costs/mana/ManaCostsImpl.java @@ -28,6 +28,8 @@ public class ManaCostsImpl extends ArrayList implements M protected final UUID id; protected String text = null; + protected boolean phyrexian = false; + private int phyrexianPaid = 0; private static final Map costsCache = new ConcurrentHashMap<>(); // must be thread safe, can't use nulls @@ -46,6 +48,7 @@ public class ManaCostsImpl extends ArrayList implements M for (T cost : costs) { this.add(cost.copy()); } + this.phyrexian = costs.phyrexian; } @Override @@ -175,58 +178,53 @@ public class ManaCostsImpl extends ArrayList implements M while (manaCostIterator.hasNext()) { ManaCost manaCost = manaCostIterator.next(); - if (manaCost instanceof PhyrexianManaCost) { - PhyrexianManaCost phyrexianManaCost = (PhyrexianManaCost) manaCost; - PayLifeCost payLifeCost = new PayLifeCost(2); - if (payLifeCost.canPay(abilityToPay, source, payingPlayer.getId(), game) - && payingPlayer.chooseUse(Outcome.LoseLife, "Pay 2 life instead of " + phyrexianManaCost.getBaseText() + '?', source, game)) { - manaCostIterator.remove(); - tempCosts.add(payLifeCost); - } + if (!manaCost.isPhyrexian()) { + continue; + } + PayLifeCost payLifeCost = new PayLifeCost(2); + if (payLifeCost.canPay(abilityToPay, source, payingPlayer.getId(), game) + && payingPlayer.chooseUse(Outcome.LoseLife, "Pay 2 life instead of " + manaCost.getText().replace("/P", "") + '?', source, game)) { + manaCostIterator.remove(); + tempCosts.add(payLifeCost); + this.incrPhyrexianPaid(); } } tempCosts.pay(source, game, source, payingPlayer.getId(), false, null); } + private void handleLikePhyrexianManaCosts(Player player, Ability source, Game game) { if (this.isEmpty()) { return; // nothing to be done without any mana costs. prevents NRE from occurring here } FilterMana phyrexianColors = player.getPhyrexianColors(); - if (player.getPhyrexianColors() != null) { - Costs tempCosts = new CostsImpl<>(); - - Iterator manaCostIterator = this.iterator(); - while (manaCostIterator.hasNext()) { - ManaCost manaCost = manaCostIterator.next(); - Mana mana = manaCost.getMana(); - PhyrexianManaCost tempPhyrexianCost = null; - - /* find which color mana is in the cost and set it in the temp Phyrexian cost */ - if (phyrexianColors.isWhite() && mana.getWhite() > 0) { - tempPhyrexianCost = new PhyrexianManaCost(ColoredManaSymbol.W); - } else if (phyrexianColors.isBlue() && mana.getBlue() > 0) { - tempPhyrexianCost = new PhyrexianManaCost(ColoredManaSymbol.U); - } else if (phyrexianColors.isBlack() && mana.getBlack() > 0) { - tempPhyrexianCost = new PhyrexianManaCost(ColoredManaSymbol.B); - } else if (phyrexianColors.isRed() && mana.getRed() > 0) { - tempPhyrexianCost = new PhyrexianManaCost(ColoredManaSymbol.R); - } else if (phyrexianColors.isGreen() && mana.getGreen() > 0) { - tempPhyrexianCost = new PhyrexianManaCost(ColoredManaSymbol.G); - } - - if (tempPhyrexianCost != null) { - PayLifeCost payLifeCost = new PayLifeCost(2); - if (payLifeCost.canPay(source, source, player.getId(), game) - && player.chooseUse(Outcome.LoseLife, "Pay 2 life (using an active ability) instead of " + tempPhyrexianCost.getBaseText() + '?', source, game)) { - manaCostIterator.remove(); - tempCosts.add(payLifeCost); - } - } - } - tempCosts.pay(source, game, source, player.getId(), false, null); + if (player.getPhyrexianColors() == null) { + return; } + Costs tempCosts = new CostsImpl<>(); + + Iterator manaCostIterator = this.iterator(); + while (manaCostIterator.hasNext()) { + ManaCost manaCost = manaCostIterator.next(); + Mana mana = manaCost.getMana(); + + /* find which color mana is in the cost and set it in the temp Phyrexian cost */ + if ((!phyrexianColors.isWhite() || mana.getWhite() <= 0) + && (!phyrexianColors.isBlue() || mana.getBlue() <= 0) + && (!phyrexianColors.isBlack() || mana.getBlack() <= 0) + && (!phyrexianColors.isRed() || mana.getRed() <= 0) + && (!phyrexianColors.isGreen() || mana.getGreen() <= 0)) { + continue; + } + PayLifeCost payLifeCost = new PayLifeCost(2); + if (payLifeCost.canPay(source, source, player.getId(), game) + && player.chooseUse(Outcome.LoseLife, "Pay 2 life (using an active ability) instead of " + manaCost.getMana() + '?', source, game)) { + manaCostIterator.remove(); + tempCosts.add(payLifeCost); + } + } + tempCosts.pay(source, game, source, player.getId(), false, null); } @Override @@ -447,49 +445,57 @@ public class ManaCostsImpl extends ArrayList implements M for (ManaCost cost : savedCosts) { this.add(cost.copy()); } - } else { - String[] symbols = mana.split("^\\{|}\\{|}$"); - int modifierForX = 0; - for (String symbol : symbols) { - if (!symbol.isEmpty()) { - if (symbol.length() == 1 || isNumeric(symbol)) { - if (Character.isDigit(symbol.charAt(0))) { - this.add(new GenericManaCost(Integer.valueOf(symbol))); - } else if (symbol.equals("S")) { - this.add(new SnowManaCost()); - } else if (symbol.equals("C")) { - this.add(new ColorlessManaCost(1)); - } else if (!symbol.equals("X")) { - this.add(new ColoredManaCost(ColoredManaSymbol.lookup(symbol.charAt(0)))); - } else // check X wasn't added before - if (modifierForX == 0) { - // count X occurence - for (String s : symbols) { - if (s.equals("X")) { - modifierForX++; - } - } - this.add(new VariableManaCost(VariableCostType.NORMAL, modifierForX)); - } //TODO: handle multiple {X} and/or {Y} symbols - } else if (Character.isDigit(symbol.charAt(0))) { - MonoHybridManaCost cost; - if (extractMonoHybridGenericValue) { - // for tests only, no usage in real game - cost = new MonoHybridManaCost(ColoredManaSymbol.lookup(symbol.charAt(2)), Integer.parseInt(symbol.substring(0, 1))); - } else { - cost = new MonoHybridManaCost(ColoredManaSymbol.lookup(symbol.charAt(2))); + return; + } + String[] symbols = mana.split("^\\{|}\\{|}$"); + int modifierForX = 0; + for (String symbol : symbols) { + if (symbol.isEmpty()) { + continue; + } + if (symbol.length() == 1 || isNumeric(symbol)) { + if (Character.isDigit(symbol.charAt(0))) { + this.add(new GenericManaCost(Integer.valueOf(symbol))); + } else if (symbol.equals("S")) { + this.add(new SnowManaCost()); + } else if (symbol.equals("C")) { + this.add(new ColorlessManaCost(1)); + } else if (!symbol.equals("X")) { + this.add(new ColoredManaCost(ColoredManaSymbol.lookup(symbol.charAt(0)))); + } else // check X wasn't added before + if (modifierForX == 0) { + // count X occurence + for (String s : symbols) { + if (s.equals("X")) { + modifierForX++; + } } - this.add(cost); - } else if (symbol.contains("P")) { - this.add(new PhyrexianManaCost(ColoredManaSymbol.lookup(symbol.charAt(0)))); - } else { - this.add(new HybridManaCost(ColoredManaSymbol.lookup(symbol.charAt(0)), ColoredManaSymbol.lookup(symbol.charAt(2)))); - } + this.add(new VariableManaCost(VariableCostType.NORMAL, modifierForX)); + } //TODO: handle multiple {X} and/or {Y} symbols + } else if (Character.isDigit(symbol.charAt(0))) { + MonoHybridManaCost cost; + if (extractMonoHybridGenericValue) { + // for tests only, no usage in real game + cost = new MonoHybridManaCost(ColoredManaSymbol.lookup(symbol.charAt(2)), Integer.parseInt(symbol.substring(0, 1))); + } else { + cost = new MonoHybridManaCost(ColoredManaSymbol.lookup(symbol.charAt(2))); } + this.add(cost); + } else { + boolean phyrexian = symbol.contains("/P"); + String without = symbol.replace("/P", ""); + ManaCost cost; + if (without.length() == 1) { + cost = new ColoredManaCost(ColoredManaSymbol.lookup(without.charAt(0))); + } else { + cost = new HybridManaCost(ColoredManaSymbol.lookup(without.charAt(0)), ColoredManaSymbol.lookup(without.charAt(2))); + } + cost.setPhyrexian(phyrexian); + this.add(cost); } - if (!extractMonoHybridGenericValue) { - costsCache.put(mana, this.copy()); - } + } + if (!extractMonoHybridGenericValue) { + costsCache.put(mana, this.copy()); } } @@ -597,6 +603,29 @@ public class ManaCostsImpl extends ArrayList implements M return new ManaCostsImpl<>(this); } + @Override + public boolean isPhyrexian() { + return phyrexian; + } + + @Override + public void setPhyrexian(boolean phyrexian) { + this.phyrexian = phyrexian; + for (T cost : this) { + cost.setPhyrexian(phyrexian); + } + } + + @Override + public void incrPhyrexianPaid() { + this.phyrexianPaid++; + } + + @Override + public int getPhyrexianPaid() { + return phyrexianPaid; + } + @Override public Filter getSourceFilter() { for (T cost : this) { diff --git a/Mage/src/main/java/mage/abilities/costs/mana/PhyrexianManaCost.java b/Mage/src/main/java/mage/abilities/costs/mana/PhyrexianManaCost.java deleted file mode 100644 index 60a196503d..0000000000 --- a/Mage/src/main/java/mage/abilities/costs/mana/PhyrexianManaCost.java +++ /dev/null @@ -1,40 +0,0 @@ - -package mage.abilities.costs.mana; - -import mage.Mana; -import mage.constants.ColoredManaSymbol; - -/** - * - * @author nantuko - */ -public class PhyrexianManaCost extends ColoredManaCost { - - public PhyrexianManaCost(ColoredManaSymbol mana) { - super(mana); - options.add(Mana.GenericMana(0)); - } - - public PhyrexianManaCost(PhyrexianManaCost manaCost) { - super(manaCost); - } - - @Override - public String getText() { - return '{' + mana.toString() + "/P}"; - } - - public String getBaseText() { - return super.getText(); - } - - @Override - public ColoredManaCost getUnpaid() { - return new ColoredManaCost(this); - } - - @Override - public PhyrexianManaCost copy() { - return new PhyrexianManaCost(this); - } -} diff --git a/Mage/src/main/java/mage/abilities/effects/common/CopyEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CopyEffect.java index 5f4f1dd5cc..f4a585a761 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/CopyEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/CopyEffect.java @@ -132,6 +132,7 @@ public class CopyEffect extends ContinuousEffectImpl { // and abilities that were chosen for this creature as it entered the battlefield. (2018-03-16) permanent.getPower().setValue(copyFromObject.getPower().getBaseValueModified()); permanent.getToughness().setValue(copyFromObject.getToughness().getBaseValueModified()); + permanent.setStartingLoyalty(copyFromObject.getStartingLoyalty()); if (copyFromObject instanceof Permanent) { Permanent targetPermanent = (Permanent) copyFromObject; permanent.setTransformed(targetPermanent.isTransformed()); diff --git a/Mage/src/main/java/mage/abilities/keyword/CompleatedAbility.java b/Mage/src/main/java/mage/abilities/keyword/CompleatedAbility.java new file mode 100644 index 0000000000..3a777f6e33 --- /dev/null +++ b/Mage/src/main/java/mage/abilities/keyword/CompleatedAbility.java @@ -0,0 +1,42 @@ +package mage.abilities.keyword; + +import mage.abilities.MageSingleton; +import mage.abilities.StaticAbility; +import mage.constants.Zone; + +import java.io.ObjectStreamException; + +/** + * @author TheElk801 + */ +public class CompleatedAbility extends StaticAbility implements MageSingleton { + + private static final CompleatedAbility instance; + + static { + instance = new CompleatedAbility(); + } + + private Object readResolve() throws ObjectStreamException { + return instance; + } + + public static CompleatedAbility getInstance() { + return instance; + } + + private CompleatedAbility() { + super(Zone.ALL, null); + } + + @Override + public String getRule() { + return "compleated"; + } + + @Override + public CompleatedAbility copy() { + return instance; + } + +} diff --git a/Mage/src/main/java/mage/abilities/keyword/TransformAbility.java b/Mage/src/main/java/mage/abilities/keyword/TransformAbility.java index 8a73bf8880..2990baa62e 100644 --- a/Mage/src/main/java/mage/abilities/keyword/TransformAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/TransformAbility.java @@ -66,6 +66,7 @@ public class TransformAbility extends SimpleStaticAbility { } permanent.getPower().modifyBaseValue(sourceCard.getPower().getValue()); permanent.getToughness().modifyBaseValue(sourceCard.getToughness().getValue()); + permanent.setStartingLoyalty(sourceCard.getStartingLoyalty()); } public static Card transformCardSpellStatic(Card mainSide, Card otherSide, Game game) { diff --git a/Mage/src/main/java/mage/cards/repository/CardInfo.java b/Mage/src/main/java/mage/cards/repository/CardInfo.java index 995bf776e9..55677c9fe8 100644 --- a/Mage/src/main/java/mage/cards/repository/CardInfo.java +++ b/Mage/src/main/java/mage/cards/repository/CardInfo.java @@ -4,9 +4,7 @@ import com.j256.ormlite.field.DataType; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; import mage.ObjectColor; -import mage.abilities.Ability; import mage.abilities.SpellAbility; -import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; import mage.cards.*; import mage.cards.mock.MockCard; import mage.cards.mock.MockSplitCard; @@ -246,13 +244,15 @@ public class CardInfo { // Starting loyalty if (card.isPlaneswalker()) { - for (Ability ab : card.getAbilities()) { - if (ab instanceof PlaneswalkerEntersWithLoyaltyCountersAbility) { - this.startingLoyalty = "" + ((PlaneswalkerEntersWithLoyaltyCountersAbility) ab).getStartingLoyalty(); - } - } - if (this.startingLoyalty == null) { - this.startingLoyalty = ""; + switch (card.getStartingLoyalty()) { + case -2: + this.startingLoyalty = "X"; + break; + case -1: + this.startingLoyalty = ""; + break; + default: + this.startingLoyalty = "" + card.getStartingLoyalty(); } } else { this.startingLoyalty = ""; @@ -491,8 +491,8 @@ public class CardInfo { if (o == null || !(o instanceof CardInfo)) return false; CardInfo other = (CardInfo) o; return (this.name.equals(other.name) - && this.setCode.equals(other.setCode) - && this.cardNumber.equals(other.cardNumber)); + && this.setCode.equals(other.setCode) + && this.cardNumber.equals(other.cardNumber)); } @Override diff --git a/Mage/src/main/java/mage/game/permanent/PermanentCard.java b/Mage/src/main/java/mage/game/permanent/PermanentCard.java index 7289d13e36..460edc15d1 100644 --- a/Mage/src/main/java/mage/game/permanent/PermanentCard.java +++ b/Mage/src/main/java/mage/game/permanent/PermanentCard.java @@ -61,6 +61,7 @@ public class PermanentCard extends PermanentImpl { private void init(Card card, Game game) { power = card.getPower().copy(); toughness = card.getToughness().copy(); + startingLoyalty = card.getStartingLoyalty(); copyFromCard(card, game); // if temporary added abilities to the spell/card exist, you need to add it to the permanent derived from that card Abilities otherAbilities = game.getState().getAllOtherAbilities(card.getId()); diff --git a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java index 33734d5428..22387e8885 100644 --- a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java +++ b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java @@ -1123,19 +1123,35 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { MorphAbility.setPermanentToFaceDownCreature(this, game); } - EntersTheBattlefieldEvent event = new EntersTheBattlefieldEvent(this, source, getControllerId(), fromZone, EnterEventType.SELF); + if (game.replaceEvent(new EntersTheBattlefieldEvent(this, source, getControllerId(), fromZone, EnterEventType.SELF))) { + return false; + } + EntersTheBattlefieldEvent event = new EntersTheBattlefieldEvent(this, source, getControllerId(), fromZone); if (game.replaceEvent(event)) { return false; } - event = new EntersTheBattlefieldEvent(this, source, getControllerId(), fromZone); - if (!game.replaceEvent(event)) { - if (fireEvent) { - game.addSimultaneousEvent(event); - return true; + if (this.isPlaneswalker(game)) { + int loyalty; + if (this.getStartingLoyalty() == -2) { + loyalty = source.getManaCostsToPay().getX(); + } else { + loyalty = this.getStartingLoyalty(); + } + int countersToAdd; + if (this.hasAbility(CompleatedAbility.getInstance(), game)) { + countersToAdd = loyalty - 2 * source.getManaCostsToPay().getPhyrexianPaid(); + } else { + countersToAdd = loyalty; + } + if (countersToAdd > 0) { + this.addCounters(CounterType.LOYALTY.createInstance(countersToAdd), source, game); } - } - return false; + if (!fireEvent) { + return false; + } + game.addSimultaneousEvent(event); + return true; } @Override diff --git a/Mage/src/main/java/mage/game/permanent/PermanentToken.java b/Mage/src/main/java/mage/game/permanent/PermanentToken.java index b6407ac0b1..3229203e6a 100644 --- a/Mage/src/main/java/mage/game/permanent/PermanentToken.java +++ b/Mage/src/main/java/mage/game/permanent/PermanentToken.java @@ -86,6 +86,7 @@ public class PermanentToken extends PermanentImpl { this.supertype.addAll(token.getSuperType()); this.subtype.copyFrom(token.getSubtype(game)); this.tokenDescriptor = token.getTokenDescriptor(); + this.startingLoyalty = token.getStartingLoyalty(); } @Override diff --git a/Mage/src/main/java/mage/game/permanent/token/TamiyosNotebookToken.java b/Mage/src/main/java/mage/game/permanent/token/TamiyosNotebookToken.java new file mode 100644 index 0000000000..62320faa45 --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/TamiyosNotebookToken.java @@ -0,0 +1,34 @@ +package mage.game.permanent.token; + +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect; +import mage.constants.CardType; +import mage.constants.SuperType; +import mage.filter.FilterCard; + +/** + * @author TheElk801 + */ +public final class TamiyosNotebookToken extends TokenImpl { + + private static final FilterCard filter = new FilterCard("spells"); + + public TamiyosNotebookToken() { + super("Tamiyo's Notebook", "Tamiyo's Notebook, a legendary colorless artifact token with \"Spells you cast cost {2} less to cast\" and \"{T}: Draw a card.\""); + addSuperType(SuperType.LEGENDARY); + this.cardType.add(CardType.ARTIFACT); + this.addAbility(new SimpleStaticAbility(new SpellsCostReductionControllerEffect(filter, 2))); + this.addAbility(new SimpleActivatedAbility(new DrawCardSourceControllerEffect(1), new TapSourceCost())); + } + + public TamiyosNotebookToken(final TamiyosNotebookToken token) { + super(token); + } + + public TamiyosNotebookToken copy() { + return new TamiyosNotebookToken(this); + } +} diff --git a/Mage/src/main/java/mage/util/functions/CopyTokenFunction.java b/Mage/src/main/java/mage/util/functions/CopyTokenFunction.java index 05f19c50cb..48e4c673f6 100644 --- a/Mage/src/main/java/mage/util/functions/CopyTokenFunction.java +++ b/Mage/src/main/java/mage/util/functions/CopyTokenFunction.java @@ -92,6 +92,7 @@ public class CopyTokenFunction implements Function { target.getPower().modifyBaseValue(sourceObj.getPower().getBaseValueModified()); target.getToughness().modifyBaseValue(sourceObj.getToughness().getBaseValueModified()); + target.setStartingLoyalty(sourceObj.getStartingLoyalty()); return target; } diff --git a/Utils/cardClass.tmpl b/Utils/cardClass.tmpl index 9d165a4cd2..da22cf5405 100644 --- a/Utils/cardClass.tmpl +++ b/Utils/cardClass.tmpl @@ -3,7 +3,6 @@ package mage.cards.[=$cardNameFirstLetter=]; import java.util.UUID;[= if ($power || $power eq 0) { if ($planeswalker eq 'true') { - $OUT .= "\nimport mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility;" }else { $OUT .= "\nimport mage.MageInt;" } @@ -30,7 +29,7 @@ public final class [=$className=] extends CardImpl { [=$subType=][=$colors=][= if ($power || $power eq 0) { if ($planeswalker eq 'true') { - $OUT .= "\n this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility($power));"; + $OUT .= "\n this.setStartingLoyalty($power);"; } else { $OUT .= "\n this.power = new MageInt($power);"; $OUT .= "\n this.toughness = new MageInt($toughness);"; diff --git a/Utils/keywords.txt b/Utils/keywords.txt index 610bd3b762..065d96fea2 100644 --- a/Utils/keywords.txt +++ b/Utils/keywords.txt @@ -12,6 +12,7 @@ Buyback|manaString| Cascade|new| Changeling|new| Cleave|card, manaString| +Compleated|instance| Convoke|new| Crew|number| Cumulative upkeep|cost|