From ed1db714742cd2169e0598b217120ada72c9bbda Mon Sep 17 00:00:00 2001 From: Alex Vasile <48962821+Alex-Vasile@users.noreply.github.com> Date: Thu, 27 Jan 2022 15:57:00 -0500 Subject: [PATCH] Fix ability keyword hint for Menace and Scry (#8603) --- .../src/mage/cards/a/AlleyStrangler.java | 2 +- .../src/mage/cards/a/AradaraExpress.java | 2 +- .../src/mage/cards/a/ArcboundTracker.java | 2 +- Mage.Sets/src/mage/cards/a/ArmoryVeteran.java | 3 +- .../src/mage/cards/a/ArtificersAssistant.java | 2 +- .../mage/cards/a/AtrisOracleOfHalfTruths.java | 2 +- .../src/mage/cards/b/BattlewiseHoplite.java | 2 +- Mage.Sets/src/mage/cards/b/BloodCurdle.java | 3 +- .../mage/cards/b/BloodcrazedSocialite.java | 2 +- .../src/mage/cards/b/BloodskyBerserker.java | 6 ++- .../src/mage/cards/b/BloodstoneGoblin.java | 15 +++++-- .../src/mage/cards/b/BontuTheGlorified.java | 2 +- .../mage/cards/b/BreechesBrazenPlunderer.java | 2 +- .../src/mage/cards/b/BurningProphet.java | 2 +- .../src/mage/cards/c/CabalTherapist.java | 2 +- .../src/mage/cards/c/CalculatingLich.java | 2 +- .../src/mage/cards/c/CemeteryDesecrator.java | 2 +- .../src/mage/cards/c/ChiefJimHopper.java | 2 +- .../src/mage/cards/c/ChitinousCloak.java | 2 +- .../src/mage/cards/c/ChorusOfTheTides.java | 3 +- .../src/mage/cards/c/ContrabandKingpin.java | 2 +- .../src/mage/cards/c/CuratorOfMysteries.java | 2 +- Mage.Sets/src/mage/cards/d/DeathTyrant.java | 2 +- .../src/mage/cards/d/DireFleetInterloper.java | 2 +- .../src/mage/cards/d/DireFleetRavager.java | 2 +- .../src/mage/cards/d/DireStrainAnarchist.java | 2 +- Mage.Sets/src/mage/cards/d/DraugrsHelm.java | 5 ++- Mage.Sets/src/mage/cards/d/Dreamstealer.java | 2 +- Mage.Sets/src/mage/cards/e/Endling.java | 2 +- .../src/mage/cards/e/ExposeToDaylight.java | 2 +- .../src/mage/cards/e/EyesEverywhere.java | 2 +- Mage.Sets/src/mage/cards/f/FadingHope.java | 3 +- .../cards/f/FalthisShadowcatFamiliar.java | 2 +- Mage.Sets/src/mage/cards/f/FatefulEnd.java | 2 +- .../src/mage/cards/f/FathomFleetCaptain.java | 2 +- .../src/mage/cards/f/FerociousTigorilla.java | 5 ++- .../src/mage/cards/f/FireShrineKeeper.java | 2 +- .../src/mage/cards/f/FlamebladeAdept.java | 2 +- Mage.Sets/src/mage/cards/f/Fleshtaker.java | 2 +- .../src/mage/cards/f/ForswornPaladin.java | 2 +- Mage.Sets/src/mage/cards/f/FrenziedRage.java | 2 +- .../src/mage/cards/f/FrillscareMentor.java | 4 +- Mage.Sets/src/mage/cards/g/GetThePoint.java | 2 +- .../mage/cards/g/GlaiveOfTheGuildpact.java | 2 +- .../src/mage/cards/g/GlintSleeveSiphoner.java | 2 +- .../src/mage/cards/g/GluttonousSlug.java | 2 +- .../src/mage/cards/g/GoblinDarkDwellers.java | 2 +- .../src/mage/cards/g/GoblinGloryChaser.java | 3 +- .../src/mage/cards/g/GodEternalBontu.java | 2 +- Mage.Sets/src/mage/cards/g/GodsWilling.java | 2 +- Mage.Sets/src/mage/cards/g/GraniticTitan.java | 2 +- .../mage/cards/g/GrevenPredatorCaptain.java | 2 +- Mage.Sets/src/mage/cards/g/Grief.java | 2 +- Mage.Sets/src/mage/cards/g/GrimDraugr.java | 7 ++- Mage.Sets/src/mage/cards/g/GruulWarChant.java | 4 +- .../src/mage/cards/h/HagraConstrictor.java | 3 +- Mage.Sets/src/mage/cards/h/HarshScrutiny.java | 2 +- .../src/mage/cards/h/HedronAlignment.java | 2 +- .../src/mage/cards/h/HiddenStockpile.java | 2 +- .../src/mage/cards/h/HoundOfTheFarbogs.java | 9 ++-- .../src/mage/cards/h/HuntedNightmare.java | 2 +- .../mage/cards/i/IkraShidiqiTheUsurper.java | 2 +- .../src/mage/cards/i/InquisitivePuppet.java | 2 +- .../src/mage/cards/i/IroasGodOfVictory.java | 2 +- .../mage/cards/j/JaceUnravelerOfSecrets.java | 2 +- Mage.Sets/src/mage/cards/j/JayasGreeting.java | 2 +- .../src/mage/cards/j/JosuVessLichKnight.java | 2 +- .../mage/cards/k/KariZevSkyshipRaider.java | 2 +- .../src/mage/cards/k/KasminaEnigmaSage.java | 2 +- .../src/mage/cards/k/KelsFightFixer.java | 2 +- .../src/mage/cards/k/KessigWolfrider.java | 2 +- .../src/mage/cards/k/KhenraScrapper.java | 2 +- .../src/mage/cards/k/KheruMindEater.java | 2 +- .../cards/k/KozilekTheGreatDistortion.java | 2 +- .../src/mage/cards/k/KozileksShrieker.java | 3 +- .../mage/cards/k/KunorosHoundOfAthreos.java | 2 +- .../src/mage/cards/l/LabyrinthRaptor.java | 2 +- .../mage/cards/l/LathrilBladeOfTheElves.java | 2 +- .../mage/cards/l/LifecraftersBestiary.java | 2 +- .../src/mage/cards/l/LoathsomeCurator.java | 2 +- .../src/mage/cards/l/LoreholdCampus.java | 2 +- Mage.Sets/src/mage/cards/l/LoseCalm.java | 3 +- .../src/mage/cards/l/LoyalSubordinate.java | 2 +- Mage.Sets/src/mage/cards/m/MadcapSkills.java | 2 +- Mage.Sets/src/mage/cards/m/ManaGeode.java | 2 +- .../src/mage/cards/m/MaritLagesSlumber.java | 2 +- Mage.Sets/src/mage/cards/m/MassacreGirl.java | 2 +- .../src/mage/cards/m/MathasFiendSeeker.java | 2 +- Mage.Sets/src/mage/cards/m/MaulfistSquad.java | 2 +- Mage.Sets/src/mage/cards/m/MazemindTome.java | 2 +- .../src/mage/cards/m/MinionOfTheMighty.java | 2 +- .../src/mage/cards/m/MoodmarkPainter.java | 16 +++---- .../src/mage/cards/m/MysticRedaction.java | 2 +- .../src/mage/cards/n/NikaraLairScavenger.java | 2 +- .../src/mage/cards/n/NimanaSkitterSneak.java | 3 +- Mage.Sets/src/mage/cards/n/NoEscape.java | 2 +- .../src/mage/cards/n/NoxiousGearhulk.java | 2 +- .../mage/cards/n/NullpriestOfOblivion.java | 2 +- .../src/mage/cards/o/OggyarBattleSeer.java | 2 +- Mage.Sets/src/mage/cards/o/OgreErrant.java | 3 +- .../src/mage/cards/o/OliviasAttendants.java | 2 +- Mage.Sets/src/mage/cards/o/Opt.java | 2 +- .../src/mage/cards/o/OraclesInsight.java | 3 +- .../src/mage/cards/p/PathOfAncestry.java | 4 +- .../src/mage/cards/p/PathToTheFestival.java | 4 +- .../src/mage/cards/p/PestilentSpirit.java | 2 +- .../src/mage/cards/p/PiperOfTheSwarm.java | 2 +- Mage.Sets/src/mage/cards/p/PlagueBelcher.java | 2 +- Mage.Sets/src/mage/cards/p/PlayWithFire.java | 4 +- .../src/mage/cards/p/PrismariCampus.java | 2 +- Mage.Sets/src/mage/cards/p/PrisonRealm.java | 2 +- .../src/mage/cards/q/QuandrixCampus.java | 2 +- .../src/mage/cards/r/RalStormConduit.java | 2 +- .../src/mage/cards/r/RampagingFerocidon.java | 2 +- Mage.Sets/src/mage/cards/r/RevealingEye.java | 2 +- .../src/mage/cards/r/RograkhSonOfRohgahh.java | 2 +- Mage.Sets/src/mage/cards/r/RogueClass.java | 2 +- Mage.Sets/src/mage/cards/r/RuinGrinder.java | 2 +- .../src/mage/cards/r/RumblingSentry.java | 2 +- .../src/mage/cards/s/SamutTyrantSmasher.java | 2 +- Mage.Sets/src/mage/cards/s/SamutsSprint.java | 2 +- .../src/mage/cards/s/ScroungedScythe.java | 12 +++--- .../src/mage/cards/s/SedgemoorWitch.java | 2 +- Mage.Sets/src/mage/cards/s/SenateGriffin.java | 2 +- .../src/mage/cards/s/ShelteringLight.java | 2 +- .../mage/cards/s/SilvarDevourerOfTheFree.java | 2 +- .../src/mage/cards/s/SilverquillCampus.java | 2 +- Mage.Sets/src/mage/cards/s/SinProdder.java | 2 +- Mage.Sets/src/mage/cards/s/SinuousVermin.java | 3 +- .../src/mage/cards/s/SkophosWarleader.java | 3 +- Mage.Sets/src/mage/cards/s/SkyTerror.java | 2 +- .../src/mage/cards/s/SoldeviExcavations.java | 2 +- .../src/mage/cards/s/SonorousHowlbonder.java | 2 +- .../src/mage/cards/s/SphinxOfForesight.java | 2 +- .../src/mage/cards/s/StoneboundMentor.java | 2 +- Mage.Sets/src/mage/cards/s/StormStrike.java | 2 +- .../src/mage/cards/s/StormchaserChimera.java | 2 +- .../src/mage/cards/s/StormfistCrusader.java | 2 +- Mage.Sets/src/mage/cards/s/SunsetPyramid.java | 2 +- .../src/mage/cards/s/SwarmGuildmage.java | 3 +- .../src/mage/cards/s/SweatworksBrawler.java | 2 +- Mage.Sets/src/mage/cards/s/SylvanAnthem.java | 2 +- .../mage/cards/s/SyrGwynHeroOfAshvale.java | 2 +- .../src/mage/cards/t/TempleOfAbandon.java | 2 +- .../src/mage/cards/t/TempleOfDeceit.java | 2 +- .../mage/cards/t/TempleOfEnlightenment.java | 2 +- .../src/mage/cards/t/TempleOfEpiphany.java | 2 +- .../src/mage/cards/t/TempleOfMalady.java | 2 +- .../src/mage/cards/t/TempleOfMalice.java | 2 +- .../src/mage/cards/t/TempleOfMystery.java | 2 +- .../src/mage/cards/t/TempleOfPlenty.java | 2 +- .../src/mage/cards/t/TempleOfSilence.java | 2 +- .../src/mage/cards/t/TempleOfTriumph.java | 2 +- .../cards/t/TenthDistrictLegionnaire.java | 2 +- .../src/mage/cards/t/TergridGodOfFright.java | 2 +- .../src/mage/cards/t/TerrorOfKruinPass.java | 2 +- .../src/mage/cards/t/TezzeretsStrider.java | 5 ++- .../src/mage/cards/t/ThassaGodOfTheSea.java | 2 +- .../mage/cards/t/ThaumaturgesFamiliar.java | 2 +- .../src/mage/cards/u/UndercityNecrolisk.java | 43 ++++++++++++++----- Mage.Sets/src/mage/cards/u/UntamedHunger.java | 3 +- .../mage/cards/v/ValentinDeanOfTheVein.java | 2 +- .../src/mage/cards/v/VeinwitchCoven.java | 2 +- .../src/mage/cards/v/VolatileArsonist.java | 2 +- .../src/mage/cards/v/VoraciousVampire.java | 2 +- Mage.Sets/src/mage/cards/v/VowOfTorment.java | 3 +- Mage.Sets/src/mage/cards/w/WarteyeWitch.java | 2 +- Mage.Sets/src/mage/cards/w/WaywardGiant.java | 2 +- .../src/mage/cards/w/WeldfastMonitor.java | 6 ++- Mage.Sets/src/mage/cards/w/WitchesEye.java | 2 +- .../src/mage/cards/w/WitherbloomCampus.java | 2 +- .../src/mage/cards/w/WitnessOfTomorrows.java | 2 +- Mage.Sets/src/mage/cards/w/WoeStrider.java | 2 +- .../mage/cards/y/YennettCrypticSovereign.java | 2 +- .../java/mage/verify/VerifyCardDataTest.java | 19 +++----- 175 files changed, 283 insertions(+), 217 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AlleyStrangler.java b/Mage.Sets/src/mage/cards/a/AlleyStrangler.java index f56725ad4bb..e9635081794 100644 --- a/Mage.Sets/src/mage/cards/a/AlleyStrangler.java +++ b/Mage.Sets/src/mage/cards/a/AlleyStrangler.java @@ -24,7 +24,7 @@ public final class AlleyStrangler extends CardImpl { this.toughness = new MageInt(3); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); } private AlleyStrangler(final AlleyStrangler card) { diff --git a/Mage.Sets/src/mage/cards/a/AradaraExpress.java b/Mage.Sets/src/mage/cards/a/AradaraExpress.java index 4e72beb0644..1ac94290c32 100644 --- a/Mage.Sets/src/mage/cards/a/AradaraExpress.java +++ b/Mage.Sets/src/mage/cards/a/AradaraExpress.java @@ -23,7 +23,7 @@ public final class AradaraExpress extends CardImpl { this.toughness = new MageInt(6); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Crew 4 this.addAbility(new CrewAbility(4)); } diff --git a/Mage.Sets/src/mage/cards/a/ArcboundTracker.java b/Mage.Sets/src/mage/cards/a/ArcboundTracker.java index c407d7e401c..a5310f08398 100644 --- a/Mage.Sets/src/mage/cards/a/ArcboundTracker.java +++ b/Mage.Sets/src/mage/cards/a/ArcboundTracker.java @@ -30,7 +30,7 @@ public final class ArcboundTracker extends CardImpl { this.toughness = new MageInt(0); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Modular 2 this.addAbility(new ModularAbility(this, 2)); diff --git a/Mage.Sets/src/mage/cards/a/ArmoryVeteran.java b/Mage.Sets/src/mage/cards/a/ArmoryVeteran.java index e775d66896e..df367735e7e 100644 --- a/Mage.Sets/src/mage/cards/a/ArmoryVeteran.java +++ b/Mage.Sets/src/mage/cards/a/ArmoryVeteran.java @@ -30,7 +30,8 @@ public final class ArmoryVeteran extends CardImpl { this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( new GainAbilitySourceEffect(new MenaceAbility()), EquippedSourceCondition.instance, - "As long as {this} is equipped, it has menace" + "As long as {this} is equipped, it has menace. " + + "(It can't be blocked except by two or more creatures.)" ))); } diff --git a/Mage.Sets/src/mage/cards/a/ArtificersAssistant.java b/Mage.Sets/src/mage/cards/a/ArtificersAssistant.java index 4cd1e56eb86..8af18e85ac9 100644 --- a/Mage.Sets/src/mage/cards/a/ArtificersAssistant.java +++ b/Mage.Sets/src/mage/cards/a/ArtificersAssistant.java @@ -36,7 +36,7 @@ public final class ArtificersAssistant extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Whenever you cast a Historic spell scry 1. - this.addAbility(new SpellCastControllerTriggeredAbility(new ScryEffect(1), filter, false)); + this.addAbility(new SpellCastControllerTriggeredAbility(new ScryEffect(1, false), filter, false)); } private ArtificersAssistant(final ArtificersAssistant card) { diff --git a/Mage.Sets/src/mage/cards/a/AtrisOracleOfHalfTruths.java b/Mage.Sets/src/mage/cards/a/AtrisOracleOfHalfTruths.java index a73e886ae70..4b131130bf0 100644 --- a/Mage.Sets/src/mage/cards/a/AtrisOracleOfHalfTruths.java +++ b/Mage.Sets/src/mage/cards/a/AtrisOracleOfHalfTruths.java @@ -34,7 +34,7 @@ public final class AtrisOracleOfHalfTruths extends CardImpl { this.toughness = new MageInt(2); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // When Atris, Oracle of Half-Truths enters the battlefield, target opponent looks at the top three cards of your library and separates them into a face-down pile and a face-up pile. Put one pile into your hand and the other into your graveyard. Ability ability = new EntersBattlefieldTriggeredAbility(new AtrisOracleOfHalfTruthsEffect()); diff --git a/Mage.Sets/src/mage/cards/b/BattlewiseHoplite.java b/Mage.Sets/src/mage/cards/b/BattlewiseHoplite.java index db612dbb0e1..205b00562ef 100644 --- a/Mage.Sets/src/mage/cards/b/BattlewiseHoplite.java +++ b/Mage.Sets/src/mage/cards/b/BattlewiseHoplite.java @@ -28,7 +28,7 @@ public final class BattlewiseHoplite extends CardImpl { // Heroic - Whenever you cast a spell that targets Battlewise Hoplite, put a +1/+1 counter on Battlewise Hoplite, then scry 1. Ability ability = new HeroicAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance())); - ability.addEffect(new ScryEffect(1)); + ability.addEffect(new ScryEffect(1, false)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BloodCurdle.java b/Mage.Sets/src/mage/cards/b/BloodCurdle.java index 6256c807ce0..9a75ba77a1e 100644 --- a/Mage.Sets/src/mage/cards/b/BloodCurdle.java +++ b/Mage.Sets/src/mage/cards/b/BloodCurdle.java @@ -45,7 +45,8 @@ class BloodCurdleEffect extends OneShotEffect { BloodCurdleEffect() { super(Outcome.Benefit); - staticText = "Put a menace counter on a creature you control"; + staticText = "Put a menace counter on a creature you control. " + + "(It can't be blocked except by two or more creatures.)"; } private BloodCurdleEffect(final BloodCurdleEffect effect) { diff --git a/Mage.Sets/src/mage/cards/b/BloodcrazedSocialite.java b/Mage.Sets/src/mage/cards/b/BloodcrazedSocialite.java index c980daeaa44..fbb4fb5c23c 100644 --- a/Mage.Sets/src/mage/cards/b/BloodcrazedSocialite.java +++ b/Mage.Sets/src/mage/cards/b/BloodcrazedSocialite.java @@ -39,7 +39,7 @@ public final class BloodcrazedSocialite extends CardImpl { this.toughness = new MageInt(3); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // When Bloodcrazed Socialite enters the battlefield, create a Blood token. this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new BloodToken()))); diff --git a/Mage.Sets/src/mage/cards/b/BloodskyBerserker.java b/Mage.Sets/src/mage/cards/b/BloodskyBerserker.java index 0d3fe7916d1..093e5c4d949 100644 --- a/Mage.Sets/src/mage/cards/b/BloodskyBerserker.java +++ b/Mage.Sets/src/mage/cards/b/BloodskyBerserker.java @@ -28,13 +28,15 @@ public final class BloodskyBerserker extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - // Whenever you cast your second spell each turn, put two +1/+1 counters on Bloodsky Berserker. It gains menace until end of turn. + // Whenever you cast your second spell each turn, put two +1/+1 counters on Bloodsky Berserker. Ability ability = new CastSecondSpellTriggeredAbility( new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)) ); + // It gains menace until end of turn. ability.addEffect(new GainAbilitySourceEffect( new MenaceAbility(), Duration.EndOfTurn - ).setText("It gains menace until end of turn")); + ).setText("It gains menace until end of turn. " + + "(It can't be blocked except by two or more creatures.)")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BloodstoneGoblin.java b/Mage.Sets/src/mage/cards/b/BloodstoneGoblin.java index fca05c17550..df74047ebe9 100644 --- a/Mage.Sets/src/mage/cards/b/BloodstoneGoblin.java +++ b/Mage.Sets/src/mage/cards/b/BloodstoneGoblin.java @@ -30,7 +30,8 @@ public final class BloodstoneGoblin extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - // Whenever you cast a spell, if that spell was kicked, Bloodstone Goblin gets +1/+1 and gains menace until end of turn. + // Whenever you cast a spell, if that spell was kicked, + // Bloodstone Goblin gets +1/+1 and gains menace until end of turn. this.addAbility(new BloodstoneGoblinTriggeredAbility()); } @@ -47,8 +48,16 @@ public final class BloodstoneGoblin extends CardImpl { class BloodstoneGoblinTriggeredAbility extends TriggeredAbilityImpl { BloodstoneGoblinTriggeredAbility() { - super(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn).setText("{this} gets +1/+1"), false); - this.addEffect(new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn).setText("and gains menace until end of turn")); + super( + Zone.BATTLEFIELD, + new BoostSourceEffect(1, 1, Duration.EndOfTurn).setText("{this} gets +1/+1"), + false); + this.addEffect( + new GainAbilitySourceEffect( + new MenaceAbility(false), + Duration.EndOfTurn + ).setText("and gains menace until end of turn. " + + "(It can't be blocked except by two or more creatures.)")); } BloodstoneGoblinTriggeredAbility(final BloodstoneGoblinTriggeredAbility ability) { diff --git a/Mage.Sets/src/mage/cards/b/BontuTheGlorified.java b/Mage.Sets/src/mage/cards/b/BontuTheGlorified.java index 1788c63fcdb..25702c91152 100644 --- a/Mage.Sets/src/mage/cards/b/BontuTheGlorified.java +++ b/Mage.Sets/src/mage/cards/b/BontuTheGlorified.java @@ -47,7 +47,7 @@ public final class BontuTheGlorified extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BontuTheGlorifiedRestrictionEffect()), new CreaturesDiedWatcher()); // {1}{B}, Sacrifice another creature: Scry 1. Each opponent loses 1 life and you gain 1 life. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1), new ManaCostsImpl("{1}{B}")); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1, false), new ManaCostsImpl("{1}{B}")); ability.addEffect(new LoseLifeOpponentsEffect(1)); Effect effect = new GainLifeEffect(1); effect.setText("and you gain 1 life"); diff --git a/Mage.Sets/src/mage/cards/b/BreechesBrazenPlunderer.java b/Mage.Sets/src/mage/cards/b/BreechesBrazenPlunderer.java index 9738b9f5eb4..57ff7313728 100644 --- a/Mage.Sets/src/mage/cards/b/BreechesBrazenPlunderer.java +++ b/Mage.Sets/src/mage/cards/b/BreechesBrazenPlunderer.java @@ -36,7 +36,7 @@ public final class BreechesBrazenPlunderer extends CardImpl { this.toughness = new MageInt(3); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever one or more Pirates you control deal damage to your opponents, exile the top card of each of those opponents' libraries. You may play those cards this turn, and you may spend mana as though it were mana of any color to cast those spells. this.addAbility(new BreechesBrazenPlundererTriggeredAbility()); diff --git a/Mage.Sets/src/mage/cards/b/BurningProphet.java b/Mage.Sets/src/mage/cards/b/BurningProphet.java index 1fd95238a17..6d7d53e2263 100644 --- a/Mage.Sets/src/mage/cards/b/BurningProphet.java +++ b/Mage.Sets/src/mage/cards/b/BurningProphet.java @@ -33,7 +33,7 @@ public final class BurningProphet extends CardImpl { ).setText("{this} gets +1/+0 until end of turn, then"), StaticFilters.FILTER_SPELL_A_NON_CREATURE, false ); - ability.addEffect(new ScryEffect(1)); + ability.addEffect(new ScryEffect(1, false)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CabalTherapist.java b/Mage.Sets/src/mage/cards/c/CabalTherapist.java index 24777da0288..53997fd42a9 100644 --- a/Mage.Sets/src/mage/cards/c/CabalTherapist.java +++ b/Mage.Sets/src/mage/cards/c/CabalTherapist.java @@ -40,7 +40,7 @@ public final class CabalTherapist extends CardImpl { this.toughness = new MageInt(1); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // At the beginning of your precombat main phase, you may sacrifice a creature. When you do, choose a nonland card name, then target player reveals their hand and discards all cards with that name. ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/c/CalculatingLich.java b/Mage.Sets/src/mage/cards/c/CalculatingLich.java index d003b57b959..1c242614ff5 100644 --- a/Mage.Sets/src/mage/cards/c/CalculatingLich.java +++ b/Mage.Sets/src/mage/cards/c/CalculatingLich.java @@ -30,7 +30,7 @@ public final class CalculatingLich extends CardImpl { this.toughness = new MageInt(5); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever a creature attacks one of your opponents, that player loses 1 life. this.addAbility(new CalculatingLichTriggeredAbility()); diff --git a/Mage.Sets/src/mage/cards/c/CemeteryDesecrator.java b/Mage.Sets/src/mage/cards/c/CemeteryDesecrator.java index 679101bdf66..60b72184552 100644 --- a/Mage.Sets/src/mage/cards/c/CemeteryDesecrator.java +++ b/Mage.Sets/src/mage/cards/c/CemeteryDesecrator.java @@ -39,7 +39,7 @@ public final class CemeteryDesecrator extends CardImpl { this.toughness = new MageInt(4); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // When Cemetery Desecrator enters the battlefield or dies, exile another card from a graveyard. When you do, choose one — // • Remove X counters from target permanent, where X is the mana value of the exiled card. diff --git a/Mage.Sets/src/mage/cards/c/ChiefJimHopper.java b/Mage.Sets/src/mage/cards/c/ChiefJimHopper.java index e04af2b378c..b6c0192a0f2 100644 --- a/Mage.Sets/src/mage/cards/c/ChiefJimHopper.java +++ b/Mage.Sets/src/mage/cards/c/ChiefJimHopper.java @@ -41,7 +41,7 @@ public final class ChiefJimHopper extends CardImpl { this.toughness = new MageInt(4); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever Chief Jim Hopper attacks, investigate once for each nontoken attacking creature. this.addAbility(new AttacksTriggeredAbility(new InvestigateEffect(xValue) diff --git a/Mage.Sets/src/mage/cards/c/ChitinousCloak.java b/Mage.Sets/src/mage/cards/c/ChitinousCloak.java index a5a77ca0aa0..05a1ceceb2d 100644 --- a/Mage.Sets/src/mage/cards/c/ChitinousCloak.java +++ b/Mage.Sets/src/mage/cards/c/ChitinousCloak.java @@ -31,7 +31,7 @@ public final class ChitinousCloak extends CardImpl { // Equipped creature gets +2/+2 and has menace. Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2)); Effect effect = new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.EQUIPMENT); - effect.setText("and has menace"); + effect.setText("and has menace. (It can't be blocked except by two or more creatures.)"); ability.addEffect(effect); this.addAbility(ability); // Equip {3} diff --git a/Mage.Sets/src/mage/cards/c/ChorusOfTheTides.java b/Mage.Sets/src/mage/cards/c/ChorusOfTheTides.java index 82cae80069f..2488a17894b 100644 --- a/Mage.Sets/src/mage/cards/c/ChorusOfTheTides.java +++ b/Mage.Sets/src/mage/cards/c/ChorusOfTheTides.java @@ -26,8 +26,9 @@ public final class ChorusOfTheTides extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); + // Heroic — Whenever you cast a spell that targets Chorus of the Tides, scry 1. - this.addAbility(new HeroicAbility(new ScryEffect(1))); + this.addAbility(new HeroicAbility(new ScryEffect(1, false))); } private ChorusOfTheTides(final ChorusOfTheTides card) { diff --git a/Mage.Sets/src/mage/cards/c/ContrabandKingpin.java b/Mage.Sets/src/mage/cards/c/ContrabandKingpin.java index 2fe369114ef..b32c69e4b55 100644 --- a/Mage.Sets/src/mage/cards/c/ContrabandKingpin.java +++ b/Mage.Sets/src/mage/cards/c/ContrabandKingpin.java @@ -30,7 +30,7 @@ public final class ContrabandKingpin extends CardImpl { this.addAbility(LifelinkAbility.getInstance()); // Whenever an artifact enters the battlefield under your control, scry 1. - this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new ScryEffect(1), new FilterControlledArtifactPermanent(), false, null, true)); + this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new ScryEffect(1, false), new FilterControlledArtifactPermanent(), false, null, true)); } private ContrabandKingpin(final ContrabandKingpin card) { diff --git a/Mage.Sets/src/mage/cards/c/CuratorOfMysteries.java b/Mage.Sets/src/mage/cards/c/CuratorOfMysteries.java index 89676d6ec06..7254784abb6 100644 --- a/Mage.Sets/src/mage/cards/c/CuratorOfMysteries.java +++ b/Mage.Sets/src/mage/cards/c/CuratorOfMysteries.java @@ -30,7 +30,7 @@ public final class CuratorOfMysteries extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Whenever you cycle or discard another card, scry 1. - this.addAbility(new CycleOrDiscardControllerTriggeredAbility(new ScryEffect(1)).setTriggerPhrase("Whenever you cycle or discard another card, ")); + this.addAbility(new CycleOrDiscardControllerTriggeredAbility(new ScryEffect(1, false)).setTriggerPhrase("Whenever you cycle or discard another card, ")); // Cycling {U} this.addAbility(new CyclingAbility(new ManaCostsImpl("{U}"))); diff --git a/Mage.Sets/src/mage/cards/d/DeathTyrant.java b/Mage.Sets/src/mage/cards/d/DeathTyrant.java index f9d4210b7f7..c41d2a17c76 100644 --- a/Mage.Sets/src/mage/cards/d/DeathTyrant.java +++ b/Mage.Sets/src/mage/cards/d/DeathTyrant.java @@ -35,7 +35,7 @@ public final class DeathTyrant extends CardImpl { this.toughness = new MageInt(6); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Negative Energy Cone — Whenever an attacking creature you control or a blocking creature an opponent controls dies, create a 2/2 black Zombie creature token. this.addAbility(new DeathTyrantTriggeredAbility().withFlavorWord("Negative Energy Cone")); diff --git a/Mage.Sets/src/mage/cards/d/DireFleetInterloper.java b/Mage.Sets/src/mage/cards/d/DireFleetInterloper.java index 71ae84264ee..0cd77718f47 100644 --- a/Mage.Sets/src/mage/cards/d/DireFleetInterloper.java +++ b/Mage.Sets/src/mage/cards/d/DireFleetInterloper.java @@ -26,7 +26,7 @@ public final class DireFleetInterloper extends CardImpl { this.toughness = new MageInt(2); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // When Dire Fleet Interloper enters the battlefield, it explores. this.addAbility(new EntersBattlefieldTriggeredAbility(new ExploreSourceEffect())); diff --git a/Mage.Sets/src/mage/cards/d/DireFleetRavager.java b/Mage.Sets/src/mage/cards/d/DireFleetRavager.java index c78b07025b9..fee6aeefc3a 100644 --- a/Mage.Sets/src/mage/cards/d/DireFleetRavager.java +++ b/Mage.Sets/src/mage/cards/d/DireFleetRavager.java @@ -32,7 +32,7 @@ public final class DireFleetRavager extends CardImpl { this.toughness = new MageInt(4); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Deathtouch this.addAbility(DeathtouchAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/d/DireStrainAnarchist.java b/Mage.Sets/src/mage/cards/d/DireStrainAnarchist.java index 8978cc15b3c..a683736bce5 100644 --- a/Mage.Sets/src/mage/cards/d/DireStrainAnarchist.java +++ b/Mage.Sets/src/mage/cards/d/DireStrainAnarchist.java @@ -32,7 +32,7 @@ public final class DireStrainAnarchist extends CardImpl { this.nightCard = true; // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Haste this.addAbility(HasteAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/d/DraugrsHelm.java b/Mage.Sets/src/mage/cards/d/DraugrsHelm.java index 0946ff51f3b..bb4bf547580 100644 --- a/Mage.Sets/src/mage/cards/d/DraugrsHelm.java +++ b/Mage.Sets/src/mage/cards/d/DraugrsHelm.java @@ -38,7 +38,10 @@ public final class DraugrsHelm extends CardImpl { // Equipped creature gets +2/+2 and has menace. Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2)); - ability.addEffect(new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.EQUIPMENT).setText("and has menace")); + ability.addEffect(new GainAbilityAttachedEffect( + new MenaceAbility(true), + AttachmentType.EQUIPMENT).setText("and has menace. " + + "(It can't be blocked except by two or more creatures.)")); this.addAbility(ability); // Equip {4} diff --git a/Mage.Sets/src/mage/cards/d/Dreamstealer.java b/Mage.Sets/src/mage/cards/d/Dreamstealer.java index 1258c57c59d..7fea7af4f36 100644 --- a/Mage.Sets/src/mage/cards/d/Dreamstealer.java +++ b/Mage.Sets/src/mage/cards/d/Dreamstealer.java @@ -32,7 +32,7 @@ public final class Dreamstealer extends CardImpl { this.toughness = new MageInt(2); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // When Dreamstealer deals combat damage to a player, that player discards that many cards. this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new DreamstealerDiscardEffect(), false, true)); diff --git a/Mage.Sets/src/mage/cards/e/Endling.java b/Mage.Sets/src/mage/cards/e/Endling.java index f09d3a8cc4b..651c88a92f6 100644 --- a/Mage.Sets/src/mage/cards/e/Endling.java +++ b/Mage.Sets/src/mage/cards/e/Endling.java @@ -38,7 +38,7 @@ public final class Endling extends CardImpl { // {B}: Endling gains menace until end of turn. this.addAbility(new SimpleActivatedAbility(new GainAbilitySourceEffect( - new MenaceAbility(), Duration.EndOfTurn + new MenaceAbility(false), Duration.EndOfTurn ), new ManaCostsImpl<>("{B}"))); // {B}: Endling gains deathtouch until end of turn. diff --git a/Mage.Sets/src/mage/cards/e/ExposeToDaylight.java b/Mage.Sets/src/mage/cards/e/ExposeToDaylight.java index 7de10992de1..3d0198e9fb1 100644 --- a/Mage.Sets/src/mage/cards/e/ExposeToDaylight.java +++ b/Mage.Sets/src/mage/cards/e/ExposeToDaylight.java @@ -20,7 +20,7 @@ public final class ExposeToDaylight extends CardImpl { // Destroy target artifact or enchantment. Scry 1. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addEffect(new ScryEffect(1)); + this.getSpellAbility().addEffect(new ScryEffect(1, false)); this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT)); } diff --git a/Mage.Sets/src/mage/cards/e/EyesEverywhere.java b/Mage.Sets/src/mage/cards/e/EyesEverywhere.java index 701e6ef5606..8407fa700ed 100644 --- a/Mage.Sets/src/mage/cards/e/EyesEverywhere.java +++ b/Mage.Sets/src/mage/cards/e/EyesEverywhere.java @@ -26,7 +26,7 @@ public final class EyesEverywhere extends CardImpl { // At the beginning of your upkeep, scry 1. this.addAbility(new BeginningOfUpkeepTriggeredAbility( - Zone.BATTLEFIELD, new ScryEffect(1), + Zone.BATTLEFIELD, new ScryEffect(1, false), TargetController.YOU, false )); diff --git a/Mage.Sets/src/mage/cards/f/FadingHope.java b/Mage.Sets/src/mage/cards/f/FadingHope.java index 766cf5b4080..40b0a6b4411 100644 --- a/Mage.Sets/src/mage/cards/f/FadingHope.java +++ b/Mage.Sets/src/mage/cards/f/FadingHope.java @@ -41,7 +41,8 @@ class FadingHopeEffect extends OneShotEffect { FadingHopeEffect() { super(Outcome.Benefit); - staticText = "return target creature to its owner's hand. If its mana value was 3 or less, scry 1"; + staticText = "return target creature to its owner's hand. If its mana value was 3 or less, scry 1. " + + "(Look at the top card of your library. You may put that card on the bottom of your library.)"; } private FadingHopeEffect(final FadingHopeEffect effect) { diff --git a/Mage.Sets/src/mage/cards/f/FalthisShadowcatFamiliar.java b/Mage.Sets/src/mage/cards/f/FalthisShadowcatFamiliar.java index 5c6b4b83e52..f381e27dc35 100644 --- a/Mage.Sets/src/mage/cards/f/FalthisShadowcatFamiliar.java +++ b/Mage.Sets/src/mage/cards/f/FalthisShadowcatFamiliar.java @@ -41,7 +41,7 @@ public final class FalthisShadowcatFamiliar extends CardImpl { // Commanders you control have menace and deathtouch. Ability ability = new SimpleStaticAbility(new GainAbilityControlledEffect( - new MenaceAbility(), Duration.WhileOnBattlefield, filter + new MenaceAbility(false), Duration.WhileOnBattlefield, filter )); ability.addEffect(new GainAbilityControlledEffect( DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield, filter diff --git a/Mage.Sets/src/mage/cards/f/FatefulEnd.java b/Mage.Sets/src/mage/cards/f/FatefulEnd.java index 22813579de7..4890a8f8415 100644 --- a/Mage.Sets/src/mage/cards/f/FatefulEnd.java +++ b/Mage.Sets/src/mage/cards/f/FatefulEnd.java @@ -20,7 +20,7 @@ public final class FatefulEnd extends CardImpl { // Fateful End deals 3 damage to any target. Scry 1. this.getSpellAbility().addEffect(new DamageTargetEffect(3, true, "any target")); this.getSpellAbility().addTarget(new TargetAnyTarget()); - this.getSpellAbility().addEffect(new ScryEffect(1)); + this.getSpellAbility().addEffect(new ScryEffect(1, false)); } private FatefulEnd(final FatefulEnd card) { diff --git a/Mage.Sets/src/mage/cards/f/FathomFleetCaptain.java b/Mage.Sets/src/mage/cards/f/FathomFleetCaptain.java index a63f325fd2b..b90388e91cf 100644 --- a/Mage.Sets/src/mage/cards/f/FathomFleetCaptain.java +++ b/Mage.Sets/src/mage/cards/f/FathomFleetCaptain.java @@ -42,7 +42,7 @@ public final class FathomFleetCaptain extends CardImpl { this.toughness = new MageInt(1); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever Fathom Fleet Captain attacks, if you control another nontoken Pirate, you may pay {2}. If you do, creature a 2/2 black Pirate creature token with menace. this.addAbility(new ConditionalInterveningIfTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/f/FerociousTigorilla.java b/Mage.Sets/src/mage/cards/f/FerociousTigorilla.java index 32764e2b4f6..25e4776a2b3 100644 --- a/Mage.Sets/src/mage/cards/f/FerociousTigorilla.java +++ b/Mage.Sets/src/mage/cards/f/FerociousTigorilla.java @@ -26,7 +26,10 @@ public final class FerociousTigorilla extends CardImpl { // Ferocious Tigorilla enters the battlefield with your choice of a trample counter or a menace counter on it. this.addAbility(new EntersBattlefieldAbility( - new AddCounterChoiceSourceEffect(CounterType.TRAMPLE, CounterType.MENACE) + new AddCounterChoiceSourceEffect(CounterType.TRAMPLE, CounterType.MENACE), + "Ferocious Tigorilla enters the battlefield with your choice of " + + "a trample counter or a menace counter on it. " + + "(A creature with menace can't be blocked except by two or more creatures.)" )); } diff --git a/Mage.Sets/src/mage/cards/f/FireShrineKeeper.java b/Mage.Sets/src/mage/cards/f/FireShrineKeeper.java index 689d6af1170..f94593d22e3 100644 --- a/Mage.Sets/src/mage/cards/f/FireShrineKeeper.java +++ b/Mage.Sets/src/mage/cards/f/FireShrineKeeper.java @@ -31,7 +31,7 @@ public final class FireShrineKeeper extends CardImpl { this.toughness = new MageInt(1); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // {7}{R}, {T}, Sacrifice Fire Shrine Keeper: It deals 3 damage to each of up to two target creatures. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, diff --git a/Mage.Sets/src/mage/cards/f/FlamebladeAdept.java b/Mage.Sets/src/mage/cards/f/FlamebladeAdept.java index 0520943ff02..3b0772f8668 100644 --- a/Mage.Sets/src/mage/cards/f/FlamebladeAdept.java +++ b/Mage.Sets/src/mage/cards/f/FlamebladeAdept.java @@ -27,7 +27,7 @@ public final class FlamebladeAdept extends CardImpl { this.toughness = new MageInt(2); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever you cycle or discard a card, Flameblade Adept gets +1/+0 until end of turn. this.addAbility(new CycleOrDiscardControllerTriggeredAbility(new BoostSourceEffect(1, 0, Duration.EndOfTurn))); diff --git a/Mage.Sets/src/mage/cards/f/Fleshtaker.java b/Mage.Sets/src/mage/cards/f/Fleshtaker.java index 2b83c1e8110..96560f84338 100644 --- a/Mage.Sets/src/mage/cards/f/Fleshtaker.java +++ b/Mage.Sets/src/mage/cards/f/Fleshtaker.java @@ -36,7 +36,7 @@ public final class Fleshtaker extends CardImpl { Ability ability = new SacrificePermanentTriggeredAbility( new GainLifeEffect(1), StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE ); - ability.addEffect(new ScryEffect(1, false).concatBy("and")); + ability.addEffect(new ScryEffect(1).concatBy("and")); this.addAbility(ability); // {1}, Sacrifice another creature: Fleshtaker gets +2/+2 until end of turn. diff --git a/Mage.Sets/src/mage/cards/f/ForswornPaladin.java b/Mage.Sets/src/mage/cards/f/ForswornPaladin.java index 16ed68fd800..1ba35dffdf3 100644 --- a/Mage.Sets/src/mage/cards/f/ForswornPaladin.java +++ b/Mage.Sets/src/mage/cards/f/ForswornPaladin.java @@ -39,7 +39,7 @@ public final class ForswornPaladin extends CardImpl { this.toughness = new MageInt(1); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // {1}{B}, {T}, Pay 1 life: Create a Treasure token. Ability ability = new SimpleActivatedAbility(new CreateTokenEffect(new TreasureToken()), new ManaCostsImpl<>("{1}{B}")); diff --git a/Mage.Sets/src/mage/cards/f/FrenziedRage.java b/Mage.Sets/src/mage/cards/f/FrenziedRage.java index 52dd2bfec8a..de51f6e52d6 100644 --- a/Mage.Sets/src/mage/cards/f/FrenziedRage.java +++ b/Mage.Sets/src/mage/cards/f/FrenziedRage.java @@ -41,7 +41,7 @@ public final class FrenziedRage extends CardImpl { // Enchanted creature gets +2/+1 and has menace. ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 1)); Effect effect = new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.AURA); - effect.setText("and has menace"); + effect.setText("and has menace. (It can't be blocked except by two or more creatures.)"); ability.addEffect(effect); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FrillscareMentor.java b/Mage.Sets/src/mage/cards/f/FrillscareMentor.java index 87e3d85b73b..919a18f74df 100644 --- a/Mage.Sets/src/mage/cards/f/FrillscareMentor.java +++ b/Mage.Sets/src/mage/cards/f/FrillscareMentor.java @@ -47,7 +47,9 @@ public final class FrillscareMentor extends CardImpl { // When Frillscare Mentor enters the battlefield, put a menace counter on target non-Human creature you control. Ability ability = new EntersBattlefieldTriggeredAbility( - new AddCountersTargetEffect(CounterType.MENACE.createInstance()) + new AddCountersTargetEffect(CounterType.MENACE.createInstance() + ).setText("put a menace counter on target non-Human creature you control. " + + "(It can't be blocked except by two or more creatures.)") ); ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/g/GetThePoint.java b/Mage.Sets/src/mage/cards/g/GetThePoint.java index 1e618822375..eaaf9e751d3 100644 --- a/Mage.Sets/src/mage/cards/g/GetThePoint.java +++ b/Mage.Sets/src/mage/cards/g/GetThePoint.java @@ -19,7 +19,7 @@ public final class GetThePoint extends CardImpl { // Destroy target creature. Scry 1. this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addEffect(new ScryEffect(1)); + this.getSpellAbility().addEffect(new ScryEffect(1, false)); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); } diff --git a/Mage.Sets/src/mage/cards/g/GlaiveOfTheGuildpact.java b/Mage.Sets/src/mage/cards/g/GlaiveOfTheGuildpact.java index 69eaad01676..42effa53c6a 100644 --- a/Mage.Sets/src/mage/cards/g/GlaiveOfTheGuildpact.java +++ b/Mage.Sets/src/mage/cards/g/GlaiveOfTheGuildpact.java @@ -35,7 +35,7 @@ public final class GlaiveOfTheGuildpact extends CardImpl { ).setText("and has vigilance")); ability.addEffect(new GainAbilityAttachedEffect( new MenaceAbility(), AttachmentType.EQUIPMENT - ).setText("and menace")); + ).setText("and menace. (A creature with menace can't be blocked except by two or more creatures.)")); ability.addHint(GateYouControlHint.instance); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/g/GlintSleeveSiphoner.java b/Mage.Sets/src/mage/cards/g/GlintSleeveSiphoner.java index 99b1d4bc1d2..dad8c4c9ba7 100644 --- a/Mage.Sets/src/mage/cards/g/GlintSleeveSiphoner.java +++ b/Mage.Sets/src/mage/cards/g/GlintSleeveSiphoner.java @@ -33,7 +33,7 @@ public final class GlintSleeveSiphoner extends CardImpl { this.toughness = new MageInt(1); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever Glint-Sleeve Siphoner enters the battlefield or attacks, you get {E}. this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(new GetEnergyCountersControllerEffect(1))); diff --git a/Mage.Sets/src/mage/cards/g/GluttonousSlug.java b/Mage.Sets/src/mage/cards/g/GluttonousSlug.java index bd9695b4a19..be22de82e07 100644 --- a/Mage.Sets/src/mage/cards/g/GluttonousSlug.java +++ b/Mage.Sets/src/mage/cards/g/GluttonousSlug.java @@ -24,7 +24,7 @@ public final class GluttonousSlug extends CardImpl { this.toughness = new MageInt(3); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Evolve this.addAbility(new EvolveAbility()); diff --git a/Mage.Sets/src/mage/cards/g/GoblinDarkDwellers.java b/Mage.Sets/src/mage/cards/g/GoblinDarkDwellers.java index 6c0642398b0..d07ba81c428 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinDarkDwellers.java +++ b/Mage.Sets/src/mage/cards/g/GoblinDarkDwellers.java @@ -47,7 +47,7 @@ public final class GoblinDarkDwellers extends CardImpl { this.toughness = new MageInt(4); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // When Goblin Dark-Dwellers enters the battlefield, you may cast target instant or sorcery card with converted mana cost 3 or less // from your graveyard without paying its mana cost. If that card would be put into your graveyard this turn, exile it instead. diff --git a/Mage.Sets/src/mage/cards/g/GoblinGloryChaser.java b/Mage.Sets/src/mage/cards/g/GoblinGloryChaser.java index d29fe0bdcc5..7fd4f6de771 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinGloryChaser.java +++ b/Mage.Sets/src/mage/cards/g/GoblinGloryChaser.java @@ -38,7 +38,8 @@ public final class GoblinGloryChaser extends CardImpl { Effect effect = new ConditionalContinuousEffect( new GainAbilitySourceEffect(new MenaceAbility(), Duration.WhileOnBattlefield), RenownedSourceCondition.instance, - "As long as {this} is renowned, it has menace"); + "As long as {this} is renowned, it has menace. " + + "(It can't be blocked except by two or more creatures.)"); Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GodEternalBontu.java b/Mage.Sets/src/mage/cards/g/GodEternalBontu.java index 2244e8db4d0..0aacb71005e 100644 --- a/Mage.Sets/src/mage/cards/g/GodEternalBontu.java +++ b/Mage.Sets/src/mage/cards/g/GodEternalBontu.java @@ -38,7 +38,7 @@ public final class GodEternalBontu extends CardImpl { this.toughness = new MageInt(6); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // When God-Eternal Bontu enters the battlefield, sacrifice any number of other permanents, then draw that many cards. this.addAbility(new EntersBattlefieldTriggeredAbility(new GodEternalBontuEffect())); diff --git a/Mage.Sets/src/mage/cards/g/GodsWilling.java b/Mage.Sets/src/mage/cards/g/GodsWilling.java index a70df1c51e4..5710797a9f7 100644 --- a/Mage.Sets/src/mage/cards/g/GodsWilling.java +++ b/Mage.Sets/src/mage/cards/g/GodsWilling.java @@ -22,7 +22,7 @@ public final class GodsWilling extends CardImpl { // Target creature you control gains protection from the color of your choice until end of turn. Scry 1. this.getSpellAbility().addEffect(new GainProtectionFromColorTargetEffect(Duration.EndOfTurn)); this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addEffect(new ScryEffect(1).concatBy("
")); + this.getSpellAbility().addEffect(new ScryEffect(1, false).concatBy("
")); } private GodsWilling(final GodsWilling card) { diff --git a/Mage.Sets/src/mage/cards/g/GraniticTitan.java b/Mage.Sets/src/mage/cards/g/GraniticTitan.java index 5bfcebdcfda..816ce3dc927 100644 --- a/Mage.Sets/src/mage/cards/g/GraniticTitan.java +++ b/Mage.Sets/src/mage/cards/g/GraniticTitan.java @@ -19,7 +19,7 @@ public final class GraniticTitan extends CardImpl { toughness = new MageInt(4); // Menace - addAbility(new MenaceAbility()); + addAbility(new MenaceAbility(false)); // Cycling {2} addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}"))); diff --git a/Mage.Sets/src/mage/cards/g/GrevenPredatorCaptain.java b/Mage.Sets/src/mage/cards/g/GrevenPredatorCaptain.java index 1d3da75d417..5e4ff833ca6 100644 --- a/Mage.Sets/src/mage/cards/g/GrevenPredatorCaptain.java +++ b/Mage.Sets/src/mage/cards/g/GrevenPredatorCaptain.java @@ -38,7 +38,7 @@ public final class GrevenPredatorCaptain extends CardImpl { this.toughness = new MageInt(5); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Greven, Predator Captain gets +X/+0, where X is the amount of life you've lost this turn. this.addAbility(new SimpleStaticAbility(new BoostSourceEffect( diff --git a/Mage.Sets/src/mage/cards/g/Grief.java b/Mage.Sets/src/mage/cards/g/Grief.java index d0ac0eef647..8c2a87c0f7c 100644 --- a/Mage.Sets/src/mage/cards/g/Grief.java +++ b/Mage.Sets/src/mage/cards/g/Grief.java @@ -41,7 +41,7 @@ public final class Grief extends CardImpl { this.toughness = new MageInt(2); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // When Grief enters the battlefield, target opponent reveals their hand. You choose a nonland card from it. That player discards that card. Ability ability = new EntersBattlefieldTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/g/GrimDraugr.java b/Mage.Sets/src/mage/cards/g/GrimDraugr.java index 71bf3f2dfb2..7fa16db81c2 100644 --- a/Mage.Sets/src/mage/cards/g/GrimDraugr.java +++ b/Mage.Sets/src/mage/cards/g/GrimDraugr.java @@ -32,10 +32,13 @@ public final class GrimDraugr extends CardImpl { // {1}{S}: Grim Draugr gets +1/+0 and gains menace until end of turn. Ability ability = new SimpleActivatedAbility( - new BoostSourceEffect(1, 0, Duration.EndOfTurn).setText("{this} gets +1/+0"), new ManaCostsImpl("{1}{S}") + new BoostSourceEffect(1, 0, Duration.EndOfTurn).setText("{this} gets +1/+0"), + new ManaCostsImpl("{1}{S}") ); ability.addEffect(new GainAbilitySourceEffect( - new MenaceAbility(), Duration.EndOfTurn).setText("and gains menace until end of turn") + new MenaceAbility(), Duration.EndOfTurn).setText("and gains menace until end of turn. " + + "(It can't be blocked except by two or more creatures. " + + "{S} can be paid with one mana from a snow source.)") ); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GruulWarChant.java b/Mage.Sets/src/mage/cards/g/GruulWarChant.java index a0e6a7d3570..b5f645a99b7 100644 --- a/Mage.Sets/src/mage/cards/g/GruulWarChant.java +++ b/Mage.Sets/src/mage/cards/g/GruulWarChant.java @@ -33,7 +33,9 @@ public final class GruulWarChant extends CardImpl { // Attacking creatures you control get +1/+0 and have menace. (They can't be blocked except by two or more creatures.) - Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter)); + Ability ability = new SimpleStaticAbility( + Zone.BATTLEFIELD, + new GainAbilityAllEffect(new MenaceAbility(false), Duration.WhileOnBattlefield, filter)); ability.addEffect(new BoostAllEffect(1,0, Duration.WhileOnBattlefield, filter, false)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HagraConstrictor.java b/Mage.Sets/src/mage/cards/h/HagraConstrictor.java index a4a535216a0..e2b4340209f 100644 --- a/Mage.Sets/src/mage/cards/h/HagraConstrictor.java +++ b/Mage.Sets/src/mage/cards/h/HagraConstrictor.java @@ -44,7 +44,8 @@ public final class HagraConstrictor extends CardImpl { // Each creature you control with a +1/+1 counter on it has menace. this.addAbility(new SimpleStaticAbility(new GainAbilityAllEffect( new MenaceAbility(), Duration.WhileOnBattlefield, filter, - "Each creature you control with a +1/+1 counter on it has menace" + "Each creature you control with a +1/+1 counter on it has menace. " + + "(A creature with menace can't be blocked except by two or more creatures.)" ))); } diff --git a/Mage.Sets/src/mage/cards/h/HarshScrutiny.java b/Mage.Sets/src/mage/cards/h/HarshScrutiny.java index 9025809e23e..3a75731ac93 100644 --- a/Mage.Sets/src/mage/cards/h/HarshScrutiny.java +++ b/Mage.Sets/src/mage/cards/h/HarshScrutiny.java @@ -22,7 +22,7 @@ public final class HarshScrutiny extends CardImpl { // Target opponent reveals their hand. You choose a creature card from it. That player discards that card. Scry 1. this.getSpellAbility().addTarget(new TargetOpponent()); this.getSpellAbility().addEffect(new DiscardCardYouChooseTargetEffect(new FilterCreatureCard("a creature card"))); - this.getSpellAbility().addEffect(new ScryEffect(1)); + this.getSpellAbility().addEffect(new ScryEffect(1, false)); } private HarshScrutiny(final HarshScrutiny card) { diff --git a/Mage.Sets/src/mage/cards/h/HedronAlignment.java b/Mage.Sets/src/mage/cards/h/HedronAlignment.java index 4817ff00a86..35ff43f0a60 100644 --- a/Mage.Sets/src/mage/cards/h/HedronAlignment.java +++ b/Mage.Sets/src/mage/cards/h/HedronAlignment.java @@ -37,7 +37,7 @@ public final class HedronAlignment extends CardImpl { // At the beginning of your upkeep, you may reveal your hand. If you do, you win the game if you own a card named Hedron Alignment in exile, in your hand, in your graveyard, and on the battlefield. this.addAbility(new BeginningOfUpkeepTriggeredAbility(new HedronAlignmentEffect(), TargetController.YOU, true)); // {1}{U}: Scry 1. - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1), new ManaCostsImpl("{1}{U}"))); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1, false), new ManaCostsImpl("{1}{U}"))); } private HedronAlignment(final HedronAlignment card) { diff --git a/Mage.Sets/src/mage/cards/h/HiddenStockpile.java b/Mage.Sets/src/mage/cards/h/HiddenStockpile.java index 9d50a5e0e5c..a7e9e6ade66 100644 --- a/Mage.Sets/src/mage/cards/h/HiddenStockpile.java +++ b/Mage.Sets/src/mage/cards/h/HiddenStockpile.java @@ -38,7 +38,7 @@ public final class HiddenStockpile extends CardImpl { this.addAbility(ability); // {1}, Sacrifice a creature: Scry 1. - ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1), new GenericManaCost(1)); + ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1, false), new GenericManaCost(1)); ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT))); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/h/HoundOfTheFarbogs.java b/Mage.Sets/src/mage/cards/h/HoundOfTheFarbogs.java index 346d4c7c03c..fe24f795529 100644 --- a/Mage.Sets/src/mage/cards/h/HoundOfTheFarbogs.java +++ b/Mage.Sets/src/mage/cards/h/HoundOfTheFarbogs.java @@ -23,8 +23,6 @@ import mage.constants.Zone; */ public final class HoundOfTheFarbogs extends CardImpl { - static final private String RULE = "{this} has menace as long as there are four or more card types among cards in your graveyard"; - public HoundOfTheFarbogs(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}"); this.subtype.add(SubType.ZOMBIE); @@ -33,8 +31,11 @@ public final class HoundOfTheFarbogs extends CardImpl { this.toughness = new MageInt(3); // Delirium — Hound of the Farborgs has menace as long as there are four or more card types among cards in your graveyard. - Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, - new ConditionalContinuousEffect(new GainAbilitySourceEffect(new MenaceAbility(), Duration.WhileOnBattlefield), DeliriumCondition.instance, RULE)); + Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect( + new GainAbilitySourceEffect(new MenaceAbility(), Duration.WhileOnBattlefield), + DeliriumCondition.instance, + "{this} has menace as long as there are four or more card types among cards in your graveyard. " + + "(A creature with menace can't be blocked except by two or more creatures.)")); ability.setAbilityWord(AbilityWord.DELIRIUM); ability.addHint(CardTypesInGraveyardHint.YOU); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/h/HuntedNightmare.java b/Mage.Sets/src/mage/cards/h/HuntedNightmare.java index 01ffe1cb33a..ab2e8d9a12f 100644 --- a/Mage.Sets/src/mage/cards/h/HuntedNightmare.java +++ b/Mage.Sets/src/mage/cards/h/HuntedNightmare.java @@ -34,7 +34,7 @@ public final class HuntedNightmare extends CardImpl { this.toughness = new MageInt(5); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // When Hunted Nightmare enters the battlefield, target opponent puts a deathtouch counter on a creature they control. Ability ability = new EntersBattlefieldTriggeredAbility(new HuntedNightmareEffect()); diff --git a/Mage.Sets/src/mage/cards/i/IkraShidiqiTheUsurper.java b/Mage.Sets/src/mage/cards/i/IkraShidiqiTheUsurper.java index c81b3b2cd29..c6fdbc11692 100644 --- a/Mage.Sets/src/mage/cards/i/IkraShidiqiTheUsurper.java +++ b/Mage.Sets/src/mage/cards/i/IkraShidiqiTheUsurper.java @@ -34,7 +34,7 @@ public final class IkraShidiqiTheUsurper extends CardImpl { this.toughness = new MageInt(7); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever a creature you control deals combat damage to a player, you gain life equal to that creature's toughness. this.addAbility(new IkraShidiqiTheUsurperTriggeredAbility()); diff --git a/Mage.Sets/src/mage/cards/i/InquisitivePuppet.java b/Mage.Sets/src/mage/cards/i/InquisitivePuppet.java index 9de9edf129a..7537629e91f 100644 --- a/Mage.Sets/src/mage/cards/i/InquisitivePuppet.java +++ b/Mage.Sets/src/mage/cards/i/InquisitivePuppet.java @@ -27,7 +27,7 @@ public final class InquisitivePuppet extends CardImpl { this.toughness = new MageInt(2); // When Inquisitive Puppet enters the battlefield, scry 1. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1, false))); // Exile Inquisitive Puppet: Create a 1/1 white Human creature token. this.addAbility(new SimpleActivatedAbility(new CreateTokenEffect(new HumanToken()), new ExileSourceCost())); diff --git a/Mage.Sets/src/mage/cards/i/IroasGodOfVictory.java b/Mage.Sets/src/mage/cards/i/IroasGodOfVictory.java index 9c43c4721e3..dcd63420397 100644 --- a/Mage.Sets/src/mage/cards/i/IroasGodOfVictory.java +++ b/Mage.Sets/src/mage/cards/i/IroasGodOfVictory.java @@ -50,7 +50,7 @@ public final class IroasGodOfVictory extends CardImpl { // Creatures you control have menace. (They can't be blocked except by two or more creatures.) this.addAbility(new SimpleStaticAbility( - new GainAbilityAllEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter) + new GainAbilityAllEffect(new MenaceAbility(false), Duration.WhileOnBattlefield, filter) )); // Prevent all damage that would be dealt to attacking creatures you control. diff --git a/Mage.Sets/src/mage/cards/j/JaceUnravelerOfSecrets.java b/Mage.Sets/src/mage/cards/j/JaceUnravelerOfSecrets.java index 0dc11c8b01e..c7354d62bfc 100644 --- a/Mage.Sets/src/mage/cards/j/JaceUnravelerOfSecrets.java +++ b/Mage.Sets/src/mage/cards/j/JaceUnravelerOfSecrets.java @@ -34,7 +34,7 @@ public final class JaceUnravelerOfSecrets extends CardImpl { this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(5)); // +1: Scry 1, then draw a card. - Ability ability = new LoyaltyAbility(new ScryEffect(1), 1); + Ability ability = new LoyaltyAbility(new ScryEffect(1, false), 1); Effect effect = new DrawCardSourceControllerEffect(1); effect.setText(", then draw a card"); ability.addEffect(effect); diff --git a/Mage.Sets/src/mage/cards/j/JayasGreeting.java b/Mage.Sets/src/mage/cards/j/JayasGreeting.java index 12cf5687a80..7b2d940d2d5 100644 --- a/Mage.Sets/src/mage/cards/j/JayasGreeting.java +++ b/Mage.Sets/src/mage/cards/j/JayasGreeting.java @@ -19,7 +19,7 @@ public final class JayasGreeting extends CardImpl { // Jaya's Greeting deals 3 damage to target creature. Scry 1. this.getSpellAbility().addEffect(new DamageTargetEffect(3)); - this.getSpellAbility().addEffect(new ScryEffect(1)); + this.getSpellAbility().addEffect(new ScryEffect(1, false)); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); } diff --git a/Mage.Sets/src/mage/cards/j/JosuVessLichKnight.java b/Mage.Sets/src/mage/cards/j/JosuVessLichKnight.java index b9f4e55732a..6831b35d9e4 100644 --- a/Mage.Sets/src/mage/cards/j/JosuVessLichKnight.java +++ b/Mage.Sets/src/mage/cards/j/JosuVessLichKnight.java @@ -31,7 +31,7 @@ public final class JosuVessLichKnight extends CardImpl { this.addAbility(new KickerAbility("{5}{B}")); //Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); //When Josu Vess, Lich Knight enters the battlefield, if it was kicked, create eight 2/2 black Zombie Knight creature tokens with menace. EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new ZombieKnightToken(), 8)); diff --git a/Mage.Sets/src/mage/cards/k/KariZevSkyshipRaider.java b/Mage.Sets/src/mage/cards/k/KariZevSkyshipRaider.java index c1daa7bf169..da85aef699a 100644 --- a/Mage.Sets/src/mage/cards/k/KariZevSkyshipRaider.java +++ b/Mage.Sets/src/mage/cards/k/KariZevSkyshipRaider.java @@ -38,7 +38,7 @@ public final class KariZevSkyshipRaider extends CardImpl { this.addAbility(FirstStrikeAbility.getInstance()); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever Kari Zev, Skyship Raider attacks, create a legendary 2/1 red Monkey creature token named Ragavan that's tapped and attacking. Exile that token at end of combat. this.addAbility(new AttacksTriggeredAbility(new KariZevSkyshipRaiderEffect(), false)); diff --git a/Mage.Sets/src/mage/cards/k/KasminaEnigmaSage.java b/Mage.Sets/src/mage/cards/k/KasminaEnigmaSage.java index 942c8dfae8b..18555194544 100644 --- a/Mage.Sets/src/mage/cards/k/KasminaEnigmaSage.java +++ b/Mage.Sets/src/mage/cards/k/KasminaEnigmaSage.java @@ -43,7 +43,7 @@ public final class KasminaEnigmaSage extends CardImpl { this.addAbility(new SimpleStaticAbility(new KasminaEnigmaSageGainAbilitiesEffect())); // +2: Scry 1. - this.addAbility(new LoyaltyAbility(new ScryEffect(1), 2)); + this.addAbility(new LoyaltyAbility(new ScryEffect(1, false), 2)); // −X: Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it. this.addAbility(new LoyaltyAbility(FractalToken.getEffect( diff --git a/Mage.Sets/src/mage/cards/k/KelsFightFixer.java b/Mage.Sets/src/mage/cards/k/KelsFightFixer.java index b6b408de692..c36ecf32b57 100644 --- a/Mage.Sets/src/mage/cards/k/KelsFightFixer.java +++ b/Mage.Sets/src/mage/cards/k/KelsFightFixer.java @@ -37,7 +37,7 @@ public final class KelsFightFixer extends CardImpl { this.toughness = new MageInt(3); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever you sacrifice a creature, you may pay {U/B}. If you do, draw a card. this.addAbility(new KelsFightFixerTriggeredAbility()); diff --git a/Mage.Sets/src/mage/cards/k/KessigWolfrider.java b/Mage.Sets/src/mage/cards/k/KessigWolfrider.java index be570902cbf..8b68907f74c 100644 --- a/Mage.Sets/src/mage/cards/k/KessigWolfrider.java +++ b/Mage.Sets/src/mage/cards/k/KessigWolfrider.java @@ -31,7 +31,7 @@ public final class KessigWolfrider extends CardImpl { this.toughness = new MageInt(2); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // {2}{R}, {T}, Exile three cards from your graveyard: Create a 3/2 red Wolf creature token. Ability ability = new SimpleActivatedAbility( diff --git a/Mage.Sets/src/mage/cards/k/KhenraScrapper.java b/Mage.Sets/src/mage/cards/k/KhenraScrapper.java index 61f4c395630..1050b108137 100644 --- a/Mage.Sets/src/mage/cards/k/KhenraScrapper.java +++ b/Mage.Sets/src/mage/cards/k/KhenraScrapper.java @@ -28,7 +28,7 @@ public final class KhenraScrapper extends CardImpl { this.toughness = new MageInt(3); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // You may exert Khenra Scrapper as it attacks. When you do, it gets +2/+0 until end of turn. this.addAbility(new ExertAbility(new BecomesExertSourceTriggeredAbility(new BoostSourceEffect(2, 0, Duration.EndOfTurn)))); diff --git a/Mage.Sets/src/mage/cards/k/KheruMindEater.java b/Mage.Sets/src/mage/cards/k/KheruMindEater.java index 44cc1fca8f7..481e246db10 100644 --- a/Mage.Sets/src/mage/cards/k/KheruMindEater.java +++ b/Mage.Sets/src/mage/cards/k/KheruMindEater.java @@ -41,7 +41,7 @@ public final class KheruMindEater extends CardImpl { this.toughness = new MageInt(3); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever Kheru Mind-Eater deals combat damage to a player, that player exiles a card from their hand face down. this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new KheruMindEaterExileEffect(), false, true)); diff --git a/Mage.Sets/src/mage/cards/k/KozilekTheGreatDistortion.java b/Mage.Sets/src/mage/cards/k/KozilekTheGreatDistortion.java index 24c768ee926..23050d59ae0 100644 --- a/Mage.Sets/src/mage/cards/k/KozilekTheGreatDistortion.java +++ b/Mage.Sets/src/mage/cards/k/KozilekTheGreatDistortion.java @@ -53,7 +53,7 @@ public final class KozilekTheGreatDistortion extends CardImpl { new CardsInHandCondition(ComparisonType.FEWER_THAN, 7), "When you cast this spell, if you have fewer than seven cards in hand, draw cards equal to the difference.")); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Discard a card with converted mana cost X: Counter target spell with converted mana cost X. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(), new KozilekDiscardCost()); diff --git a/Mage.Sets/src/mage/cards/k/KozileksShrieker.java b/Mage.Sets/src/mage/cards/k/KozileksShrieker.java index 07e31ce87ee..59b2420d18b 100644 --- a/Mage.Sets/src/mage/cards/k/KozileksShrieker.java +++ b/Mage.Sets/src/mage/cards/k/KozileksShrieker.java @@ -38,7 +38,8 @@ public final class KozileksShrieker extends CardImpl { effect.setText("{this} gets +1/+0"); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{C}")); effect = new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn); - effect.setText("and gains menace until end of turn"); + effect.setText("and gains menace until end of turn. " + + "(It can't be blocked except by two or more creatures. {C} represents colorless mana.)"); ability.addEffect(effect); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/k/KunorosHoundOfAthreos.java b/Mage.Sets/src/mage/cards/k/KunorosHoundOfAthreos.java index 2f1c71eedc1..04ada10ff12 100644 --- a/Mage.Sets/src/mage/cards/k/KunorosHoundOfAthreos.java +++ b/Mage.Sets/src/mage/cards/k/KunorosHoundOfAthreos.java @@ -34,7 +34,7 @@ public final class KunorosHoundOfAthreos extends CardImpl { this.addAbility(VigilanceAbility.getInstance()); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Lifelink this.addAbility(LifelinkAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/l/LabyrinthRaptor.java b/Mage.Sets/src/mage/cards/l/LabyrinthRaptor.java index 0ad3bdccf87..f7ed9df1318 100644 --- a/Mage.Sets/src/mage/cards/l/LabyrinthRaptor.java +++ b/Mage.Sets/src/mage/cards/l/LabyrinthRaptor.java @@ -51,7 +51,7 @@ public final class LabyrinthRaptor extends CardImpl { this.toughness = new MageInt(2); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever a creature you control with menace becomes blocked, defending player sacrifices a creature blocking it. this.addAbility(new BecomesBlockedAllTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/l/LathrilBladeOfTheElves.java b/Mage.Sets/src/mage/cards/l/LathrilBladeOfTheElves.java index 35ac1f04793..c51eca941a8 100644 --- a/Mage.Sets/src/mage/cards/l/LathrilBladeOfTheElves.java +++ b/Mage.Sets/src/mage/cards/l/LathrilBladeOfTheElves.java @@ -45,7 +45,7 @@ public final class LathrilBladeOfTheElves extends CardImpl { this.toughness = new MageInt(3); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever Lathril, Blade of the Elves deals combat damage to a player, create that many 1/1 green Elf Warrior creature tokens. this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new CreateTokenEffect( diff --git a/Mage.Sets/src/mage/cards/l/LifecraftersBestiary.java b/Mage.Sets/src/mage/cards/l/LifecraftersBestiary.java index bb3d1fa2fd5..31a0a343772 100644 --- a/Mage.Sets/src/mage/cards/l/LifecraftersBestiary.java +++ b/Mage.Sets/src/mage/cards/l/LifecraftersBestiary.java @@ -25,7 +25,7 @@ public final class LifecraftersBestiary extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}"); // At the beginning of your upkeep, scry 1. - this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new ScryEffect(1), TargetController.YOU, false)); + this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new ScryEffect(1, false), TargetController.YOU, false)); // Whenever you cast a creature spell, you may pay {G}. If you do, draw a card. this.addAbility(new SpellCastControllerTriggeredAbility(new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new ManaCostsImpl("{G}")), StaticFilters.FILTER_SPELL_A_CREATURE, false)); diff --git a/Mage.Sets/src/mage/cards/l/LoathsomeCurator.java b/Mage.Sets/src/mage/cards/l/LoathsomeCurator.java index a8c5485f967..a21f1099a92 100644 --- a/Mage.Sets/src/mage/cards/l/LoathsomeCurator.java +++ b/Mage.Sets/src/mage/cards/l/LoathsomeCurator.java @@ -44,7 +44,7 @@ public final class LoathsomeCurator extends CardImpl { this.addAbility(new ExploitAbility()); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // When Loathsome Curator exploits a creature, destroy target creature you don't control with mana value 3 or less. Ability ability = new ExploitCreatureTriggeredAbility(new DestroyTargetEffect(), false); diff --git a/Mage.Sets/src/mage/cards/l/LoreholdCampus.java b/Mage.Sets/src/mage/cards/l/LoreholdCampus.java index b0630d256c5..9fb0004fd52 100644 --- a/Mage.Sets/src/mage/cards/l/LoreholdCampus.java +++ b/Mage.Sets/src/mage/cards/l/LoreholdCampus.java @@ -30,7 +30,7 @@ public final class LoreholdCampus extends CardImpl { this.addAbility(new WhiteManaAbility()); // {4}, {T}: Scry 1. - Ability ability = new SimpleActivatedAbility(new ScryEffect(1), new GenericManaCost(4)); + Ability ability = new SimpleActivatedAbility(new ScryEffect(1, false), new GenericManaCost(4)); ability.addCost(new TapSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/l/LoseCalm.java b/Mage.Sets/src/mage/cards/l/LoseCalm.java index a007ceb5337..6b91f9006b2 100644 --- a/Mage.Sets/src/mage/cards/l/LoseCalm.java +++ b/Mage.Sets/src/mage/cards/l/LoseCalm.java @@ -31,7 +31,8 @@ public final class LoseCalm extends CardImpl { this.getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn, "It gains haste")); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); effect = new GainAbilityTargetEffect(new MenaceAbility(), Duration.EndOfTurn); - effect.setText("and menace until end of turn"); + effect.setText("and menace until end of turn." + + "(A creature with menace can't be blocked except by two or more creatures.)"); this.getSpellAbility().addEffect(effect); } diff --git a/Mage.Sets/src/mage/cards/l/LoyalSubordinate.java b/Mage.Sets/src/mage/cards/l/LoyalSubordinate.java index e6440424b0b..3dd69fcbe09 100644 --- a/Mage.Sets/src/mage/cards/l/LoyalSubordinate.java +++ b/Mage.Sets/src/mage/cards/l/LoyalSubordinate.java @@ -27,7 +27,7 @@ public final class LoyalSubordinate extends CardImpl { this.toughness = new MageInt(1); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Lieutenant — At the beginning of combat on your turn, if you control your commander, each opponent loses 3 life. this.addAbility(new ConditionalTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/m/MadcapSkills.java b/Mage.Sets/src/mage/cards/m/MadcapSkills.java index f50194f7f84..c5cdde200a0 100644 --- a/Mage.Sets/src/mage/cards/m/MadcapSkills.java +++ b/Mage.Sets/src/mage/cards/m/MadcapSkills.java @@ -39,7 +39,7 @@ public final class MadcapSkills extends CardImpl { // Enchanted creature gets +3/+0 and and has menace. (It can't be blocked except by two or more creatures.) this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(3, 0))); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.AURA))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new MenaceAbility(false), AttachmentType.AURA))); } private MadcapSkills(final MadcapSkills card) { diff --git a/Mage.Sets/src/mage/cards/m/ManaGeode.java b/Mage.Sets/src/mage/cards/m/ManaGeode.java index 60edeadc52a..7fe926206c3 100644 --- a/Mage.Sets/src/mage/cards/m/ManaGeode.java +++ b/Mage.Sets/src/mage/cards/m/ManaGeode.java @@ -18,7 +18,7 @@ public final class ManaGeode extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}"); // When Mana Geode enters the battlefield, scry 1. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1, false))); // {T}: Add one mana of any color. this.addAbility(new AnyColorManaAbility()); diff --git a/Mage.Sets/src/mage/cards/m/MaritLagesSlumber.java b/Mage.Sets/src/mage/cards/m/MaritLagesSlumber.java index 31a9579ff51..851bfdf2e64 100644 --- a/Mage.Sets/src/mage/cards/m/MaritLagesSlumber.java +++ b/Mage.Sets/src/mage/cards/m/MaritLagesSlumber.java @@ -47,7 +47,7 @@ public final class MaritLagesSlumber extends CardImpl { // Whenever Marit Lage's Slumber or another snow permanent enters the battlefield under your control, scry 1. this.addAbility(new EntersBattlefieldThisOrAnotherTriggeredAbility( - new ScryEffect(1), filter, false, true + new ScryEffect(1, false), filter, false, true )); // At the beginning of your upkeep, if you control ten or more snow permanents, sacrifice Marit Lage's Slumber. If you do, create Marit Lage, a legendary 20/20 black Avatar creature token with flying and indestructible. diff --git a/Mage.Sets/src/mage/cards/m/MassacreGirl.java b/Mage.Sets/src/mage/cards/m/MassacreGirl.java index 62197082b3e..e59aca6f533 100644 --- a/Mage.Sets/src/mage/cards/m/MassacreGirl.java +++ b/Mage.Sets/src/mage/cards/m/MassacreGirl.java @@ -31,7 +31,7 @@ public final class MassacreGirl extends CardImpl { this.toughness = new MageInt(4); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // When Massacre Girl enters the battlefield, each other creature gets -1/-1 until end of turn. Whenever a creature dies this turn, each creature other than Massacre Girl gets -1/-1 until end of turn. this.addAbility(new EntersBattlefieldTriggeredAbility(new MassacreGirlEffect())); diff --git a/Mage.Sets/src/mage/cards/m/MathasFiendSeeker.java b/Mage.Sets/src/mage/cards/m/MathasFiendSeeker.java index 7353e0b17cb..cc88c7fb679 100644 --- a/Mage.Sets/src/mage/cards/m/MathasFiendSeeker.java +++ b/Mage.Sets/src/mage/cards/m/MathasFiendSeeker.java @@ -49,7 +49,7 @@ public final class MathasFiendSeeker extends CardImpl { this.toughness = new MageInt(3); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // At the beginning of your end step, put a bounty counter on target creature an opponent controls. For as long as that creature has a bounty counter on it, it has "When this creature dies, each opponent draws a card and gains 2 life." Ability ability = new BeginningOfYourEndStepTriggeredAbility(new AddCountersTargetEffect(CounterType.BOUNTY.createInstance()), false); diff --git a/Mage.Sets/src/mage/cards/m/MaulfistSquad.java b/Mage.Sets/src/mage/cards/m/MaulfistSquad.java index b710563d545..9c861c9e451 100644 --- a/Mage.Sets/src/mage/cards/m/MaulfistSquad.java +++ b/Mage.Sets/src/mage/cards/m/MaulfistSquad.java @@ -24,7 +24,7 @@ public final class MaulfistSquad extends CardImpl { this.toughness = new MageInt(1); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Fabricate 1 this.addAbility(new FabricateAbility(1)); diff --git a/Mage.Sets/src/mage/cards/m/MazemindTome.java b/Mage.Sets/src/mage/cards/m/MazemindTome.java index 282b220a4ee..2e5064d1606 100644 --- a/Mage.Sets/src/mage/cards/m/MazemindTome.java +++ b/Mage.Sets/src/mage/cards/m/MazemindTome.java @@ -31,7 +31,7 @@ public final class MazemindTome extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}"); // {T}, Put a page counter on Mazemind Tome: Scry 1. - Ability ability = new SimpleActivatedAbility(new ScryEffect(1), new TapSourceCost()); + Ability ability = new SimpleActivatedAbility(new ScryEffect(1, false), new TapSourceCost()); ability.addCost(new PutCountersSourceCost(CounterType.PAGE.createInstance())); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/m/MinionOfTheMighty.java b/Mage.Sets/src/mage/cards/m/MinionOfTheMighty.java index a266101fac6..098e7f691d2 100644 --- a/Mage.Sets/src/mage/cards/m/MinionOfTheMighty.java +++ b/Mage.Sets/src/mage/cards/m/MinionOfTheMighty.java @@ -34,7 +34,7 @@ public final class MinionOfTheMighty extends CardImpl { this.toughness = new MageInt(1); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Pack tactics — Whenever Minion of the Mighty attacks, if you attacked with creatures wih total power 6 or greater this combat, you may put a Dragon creature card from your hand onto the battlefield tapped and attacking. this.addAbility(new PackTacticsAbility(new MinionOfTheMightyEffect())); diff --git a/Mage.Sets/src/mage/cards/m/MoodmarkPainter.java b/Mage.Sets/src/mage/cards/m/MoodmarkPainter.java index 802d68d6ea4..e850d17c7f5 100644 --- a/Mage.Sets/src/mage/cards/m/MoodmarkPainter.java +++ b/Mage.Sets/src/mage/cards/m/MoodmarkPainter.java @@ -32,22 +32,22 @@ public final class MoodmarkPainter extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(3); - // Undergrowth — When Moodmark Painter enters the battlefield, target creature gains menace and gets +X/+0 until end of turn, where X is the number of creature cards in your graveyard. - DynamicValue xValue = new CardsInControllerGraveyardCount( - StaticFilters.FILTER_CARD_CREATURE - ); + // Undergrowth — When Moodmark Painter enters the battlefield, Ability ability = new EntersBattlefieldTriggeredAbility( new GainAbilityTargetEffect( - new MenaceAbility(), + new MenaceAbility(false), Duration.EndOfTurn - ).setText("target creature gains menace"), + ).setText("target creature gains menace."), false); + // target creature gains menace and gets +X/+0 until end of turn, + // where X is the number of creature cards in your graveyard. + DynamicValue xValue = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURE); ability.addEffect(new BoostTargetEffect( xValue, StaticValue.get(0), Duration.EndOfTurn, true ).setText("and gets +X/+0 until end of turn, " - + "where X is the number of creature cards in your graveyard") - ); + + "where X is the number of creature cards in your graveyard. " + + "(It can't be blocked except by two or more creatures.)")); // Must be here to match Oracle text ability.addTarget(new TargetCreaturePermanent()); ability.withFlavorWord("Undergrowth"); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/m/MysticRedaction.java b/Mage.Sets/src/mage/cards/m/MysticRedaction.java index d12844b862c..6acf24d5a39 100644 --- a/Mage.Sets/src/mage/cards/m/MysticRedaction.java +++ b/Mage.Sets/src/mage/cards/m/MysticRedaction.java @@ -21,7 +21,7 @@ public final class MysticRedaction extends CardImpl { // At the beginning of your upkeep, scry 1. this.addAbility(new BeginningOfUpkeepTriggeredAbility( - new ScryEffect(1), TargetController.YOU, false + new ScryEffect(1, false), TargetController.YOU, false )); // Whenever you discard a card, each opponent mills two cards. diff --git a/Mage.Sets/src/mage/cards/n/NikaraLairScavenger.java b/Mage.Sets/src/mage/cards/n/NikaraLairScavenger.java index cbfc63ea250..22747e17551 100644 --- a/Mage.Sets/src/mage/cards/n/NikaraLairScavenger.java +++ b/Mage.Sets/src/mage/cards/n/NikaraLairScavenger.java @@ -45,7 +45,7 @@ public final class NikaraLairScavenger extends CardImpl { this.addAbility(new PartnerWithAbility("Yannik, Scavenging Sentinel")); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever another creature you control leaves the battlefield, if it had one or more counters on it, you draw a card and lose 1 life. Ability ability = new LeavesBattlefieldAllTriggeredAbility(new DrawCardSourceControllerEffect(1) diff --git a/Mage.Sets/src/mage/cards/n/NimanaSkitterSneak.java b/Mage.Sets/src/mage/cards/n/NimanaSkitterSneak.java index 87769a082af..65cbac10a1a 100644 --- a/Mage.Sets/src/mage/cards/n/NimanaSkitterSneak.java +++ b/Mage.Sets/src/mage/cards/n/NimanaSkitterSneak.java @@ -37,7 +37,8 @@ public final class NimanaSkitterSneak extends CardImpl { )); ability.addEffect(new ConditionalContinuousEffect( new GainAbilitySourceEffect(new MenaceAbility()), - CardsInOpponentGraveyardCondition.EIGHT, "and has menace" + CardsInOpponentGraveyardCondition.EIGHT, "and has menace. " + + "(It can't be blocked except by two or more creatures.)" )); this.addAbility(ability.addHint(CardsInOpponentGraveyardCondition.EIGHT.getHint())); } diff --git a/Mage.Sets/src/mage/cards/n/NoEscape.java b/Mage.Sets/src/mage/cards/n/NoEscape.java index 384d09ce1e5..e43ba896da4 100644 --- a/Mage.Sets/src/mage/cards/n/NoEscape.java +++ b/Mage.Sets/src/mage/cards/n/NoEscape.java @@ -34,7 +34,7 @@ public final class NoEscape extends CardImpl { this.getSpellAbility().addTarget(new TargetSpell(filter)); // Scry 1. - this.getSpellAbility().addEffect(new ScryEffect(1)); + this.getSpellAbility().addEffect(new ScryEffect(1, false)); } private NoEscape(final NoEscape card) { diff --git a/Mage.Sets/src/mage/cards/n/NoxiousGearhulk.java b/Mage.Sets/src/mage/cards/n/NoxiousGearhulk.java index 8e7ef16071a..5743a737fcb 100644 --- a/Mage.Sets/src/mage/cards/n/NoxiousGearhulk.java +++ b/Mage.Sets/src/mage/cards/n/NoxiousGearhulk.java @@ -38,7 +38,7 @@ public final class NoxiousGearhulk extends CardImpl { this.toughness = new MageInt(4); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // When Noxious Gearhulk enters the battlefield, you may destroy another target creature. If a creature is destroyed this way, you gain life equal to its toughness. Ability ability = new EntersBattlefieldTriggeredAbility(new NoxiousGearhulkEffect()); diff --git a/Mage.Sets/src/mage/cards/n/NullpriestOfOblivion.java b/Mage.Sets/src/mage/cards/n/NullpriestOfOblivion.java index d6e357ac779..edf7bd1c416 100644 --- a/Mage.Sets/src/mage/cards/n/NullpriestOfOblivion.java +++ b/Mage.Sets/src/mage/cards/n/NullpriestOfOblivion.java @@ -35,7 +35,7 @@ public final class NullpriestOfOblivion extends CardImpl { this.addAbility(new KickerAbility("{3}{B}")); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Lifelink this.addAbility(LifelinkAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/o/OggyarBattleSeer.java b/Mage.Sets/src/mage/cards/o/OggyarBattleSeer.java index 1beee9d8abe..d7ab24b189f 100644 --- a/Mage.Sets/src/mage/cards/o/OggyarBattleSeer.java +++ b/Mage.Sets/src/mage/cards/o/OggyarBattleSeer.java @@ -29,7 +29,7 @@ public final class OggyarBattleSeer extends CardImpl { this.addAbility(HasteAbility.getInstance()); // {T}: Scry 1. - this.addAbility(new SimpleActivatedAbility(new ScryEffect(1), new TapSourceCost())); + this.addAbility(new SimpleActivatedAbility(new ScryEffect(1, false), new TapSourceCost())); } private OggyarBattleSeer(final OggyarBattleSeer card) { diff --git a/Mage.Sets/src/mage/cards/o/OgreErrant.java b/Mage.Sets/src/mage/cards/o/OgreErrant.java index a48c0222e82..d1b5759607c 100644 --- a/Mage.Sets/src/mage/cards/o/OgreErrant.java +++ b/Mage.Sets/src/mage/cards/o/OgreErrant.java @@ -41,7 +41,8 @@ public final class OgreErrant extends CardImpl { // Whenever Ogre Errant attacks, another target attacking Knight gains menace until end of turn. Ability ability = new AttacksTriggeredAbility(new GainAbilityTargetEffect( new MenaceAbility(), Duration.EndOfTurn - ).setText("another target attacking Knight gains menace until end of turn"), false); + ).setText("another target attacking Knight gains menace until end of turn." + + "(It can't be blocked except by two or more creatures.)"), false); ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/OliviasAttendants.java b/Mage.Sets/src/mage/cards/o/OliviasAttendants.java index fe3c3731ea8..52aa890a53f 100644 --- a/Mage.Sets/src/mage/cards/o/OliviasAttendants.java +++ b/Mage.Sets/src/mage/cards/o/OliviasAttendants.java @@ -34,7 +34,7 @@ public final class OliviasAttendants extends CardImpl { this.toughness = new MageInt(6); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever Olivia's Attendants deals damage, create that many Blood tokens. this.addAbility(new OliviasAttendantsTriggeredAbility()); diff --git a/Mage.Sets/src/mage/cards/o/Opt.java b/Mage.Sets/src/mage/cards/o/Opt.java index 4d6c546724e..e138ba0532a 100644 --- a/Mage.Sets/src/mage/cards/o/Opt.java +++ b/Mage.Sets/src/mage/cards/o/Opt.java @@ -18,7 +18,7 @@ public final class Opt extends CardImpl { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{U}"); // Scry 1. - this.getSpellAbility().addEffect(new ScryEffect(1)); + this.getSpellAbility().addEffect(new ScryEffect(1, false)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("
")); diff --git a/Mage.Sets/src/mage/cards/o/OraclesInsight.java b/Mage.Sets/src/mage/cards/o/OraclesInsight.java index f1f069545a5..4144be7f3ff 100644 --- a/Mage.Sets/src/mage/cards/o/OraclesInsight.java +++ b/Mage.Sets/src/mage/cards/o/OraclesInsight.java @@ -38,8 +38,9 @@ public final class OraclesInsight extends CardImpl { this.getSpellAbility().addEffect(new AttachEffect(Outcome.Benefit)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); + // Enchanted creature has "{T}: Scry 1, then draw a card." - ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1), new TapSourceCost()); + ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1, false), new TapSourceCost()); Effect effect = new DrawCardSourceControllerEffect(1); effect.setText("then draw a card"); ability.addEffect(effect); diff --git a/Mage.Sets/src/mage/cards/p/PathOfAncestry.java b/Mage.Sets/src/mage/cards/p/PathOfAncestry.java index 6350f97c25c..fd248b9970c 100644 --- a/Mage.Sets/src/mage/cards/p/PathOfAncestry.java +++ b/Mage.Sets/src/mage/cards/p/PathOfAncestry.java @@ -120,6 +120,8 @@ class PathOfAncestryTriggeredAbility extends DelayedTriggeredAbility { @Override public String getRule() { - return "When that mana is spent to cast a creature spell that shares a creature type with your commander, scry 1."; + return "When that mana is spent to cast a creature spell that shares a creature type with your commander," + + "scry 1. " + + "(Look at the top card of your library. You may put that card on the bottom of your library.)"; } } diff --git a/Mage.Sets/src/mage/cards/p/PathToTheFestival.java b/Mage.Sets/src/mage/cards/p/PathToTheFestival.java index 3964b46d1ec..58cd3c1babb 100644 --- a/Mage.Sets/src/mage/cards/p/PathToTheFestival.java +++ b/Mage.Sets/src/mage/cards/p/PathToTheFestival.java @@ -34,7 +34,9 @@ public final class PathToTheFestival extends CardImpl { )); this.getSpellAbility().addEffect(new ConditionalOneShotEffect( new ScryEffect(1), PathToTheFestivalCondition.instance, - "Then if there are three or more basic land types among lands you control, scry 1" + "Then if there are three or more basic land types among lands you control, scry 1 " + + "(Look at the top card of your library. " + + "You may put that card on the bottom of your library.)" )); this.getSpellAbility().addHint(DomainHint.instance); diff --git a/Mage.Sets/src/mage/cards/p/PestilentSpirit.java b/Mage.Sets/src/mage/cards/p/PestilentSpirit.java index 2edb9ec3292..c051388cc0e 100644 --- a/Mage.Sets/src/mage/cards/p/PestilentSpirit.java +++ b/Mage.Sets/src/mage/cards/p/PestilentSpirit.java @@ -37,7 +37,7 @@ public final class PestilentSpirit extends CardImpl { this.toughness = new MageInt(2); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Deathtouch this.addAbility(DeathtouchAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/p/PiperOfTheSwarm.java b/Mage.Sets/src/mage/cards/p/PiperOfTheSwarm.java index 028bd0c5c15..4268f5cbb61 100644 --- a/Mage.Sets/src/mage/cards/p/PiperOfTheSwarm.java +++ b/Mage.Sets/src/mage/cards/p/PiperOfTheSwarm.java @@ -43,7 +43,7 @@ public final class PiperOfTheSwarm extends CardImpl { // Rats you control have menace. this.addAbility(new SimpleStaticAbility( - new GainAbilityControlledEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter) + new GainAbilityControlledEffect(new MenaceAbility(false), Duration.WhileOnBattlefield, filter) )); // {1}{B}, {T}: Create a 1/1 black Rat creature token. diff --git a/Mage.Sets/src/mage/cards/p/PlagueBelcher.java b/Mage.Sets/src/mage/cards/p/PlagueBelcher.java index 822d4429dfb..311546467f2 100644 --- a/Mage.Sets/src/mage/cards/p/PlagueBelcher.java +++ b/Mage.Sets/src/mage/cards/p/PlagueBelcher.java @@ -42,7 +42,7 @@ public final class PlagueBelcher extends CardImpl { this.toughness = new MageInt(4); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // When Plague Belcher enters the battlefield, put two -1/-1 counters on target creature you control. Ability ability = new EntersBattlefieldTriggeredAbility(new AddCountersTargetEffect(CounterType.M1M1.createInstance(2))); diff --git a/Mage.Sets/src/mage/cards/p/PlayWithFire.java b/Mage.Sets/src/mage/cards/p/PlayWithFire.java index 481c849c06f..aac03809c13 100644 --- a/Mage.Sets/src/mage/cards/p/PlayWithFire.java +++ b/Mage.Sets/src/mage/cards/p/PlayWithFire.java @@ -2,6 +2,7 @@ package mage.cards.p; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.keyword.ScryEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -40,7 +41,8 @@ class PlayWithFireEffect extends OneShotEffect { PlayWithFireEffect() { super(Outcome.Benefit); - staticText = "{this} deals 2 damage to any target. If a player is dealt damage this way, scry 1"; + staticText = "{this} deals 2 damage to any target. If a player is dealt damage this way, scry 1. " + + "(Look at the top card of your library. You may put that card on the bottom of your library.)"; } private PlayWithFireEffect(final PlayWithFireEffect effect) { diff --git a/Mage.Sets/src/mage/cards/p/PrismariCampus.java b/Mage.Sets/src/mage/cards/p/PrismariCampus.java index a41977a39d9..e95c8c9ead6 100644 --- a/Mage.Sets/src/mage/cards/p/PrismariCampus.java +++ b/Mage.Sets/src/mage/cards/p/PrismariCampus.java @@ -30,7 +30,7 @@ public final class PrismariCampus extends CardImpl { this.addAbility(new RedManaAbility()); // {4}, {T}: Scry 1. - Ability ability = new SimpleActivatedAbility(new ScryEffect(1), new GenericManaCost(4)); + Ability ability = new SimpleActivatedAbility(new ScryEffect(1, false), new GenericManaCost(4)); ability.addCost(new TapSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PrisonRealm.java b/Mage.Sets/src/mage/cards/p/PrisonRealm.java index f4ba5c514a7..757d986d241 100644 --- a/Mage.Sets/src/mage/cards/p/PrisonRealm.java +++ b/Mage.Sets/src/mage/cards/p/PrisonRealm.java @@ -40,7 +40,7 @@ public final class PrisonRealm extends CardImpl { this.addAbility(ability); // When Prison Realm enters the battlefield, scry 1. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1, false))); } private PrisonRealm(final PrisonRealm card) { diff --git a/Mage.Sets/src/mage/cards/q/QuandrixCampus.java b/Mage.Sets/src/mage/cards/q/QuandrixCampus.java index 4fff5fb6473..a6c2f408b8a 100644 --- a/Mage.Sets/src/mage/cards/q/QuandrixCampus.java +++ b/Mage.Sets/src/mage/cards/q/QuandrixCampus.java @@ -30,7 +30,7 @@ public final class QuandrixCampus extends CardImpl { this.addAbility(new BlueManaAbility()); // {4}, {T}: Scry 1. - Ability ability = new SimpleActivatedAbility(new ScryEffect(1), new GenericManaCost(4)); + Ability ability = new SimpleActivatedAbility(new ScryEffect(1, false), new GenericManaCost(4)); ability.addCost(new TapSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RalStormConduit.java b/Mage.Sets/src/mage/cards/r/RalStormConduit.java index 65049ed91fe..2585a926a2d 100644 --- a/Mage.Sets/src/mage/cards/r/RalStormConduit.java +++ b/Mage.Sets/src/mage/cards/r/RalStormConduit.java @@ -36,7 +36,7 @@ public final class RalStormConduit extends CardImpl { this.addAbility(new RalStormConduitTriggeredAbility()); // +2: Scry 1. - this.addAbility(new LoyaltyAbility(new ScryEffect(1), 2)); + this.addAbility(new LoyaltyAbility(new ScryEffect(1, false), 2)); // -2: When you cast your next instant or sorcery spell this turn, copy that spell. You may choose new targets for the copy. this.addAbility(new LoyaltyAbility(new CreateDelayedTriggeredAbilityEffect( diff --git a/Mage.Sets/src/mage/cards/r/RampagingFerocidon.java b/Mage.Sets/src/mage/cards/r/RampagingFerocidon.java index 1704036e3e9..643d0b355bb 100644 --- a/Mage.Sets/src/mage/cards/r/RampagingFerocidon.java +++ b/Mage.Sets/src/mage/cards/r/RampagingFerocidon.java @@ -45,7 +45,7 @@ public final class RampagingFerocidon extends CardImpl { this.toughness = new MageInt(3); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Players can't gain life. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new RampagingFerocidonEffect())); diff --git a/Mage.Sets/src/mage/cards/r/RevealingEye.java b/Mage.Sets/src/mage/cards/r/RevealingEye.java index a9036840605..ba9d8cd96dd 100644 --- a/Mage.Sets/src/mage/cards/r/RevealingEye.java +++ b/Mage.Sets/src/mage/cards/r/RevealingEye.java @@ -36,7 +36,7 @@ public final class RevealingEye extends CardImpl { this.nightCard = true; // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // When this creature transforms into Revealing Eye, target opponent reveals their hand. You may choose a nonland card from it. If you do, that player discards that card, then draws a card. Ability ability = new TransformIntoSourceTriggeredAbility(new RevealingEyeEffect()); diff --git a/Mage.Sets/src/mage/cards/r/RograkhSonOfRohgahh.java b/Mage.Sets/src/mage/cards/r/RograkhSonOfRohgahh.java index bef6a014d81..45f1b406b27 100644 --- a/Mage.Sets/src/mage/cards/r/RograkhSonOfRohgahh.java +++ b/Mage.Sets/src/mage/cards/r/RograkhSonOfRohgahh.java @@ -32,7 +32,7 @@ public final class RograkhSonOfRohgahh extends CardImpl { this.addAbility(FirstStrikeAbility.getInstance()); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Trample this.addAbility(TrampleAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/r/RogueClass.java b/Mage.Sets/src/mage/cards/r/RogueClass.java index 0e54b7999e3..34a6ab2050f 100644 --- a/Mage.Sets/src/mage/cards/r/RogueClass.java +++ b/Mage.Sets/src/mage/cards/r/RogueClass.java @@ -50,7 +50,7 @@ public final class RogueClass extends CardImpl { // Creatures you control have menace. this.addAbility(new SimpleStaticAbility(new GainClassAbilitySourceEffect( new GainAbilityControlledEffect( - new MenaceAbility(), Duration.WhileOnBattlefield, + new MenaceAbility(false), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURES ), 2 ))); diff --git a/Mage.Sets/src/mage/cards/r/RuinGrinder.java b/Mage.Sets/src/mage/cards/r/RuinGrinder.java index 71b53c1ee6b..d93947f22ab 100644 --- a/Mage.Sets/src/mage/cards/r/RuinGrinder.java +++ b/Mage.Sets/src/mage/cards/r/RuinGrinder.java @@ -32,7 +32,7 @@ public final class RuinGrinder extends CardImpl { this.toughness = new MageInt(4); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // When Ruin Grinder dies, each player may discard their hand and draw seven cards. this.addAbility(new DiesSourceTriggeredAbility(new RuinGrinderEffect())); diff --git a/Mage.Sets/src/mage/cards/r/RumblingSentry.java b/Mage.Sets/src/mage/cards/r/RumblingSentry.java index 9e2f92a2069..22e2b43db73 100644 --- a/Mage.Sets/src/mage/cards/r/RumblingSentry.java +++ b/Mage.Sets/src/mage/cards/r/RumblingSentry.java @@ -23,7 +23,7 @@ public final class RumblingSentry extends CardImpl { this.toughness = new MageInt(6); // When Rumbling Sentry enters the battlefield, scry 1. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1, false))); } private RumblingSentry(final RumblingSentry card) { diff --git a/Mage.Sets/src/mage/cards/s/SamutTyrantSmasher.java b/Mage.Sets/src/mage/cards/s/SamutTyrantSmasher.java index 8468e13ebb7..a26b5c343f3 100644 --- a/Mage.Sets/src/mage/cards/s/SamutTyrantSmasher.java +++ b/Mage.Sets/src/mage/cards/s/SamutTyrantSmasher.java @@ -44,7 +44,7 @@ public final class SamutTyrantSmasher extends CardImpl { ability.addEffect(new GainAbilityTargetEffect( HasteAbility.getInstance(), Duration.EndOfTurn ).setText("and gains haste until end of turn")); - ability.addEffect(new ScryEffect(1)); + ability.addEffect(new ScryEffect(1, false)); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SamutsSprint.java b/Mage.Sets/src/mage/cards/s/SamutsSprint.java index 1d631dd6027..2806af7af2a 100644 --- a/Mage.Sets/src/mage/cards/s/SamutsSprint.java +++ b/Mage.Sets/src/mage/cards/s/SamutsSprint.java @@ -26,7 +26,7 @@ public final class SamutsSprint extends CardImpl { this.getSpellAbility().addEffect(new GainAbilityTargetEffect( HasteAbility.getInstance(), Duration.EndOfTurn ).setText("and gains haste until end of turn")); - this.getSpellAbility().addEffect(new ScryEffect(1)); + this.getSpellAbility().addEffect(new ScryEffect(1, false)); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); } diff --git a/Mage.Sets/src/mage/cards/s/ScroungedScythe.java b/Mage.Sets/src/mage/cards/s/ScroungedScythe.java index 56640dbf400..8426082f857 100644 --- a/Mage.Sets/src/mage/cards/s/ScroungedScythe.java +++ b/Mage.Sets/src/mage/cards/s/ScroungedScythe.java @@ -21,8 +21,6 @@ import mage.constants.*; */ public final class ScroungedScythe extends CardImpl { - private static final String staticText = "As long as equipped creature is a Human, it has menace"; - public ScroungedScythe(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},""); this.subtype.add(SubType.EQUIPMENT); @@ -33,9 +31,13 @@ public final class ScroungedScythe extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(1, 1))); // As long as equipped creature is a Human, it has menace. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, - new ConditionalContinuousEffect(new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.EQUIPMENT), - new EquippedHasSubtypeCondition(SubType.HUMAN), staticText))); + this.addAbility(new SimpleStaticAbility( + Zone.BATTLEFIELD, + new ConditionalContinuousEffect( + new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.EQUIPMENT), + new EquippedHasSubtypeCondition(SubType.HUMAN), + "As long as equipped creature is a Human, it has menace. " + + "(It can't be blocked except by two or more creatures.)"))); // Equip {2} this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2))); diff --git a/Mage.Sets/src/mage/cards/s/SedgemoorWitch.java b/Mage.Sets/src/mage/cards/s/SedgemoorWitch.java index ad6c0172011..51a94cb422e 100644 --- a/Mage.Sets/src/mage/cards/s/SedgemoorWitch.java +++ b/Mage.Sets/src/mage/cards/s/SedgemoorWitch.java @@ -28,7 +28,7 @@ public final class SedgemoorWitch extends CardImpl { this.toughness = new MageInt(2); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Ward—Pay 3 life. this.addAbility(new WardAbility(new PayLifeCost(3))); diff --git a/Mage.Sets/src/mage/cards/s/SenateGriffin.java b/Mage.Sets/src/mage/cards/s/SenateGriffin.java index d85c995f774..de0fa33c1f1 100644 --- a/Mage.Sets/src/mage/cards/s/SenateGriffin.java +++ b/Mage.Sets/src/mage/cards/s/SenateGriffin.java @@ -27,7 +27,7 @@ public final class SenateGriffin extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // When Senate Griffin enters the battlefield, scry 1. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1, false))); } private SenateGriffin(final SenateGriffin card) { diff --git a/Mage.Sets/src/mage/cards/s/ShelteringLight.java b/Mage.Sets/src/mage/cards/s/ShelteringLight.java index 6dc54b37b9e..bdcaf9b6ae8 100644 --- a/Mage.Sets/src/mage/cards/s/ShelteringLight.java +++ b/Mage.Sets/src/mage/cards/s/ShelteringLight.java @@ -22,7 +22,7 @@ public final class ShelteringLight extends CardImpl { // Target creature gains indestructible until end of turn. Scry 1. this.getSpellAbility().addEffect(new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn)); - this.getSpellAbility().addEffect(new ScryEffect(1)); + this.getSpellAbility().addEffect(new ScryEffect(1, false)); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); } diff --git a/Mage.Sets/src/mage/cards/s/SilvarDevourerOfTheFree.java b/Mage.Sets/src/mage/cards/s/SilvarDevourerOfTheFree.java index 6cd68a89ba3..da9a18788a3 100644 --- a/Mage.Sets/src/mage/cards/s/SilvarDevourerOfTheFree.java +++ b/Mage.Sets/src/mage/cards/s/SilvarDevourerOfTheFree.java @@ -42,7 +42,7 @@ public final class SilvarDevourerOfTheFree extends CardImpl { this.addAbility(new PartnerWithAbility("Trynn, Champion of Freedom")); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Sacrifice a Human: Put a +1/+1 counter on Silvar, Devourer of the Free. It gains indestructible until end of turn. Ability ability = new SimpleActivatedAbility( diff --git a/Mage.Sets/src/mage/cards/s/SilverquillCampus.java b/Mage.Sets/src/mage/cards/s/SilverquillCampus.java index 39c59903a02..714838c866a 100644 --- a/Mage.Sets/src/mage/cards/s/SilverquillCampus.java +++ b/Mage.Sets/src/mage/cards/s/SilverquillCampus.java @@ -30,7 +30,7 @@ public final class SilverquillCampus extends CardImpl { this.addAbility(new BlackManaAbility()); // {4}, {T}: Scry 1. - Ability ability = new SimpleActivatedAbility(new ScryEffect(1), new GenericManaCost(4)); + Ability ability = new SimpleActivatedAbility(new ScryEffect(1, false), new GenericManaCost(4)); ability.addCost(new TapSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SinProdder.java b/Mage.Sets/src/mage/cards/s/SinProdder.java index 965e931652d..f62db39ba0f 100644 --- a/Mage.Sets/src/mage/cards/s/SinProdder.java +++ b/Mage.Sets/src/mage/cards/s/SinProdder.java @@ -27,7 +27,7 @@ public final class SinProdder extends CardImpl { this.toughness = new MageInt(2); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // At the beginning of your upkeep, reveal the top card of your library. Any opponent may have you put that card into your graveyard. If a player does, // Sin Prodder deals damage to that player equal to that card's converted mana cost. Otherwise, put that card into your hand. diff --git a/Mage.Sets/src/mage/cards/s/SinuousVermin.java b/Mage.Sets/src/mage/cards/s/SinuousVermin.java index 9c54114fa7e..72b64382bd2 100644 --- a/Mage.Sets/src/mage/cards/s/SinuousVermin.java +++ b/Mage.Sets/src/mage/cards/s/SinuousVermin.java @@ -38,7 +38,8 @@ public final class SinuousVermin extends CardImpl { Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(new MenaceAbility(), Duration.WhileOnBattlefield), MonstrousCondition.instance, - "As long as {this} is monstrous, it has menace")); + "As long as {this} is monstrous, it has menace. " + + "(It can't be blocked except by two or more creatures.)")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SkophosWarleader.java b/Mage.Sets/src/mage/cards/s/SkophosWarleader.java index f943dc1a5e0..0325d9ef2ad 100644 --- a/Mage.Sets/src/mage/cards/s/SkophosWarleader.java +++ b/Mage.Sets/src/mage/cards/s/SkophosWarleader.java @@ -52,7 +52,8 @@ public final class SkophosWarleader extends CardImpl { new ColoredManaCost(ColoredManaSymbol.R)); ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter))); ability.addEffect(new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn) - .setText("and gains menace until end of turn")); + .setText("and gains menace until end of turn. " + + "(It can't be blocked except by two or more creatures.)")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SkyTerror.java b/Mage.Sets/src/mage/cards/s/SkyTerror.java index 90084dc5d3b..0eac13fce69 100644 --- a/Mage.Sets/src/mage/cards/s/SkyTerror.java +++ b/Mage.Sets/src/mage/cards/s/SkyTerror.java @@ -27,7 +27,7 @@ public final class SkyTerror extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); } diff --git a/Mage.Sets/src/mage/cards/s/SoldeviExcavations.java b/Mage.Sets/src/mage/cards/s/SoldeviExcavations.java index ed27fc895cc..7e297f38243 100644 --- a/Mage.Sets/src/mage/cards/s/SoldeviExcavations.java +++ b/Mage.Sets/src/mage/cards/s/SoldeviExcavations.java @@ -44,7 +44,7 @@ public final class SoldeviExcavations extends CardImpl { this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, new Mana(0, 1, 0, 0, 0, 0, 0, 1), new TapSourceCost())); // {1}, {tap}: Scry 1. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1), new GenericManaCost(1)); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1, false), new GenericManaCost(1)); ability.addCost(new TapSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SonorousHowlbonder.java b/Mage.Sets/src/mage/cards/s/SonorousHowlbonder.java index c0c7bd752e1..6f3cfed3244 100644 --- a/Mage.Sets/src/mage/cards/s/SonorousHowlbonder.java +++ b/Mage.Sets/src/mage/cards/s/SonorousHowlbonder.java @@ -38,7 +38,7 @@ public final class SonorousHowlbonder extends CardImpl { this.toughness = new MageInt(2); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Each creature you control with menace can't be blocked except by three or more creatures. ContinuousEffect effect = new CantBeBlockedByOneAllEffect(3, filter); diff --git a/Mage.Sets/src/mage/cards/s/SphinxOfForesight.java b/Mage.Sets/src/mage/cards/s/SphinxOfForesight.java index a3aac1877c6..383488804f0 100644 --- a/Mage.Sets/src/mage/cards/s/SphinxOfForesight.java +++ b/Mage.Sets/src/mage/cards/s/SphinxOfForesight.java @@ -43,7 +43,7 @@ public final class SphinxOfForesight extends CardImpl { // At the beginning of your upkeep, scry 1. this.addAbility(new BeginningOfUpkeepTriggeredAbility( - Zone.BATTLEFIELD, new ScryEffect(1), + Zone.BATTLEFIELD, new ScryEffect(1, false), TargetController.YOU, false )); } diff --git a/Mage.Sets/src/mage/cards/s/StoneboundMentor.java b/Mage.Sets/src/mage/cards/s/StoneboundMentor.java index a51001f56fb..7680a178f6e 100644 --- a/Mage.Sets/src/mage/cards/s/StoneboundMentor.java +++ b/Mage.Sets/src/mage/cards/s/StoneboundMentor.java @@ -24,7 +24,7 @@ public final class StoneboundMentor extends CardImpl { this.toughness = new MageInt(3); // Whenever one or more cards leave your graveyard, scry 1. - this.addAbility(new CardsLeaveGraveyardTriggeredAbility(new ScryEffect(1))); + this.addAbility(new CardsLeaveGraveyardTriggeredAbility(new ScryEffect(1, false))); } private StoneboundMentor(final StoneboundMentor card) { diff --git a/Mage.Sets/src/mage/cards/s/StormStrike.java b/Mage.Sets/src/mage/cards/s/StormStrike.java index bfccf2c5907..d894983407f 100644 --- a/Mage.Sets/src/mage/cards/s/StormStrike.java +++ b/Mage.Sets/src/mage/cards/s/StormStrike.java @@ -28,7 +28,7 @@ public final class StormStrike extends CardImpl { this.getSpellAbility().addEffect(new GainAbilityTargetEffect( FirstStrikeAbility.getInstance(), Duration.EndOfTurn ).setText("and gains first strike until end of turn")); - this.getSpellAbility().addEffect(new ScryEffect(1)); + this.getSpellAbility().addEffect(new ScryEffect(1, false)); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); } diff --git a/Mage.Sets/src/mage/cards/s/StormchaserChimera.java b/Mage.Sets/src/mage/cards/s/StormchaserChimera.java index bab134f8061..176ce12367b 100644 --- a/Mage.Sets/src/mage/cards/s/StormchaserChimera.java +++ b/Mage.Sets/src/mage/cards/s/StormchaserChimera.java @@ -40,7 +40,7 @@ public final class StormchaserChimera extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); // {2}{U}{R}: Scry 1, then reveal the top card of your library. Stormchaser Chimera gets +X/+0 until end of turn, where X is that card's converted mana cost. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1), new ManaCostsImpl("{2}{U}{R}")); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1, false), new ManaCostsImpl("{2}{U}{R}")); ability.addEffect(new StormchaserChimeraEffect()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/StormfistCrusader.java b/Mage.Sets/src/mage/cards/s/StormfistCrusader.java index 8fd35a8ffe4..20bb58fd36c 100644 --- a/Mage.Sets/src/mage/cards/s/StormfistCrusader.java +++ b/Mage.Sets/src/mage/cards/s/StormfistCrusader.java @@ -29,7 +29,7 @@ public final class StormfistCrusader extends CardImpl { this.toughness = new MageInt(2); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // At the beginning of your upkeep, each player draws a card and loses 1 life. Ability ability = new BeginningOfUpkeepTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/s/SunsetPyramid.java b/Mage.Sets/src/mage/cards/s/SunsetPyramid.java index 6f294f52f91..7c02537b622 100644 --- a/Mage.Sets/src/mage/cards/s/SunsetPyramid.java +++ b/Mage.Sets/src/mage/cards/s/SunsetPyramid.java @@ -36,7 +36,7 @@ public final class SunsetPyramid extends CardImpl { this.addAbility(ability); // {2}, {T}: Scry 1. - Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1), new GenericManaCost(2)); + Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1, false), new GenericManaCost(2)); ability2.addCost(new TapSourceCost()); this.addAbility(ability2); diff --git a/Mage.Sets/src/mage/cards/s/SwarmGuildmage.java b/Mage.Sets/src/mage/cards/s/SwarmGuildmage.java index a891771e260..8f514a0bd84 100644 --- a/Mage.Sets/src/mage/cards/s/SwarmGuildmage.java +++ b/Mage.Sets/src/mage/cards/s/SwarmGuildmage.java @@ -40,7 +40,8 @@ public final class SwarmGuildmage extends CardImpl { ability.addEffect(new GainAbilityControlledEffect( new MenaceAbility(), Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURES - ).setText("and gain menace until end of turn")); + ).setText("and gain menace until end of turn. " + + "(They can't be blocked except by two or more creatures.)")); ability.addCost(new TapSourceCost()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/s/SweatworksBrawler.java b/Mage.Sets/src/mage/cards/s/SweatworksBrawler.java index 7b511734520..8ccd1395d6c 100644 --- a/Mage.Sets/src/mage/cards/s/SweatworksBrawler.java +++ b/Mage.Sets/src/mage/cards/s/SweatworksBrawler.java @@ -28,7 +28,7 @@ public final class SweatworksBrawler extends CardImpl { addAbility(new ImproviseAbility()); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); } private SweatworksBrawler(final SweatworksBrawler card) { diff --git a/Mage.Sets/src/mage/cards/s/SylvanAnthem.java b/Mage.Sets/src/mage/cards/s/SylvanAnthem.java index 8953b252ebf..e11328ed0cd 100644 --- a/Mage.Sets/src/mage/cards/s/SylvanAnthem.java +++ b/Mage.Sets/src/mage/cards/s/SylvanAnthem.java @@ -34,7 +34,7 @@ public final class SylvanAnthem extends CardImpl { ).setText("green creatures you control get +1/+1"))); // Whenever a green creature enters the battlefield under your control, scry 1. - this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new ScryEffect(1), filter)); + this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new ScryEffect(1, false), filter)); } private SylvanAnthem(final SylvanAnthem card) { diff --git a/Mage.Sets/src/mage/cards/s/SyrGwynHeroOfAshvale.java b/Mage.Sets/src/mage/cards/s/SyrGwynHeroOfAshvale.java index 8d159f68b66..e8688fbce6b 100644 --- a/Mage.Sets/src/mage/cards/s/SyrGwynHeroOfAshvale.java +++ b/Mage.Sets/src/mage/cards/s/SyrGwynHeroOfAshvale.java @@ -51,7 +51,7 @@ public final class SyrGwynHeroOfAshvale extends CardImpl { this.addAbility(VigilanceAbility.getInstance()); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever an equipped creature you control attacks, you draw a card and you lose 1 life. Ability ability = new AttacksCreatureYouControlTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/t/TempleOfAbandon.java b/Mage.Sets/src/mage/cards/t/TempleOfAbandon.java index e8dcac3beac..d42db246a13 100644 --- a/Mage.Sets/src/mage/cards/t/TempleOfAbandon.java +++ b/Mage.Sets/src/mage/cards/t/TempleOfAbandon.java @@ -23,7 +23,7 @@ public final class TempleOfAbandon extends CardImpl { // Temple of Abandon enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); // When Temple of Abandon enters the battlefield, scry 1. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1, false))); // {T}: Add {R} or {G}. this.addAbility(new RedManaAbility()); this.addAbility(new GreenManaAbility()); diff --git a/Mage.Sets/src/mage/cards/t/TempleOfDeceit.java b/Mage.Sets/src/mage/cards/t/TempleOfDeceit.java index 0f13379c6d4..efdb5969d6d 100644 --- a/Mage.Sets/src/mage/cards/t/TempleOfDeceit.java +++ b/Mage.Sets/src/mage/cards/t/TempleOfDeceit.java @@ -23,7 +23,7 @@ public final class TempleOfDeceit extends CardImpl { // Temple of Deceit enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); // When Temple of Deceit enters the battlefield, scry 1. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1, false))); // {T}: Add {U} or {B}. this.addAbility(new BlueManaAbility()); this.addAbility(new BlackManaAbility()); diff --git a/Mage.Sets/src/mage/cards/t/TempleOfEnlightenment.java b/Mage.Sets/src/mage/cards/t/TempleOfEnlightenment.java index 5ba69637856..5dc279be1c0 100644 --- a/Mage.Sets/src/mage/cards/t/TempleOfEnlightenment.java +++ b/Mage.Sets/src/mage/cards/t/TempleOfEnlightenment.java @@ -23,7 +23,7 @@ public final class TempleOfEnlightenment extends CardImpl { // Temple of Enlightenment enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); // When Temple of Enlightenment enters the battlefield, scry 1. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1, false))); // {T}: Add {W} or {U}. this.addAbility(new WhiteManaAbility()); this.addAbility(new BlueManaAbility()); diff --git a/Mage.Sets/src/mage/cards/t/TempleOfEpiphany.java b/Mage.Sets/src/mage/cards/t/TempleOfEpiphany.java index 313d83dd87a..f157a9314a2 100644 --- a/Mage.Sets/src/mage/cards/t/TempleOfEpiphany.java +++ b/Mage.Sets/src/mage/cards/t/TempleOfEpiphany.java @@ -23,7 +23,7 @@ public final class TempleOfEpiphany extends CardImpl { // Temple of Epiphany enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); // When Temple of Epiphany enters the battlefield, scry 1. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1, false))); // {T}: Add {U} or {R}. this.addAbility(new BlueManaAbility()); this.addAbility(new RedManaAbility()); diff --git a/Mage.Sets/src/mage/cards/t/TempleOfMalady.java b/Mage.Sets/src/mage/cards/t/TempleOfMalady.java index 5d3ce42cafa..7800a9deafe 100644 --- a/Mage.Sets/src/mage/cards/t/TempleOfMalady.java +++ b/Mage.Sets/src/mage/cards/t/TempleOfMalady.java @@ -23,7 +23,7 @@ public final class TempleOfMalady extends CardImpl { // Temple of Malady enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); // When Temple of Malady enters the battlefield, scry 1. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1, false))); // {T}: Add {B} or {G}. this.addAbility(new BlackManaAbility()); this.addAbility(new GreenManaAbility()); diff --git a/Mage.Sets/src/mage/cards/t/TempleOfMalice.java b/Mage.Sets/src/mage/cards/t/TempleOfMalice.java index db0a31ec18a..30c316218d6 100644 --- a/Mage.Sets/src/mage/cards/t/TempleOfMalice.java +++ b/Mage.Sets/src/mage/cards/t/TempleOfMalice.java @@ -23,7 +23,7 @@ public final class TempleOfMalice extends CardImpl { // Temple of Malice enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); // When Temple of Malice enters the battlefield, scry 1. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1, false))); // {T}: Add {B} or {R}. this.addAbility(new BlackManaAbility()); this.addAbility(new RedManaAbility()); diff --git a/Mage.Sets/src/mage/cards/t/TempleOfMystery.java b/Mage.Sets/src/mage/cards/t/TempleOfMystery.java index 4ce7771992a..e89cdef5b54 100644 --- a/Mage.Sets/src/mage/cards/t/TempleOfMystery.java +++ b/Mage.Sets/src/mage/cards/t/TempleOfMystery.java @@ -23,7 +23,7 @@ public final class TempleOfMystery extends CardImpl { // Temple of Mystery enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); // When Temple of Mystery enters the battlefield, scry 1. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1, false))); // {T}: Add {G} or {U}. this.addAbility(new GreenManaAbility()); this.addAbility(new BlueManaAbility()); diff --git a/Mage.Sets/src/mage/cards/t/TempleOfPlenty.java b/Mage.Sets/src/mage/cards/t/TempleOfPlenty.java index 404c5138133..13a15efcb20 100644 --- a/Mage.Sets/src/mage/cards/t/TempleOfPlenty.java +++ b/Mage.Sets/src/mage/cards/t/TempleOfPlenty.java @@ -23,7 +23,7 @@ public final class TempleOfPlenty extends CardImpl { // Temple of Plenty enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); // When Temple of Plenty enters the battlefield, scry 1. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1, false))); // {T}: Add {G} or {W}. this.addAbility(new GreenManaAbility()); this.addAbility(new WhiteManaAbility()); diff --git a/Mage.Sets/src/mage/cards/t/TempleOfSilence.java b/Mage.Sets/src/mage/cards/t/TempleOfSilence.java index dc3c981652f..ee4b7cee7d3 100644 --- a/Mage.Sets/src/mage/cards/t/TempleOfSilence.java +++ b/Mage.Sets/src/mage/cards/t/TempleOfSilence.java @@ -23,7 +23,7 @@ public final class TempleOfSilence extends CardImpl { // Temple of Silence enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); // When Temple of Silence enters the battlefield, scry 1. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1, false))); // {T}: Add {W} or {B}. this.addAbility(new WhiteManaAbility()); this.addAbility(new BlackManaAbility()); diff --git a/Mage.Sets/src/mage/cards/t/TempleOfTriumph.java b/Mage.Sets/src/mage/cards/t/TempleOfTriumph.java index cfe86608ed4..aac691cb4ff 100644 --- a/Mage.Sets/src/mage/cards/t/TempleOfTriumph.java +++ b/Mage.Sets/src/mage/cards/t/TempleOfTriumph.java @@ -23,7 +23,7 @@ public final class TempleOfTriumph extends CardImpl { // Temple of Triumph enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); // When Temple of Triumph enters the battlefield, scry 1. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1, false))); // {T}: Add {R} or {W}. this.addAbility(new RedManaAbility()); this.addAbility(new WhiteManaAbility()); diff --git a/Mage.Sets/src/mage/cards/t/TenthDistrictLegionnaire.java b/Mage.Sets/src/mage/cards/t/TenthDistrictLegionnaire.java index b4e52204603..22ac220bb93 100644 --- a/Mage.Sets/src/mage/cards/t/TenthDistrictLegionnaire.java +++ b/Mage.Sets/src/mage/cards/t/TenthDistrictLegionnaire.java @@ -34,7 +34,7 @@ public final class TenthDistrictLegionnaire extends CardImpl { Ability ability = new HeroicAbility(new AddCountersSourceEffect( CounterType.P1P1.createInstance() ), false, false); - ability.addEffect(new ScryEffect(1).concatBy(", then")); + ability.addEffect(new ScryEffect(1, false).concatBy(", then")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TergridGodOfFright.java b/Mage.Sets/src/mage/cards/t/TergridGodOfFright.java index 9a8c1d07d51..c6f5de8ffc7 100644 --- a/Mage.Sets/src/mage/cards/t/TergridGodOfFright.java +++ b/Mage.Sets/src/mage/cards/t/TergridGodOfFright.java @@ -46,7 +46,7 @@ public final class TergridGodOfFright extends ModalDoubleFacesCard { this.getLeftHalfCard().setPT(4, 5); // Menace - this.getLeftHalfCard().addAbility(new MenaceAbility()); + this.getLeftHalfCard().addAbility(new MenaceAbility(false)); // Whenever an opponent sacrifices a nontoken permanent or discards a permanent card, you may put that card onto the battlefield under your control from their graveyard. this.getLeftHalfCard().addAbility(new TergridGodOfFrightTriggeredAbility()); diff --git a/Mage.Sets/src/mage/cards/t/TerrorOfKruinPass.java b/Mage.Sets/src/mage/cards/t/TerrorOfKruinPass.java index 7811cf8be57..987091f32de 100644 --- a/Mage.Sets/src/mage/cards/t/TerrorOfKruinPass.java +++ b/Mage.Sets/src/mage/cards/t/TerrorOfKruinPass.java @@ -37,7 +37,7 @@ public final class TerrorOfKruinPass extends CardImpl { // Werewolves you control have menace. (They can't be blocked except by two or more creatures.) this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( - new MenaceAbility(false), Duration.WhileOnBattlefield, filter, false + new MenaceAbility(), Duration.WhileOnBattlefield, filter, false ))); // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Terror of Kruin Pass. diff --git a/Mage.Sets/src/mage/cards/t/TezzeretsStrider.java b/Mage.Sets/src/mage/cards/t/TezzeretsStrider.java index f6ee5a04243..528ca79b88a 100644 --- a/Mage.Sets/src/mage/cards/t/TezzeretsStrider.java +++ b/Mage.Sets/src/mage/cards/t/TezzeretsStrider.java @@ -39,11 +39,12 @@ public final class TezzeretsStrider extends CardImpl { Zone.BATTLEFIELD, new ConditionalContinuousEffect( new GainAbilitySourceEffect( - new MenaceAbility(), + new MenaceAbility(true), Duration.WhileOnBattlefield ), new PermanentsOnTheBattlefieldCondition(filter), - "As long as you control a Tezzeret planeswalker, {this} has menace" + "As long as you control a Tezzeret planeswalker, {this} has menace. " + + "(It can't be blocked except by two or more creatures.)" ) )); } diff --git a/Mage.Sets/src/mage/cards/t/ThassaGodOfTheSea.java b/Mage.Sets/src/mage/cards/t/ThassaGodOfTheSea.java index 0b774119ffe..d9b66b2fc69 100644 --- a/Mage.Sets/src/mage/cards/t/ThassaGodOfTheSea.java +++ b/Mage.Sets/src/mage/cards/t/ThassaGodOfTheSea.java @@ -41,7 +41,7 @@ public final class ThassaGodOfTheSea extends CardImpl { // At the beginning of your upkeep, scry 1. this.addAbility(new BeginningOfUpkeepTriggeredAbility( - new ScryEffect(1), TargetController.YOU, false + new ScryEffect(1, false), TargetController.YOU, false )); // {1}{U}: Target creature you control can't be blocked this turn. diff --git a/Mage.Sets/src/mage/cards/t/ThaumaturgesFamiliar.java b/Mage.Sets/src/mage/cards/t/ThaumaturgesFamiliar.java index 2b27b0feb0a..c3ba51397c2 100644 --- a/Mage.Sets/src/mage/cards/t/ThaumaturgesFamiliar.java +++ b/Mage.Sets/src/mage/cards/t/ThaumaturgesFamiliar.java @@ -27,7 +27,7 @@ public final class ThaumaturgesFamiliar extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // When Thaumaturge's Familiar enters the battlefield, scry 1. - this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1, false))); } private ThaumaturgesFamiliar(final ThaumaturgesFamiliar card) { diff --git a/Mage.Sets/src/mage/cards/u/UndercityNecrolisk.java b/Mage.Sets/src/mage/cards/u/UndercityNecrolisk.java index 739a1181e00..67666a62983 100644 --- a/Mage.Sets/src/mage/cards/u/UndercityNecrolisk.java +++ b/Mage.Sets/src/mage/cards/u/UndercityNecrolisk.java @@ -3,18 +3,18 @@ package mage.cards.u; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; +import mage.abilities.ActivatedAbilityImpl; import mage.abilities.common.ActivateAsSorceryActivatedAbility; +import mage.abilities.costs.Cost; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.MenaceAbility; -import mage.constants.SubType; +import mage.constants.*; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Zone; import mage.counters.CounterType; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledPermanent; @@ -42,19 +42,22 @@ public final class UndercityNecrolisk extends CardImpl { this.power = new MageInt(3); this.toughness = new MageInt(3); - // {1}, Sacrifice another creature: Put a +1/+1 counter on Undercity Necrolisk. It gains menace until end of turn. Activate this ability only any time you could cast a sorcery. - Ability ability = new ActivateAsSorceryActivatedAbility( + // {1}, Sacrifice another creature: + // Put a +1/+1 counter on Undercity Necrolisk. + Ability ability = new SilencedActivateAsSorceryActivatedAbility( Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new GenericManaCost(1) ); - ability.addEffect(new GainAbilitySourceEffect( - new MenaceAbility(), - Duration.EndOfTurn - ).setText("It gains menace until end of turn.")); ability.addCost(new SacrificeTargetCost( new TargetControlledPermanent(filter) )); + // It gains menace until end of turn. Activate this ability only any time you could cast a sorcery. + ability.addEffect(new GainAbilitySourceEffect( + new MenaceAbility(), + Duration.EndOfTurn + ).setText("It gains menace until end of turn. Activate only as a sorcery. " + + "(It can't be blocked except by two or more creatures.)")); this.addAbility(ability); } @@ -67,3 +70,23 @@ public final class UndercityNecrolisk extends CardImpl { return new UndercityNecrolisk(this); } } + +// Needed in order to move menace hint text to the very end. +class SilencedActivateAsSorceryActivatedAbility extends ActivatedAbilityImpl { + SilencedActivateAsSorceryActivatedAbility(Zone zone, Effect effect, Cost cost) { + super(zone, effect, cost); + timing = TimingRule.SORCERY; + } + + private SilencedActivateAsSorceryActivatedAbility(final SilencedActivateAsSorceryActivatedAbility ability) { + super(ability); + } + + @Override + public SilencedActivateAsSorceryActivatedAbility copy() { + return new SilencedActivateAsSorceryActivatedAbility(this); + } + + @Override + public String getRule() { return super.getRule(); } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/u/UntamedHunger.java b/Mage.Sets/src/mage/cards/u/UntamedHunger.java index db93e685300..38048d27704 100644 --- a/Mage.Sets/src/mage/cards/u/UntamedHunger.java +++ b/Mage.Sets/src/mage/cards/u/UntamedHunger.java @@ -40,7 +40,8 @@ public final class UntamedHunger extends CardImpl { // Enchanted creature gets +2/+1 and has menace. ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 1)); Effect effect = new GainAbilityAttachedEffect(new MenaceAbility(), AttachmentType.AURA); - effect.setText("and has menace"); + effect.setText("and has menace. " + + "(It can't be blocked except by two or more creatures.)"); ability.addEffect(effect); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/v/ValentinDeanOfTheVein.java b/Mage.Sets/src/mage/cards/v/ValentinDeanOfTheVein.java index 113ebfeda14..47d2369a315 100644 --- a/Mage.Sets/src/mage/cards/v/ValentinDeanOfTheVein.java +++ b/Mage.Sets/src/mage/cards/v/ValentinDeanOfTheVein.java @@ -44,7 +44,7 @@ public final class ValentinDeanOfTheVein extends ModalDoubleFacesCard { this.getLeftHalfCard().setPT(1, 1); // Menace - this.getLeftHalfCard().addAbility(new MenaceAbility()); + this.getLeftHalfCard().addAbility(new MenaceAbility(false)); // Lifelink this.getLeftHalfCard().addAbility(LifelinkAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/v/VeinwitchCoven.java b/Mage.Sets/src/mage/cards/v/VeinwitchCoven.java index c7df40fe6b7..46bd550085d 100644 --- a/Mage.Sets/src/mage/cards/v/VeinwitchCoven.java +++ b/Mage.Sets/src/mage/cards/v/VeinwitchCoven.java @@ -30,7 +30,7 @@ public final class VeinwitchCoven extends CardImpl { this.toughness = new MageInt(3); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever you gain life, you pay {B}. If you do, return target creature card from your graveyard to your hand. Ability ability = new GainLifeControllerTriggeredAbility(new DoIfCostPaid( diff --git a/Mage.Sets/src/mage/cards/v/VolatileArsonist.java b/Mage.Sets/src/mage/cards/v/VolatileArsonist.java index 3be8e71dada..17e4322bcf9 100644 --- a/Mage.Sets/src/mage/cards/v/VolatileArsonist.java +++ b/Mage.Sets/src/mage/cards/v/VolatileArsonist.java @@ -32,7 +32,7 @@ public final class VolatileArsonist extends CardImpl { this.secondSideCardClazz = mage.cards.d.DireStrainAnarchist.class; // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Haste this.addAbility(HasteAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/v/VoraciousVampire.java b/Mage.Sets/src/mage/cards/v/VoraciousVampire.java index a663a0c5cbd..20b8ecc9403 100644 --- a/Mage.Sets/src/mage/cards/v/VoraciousVampire.java +++ b/Mage.Sets/src/mage/cards/v/VoraciousVampire.java @@ -32,7 +32,7 @@ public final class VoraciousVampire extends CardImpl { this.toughness = new MageInt(2); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // When Voracious Vampire enters the battlefield, target Vampire you control gets +1/+1 and gains menace until end of turn. Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(1, 1, Duration.EndOfTurn), false); diff --git a/Mage.Sets/src/mage/cards/v/VowOfTorment.java b/Mage.Sets/src/mage/cards/v/VowOfTorment.java index d7882594507..1e87bcd9cf8 100644 --- a/Mage.Sets/src/mage/cards/v/VowOfTorment.java +++ b/Mage.Sets/src/mage/cards/v/VowOfTorment.java @@ -39,7 +39,8 @@ public final class VowOfTorment extends CardImpl { new MenaceAbility(), AttachmentType.AURA, Duration.WhileOnBattlefield ).setText(", has menace")); ability.addEffect(new CantAttackControllerAttachedEffect(AttachmentType.AURA) - .setText(", and can't attack you or planeswalkers you control")); + .setText(", and can't attack you or planeswalkers you control. " + + "(It can't be blocked except by two or more creatures.)")); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WarteyeWitch.java b/Mage.Sets/src/mage/cards/w/WarteyeWitch.java index 6249cb2d981..bd3406b324f 100644 --- a/Mage.Sets/src/mage/cards/w/WarteyeWitch.java +++ b/Mage.Sets/src/mage/cards/w/WarteyeWitch.java @@ -34,7 +34,7 @@ public final class WarteyeWitch extends CardImpl { // Whenever Warteye Witch or another creature you control dies, scry 1. this.addAbility(new DiesThisOrAnotherCreatureTriggeredAbility( - new ScryEffect(1), false, filter + new ScryEffect(1, false), false, filter )); } diff --git a/Mage.Sets/src/mage/cards/w/WaywardGiant.java b/Mage.Sets/src/mage/cards/w/WaywardGiant.java index 5e1cf130685..05cc2039fb3 100644 --- a/Mage.Sets/src/mage/cards/w/WaywardGiant.java +++ b/Mage.Sets/src/mage/cards/w/WaywardGiant.java @@ -22,7 +22,7 @@ public final class WaywardGiant extends CardImpl { this.toughness = new MageInt(5); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); } private WaywardGiant(final WaywardGiant card) { diff --git a/Mage.Sets/src/mage/cards/w/WeldfastMonitor.java b/Mage.Sets/src/mage/cards/w/WeldfastMonitor.java index 4995f5e6bf2..4776a5919de 100644 --- a/Mage.Sets/src/mage/cards/w/WeldfastMonitor.java +++ b/Mage.Sets/src/mage/cards/w/WeldfastMonitor.java @@ -28,8 +28,10 @@ public final class WeldfastMonitor extends CardImpl { this.toughness = new MageInt(2); // {R}: Weldfast Monitor gains menace until end of turn - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, - new GainAbilitySourceEffect(new MenaceAbility(), Duration.EndOfTurn), new ColoredManaCost(ColoredManaSymbol.R))); + this.addAbility(new SimpleActivatedAbility( + Zone.BATTLEFIELD, + new GainAbilitySourceEffect(new MenaceAbility(false), Duration.EndOfTurn), + new ColoredManaCost(ColoredManaSymbol.R))); } diff --git a/Mage.Sets/src/mage/cards/w/WitchesEye.java b/Mage.Sets/src/mage/cards/w/WitchesEye.java index 1b25f243f8c..edad0ea641a 100644 --- a/Mage.Sets/src/mage/cards/w/WitchesEye.java +++ b/Mage.Sets/src/mage/cards/w/WitchesEye.java @@ -30,7 +30,7 @@ public final class WitchesEye extends CardImpl { this.subtype.add(SubType.EQUIPMENT); // Equipped creature has "{1}, {T}: Scry 1." - Ability gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1), new GenericManaCost(1)); + Ability gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1, false), new GenericManaCost(1)); gainedAbility.addCost(new TapSourceCost()); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(gainedAbility, AttachmentType.EQUIPMENT, Duration.WhileOnBattlefield))); diff --git a/Mage.Sets/src/mage/cards/w/WitherbloomCampus.java b/Mage.Sets/src/mage/cards/w/WitherbloomCampus.java index 974751cc78d..bd573387cee 100644 --- a/Mage.Sets/src/mage/cards/w/WitherbloomCampus.java +++ b/Mage.Sets/src/mage/cards/w/WitherbloomCampus.java @@ -30,7 +30,7 @@ public final class WitherbloomCampus extends CardImpl { this.addAbility(new GreenManaAbility()); // {4}, {T}: Scry 1. - Ability ability = new SimpleActivatedAbility(new ScryEffect(1), new GenericManaCost(4)); + Ability ability = new SimpleActivatedAbility(new ScryEffect(1, false), new GenericManaCost(4)); ability.addCost(new TapSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/w/WitnessOfTomorrows.java b/Mage.Sets/src/mage/cards/w/WitnessOfTomorrows.java index c43caee131d..68c3bce0f15 100644 --- a/Mage.Sets/src/mage/cards/w/WitnessOfTomorrows.java +++ b/Mage.Sets/src/mage/cards/w/WitnessOfTomorrows.java @@ -28,7 +28,7 @@ public final class WitnessOfTomorrows extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // {3}{U}: Scry 1. - this.addAbility(new SimpleActivatedAbility(new ScryEffect(1), new ManaCostsImpl("{3}{U}"))); + this.addAbility(new SimpleActivatedAbility(new ScryEffect(1, false), new ManaCostsImpl("{3}{U}"))); } private WitnessOfTomorrows(final WitnessOfTomorrows card) { diff --git a/Mage.Sets/src/mage/cards/w/WoeStrider.java b/Mage.Sets/src/mage/cards/w/WoeStrider.java index 25828d07f55..5e22209de75 100644 --- a/Mage.Sets/src/mage/cards/w/WoeStrider.java +++ b/Mage.Sets/src/mage/cards/w/WoeStrider.java @@ -44,7 +44,7 @@ public final class WoeStrider extends CardImpl { // Sacrifice another creature: Scry 1. this.addAbility(new SimpleActivatedAbility( - new ScryEffect(1), new SacrificeTargetCost(new TargetControlledPermanent(filter)) + new ScryEffect(1, false), new SacrificeTargetCost(new TargetControlledPermanent(filter)) )); // Escape—{3}{B}{B}, Exile four other cards from your graveyard. diff --git a/Mage.Sets/src/mage/cards/y/YennettCrypticSovereign.java b/Mage.Sets/src/mage/cards/y/YennettCrypticSovereign.java index c6e65bb05b1..0474434a546 100644 --- a/Mage.Sets/src/mage/cards/y/YennettCrypticSovereign.java +++ b/Mage.Sets/src/mage/cards/y/YennettCrypticSovereign.java @@ -41,7 +41,7 @@ public final class YennettCrypticSovereign extends CardImpl { this.addAbility(VigilanceAbility.getInstance()); // Menace - this.addAbility(new MenaceAbility()); + this.addAbility(new MenaceAbility(false)); // Whenever Yennett, Cryptic Sovereign attacks, reveal the top card of your library. If that card's // converted mana cost is odd, you may cast it without paying its mana cost. Otherwise, draw a card. diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java index 276e85003cb..52d1a93c31c 100644 --- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java +++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java @@ -193,7 +193,6 @@ public class VerifyCardDataTest { // wrond card numbers skip list skipListCreate(SKIP_LIST_WRONG_CARD_NUMBERS); skipListAddName(SKIP_LIST_WRONG_CARD_NUMBERS, "SWS"); // Star Wars - skipListAddName(SKIP_LIST_WRONG_CARD_NUMBERS, "POR"); // Portal, TODO: remove after bug fixed https://github.com/mtgjson/mtgjson/issues/660 skipListAddName(SKIP_LIST_WRONG_CARD_NUMBERS, "UND"); // un-sets don't have full implementation of card variations skipListAddName(SKIP_LIST_WRONG_CARD_NUMBERS, "UST"); // un-sets don't have full implementation of card variations skipListAddName(SKIP_LIST_WRONG_CARD_NUMBERS, "SOI", "Tamiyo's Journal"); // not all variations implemented @@ -1413,22 +1412,14 @@ public class VerifyCardDataTest { // special check: missing or wrong ability/effect hints Map hints = new HashMap<>(); hints.put(MenaceAbility.class, "can't be blocked except by two or more"); - hints.put(ScryEffect.class, "Look at the top card of your library"); + hints.put(ScryEffect.class, "Look at the top card of your library. You may put that card on the bottom of your library"); for (Class objectClass : hints.keySet()) { String objectHint = hints.get(objectClass); // ability/effect must have description or not - boolean mustCheck = card.getAbilities().containsClass(objectClass) - || card.getAbilities().stream() - .map(Ability::getAllEffects) - .flatMap(Collection::stream) - .anyMatch(effect -> effect.getClass().isAssignableFrom(objectClass)); - mustCheck = false; // TODO: enable and fix all problems with effect and ability hints - if (mustCheck) { - boolean needHint = ref.text.contains(objectHint); - boolean haveHint = card.getRules().stream().anyMatch(rule -> rule.contains(objectHint)); - if (needHint != haveHint) { - fail(card, "abilities", "card have " + objectClass.getSimpleName() + " but hint is wrong (it must be " + (needHint ? "enabled" : "disabled") + ")"); - } + boolean needHint = ref.text.contains(objectHint); + boolean haveHint = card.getRules().stream().anyMatch(rule -> rule.contains(objectHint)); + if (needHint != haveHint) { + fail(card, "abilities", "card have " + objectClass.getSimpleName() + " but hint is wrong (it must be " + (needHint ? "enabled" : "disabled") + ")"); } }