From 25e4930bd5b0d6c956edb245e040740d0652053e Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Fri, 7 Feb 2025 07:37:27 +0400 Subject: [PATCH] Number of card types in graveyards - added card hint for cards like Tarmogoyf --- .../src/mage/cards/a/AltarOfTheGoyf.java | 3 +- .../src/mage/cards/a/AngelOfDeliverance.java | 4 +- Mage.Sets/src/mage/cards/a/AutumnalGloom.java | 5 +- .../mage/cards/b/BackwoodsSurvivalists.java | 5 +- .../src/mage/cards/b/BalustradeWurm.java | 4 +- Mage.Sets/src/mage/cards/b/Barrowgoyf.java | 6 +- .../src/mage/cards/b/BeastieBeatdown.java | 4 +- .../src/mage/cards/b/BloodbraidMarauder.java | 4 +- Mage.Sets/src/mage/cards/b/Broodspinner.java | 3 +- Mage.Sets/src/mage/cards/c/ConsumingBlob.java | 6 +- .../src/mage/cards/c/ConvertToSlime.java | 4 +- Mage.Sets/src/mage/cards/c/CropSigil.java | 4 +- .../src/mage/cards/d/DeathcapCultivator.java | 5 +- Mage.Sets/src/mage/cards/d/DelugeOfDoom.java | 3 +- .../src/mage/cards/d/DemolisherSpawn.java | 4 +- .../src/mage/cards/d/DemonicCounsel.java | 4 +- .../mage/cards/d/DescendUponTheSinful.java | 4 +- .../src/mage/cards/d/DesperateSentry.java | 5 +- .../src/mage/cards/d/DragToTheRoots.java | 4 +- .../mage/cards/d/DragonsRageChanneler.java | 4 +- Mage.Sets/src/mage/cards/d/DuskFeaster.java | 4 +- .../mage/cards/e/EmrakulThePromisedEnd.java | 3 +- .../src/mage/cards/e/ExtricatorOfSin.java | 4 +- .../src/mage/cards/f/FearOfBurningAlive.java | 4 +- .../src/mage/cards/f/FearOfMissingOut.java | 4 +- Mage.Sets/src/mage/cards/f/FoulWatcher.java | 4 +- .../mage/cards/g/GeistOfTheLonelyVigil.java | 5 +- .../src/mage/cards/g/GibberingFiend.java | 4 +- .../src/mage/cards/g/GnarlwoodDryad.java | 5 +- Mage.Sets/src/mage/cards/g/GougedZealot.java | 4 +- Mage.Sets/src/mage/cards/g/GrimFlayer.java | 4 +- Mage.Sets/src/mage/cards/h/HandThatFeeds.java | 4 +- .../src/mage/cards/h/HoundOfTheFarbogs.java | 5 +- .../src/mage/cards/i/ImpossibleInferno.java | 4 +- .../src/mage/cards/i/InexorableBlob.java | 4 +- Mage.Sets/src/mage/cards/i/InquisitorsOx.java | 5 +- .../src/mage/cards/i/InvasiveSurgery.java | 5 +- .../src/mage/cards/i/IshkanahGrafwidow.java | 5 +- .../src/mage/cards/k/KessigDireSwine.java | 5 +- .../src/mage/cards/k/KindlyStranger.java | 4 +- Mage.Sets/src/mage/cards/l/LetsPlayAGame.java | 4 +- Mage.Sets/src/mage/cards/l/Lhurgoyf.java | 5 +- Mage.Sets/src/mage/cards/l/LucidDreams.java | 3 +- Mage.Sets/src/mage/cards/m/ManicScribe.java | 4 +- .../src/mage/cards/m/MightBeyondReason.java | 4 +- .../src/mage/cards/m/MindwrackDemon.java | 4 +- .../src/mage/cards/m/MoldgrafScavenger.java | 5 +- .../src/mage/cards/m/MoorlandDrifter.java | 5 +- Mage.Sets/src/mage/cards/m/Mournwillow.java | 4 +- Mage.Sets/src/mage/cards/n/Nethergoyf.java | 6 +- .../src/mage/cards/n/NighthawkScavenger.java | 3 +- .../src/mage/cards/o/ObsessiveSkinner.java | 4 +- .../src/mage/cards/o/OmnivorousFlytrap.java | 3 +- .../src/mage/cards/p/ParanoidParishBlade.java | 5 +- .../src/mage/cards/p/PatchworkBeastie.java | 4 +- .../src/mage/cards/p/PeerPastTheVeil.java | 3 +- Mage.Sets/src/mage/cards/p/PickTheBrain.java | 5 +- Mage.Sets/src/mage/cards/p/Polygoyf.java | 6 +- .../src/mage/cards/p/PropheticTitan.java | 4 +- Mage.Sets/src/mage/cards/p/Pyrogoyf.java | 6 +- .../src/mage/cards/r/RavingVisionary.java | 4 +- .../cards/r/ReaperOfFlightMoonsilver.java | 6 +- .../src/mage/cards/r/ResurrectedCultist.java | 4 +- .../src/mage/cards/s/ScourTheLaboratory.java | 4 +- Mage.Sets/src/mage/cards/s/ScourgeWolf.java | 5 +- Mage.Sets/src/mage/cards/s/Scuttletide.java | 4 +- .../src/mage/cards/s/ShiftingWoodland.java | 4 +- Mage.Sets/src/mage/cards/s/SoulSwallower.java | 4 +- .../src/mage/cards/s/SoulsOfTheLost.java | 5 +- .../mage/cards/s/SpineseekerCentipede.java | 4 +- .../src/mage/cards/s/StallionOfAshmouth.java | 4 +- .../src/mage/cards/s/StrangeAugmentation.java | 5 +- Mage.Sets/src/mage/cards/t/Tarmogoyf.java | 6 +- .../mage/cards/t/TheRollercrusherRide.java | 4 +- .../src/mage/cards/t/TheSwarmweaver.java | 4 +- .../src/mage/cards/t/ThrabenFoulbloods.java | 5 +- .../src/mage/cards/t/ToTheSlaughter.java | 4 +- .../src/mage/cards/t/ToothCollector.java | 4 +- Mage.Sets/src/mage/cards/t/Topplegeist.java | 4 +- .../mage/cards/t/TraverseTheUlvenwald.java | 1 - Mage.Sets/src/mage/cards/u/UnholyHeat.java | 4 +- .../src/mage/cards/u/UrborgLhurgoyf.java | 5 +- Mage.Sets/src/mage/cards/v/ViolentUrge.java | 4 +- .../src/mage/cards/w/WhispersOfEmrakul.java | 4 +- .../src/mage/cards/w/WickerfolkThresher.java | 4 +- .../src/mage/cards/w/WildfireWickerfolk.java | 4 +- .../mage/cards/w/WinterMisanthropicGuide.java | 3 +- .../common/CardTypesInGraveyardCount.java | 66 ++++++++++++---- .../abilities/hint/ConditionTrueHint.java | 2 +- .../java/mage/abilities/hint/StaticHint.java | 2 +- .../hint/common/CardTypesInGraveyardHint.java | 79 ------------------- .../hint/common/CountersOnPermanentsHint.java | 21 ++--- .../token/ConsumingBlobOozeToken.java | 6 +- .../game/permanent/token/TarmogoyfToken.java | 4 +- 94 files changed, 245 insertions(+), 306 deletions(-) delete mode 100644 Mage/src/main/java/mage/abilities/hint/common/CardTypesInGraveyardHint.java diff --git a/Mage.Sets/src/mage/cards/a/AltarOfTheGoyf.java b/Mage.Sets/src/mage/cards/a/AltarOfTheGoyf.java index 7ad18f44840..0e4336b7179 100644 --- a/Mage.Sets/src/mage/cards/a/AltarOfTheGoyf.java +++ b/Mage.Sets/src/mage/cards/a/AltarOfTheGoyf.java @@ -5,7 +5,6 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -33,7 +32,7 @@ public final class AltarOfTheGoyf extends CardImpl { // Whenever a creature you control attacks alone, it gets +X/+X until end of turn, where X is the number of card types among cards in all graveyards. this.addAbility(new AttacksAloneControlledTriggeredAbility( new BoostTargetEffect(CardTypesInGraveyardCount.ALL, CardTypesInGraveyardCount.ALL, Duration.EndOfTurn), - true, false).addHint(CardTypesInGraveyardHint.ALL)); + true, false).addHint(CardTypesInGraveyardCount.ALL.getHint())); // Lhurgoyf creatures you control have trample. this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( diff --git a/Mage.Sets/src/mage/cards/a/AngelOfDeliverance.java b/Mage.Sets/src/mage/cards/a/AngelOfDeliverance.java index 7744b4ffe5e..429f510c433 100644 --- a/Mage.Sets/src/mage/cards/a/AngelOfDeliverance.java +++ b/Mage.Sets/src/mage/cards/a/AngelOfDeliverance.java @@ -4,8 +4,8 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DealsDamageSourceTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.ExileTargetEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -35,7 +35,7 @@ public final class AngelOfDeliverance extends CardImpl { Ability ability = new DealsDamageSourceTriggeredAbility(new ExileTargetEffect()) .withInterveningIf(DeliriumCondition.instance); ability.addTarget(new TargetOpponentsCreaturePermanent()); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM)); } diff --git a/Mage.Sets/src/mage/cards/a/AutumnalGloom.java b/Mage.Sets/src/mage/cards/a/AutumnalGloom.java index 68f7ec457de..684727c24dd 100644 --- a/Mage.Sets/src/mage/cards/a/AutumnalGloom.java +++ b/Mage.Sets/src/mage/cards/a/AutumnalGloom.java @@ -3,20 +3,19 @@ package mage.cards.a; import java.util.UUID; import mage.abilities.Ability; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.MillCardsControllerEffect; import mage.abilities.effects.common.TransformSourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.TargetController; -import mage.constants.Zone; /** * @author LevelX2 @@ -34,7 +33,7 @@ public final class AutumnalGloom extends CardImpl { this.addAbility(new TransformAbility()); Ability ability = new BeginningOfEndStepTriggeredAbility(TargetController.YOU, new TransformSourceEffect(), false, DeliriumCondition.instance); ability.setAbilityWord(AbilityWord.DELIRIUM); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BackwoodsSurvivalists.java b/Mage.Sets/src/mage/cards/b/BackwoodsSurvivalists.java index bbc0de902b5..3c6a074c89e 100644 --- a/Mage.Sets/src/mage/cards/b/BackwoodsSurvivalists.java +++ b/Mage.Sets/src/mage/cards/b/BackwoodsSurvivalists.java @@ -7,16 +7,15 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; -import mage.constants.Zone; /** * @author LevelX2 @@ -33,7 +32,7 @@ public final class BackwoodsSurvivalists extends CardImpl { ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new BoostSourceEffect(1, 1, Duration.WhileOnBattlefield), DeliriumCondition.instance, "Delirium — {this} gets +1/+1"); Ability ability = new SimpleStaticAbility(effect); ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance()), DeliriumCondition.instance, "and has trample as long as there are four or more card types among cards in your graveyard.")); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/b/BalustradeWurm.java b/Mage.Sets/src/mage/cards/b/BalustradeWurm.java index 320e73ec35f..e81434332fb 100644 --- a/Mage.Sets/src/mage/cards/b/BalustradeWurm.java +++ b/Mage.Sets/src/mage/cards/b/BalustradeWurm.java @@ -5,8 +5,8 @@ import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.common.CantBeCounteredSourceAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldWithCounterEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; @@ -42,7 +42,7 @@ public final class BalustradeWurm extends CardImpl { Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldWithCounterEffect(CounterType.FINALITY.createInstance(), false), new ManaCostsImpl<>("{2}{G}{G}"), DeliriumCondition.instance, TimingRule.SORCERY - ).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU)); + ).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private BalustradeWurm(final BalustradeWurm card) { diff --git a/Mage.Sets/src/mage/cards/b/Barrowgoyf.java b/Mage.Sets/src/mage/cards/b/Barrowgoyf.java index d77d6dfc6ab..beaa3fd5259 100644 --- a/Mage.Sets/src/mage/cards/b/Barrowgoyf.java +++ b/Mage.Sets/src/mage/cards/b/Barrowgoyf.java @@ -24,8 +24,6 @@ import java.util.UUID; */ public final class Barrowgoyf extends CardImpl { - private static final DynamicValue powerValue = CardTypesInGraveyardCount.ALL; - public Barrowgoyf(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}"); this.subtype.add(SubType.LHURGOYF); @@ -40,7 +38,9 @@ public final class Barrowgoyf extends CardImpl { this.addAbility(LifelinkAbility.getInstance()); // Barrowgoyf's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1. - this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue))); + this.addAbility(new SimpleStaticAbility(Zone.ALL, + new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.ALL) + ).addHint(CardTypesInGraveyardCount.ALL.getHint())); // Whenever Barrowgoyf deals combat damage to a player, you may mill that many cards. If you do, you may put a creature card from among them into your hand. this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/b/BeastieBeatdown.java b/Mage.Sets/src/mage/cards/b/BeastieBeatdown.java index 880054a14ad..afc5add0881 100644 --- a/Mage.Sets/src/mage/cards/b/BeastieBeatdown.java +++ b/Mage.Sets/src/mage/cards/b/BeastieBeatdown.java @@ -2,10 +2,10 @@ package mage.cards.b; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.DamageWithPowerFromOneToAnotherTargetEffect; import mage.abilities.effects.common.InfoEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; @@ -37,7 +37,7 @@ public final class BeastieBeatdown extends CardImpl { DeliriumCondition.instance, AbilityWord.DELIRIUM.formatWord() + "If there are four or more " + "card types among cards in your graveyard, put two +1/+1 counters on the creature you control." ).concatBy("
")); - this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); + this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint()); // The creature you control deals damage equal to its power to the creature an opponent controls. this.getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect() diff --git a/Mage.Sets/src/mage/cards/b/BloodbraidMarauder.java b/Mage.Sets/src/mage/cards/b/BloodbraidMarauder.java index 60fbd087b47..8df9a479d01 100644 --- a/Mage.Sets/src/mage/cards/b/BloodbraidMarauder.java +++ b/Mage.Sets/src/mage/cards/b/BloodbraidMarauder.java @@ -6,8 +6,8 @@ import mage.abilities.common.CantBlockAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.CascadeAbility; import mage.constants.Duration; import mage.constants.SubType; @@ -45,7 +45,7 @@ public final class BloodbraidMarauder extends CardImpl { new GainAbilitySourceEffect(new CascadeAbility(), Duration.WhileOnStack, true), DeliriumCondition.instance, "Delirium — This spell has cascade as long as there are four or more card types among cards in your graveyard." + REMINDER_TEXT - )).addHint(CardTypesInGraveyardHint.YOU)); + )).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private BloodbraidMarauder(final BloodbraidMarauder card) { diff --git a/Mage.Sets/src/mage/cards/b/Broodspinner.java b/Mage.Sets/src/mage/cards/b/Broodspinner.java index 5300633bb6b..883f54617b2 100644 --- a/Mage.Sets/src/mage/cards/b/Broodspinner.java +++ b/Mage.Sets/src/mage/cards/b/Broodspinner.java @@ -10,7 +10,6 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.keyword.SurveilEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -45,7 +44,7 @@ public final class Broodspinner extends CardImpl { new ManaCostsImpl<>("{4}{B}{G}")); ability.addCost(new TapSourceCost()); ability.addCost(new SacrificeSourceCost()); - this.addAbility(ability.addHint(CardTypesInGraveyardHint.YOU)); + this.addAbility(ability.addHint(CardTypesInGraveyardCount.YOU.getHint())); } private Broodspinner(final Broodspinner card) { diff --git a/Mage.Sets/src/mage/cards/c/ConsumingBlob.java b/Mage.Sets/src/mage/cards/c/ConsumingBlob.java index 7d4c0020801..05d372541e1 100644 --- a/Mage.Sets/src/mage/cards/c/ConsumingBlob.java +++ b/Mage.Sets/src/mage/cards/c/ConsumingBlob.java @@ -21,8 +21,6 @@ import java.util.UUID; */ public final class ConsumingBlob extends CardImpl { - private static final DynamicValue powerValue = CardTypesInGraveyardCount.YOU; - public ConsumingBlob(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}"); @@ -31,7 +29,9 @@ public final class ConsumingBlob extends CardImpl { this.toughness = new MageInt(1); // Consuming Blob's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1. - this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue))); + this.addAbility(new SimpleStaticAbility(Zone.ALL, + new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.YOU) + ).addHint(CardTypesInGraveyardCount.YOU.getHint())); // At the beginning of your end step, create a green Ooze creature token with "This creature's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1". this.addAbility(new BeginningOfEndStepTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/c/ConvertToSlime.java b/Mage.Sets/src/mage/cards/c/ConvertToSlime.java index f41238df2af..7390d1cf0f7 100644 --- a/Mage.Sets/src/mage/cards/c/ConvertToSlime.java +++ b/Mage.Sets/src/mage/cards/c/ConvertToSlime.java @@ -2,8 +2,8 @@ package mage.cards.c; import mage.abilities.Ability; import mage.abilities.condition.common.DeliriumCondition; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.OneShotEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; @@ -33,7 +33,7 @@ public final class ConvertToSlime extends CardImpl { this.getSpellAbility().addTarget(new TargetArtifactPermanent(0, 1)); this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 1)); this.getSpellAbility().addTarget(new TargetEnchantmentPermanent(0, 1)); - this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); + this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint()); } private ConvertToSlime(final ConvertToSlime card) { diff --git a/Mage.Sets/src/mage/cards/c/CropSigil.java b/Mage.Sets/src/mage/cards/c/CropSigil.java index 7ea00a9e010..e5e3284ebe9 100644 --- a/Mage.Sets/src/mage/cards/c/CropSigil.java +++ b/Mage.Sets/src/mage/cards/c/CropSigil.java @@ -3,6 +3,7 @@ package mage.cards.c; import java.util.UUID; import mage.abilities.Ability; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.costs.common.SacrificeSourceCost; @@ -10,7 +11,6 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.decorator.ConditionalActivatedAbility; import mage.abilities.effects.common.MillCardsControllerEffect; import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; @@ -42,7 +42,7 @@ public final class CropSigil extends CardImpl { ability.addTarget(new TargetCardInYourGraveyard(0, 1, StaticFilters.FILTER_CARD_CREATURE)); ability.addTarget(new TargetCardInYourGraveyard(0, 1, StaticFilters.FILTER_CARD_LAND)); ability.setAbilityWord(AbilityWord.DELIRIUM); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DeathcapCultivator.java b/Mage.Sets/src/mage/cards/d/DeathcapCultivator.java index 490a2e1f369..bb42ac47a4b 100644 --- a/Mage.Sets/src/mage/cards/d/DeathcapCultivator.java +++ b/Mage.Sets/src/mage/cards/d/DeathcapCultivator.java @@ -6,8 +6,8 @@ import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.DeathtouchAbility; import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.GreenManaAbility; @@ -16,7 +16,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; -import mage.constants.Zone; /** * @author fireshoes @@ -38,7 +37,7 @@ public final class DeathcapCultivator extends CardImpl { this.addAbility(new SimpleStaticAbility( new ConditionalContinuousEffect(new GainAbilitySourceEffect(DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield), DeliriumCondition.instance, "Delirium — {this} has deathtouch as long as there are four or more card types among cards in your graveyard")) - .addHint(CardTypesInGraveyardHint.YOU)); + .addHint(CardTypesInGraveyardCount.YOU.getHint())); } private DeathcapCultivator(final DeathcapCultivator card) { diff --git a/Mage.Sets/src/mage/cards/d/DelugeOfDoom.java b/Mage.Sets/src/mage/cards/d/DelugeOfDoom.java index a8cf96890c3..7ced7fe5dd7 100644 --- a/Mage.Sets/src/mage/cards/d/DelugeOfDoom.java +++ b/Mage.Sets/src/mage/cards/d/DelugeOfDoom.java @@ -4,7 +4,6 @@ import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.dynamicvalue.common.SignInversionDynamicValue; import mage.abilities.effects.common.continuous.BoostAllEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -25,7 +24,7 @@ public final class DelugeOfDoom extends CardImpl { // All creatures get -X/-X until end of turn, where X is the number of card types among cards in your graveyard. this.getSpellAbility().addEffect(new BoostAllEffect(xValue, xValue, Duration.EndOfTurn) .setText("all creatures get -X/-X until end of turn, where X is the number of card types among cards in your graveyard")); - this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); + this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint()); } private DelugeOfDoom(final DelugeOfDoom card) { diff --git a/Mage.Sets/src/mage/cards/d/DemolisherSpawn.java b/Mage.Sets/src/mage/cards/d/DemolisherSpawn.java index 4a236b49b07..952cff306cb 100644 --- a/Mage.Sets/src/mage/cards/d/DemolisherSpawn.java +++ b/Mage.Sets/src/mage/cards/d/DemolisherSpawn.java @@ -4,8 +4,8 @@ import mage.MageInt; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.BoostAllEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; @@ -43,7 +43,7 @@ public final class DemolisherSpawn extends CardImpl { StaticFilters.FILTER_ATTACKING_CREATURES, true )), DeliriumCondition.instance, "Whenever {this} attacks, if there are four or more " + "card types among cards in your graveyard, other attacking creatures get +4/+4 until end of turn." - ).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU)); + ).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private DemolisherSpawn(final DemolisherSpawn card) { diff --git a/Mage.Sets/src/mage/cards/d/DemonicCounsel.java b/Mage.Sets/src/mage/cards/d/DemonicCounsel.java index 2cbfc256e9d..d48798f170d 100644 --- a/Mage.Sets/src/mage/cards/d/DemonicCounsel.java +++ b/Mage.Sets/src/mage/cards/d/DemonicCounsel.java @@ -2,8 +2,8 @@ package mage.cards.d; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; @@ -38,7 +38,7 @@ public final class DemonicCounsel extends CardImpl { "If there are four or more card types among cards in your graveyard, " + "instead search your library for any card, put it into your hand, then shuffle." )); - this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); + this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint()); } private DemonicCounsel(final DemonicCounsel card) { diff --git a/Mage.Sets/src/mage/cards/d/DescendUponTheSinful.java b/Mage.Sets/src/mage/cards/d/DescendUponTheSinful.java index 364aa505c4f..7b6bcfc6da5 100644 --- a/Mage.Sets/src/mage/cards/d/DescendUponTheSinful.java +++ b/Mage.Sets/src/mage/cards/d/DescendUponTheSinful.java @@ -4,10 +4,10 @@ import java.util.UUID; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.Effect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.ExileAllEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -29,7 +29,7 @@ public final class DescendUponTheSinful extends CardImpl { Effect effect = new ConditionalOneShotEffect(new CreateTokenEffect(new AngelToken()), DeliriumCondition.instance); effect.setText("
Delirium — Create a 4/4 white Angel creature token with flying if there are four or more card types among cards in your graveyard"); this.getSpellAbility().addEffect(effect); - this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); + this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint()); } private DescendUponTheSinful(final DescendUponTheSinful card) { diff --git a/Mage.Sets/src/mage/cards/d/DesperateSentry.java b/Mage.Sets/src/mage/cards/d/DesperateSentry.java index 1035a151ee7..ffe523efb86 100644 --- a/Mage.Sets/src/mage/cards/d/DesperateSentry.java +++ b/Mage.Sets/src/mage/cards/d/DesperateSentry.java @@ -8,15 +8,14 @@ import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; -import mage.constants.Zone; import mage.game.permanent.token.EldraziHorrorToken; /** @@ -39,7 +38,7 @@ public final class DesperateSentry extends CardImpl { new BoostSourceEffect(3, 0, Duration.WhileOnBattlefield), DeliriumCondition.instance, "Delirium — {this} gets +3/+0 as long as there are four or more card types among cards in your graveyard."); Ability ability = new SimpleStaticAbility(effect); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/d/DragToTheRoots.java b/Mage.Sets/src/mage/cards/d/DragToTheRoots.java index 39072165c39..bd9889f4681 100644 --- a/Mage.Sets/src/mage/cards/d/DragToTheRoots.java +++ b/Mage.Sets/src/mage/cards/d/DragToTheRoots.java @@ -2,9 +2,9 @@ package mage.cards.d; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; @@ -26,7 +26,7 @@ public final class DragToTheRoots extends CardImpl { this.addAbility(new SimpleStaticAbility( Zone.ALL, new SpellCostReductionSourceEffect(2, DeliriumCondition.instance) .setText("this spell costs {2} less to cast as long as there are four or more card types among cards in your graveyard") - ).setRuleAtTheTop(true).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU)); + ).setRuleAtTheTop(true).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint())); // Destroy target nonland permanent. this.getSpellAbility().addEffect(new DestroyTargetEffect()); diff --git a/Mage.Sets/src/mage/cards/d/DragonsRageChanneler.java b/Mage.Sets/src/mage/cards/d/DragonsRageChanneler.java index e506d0f759b..c8f03aed66c 100644 --- a/Mage.Sets/src/mage/cards/d/DragonsRageChanneler.java +++ b/Mage.Sets/src/mage/cards/d/DragonsRageChanneler.java @@ -7,11 +7,11 @@ import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalRequirementEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.combat.AttacksIfAbleSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.keyword.SurveilEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -55,7 +55,7 @@ public final class DragonsRageChanneler extends CardImpl { DeliriumCondition.instance, ", and attacks each combat if able" )); ability.setAbilityWord(AbilityWord.DELIRIUM); - this.addAbility(ability.addHint(CardTypesInGraveyardHint.YOU)); + this.addAbility(ability.addHint(CardTypesInGraveyardCount.YOU.getHint())); } private DragonsRageChanneler(final DragonsRageChanneler card) { diff --git a/Mage.Sets/src/mage/cards/d/DuskFeaster.java b/Mage.Sets/src/mage/cards/d/DuskFeaster.java index f9eec9322ea..6e61fc698b7 100644 --- a/Mage.Sets/src/mage/cards/d/DuskFeaster.java +++ b/Mage.Sets/src/mage/cards/d/DuskFeaster.java @@ -4,8 +4,8 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -31,7 +31,7 @@ public final class DuskFeaster extends CardImpl { Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(2, DeliriumCondition.instance)); ability.setRuleAtTheTop(true); ability.setAbilityWord(AbilityWord.DELIRIUM); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); // Flying diff --git a/Mage.Sets/src/mage/cards/e/EmrakulThePromisedEnd.java b/Mage.Sets/src/mage/cards/e/EmrakulThePromisedEnd.java index 796a062865f..f670fc0c853 100644 --- a/Mage.Sets/src/mage/cards/e/EmrakulThePromisedEnd.java +++ b/Mage.Sets/src/mage/cards/e/EmrakulThePromisedEnd.java @@ -7,7 +7,6 @@ import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CastSourceTriggeredAbility; import mage.abilities.effects.common.cost.SpellCostReductionForEachSourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.abilities.keyword.TrampleAbility; @@ -46,7 +45,7 @@ public final class EmrakulThePromisedEnd extends CardImpl { new SpellCostReductionForEachSourceEffect( 1, CardTypesInGraveyardCount.YOU ).setText("this spell costs {1} less to cast for each card type among cards in your graveyard") - ).setRuleAtTheTop(true).addHint(CardTypesInGraveyardHint.YOU)); + ).setRuleAtTheTop(true).addHint(CardTypesInGraveyardCount.YOU.getHint())); // When you cast Emrakul, you gain control of target opponent during that player's next turn. After that turn, that player takes an extra turn. Ability ability = new CastSourceTriggeredAbility(new EmrakulThePromisedEndGainControlEffect()); diff --git a/Mage.Sets/src/mage/cards/e/ExtricatorOfSin.java b/Mage.Sets/src/mage/cards/e/ExtricatorOfSin.java index 0857484b68b..9187fc51e56 100644 --- a/Mage.Sets/src/mage/cards/e/ExtricatorOfSin.java +++ b/Mage.Sets/src/mage/cards/e/ExtricatorOfSin.java @@ -3,6 +3,7 @@ package mage.cards.e; import java.util.UUID; import mage.MageInt; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; @@ -11,7 +12,6 @@ import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.TransformSourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -52,7 +52,7 @@ public final class ExtricatorOfSin extends CardImpl { DeliriumCondition.instance, "Delirium — At the beginning of your upkeep, if there are four or more card types among cards in your graveyard, " + " transform {this}.") - .addHint(CardTypesInGraveyardHint.YOU)); + .addHint(CardTypesInGraveyardCount.YOU.getHint())); } private ExtricatorOfSin(final ExtricatorOfSin card) { diff --git a/Mage.Sets/src/mage/cards/f/FearOfBurningAlive.java b/Mage.Sets/src/mage/cards/f/FearOfBurningAlive.java index 11c737ebbf4..0f04e9a404f 100644 --- a/Mage.Sets/src/mage/cards/f/FearOfBurningAlive.java +++ b/Mage.Sets/src/mage/cards/f/FearOfBurningAlive.java @@ -4,10 +4,10 @@ import mage.MageInt; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.dynamicvalue.common.SavedDamageValue; import mage.abilities.effects.common.DamagePlayersEffect; import mage.abilities.effects.common.DamageTargetEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; @@ -60,7 +60,7 @@ class FearOfBurningAliveTriggeredAbility extends TriggeredAbilityImpl { this.setTriggerPhrase("Whenever a source you control deals noncombat damage to an opponent, " + "if there are four or more card types among cards in your graveyard, "); this.setAbilityWord(AbilityWord.DELIRIUM); - this.addHint(CardTypesInGraveyardHint.YOU); + this.addHint(CardTypesInGraveyardCount.YOU.getHint()); } private FearOfBurningAliveTriggeredAbility(final FearOfBurningAliveTriggeredAbility ability) { diff --git a/Mage.Sets/src/mage/cards/f/FearOfMissingOut.java b/Mage.Sets/src/mage/cards/f/FearOfMissingOut.java index 863e38cab8e..fc56747b5da 100644 --- a/Mage.Sets/src/mage/cards/f/FearOfMissingOut.java +++ b/Mage.Sets/src/mage/cards/f/FearOfMissingOut.java @@ -6,11 +6,11 @@ import mage.abilities.common.AttacksFirstTimeTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.AdditionalCombatPhaseEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.effects.common.discard.DiscardControllerEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -45,7 +45,7 @@ public final class FearOfMissingOut extends CardImpl { ); ability.addTarget(new TargetCreaturePermanent()); ability.addEffect(new AdditionalCombatPhaseEffect()); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/f/FoulWatcher.java b/Mage.Sets/src/mage/cards/f/FoulWatcher.java index 71f022b921f..2dd18f44992 100644 --- a/Mage.Sets/src/mage/cards/f/FoulWatcher.java +++ b/Mage.Sets/src/mage/cards/f/FoulWatcher.java @@ -5,9 +5,9 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.keyword.SurveilEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -41,7 +41,7 @@ public final class FoulWatcher extends CardImpl { this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( new BoostSourceEffect(1, 0, Duration.WhileOnBattlefield), DeliriumCondition.instance, "{this} gets +1/+0 as long as there are four or more card types among cards in your graveyard" - )).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU)); + )).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private FoulWatcher(final FoulWatcher card) { diff --git a/Mage.Sets/src/mage/cards/g/GeistOfTheLonelyVigil.java b/Mage.Sets/src/mage/cards/g/GeistOfTheLonelyVigil.java index bc4bbf53e9e..111beec528c 100644 --- a/Mage.Sets/src/mage/cards/g/GeistOfTheLonelyVigil.java +++ b/Mage.Sets/src/mage/cards/g/GeistOfTheLonelyVigil.java @@ -6,9 +6,9 @@ import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalAsThoughEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.Effect; import mage.abilities.effects.common.combat.CanAttackAsThoughItDidntHaveDefenderSourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.DefenderAbility; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; @@ -16,7 +16,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; -import mage.constants.Zone; /** * @author LevelX2 @@ -40,7 +39,7 @@ public final class GeistOfTheLonelyVigil extends CardImpl { new CanAttackAsThoughItDidntHaveDefenderSourceEffect(Duration.WhileOnBattlefield), DeliriumCondition.instance); effect.setText("Delirium — {this} can attack as though it didn't have defender as long as there are four or more card types among cards in your graveyard"); - this.addAbility(new SimpleStaticAbility(effect).addHint(CardTypesInGraveyardHint.YOU)); + this.addAbility(new SimpleStaticAbility(effect).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private GeistOfTheLonelyVigil(final GeistOfTheLonelyVigil card) { diff --git a/Mage.Sets/src/mage/cards/g/GibberingFiend.java b/Mage.Sets/src/mage/cards/g/GibberingFiend.java index b05c29f8241..4ff11c3ffdf 100644 --- a/Mage.Sets/src/mage/cards/g/GibberingFiend.java +++ b/Mage.Sets/src/mage/cards/g/GibberingFiend.java @@ -3,13 +3,13 @@ package mage.cards.g; import java.util.UUID; import mage.MageInt; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.DamagePlayersEffect; import mage.abilities.effects.common.DamageTargetEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -37,7 +37,7 @@ public final class GibberingFiend extends CardImpl { DeliriumCondition.instance, "Delirium — At the beginning of each opponent's upkeep, if there are four or more card types among cards in your graveyard, " + "{this} deals 1 damage to that player.") - .addHint(CardTypesInGraveyardHint.YOU)); + .addHint(CardTypesInGraveyardCount.YOU.getHint())); } private GibberingFiend(final GibberingFiend card) { diff --git a/Mage.Sets/src/mage/cards/g/GnarlwoodDryad.java b/Mage.Sets/src/mage/cards/g/GnarlwoodDryad.java index 0e28f5fbc9f..566d7974012 100644 --- a/Mage.Sets/src/mage/cards/g/GnarlwoodDryad.java +++ b/Mage.Sets/src/mage/cards/g/GnarlwoodDryad.java @@ -7,15 +7,14 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.BoostSourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.DeathtouchAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; -import mage.constants.Zone; /** * @author fireshoes @@ -37,7 +36,7 @@ public final class GnarlwoodDryad extends CardImpl { new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield), DeliriumCondition.instance, "Delirium — {this} gets +2/+2 as long as there are four or more card types among cards in your graveyard."); Ability ability = new SimpleStaticAbility(effect); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/g/GougedZealot.java b/Mage.Sets/src/mage/cards/g/GougedZealot.java index a8010194a03..e0bb7822c98 100644 --- a/Mage.Sets/src/mage/cards/g/GougedZealot.java +++ b/Mage.Sets/src/mage/cards/g/GougedZealot.java @@ -4,8 +4,8 @@ import mage.MageInt; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.DamageAllControlledTargetEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -37,7 +37,7 @@ public final class GougedZealot extends CardImpl { new AttacksTriggeredAbility(new DamageAllControlledTargetEffect(1), false, null, SetTargetPointer.PLAYER), DeliriumCondition.instance, "Delirium — Whenever {this} attacks, if there are four or more card types among cards in your graveyard, {this} deals 1 damage to each creature defending player controls." - ).addHint(CardTypesInGraveyardHint.YOU)); + ).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private GougedZealot(final GougedZealot card) { diff --git a/Mage.Sets/src/mage/cards/g/GrimFlayer.java b/Mage.Sets/src/mage/cards/g/GrimFlayer.java index bdacdade3b6..4cc289a1697 100644 --- a/Mage.Sets/src/mage/cards/g/GrimFlayer.java +++ b/Mage.Sets/src/mage/cards/g/GrimFlayer.java @@ -5,9 +5,9 @@ import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.keyword.SurveilEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -46,7 +46,7 @@ public final class GrimFlayer extends CardImpl { DeliriumCondition.instance, "{this} gets +2/+2 as long as there are " + "four or more card types among cards in your graveyard" ) - ).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU)); + ).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private GrimFlayer(final GrimFlayer card) { diff --git a/Mage.Sets/src/mage/cards/h/HandThatFeeds.java b/Mage.Sets/src/mage/cards/h/HandThatFeeds.java index 2026ccd0bf6..74f22ba1cab 100644 --- a/Mage.Sets/src/mage/cards/h/HandThatFeeds.java +++ b/Mage.Sets/src/mage/cards/h/HandThatFeeds.java @@ -5,9 +5,9 @@ import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalTriggeredAbility; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.MenaceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -37,7 +37,7 @@ public final class HandThatFeeds extends CardImpl { "card types among cards in your graveyard, it gets +2/+0 and gains menace until end of turn." ); ability.addEffect(new GainAbilitySourceEffect(new MenaceAbility(false), Duration.EndOfTurn)); - this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU)); + this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private HandThatFeeds(final HandThatFeeds card) { diff --git a/Mage.Sets/src/mage/cards/h/HoundOfTheFarbogs.java b/Mage.Sets/src/mage/cards/h/HoundOfTheFarbogs.java index ff306d916ab..cc7b247a45c 100644 --- a/Mage.Sets/src/mage/cards/h/HoundOfTheFarbogs.java +++ b/Mage.Sets/src/mage/cards/h/HoundOfTheFarbogs.java @@ -7,8 +7,8 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.MenaceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -16,7 +16,6 @@ import mage.constants.AbilityWord; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; -import mage.constants.Zone; /** * @author fireshoes @@ -37,7 +36,7 @@ public final class HoundOfTheFarbogs extends CardImpl { "{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); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/i/ImpossibleInferno.java b/Mage.Sets/src/mage/cards/i/ImpossibleInferno.java index a3a1f0073d4..e3ab722f29f 100644 --- a/Mage.Sets/src/mage/cards/i/ImpossibleInferno.java +++ b/Mage.Sets/src/mage/cards/i/ImpossibleInferno.java @@ -2,9 +2,9 @@ package mage.cards.i; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.ExileTopXMayPlayUntilEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; @@ -33,7 +33,7 @@ public final class ImpossibleInferno extends CardImpl { "four or more card types among cards in your graveyard, exile the top card of your library. " + "You may play it until the end of your next turn" )); - this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); + this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint()); } private ImpossibleInferno(final ImpossibleInferno card) { diff --git a/Mage.Sets/src/mage/cards/i/InexorableBlob.java b/Mage.Sets/src/mage/cards/i/InexorableBlob.java index 1c708a27b90..10feef7ff39 100644 --- a/Mage.Sets/src/mage/cards/i/InexorableBlob.java +++ b/Mage.Sets/src/mage/cards/i/InexorableBlob.java @@ -6,8 +6,8 @@ import mage.MageInt; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.CreateTokenEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -31,7 +31,7 @@ public final class InexorableBlob extends CardImpl { DeliriumCondition.instance, "Delirium — Whenever {this} attacks, if there are four or more card types among cards in your graveyard, " + "create a 3/3 green Ooze creature token that's tapped and attacking.") - .addHint(CardTypesInGraveyardHint.YOU)); + .addHint(CardTypesInGraveyardCount.YOU.getHint())); } private InexorableBlob(final InexorableBlob card) { diff --git a/Mage.Sets/src/mage/cards/i/InquisitorsOx.java b/Mage.Sets/src/mage/cards/i/InquisitorsOx.java index c568db0a6ec..4a28b022dd2 100644 --- a/Mage.Sets/src/mage/cards/i/InquisitorsOx.java +++ b/Mage.Sets/src/mage/cards/i/InquisitorsOx.java @@ -7,16 +7,15 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; -import mage.constants.Zone; /** * @author escplan9 (Derek Monturo - dmontur1 at gmail dot com) @@ -34,7 +33,7 @@ public final class InquisitorsOx extends CardImpl { ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new BoostSourceEffect(1, 0, Duration.WhileOnBattlefield), DeliriumCondition.instance, "Delirium — {this} gets +1/+0"); Ability ability = new SimpleStaticAbility(effect); ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(VigilanceAbility.getInstance()), DeliriumCondition.instance, "and has vigilance as long as there are four or more card types among cards in your graveyard.")); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/i/InvasiveSurgery.java b/Mage.Sets/src/mage/cards/i/InvasiveSurgery.java index 21190f5ffb2..98123488d3a 100644 --- a/Mage.Sets/src/mage/cards/i/InvasiveSurgery.java +++ b/Mage.Sets/src/mage/cards/i/InvasiveSurgery.java @@ -4,10 +4,9 @@ import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; -import mage.abilities.Mode; import mage.abilities.condition.common.DeliriumCondition; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.search.SearchTargetGraveyardHandLibraryForCardNameAndExileEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -36,7 +35,7 @@ public final class InvasiveSurgery extends CardImpl { // Delirium — If there are four or more card types among cards in your graveyard, search the graveyard, hand, and library of that spell's controller for any number of cards with the same name as that spell, exile those cards, then that player shuffles their library. this.getSpellAbility().addEffect(new InvasiveSurgeryEffect()); this.getSpellAbility().addTarget(new TargetSpell(filter)); - this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); + this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint()); } private InvasiveSurgery(final InvasiveSurgery card) { diff --git a/Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java b/Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java index 137c3d68035..cea21a63a50 100644 --- a/Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java +++ b/Mage.Sets/src/mage/cards/i/IshkanahGrafwidow.java @@ -7,18 +7,17 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.hint.ValueHint; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.ReachAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; -import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; import mage.game.permanent.token.SpiderToken; import mage.target.common.TargetOpponent; @@ -49,7 +48,7 @@ public final class IshkanahGrafwidow extends CardImpl { DeliriumCondition.instance, "Delirium — When {this} enters, if there are four or more card types among cards in your graveyard, " + "create three 1/2 green Spider creature tokens with reach."); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); // {5}{B}: Target opponent loses 1 life for each Spider you control. diff --git a/Mage.Sets/src/mage/cards/k/KessigDireSwine.java b/Mage.Sets/src/mage/cards/k/KessigDireSwine.java index 06cc7633207..ddfd4c7da83 100644 --- a/Mage.Sets/src/mage/cards/k/KessigDireSwine.java +++ b/Mage.Sets/src/mage/cards/k/KessigDireSwine.java @@ -6,15 +6,14 @@ import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; -import mage.constants.Zone; /** * @author LevelX2 @@ -32,7 +31,7 @@ public final class KessigDireSwine extends CardImpl { this.addAbility(new SimpleStaticAbility( new ConditionalContinuousEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield), DeliriumCondition.instance, "Delirium — {this} has trample as long as there are four or more card types among cards in your graveyard")) - .addHint(CardTypesInGraveyardHint.YOU)); + .addHint(CardTypesInGraveyardCount.YOU.getHint())); } private KessigDireSwine(final KessigDireSwine card) { diff --git a/Mage.Sets/src/mage/cards/k/KindlyStranger.java b/Mage.Sets/src/mage/cards/k/KindlyStranger.java index d6edfa74ece..d0cb859635d 100644 --- a/Mage.Sets/src/mage/cards/k/KindlyStranger.java +++ b/Mage.Sets/src/mage/cards/k/KindlyStranger.java @@ -4,8 +4,8 @@ import mage.MageInt; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.decorator.ConditionalActivatedAbility; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.TransformSourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.TransformAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -34,7 +34,7 @@ public final class KindlyStranger extends CardImpl { Zone.BATTLEFIELD, new TransformSourceEffect(), new ManaCostsImpl<>("{2}{B}"), DeliriumCondition.instance, "Delirium — {2}{B}: Transform {this}. " + "Activate only if there are four or more card types among cards in your graveyard." - ).addHint(CardTypesInGraveyardHint.YOU)); + ).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private KindlyStranger(final KindlyStranger card) { diff --git a/Mage.Sets/src/mage/cards/l/LetsPlayAGame.java b/Mage.Sets/src/mage/cards/l/LetsPlayAGame.java index 3dd5c6a9a8b..0a9acbe082d 100644 --- a/Mage.Sets/src/mage/cards/l/LetsPlayAGame.java +++ b/Mage.Sets/src/mage/cards/l/LetsPlayAGame.java @@ -2,12 +2,12 @@ package mage.cards.l; import mage.abilities.Mode; import mage.abilities.condition.common.DeliriumCondition; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.LoseLifeOpponentsEffect; import mage.abilities.effects.common.continuous.BoostAllEffect; import mage.abilities.effects.common.discard.DiscardEachPlayerEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; @@ -32,7 +32,7 @@ public final class LetsPlayAGame extends CardImpl { ); this.getSpellAbility().getModes().setMoreCondition(3, DeliriumCondition.instance); this.getSpellAbility().setAbilityWord(AbilityWord.DELIRIUM); - this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); + this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint()); // * Creatures your opponents control get -1/-1 until end of turn. this.getSpellAbility().addEffect(new BoostAllEffect( diff --git a/Mage.Sets/src/mage/cards/l/Lhurgoyf.java b/Mage.Sets/src/mage/cards/l/Lhurgoyf.java index 8787c128f77..e53c24dc5f1 100644 --- a/Mage.Sets/src/mage/cards/l/Lhurgoyf.java +++ b/Mage.Sets/src/mage/cards/l/Lhurgoyf.java @@ -5,6 +5,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.CardsInAllGraveyardsCount; import mage.abilities.effects.common.continuous.SetBasePowerToughnessPlusOneSourceEffect; +import mage.abilities.hint.ValueHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -30,7 +31,9 @@ public final class Lhurgoyf extends CardImpl { this.toughness = new MageInt(0); // Lhurgoyf's power is equal to the number of creature cards in all graveyards and its toughness is equal to that number plus 1. - this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue))); + this.addAbility(new SimpleStaticAbility(Zone.ALL, + new SetBasePowerToughnessPlusOneSourceEffect(powerValue) + ).addHint(new ValueHint("Creature cards in all graveyards", powerValue))); } private Lhurgoyf(final Lhurgoyf card) { diff --git a/Mage.Sets/src/mage/cards/l/LucidDreams.java b/Mage.Sets/src/mage/cards/l/LucidDreams.java index b4385afb815..8fee8532cee 100644 --- a/Mage.Sets/src/mage/cards/l/LucidDreams.java +++ b/Mage.Sets/src/mage/cards/l/LucidDreams.java @@ -2,7 +2,6 @@ package mage.cards.l; import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.DrawCardSourceControllerEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -20,7 +19,7 @@ public final class LucidDreams extends CardImpl { // Draw X cards, where X is the number of card types among cards in your graveyard. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(CardTypesInGraveyardCount.YOU) .setText("draw X cards, where X is the number of card types among cards in your graveyard")); - this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); + this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint()); } private LucidDreams(final LucidDreams card) { diff --git a/Mage.Sets/src/mage/cards/m/ManicScribe.java b/Mage.Sets/src/mage/cards/m/ManicScribe.java index cfeb585f4b4..78767f93007 100644 --- a/Mage.Sets/src/mage/cards/m/ManicScribe.java +++ b/Mage.Sets/src/mage/cards/m/ManicScribe.java @@ -1,13 +1,13 @@ package mage.cards.m; import mage.MageInt; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.MillCardsEachPlayerEffect; import mage.abilities.effects.common.MillCardsTargetEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -42,7 +42,7 @@ public final class ManicScribe extends CardImpl { false ), DeliriumCondition.instance, "Delirium — At the beginning of each opponent's upkeep, " + "if there are four or more card types among cards in your graveyard, that player mills three cards." - ).addHint(CardTypesInGraveyardHint.YOU)); + ).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private ManicScribe(final ManicScribe card) { diff --git a/Mage.Sets/src/mage/cards/m/MightBeyondReason.java b/Mage.Sets/src/mage/cards/m/MightBeyondReason.java index 1bddab66c32..ce0b0d439d6 100644 --- a/Mage.Sets/src/mage/cards/m/MightBeyondReason.java +++ b/Mage.Sets/src/mage/cards/m/MightBeyondReason.java @@ -4,8 +4,8 @@ import java.util.UUID; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.counter.AddCountersTargetEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -30,7 +30,7 @@ public final class MightBeyondReason extends CardImpl { + "Delirium — Put three +1/+1 counters on that creature instead if there are four or more card types among cards in your graveyard" )); getSpellAbility().addTarget(new TargetCreaturePermanent()); - getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); + getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint()); } private MightBeyondReason(final MightBeyondReason card) { diff --git a/Mage.Sets/src/mage/cards/m/MindwrackDemon.java b/Mage.Sets/src/mage/cards/m/MindwrackDemon.java index 5099b17839d..c318d5a3d7f 100644 --- a/Mage.Sets/src/mage/cards/m/MindwrackDemon.java +++ b/Mage.Sets/src/mage/cards/m/MindwrackDemon.java @@ -4,6 +4,7 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.InvertCondition; @@ -11,7 +12,6 @@ import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.abilities.effects.common.MillCardsControllerEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; @@ -44,7 +44,7 @@ public final class MindwrackDemon extends CardImpl { new BeginningOfUpkeepTriggeredAbility(new LoseLifeSourceControllerEffect(4)), new InvertCondition(DeliriumCondition.instance), "Delirium — At the beginning of your upkeep, you lose 4 life unless there are four or more card types among cards in your graveyard."); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/m/MoldgrafScavenger.java b/Mage.Sets/src/mage/cards/m/MoldgrafScavenger.java index b6842794785..667531c4ed7 100644 --- a/Mage.Sets/src/mage/cards/m/MoldgrafScavenger.java +++ b/Mage.Sets/src/mage/cards/m/MoldgrafScavenger.java @@ -6,14 +6,13 @@ import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.BoostSourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; -import mage.constants.Zone; /** * @author LevelX2 @@ -31,7 +30,7 @@ public final class MoldgrafScavenger extends CardImpl { new BoostSourceEffect(3, 0, Duration.WhileOnBattlefield), DeliriumCondition.instance, "Delirium — {this} gets +3/+0 as long as there are four or more card types among cards in your graveyard")) - .addHint(CardTypesInGraveyardHint.YOU)); + .addHint(CardTypesInGraveyardCount.YOU.getHint())); } private MoldgrafScavenger(final MoldgrafScavenger card) { diff --git a/Mage.Sets/src/mage/cards/m/MoorlandDrifter.java b/Mage.Sets/src/mage/cards/m/MoorlandDrifter.java index 2ac12774623..6210d3e77cb 100644 --- a/Mage.Sets/src/mage/cards/m/MoorlandDrifter.java +++ b/Mage.Sets/src/mage/cards/m/MoorlandDrifter.java @@ -6,14 +6,13 @@ import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.constants.Zone; /** * @author escplan9 (Derek Monturo - dmontur1 at gmail dot com) @@ -28,7 +27,7 @@ public final class MoorlandDrifter extends CardImpl { // Delirium — Moorland Drifter has flying as long as there are four or more card types among cards in your graveyard. ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(FlyingAbility.getInstance()), DeliriumCondition.instance, "Delirium — Moorland Drifter has flying as long as there are four or more card types among cards in your graveyard."); - this.addAbility(new SimpleStaticAbility(effect).addHint(CardTypesInGraveyardHint.YOU)); + this.addAbility(new SimpleStaticAbility(effect).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private MoorlandDrifter(final MoorlandDrifter card) { diff --git a/Mage.Sets/src/mage/cards/m/Mournwillow.java b/Mage.Sets/src/mage/cards/m/Mournwillow.java index 3193d0264ab..993ede54731 100644 --- a/Mage.Sets/src/mage/cards/m/Mournwillow.java +++ b/Mage.Sets/src/mage/cards/m/Mournwillow.java @@ -5,8 +5,8 @@ import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.RestrictionEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -40,7 +40,7 @@ public final class Mournwillow extends CardImpl { DeliriumCondition.instance, "Delirium — When {this} enters, if there are four or more card types among cards in your graveyard, " + "creatures with power 2 or less can't block this turn."); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/n/Nethergoyf.java b/Mage.Sets/src/mage/cards/n/Nethergoyf.java index 5b71e4679bb..bc8d5c71602 100644 --- a/Mage.Sets/src/mage/cards/n/Nethergoyf.java +++ b/Mage.Sets/src/mage/cards/n/Nethergoyf.java @@ -34,8 +34,6 @@ import java.util.stream.Collectors; */ public final class Nethergoyf extends CardImpl { - private static final DynamicValue powerValue = CardTypesInGraveyardCount.YOU; - public Nethergoyf(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}"); @@ -44,7 +42,9 @@ public final class Nethergoyf extends CardImpl { this.toughness = new MageInt(1); // Nethergoyf's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1. - this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue))); + this.addAbility(new SimpleStaticAbility(Zone.ALL, + new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.YOU) + ).addHint(CardTypesInGraveyardCount.YOU.getHint())); // Escape--{2}{B}, Exile any number of other cards from your graveyard with four or more card types among them. CostsImpl additionalCost = new CostsImpl(); diff --git a/Mage.Sets/src/mage/cards/n/NighthawkScavenger.java b/Mage.Sets/src/mage/cards/n/NighthawkScavenger.java index 34641934972..956d15bb4c7 100644 --- a/Mage.Sets/src/mage/cards/n/NighthawkScavenger.java +++ b/Mage.Sets/src/mage/cards/n/NighthawkScavenger.java @@ -7,7 +7,6 @@ import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.effects.common.continuous.SetBasePowerSourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.DeathtouchAbility; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.LifelinkAbility; @@ -51,7 +50,7 @@ public final class NighthawkScavenger extends CardImpl { .setText("{this}'s power is equal to 1 plus the number of " + "card types among cards in your opponents' graveyards. " + "(Cards in graveyards have only the characteristics of their front face.)") - ).addHint(CardTypesInGraveyardHint.OPPONENTS)); + ).addHint(CardTypesInGraveyardCount.OPPONENTS.getHint())); } private NighthawkScavenger(final NighthawkScavenger card) { diff --git a/Mage.Sets/src/mage/cards/o/ObsessiveSkinner.java b/Mage.Sets/src/mage/cards/o/ObsessiveSkinner.java index 1538f17d57d..5d61c63a5d8 100644 --- a/Mage.Sets/src/mage/cards/o/ObsessiveSkinner.java +++ b/Mage.Sets/src/mage/cards/o/ObsessiveSkinner.java @@ -4,12 +4,12 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.counter.AddCountersTargetEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -43,7 +43,7 @@ public final class ObsessiveSkinner extends CardImpl { "Delirium — At the beginning of each opponent's upkeep, if there are four or more card types among cards in your graveyard, " + "put a +1/+1 counter on target creature."); ability.addTarget(new TargetCreaturePermanent()); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/o/OmnivorousFlytrap.java b/Mage.Sets/src/mage/cards/o/OmnivorousFlytrap.java index 88422143946..f6708c4923d 100644 --- a/Mage.Sets/src/mage/cards/o/OmnivorousFlytrap.java +++ b/Mage.Sets/src/mage/cards/o/OmnivorousFlytrap.java @@ -9,7 +9,6 @@ import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.counter.DistributeCountersEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; @@ -42,7 +41,7 @@ public final class OmnivorousFlytrap extends CardImpl { new OmnivorousFlytrapCondition()) .concatBy("Then")); ability.addTarget(new TargetCreaturePermanentAmount(2)); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM)); } diff --git a/Mage.Sets/src/mage/cards/p/ParanoidParishBlade.java b/Mage.Sets/src/mage/cards/p/ParanoidParishBlade.java index fe65991fa3f..d2efed218cf 100644 --- a/Mage.Sets/src/mage/cards/p/ParanoidParishBlade.java +++ b/Mage.Sets/src/mage/cards/p/ParanoidParishBlade.java @@ -7,16 +7,15 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; -import mage.constants.Zone; /** * @author fireshoes @@ -38,7 +37,7 @@ public final class ParanoidParishBlade extends CardImpl { effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield), DeliriumCondition.instance, "and has first strike as long as there are four or more card types among cards in your graveyard."); ability.addEffect(effect); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/p/PatchworkBeastie.java b/Mage.Sets/src/mage/cards/p/PatchworkBeastie.java index e37891b49f0..08298aa869e 100644 --- a/Mage.Sets/src/mage/cards/p/PatchworkBeastie.java +++ b/Mage.Sets/src/mage/cards/p/PatchworkBeastie.java @@ -2,12 +2,12 @@ package mage.cards.p; import mage.MageInt; import mage.abilities.Ability; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.effects.RestrictionEffect; import mage.abilities.effects.common.MillCardsControllerEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; @@ -31,7 +31,7 @@ public final class PatchworkBeastie extends CardImpl { // Delirium -- Patchwork Beastie can't attack or block unless there are four or more card types among cards in your graveyard. this.addAbility(new SimpleStaticAbility(new PatchworkBeastieEffect()) .setAbilityWord(AbilityWord.DELIRIUM) - .addHint(CardTypesInGraveyardHint.YOU)); + .addHint(CardTypesInGraveyardCount.YOU.getHint())); // At the beginning of your upkeep, you may mill a card. this.addAbility(new BeginningOfUpkeepTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/p/PeerPastTheVeil.java b/Mage.Sets/src/mage/cards/p/PeerPastTheVeil.java index 48bf1c5a09b..d94f3594410 100644 --- a/Mage.Sets/src/mage/cards/p/PeerPastTheVeil.java +++ b/Mage.Sets/src/mage/cards/p/PeerPastTheVeil.java @@ -3,7 +3,6 @@ package mage.cards.p; import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.discard.DiscardHandControllerEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -21,7 +20,7 @@ public final class PeerPastTheVeil extends CardImpl { // Discard your hand. Then draw X cards, where X is the number of card types among cards in your graveyard. this.getSpellAbility().addEffect(new DiscardHandControllerEffect()); this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(CardTypesInGraveyardCount.YOU).concatBy("Then")); - this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); + this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint()); } private PeerPastTheVeil(final PeerPastTheVeil card) { diff --git a/Mage.Sets/src/mage/cards/p/PickTheBrain.java b/Mage.Sets/src/mage/cards/p/PickTheBrain.java index 73b8dd0c9e7..400808889f9 100644 --- a/Mage.Sets/src/mage/cards/p/PickTheBrain.java +++ b/Mage.Sets/src/mage/cards/p/PickTheBrain.java @@ -3,10 +3,9 @@ package mage.cards.p; import java.util.UUID; import mage.abilities.Ability; -import mage.abilities.Mode; import mage.abilities.condition.common.DeliriumCondition; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.search.SearchTargetGraveyardHandLibraryForCardNameAndExileEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -31,7 +30,7 @@ public final class PickTheBrain extends CardImpl { // Delirium — If there are four or more card types among cards in your graveyard, search that player's graveyard, hand, and library for any number of cards with the same name as the exiled card, exile those cards, then that player shuffles their library. this.getSpellAbility().addEffect(new PickTheBrainEffect()); this.getSpellAbility().addTarget(new TargetOpponent()); - this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); + this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint()); } private PickTheBrain(final PickTheBrain card) { diff --git a/Mage.Sets/src/mage/cards/p/Polygoyf.java b/Mage.Sets/src/mage/cards/p/Polygoyf.java index d2c4f209d63..6ec1a25d4c5 100644 --- a/Mage.Sets/src/mage/cards/p/Polygoyf.java +++ b/Mage.Sets/src/mage/cards/p/Polygoyf.java @@ -20,8 +20,6 @@ import mage.constants.Zone; */ public final class Polygoyf extends CardImpl { - private static final DynamicValue powerValue = CardTypesInGraveyardCount.ALL; - public Polygoyf(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}"); @@ -36,7 +34,9 @@ public final class Polygoyf extends CardImpl { this.addAbility(new MyriadAbility()); // Polygoyf's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1. - this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue))); + this.addAbility(new SimpleStaticAbility(Zone.ALL, + new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.ALL) + ).addHint(CardTypesInGraveyardCount.ALL.getHint())); } private Polygoyf(final Polygoyf card) { diff --git a/Mage.Sets/src/mage/cards/p/PropheticTitan.java b/Mage.Sets/src/mage/cards/p/PropheticTitan.java index 8edc084f090..f0e43e2e5c6 100644 --- a/Mage.Sets/src/mage/cards/p/PropheticTitan.java +++ b/Mage.Sets/src/mage/cards/p/PropheticTitan.java @@ -4,9 +4,9 @@ import mage.MageInt; import mage.abilities.Mode; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; @@ -58,7 +58,7 @@ class PropheticTitanTriggeredAbility extends EntersBattlefieldTriggeredAbility { "choose one. If there are four or more card types among cards in your graveyard, choose both instead." ); this.addTarget(new TargetAnyTarget()); - this.addHint(CardTypesInGraveyardHint.YOU); + this.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.setAbilityWord(AbilityWord.DELIRIUM); } diff --git a/Mage.Sets/src/mage/cards/p/Pyrogoyf.java b/Mage.Sets/src/mage/cards/p/Pyrogoyf.java index 2ca910fbf83..a3d8715e2d4 100644 --- a/Mage.Sets/src/mage/cards/p/Pyrogoyf.java +++ b/Mage.Sets/src/mage/cards/p/Pyrogoyf.java @@ -27,8 +27,6 @@ public final class Pyrogoyf extends CardImpl { private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.LHURGOYF, "Lhurgoyf creature"); - private static final DynamicValue powerValue = CardTypesInGraveyardCount.ALL; - public Pyrogoyf(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}"); this.subtype.add(SubType.LHURGOYF); @@ -37,7 +35,9 @@ public final class Pyrogoyf extends CardImpl { this.toughness = new MageInt(1); // Pyrogoyf's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1. - this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue))); + this.addAbility(new SimpleStaticAbility(Zone.ALL, + new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.ALL) + ).addHint(CardTypesInGraveyardCount.ALL.getHint())); // Whenever Pyrogoyf or another Lhurgoyf creature you control enters, that creature deals damage equal to its power to any target. Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility( diff --git a/Mage.Sets/src/mage/cards/r/RavingVisionary.java b/Mage.Sets/src/mage/cards/r/RavingVisionary.java index 860b269fbf6..5703d4286b3 100644 --- a/Mage.Sets/src/mage/cards/r/RavingVisionary.java +++ b/Mage.Sets/src/mage/cards/r/RavingVisionary.java @@ -7,9 +7,9 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawDiscardControllerEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; @@ -45,7 +45,7 @@ public final class RavingVisionary extends CardImpl { new ManaCostsImpl<>("{2}{U}"), DeliriumCondition.instance ); ability.addCost(new TapSourceCost()); - this.addAbility(ability.addHint(CardTypesInGraveyardHint.YOU).setAbilityWord(AbilityWord.DELIRIUM)); + this.addAbility(ability.addHint(CardTypesInGraveyardCount.YOU.getHint()).setAbilityWord(AbilityWord.DELIRIUM)); } private RavingVisionary(final RavingVisionary card) { diff --git a/Mage.Sets/src/mage/cards/r/ReaperOfFlightMoonsilver.java b/Mage.Sets/src/mage/cards/r/ReaperOfFlightMoonsilver.java index 8c85c99c616..598639a9933 100644 --- a/Mage.Sets/src/mage/cards/r/ReaperOfFlightMoonsilver.java +++ b/Mage.Sets/src/mage/cards/r/ReaperOfFlightMoonsilver.java @@ -6,8 +6,8 @@ import mage.MageInt; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.decorator.ConditionalActivatedAbility; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.BoostSourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -18,8 +18,6 @@ import mage.constants.Zone; import mage.filter.StaticFilters; -import mage.target.common.TargetControlledCreaturePermanent; - /** * @author fireshoes */ @@ -42,7 +40,7 @@ public final class ReaperOfFlightMoonsilver extends CardImpl { DeliriumCondition.instance, "Delirium — Sacrifice another creature: Reaper of Flight Moonsilver gets +2/+1 until end of turn. " + "Activate only if there are four or more card types among cards in your graveyard.") - .addHint(CardTypesInGraveyardHint.YOU)); + .addHint(CardTypesInGraveyardCount.YOU.getHint())); } private ReaperOfFlightMoonsilver(final ReaperOfFlightMoonsilver card) { diff --git a/Mage.Sets/src/mage/cards/r/ResurrectedCultist.java b/Mage.Sets/src/mage/cards/r/ResurrectedCultist.java index dabb83e56b8..fb1f574e1b9 100644 --- a/Mage.Sets/src/mage/cards/r/ResurrectedCultist.java +++ b/Mage.Sets/src/mage/cards/r/ResurrectedCultist.java @@ -4,8 +4,8 @@ import mage.MageInt; import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldWithCounterEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; @@ -31,7 +31,7 @@ public final class ResurrectedCultist extends CardImpl { Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldWithCounterEffect(CounterType.FINALITY.createInstance(), false), new ManaCostsImpl<>("{2}{B}{B}"), DeliriumCondition.instance, TimingRule.SORCERY - ).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU)); + ).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private ResurrectedCultist(final ResurrectedCultist card) { diff --git a/Mage.Sets/src/mage/cards/s/ScourTheLaboratory.java b/Mage.Sets/src/mage/cards/s/ScourTheLaboratory.java index 861e4cecf08..8736d7d06c0 100644 --- a/Mage.Sets/src/mage/cards/s/ScourTheLaboratory.java +++ b/Mage.Sets/src/mage/cards/s/ScourTheLaboratory.java @@ -4,9 +4,9 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; @@ -25,7 +25,7 @@ public final class ScourTheLaboratory extends CardImpl { Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(2, DeliriumCondition.instance)); ability.setRuleAtTheTop(true); ability.setAbilityWord(AbilityWord.DELIRIUM); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); // Draw three cards. diff --git a/Mage.Sets/src/mage/cards/s/ScourgeWolf.java b/Mage.Sets/src/mage/cards/s/ScourgeWolf.java index 66ac9fd185e..16f9c5aab1c 100644 --- a/Mage.Sets/src/mage/cards/s/ScourgeWolf.java +++ b/Mage.Sets/src/mage/cards/s/ScourgeWolf.java @@ -6,8 +6,8 @@ import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.DoubleStrikeAbility; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; @@ -15,7 +15,6 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; -import mage.constants.Zone; /** * @author fireshoes @@ -35,7 +34,7 @@ public final class ScourgeWolf extends CardImpl { // Delirium — Scourge Wolf has double strike as long as there are four or more card types among cards in your graveyard. ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(DoubleStrikeAbility.getInstance(), Duration.WhileOnBattlefield), DeliriumCondition.instance, "Delirium — {this} has double strike as long as there are four or more card types among cards in your graveyard."); - this.addAbility(new SimpleStaticAbility(effect).addHint(CardTypesInGraveyardHint.YOU)); + this.addAbility(new SimpleStaticAbility(effect).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private ScourgeWolf(final ScourgeWolf card) { diff --git a/Mage.Sets/src/mage/cards/s/Scuttletide.java b/Mage.Sets/src/mage/cards/s/Scuttletide.java index 42263d3e348..28cb2724b06 100644 --- a/Mage.Sets/src/mage/cards/s/Scuttletide.java +++ b/Mage.Sets/src/mage/cards/s/Scuttletide.java @@ -7,9 +7,9 @@ import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.costs.common.DiscardCardCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; @@ -42,7 +42,7 @@ public final class Scuttletide extends CardImpl { 1, 1, Duration.WhileOnBattlefield, filter, false ), DeliriumCondition.instance, "Crabs you control get +1/+1 as long " + "as there are four or more card types among cards in your graveyard" - )).addHint(CardTypesInGraveyardHint.YOU).setAbilityWord(AbilityWord.DELIRIUM)); + )).addHint(CardTypesInGraveyardCount.YOU.getHint()).setAbilityWord(AbilityWord.DELIRIUM)); } private Scuttletide(final Scuttletide card) { diff --git a/Mage.Sets/src/mage/cards/s/ShiftingWoodland.java b/Mage.Sets/src/mage/cards/s/ShiftingWoodland.java index 3f4edcdcdda..04ec2a90695 100644 --- a/Mage.Sets/src/mage/cards/s/ShiftingWoodland.java +++ b/Mage.Sets/src/mage/cards/s/ShiftingWoodland.java @@ -6,8 +6,8 @@ import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.YouControlPermanentCondition; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.decorator.ConditionalActivatedAbility; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.OneShotEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.mana.GreenManaAbility; import mage.cards.Card; import mage.cards.CardImpl; @@ -52,7 +52,7 @@ public final class ShiftingWoodland extends CardImpl { ); ability.addTarget(new TargetCardInYourGraveyard(1, filterCard)); ability.setAbilityWord(AbilityWord.DELIRIUM); - this.addAbility(ability.addHint(CardTypesInGraveyardHint.YOU)); + this.addAbility(ability.addHint(CardTypesInGraveyardCount.YOU.getHint())); } private ShiftingWoodland(final ShiftingWoodland card) { diff --git a/Mage.Sets/src/mage/cards/s/SoulSwallower.java b/Mage.Sets/src/mage/cards/s/SoulSwallower.java index 355a2b3c58b..53a2b1ca105 100644 --- a/Mage.Sets/src/mage/cards/s/SoulSwallower.java +++ b/Mage.Sets/src/mage/cards/s/SoulSwallower.java @@ -3,11 +3,11 @@ package mage.cards.s; import java.util.UUID; import mage.MageInt; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.effects.common.counter.AddCountersSourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -35,7 +35,7 @@ public final class SoulSwallower extends CardImpl { DeliriumCondition.instance, "Delirium — At the beginning of your upkeep, if there are four or more card types among cards in your graveyard, " + "put three +1/+1 counters on Soul Swallower.") - .addHint(CardTypesInGraveyardHint.YOU)); + .addHint(CardTypesInGraveyardCount.YOU.getHint())); } private SoulSwallower(final SoulSwallower card) { diff --git a/Mage.Sets/src/mage/cards/s/SoulsOfTheLost.java b/Mage.Sets/src/mage/cards/s/SoulsOfTheLost.java index d685d5fd648..496e46e7a6e 100644 --- a/Mage.Sets/src/mage/cards/s/SoulsOfTheLost.java +++ b/Mage.Sets/src/mage/cards/s/SoulsOfTheLost.java @@ -41,8 +41,9 @@ public final class SoulsOfTheLost extends CardImpl { )); // Fathomless descent -- Souls of the Lost's power is equal to the number of permanent cards in your graveyard and its toughness is equal to that number plus 1. - this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(xValue)) - .setAbilityWord(AbilityWord.FATHOMLESS_DESCENT).addHint(DescendCondition.getHint())); + this.addAbility(new SimpleStaticAbility(Zone.ALL, + new SetBasePowerToughnessPlusOneSourceEffect(xValue) + ).setAbilityWord(AbilityWord.FATHOMLESS_DESCENT).addHint(DescendCondition.getHint())); } private SoulsOfTheLost(final SoulsOfTheLost card) { diff --git a/Mage.Sets/src/mage/cards/s/SpineseekerCentipede.java b/Mage.Sets/src/mage/cards/s/SpineseekerCentipede.java index 24bfe7bb6fe..c3a0b467236 100644 --- a/Mage.Sets/src/mage/cards/s/SpineseekerCentipede.java +++ b/Mage.Sets/src/mage/cards/s/SpineseekerCentipede.java @@ -6,10 +6,10 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.VigilanceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -48,7 +48,7 @@ public final class SpineseekerCentipede extends CardImpl { new GainAbilitySourceEffect(VigilanceAbility.getInstance()), DeliriumCondition.instance, "and has vigilance as long as there are four or more card types among cards in your graveyard" )); - this.addAbility(ability.addHint(CardTypesInGraveyardHint.YOU).setAbilityWord(AbilityWord.DELIRIUM)); + this.addAbility(ability.addHint(CardTypesInGraveyardCount.YOU.getHint()).setAbilityWord(AbilityWord.DELIRIUM)); } private SpineseekerCentipede(final SpineseekerCentipede card) { diff --git a/Mage.Sets/src/mage/cards/s/StallionOfAshmouth.java b/Mage.Sets/src/mage/cards/s/StallionOfAshmouth.java index 4edc1928659..4caf6afde6e 100644 --- a/Mage.Sets/src/mage/cards/s/StallionOfAshmouth.java +++ b/Mage.Sets/src/mage/cards/s/StallionOfAshmouth.java @@ -4,8 +4,8 @@ import mage.MageInt; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.decorator.ConditionalActivatedAbility; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.BoostSourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; @@ -30,7 +30,7 @@ public final class StallionOfAshmouth extends CardImpl { Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl<>("{1}{B}"), DeliriumCondition.instance - ).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU)); + ).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private StallionOfAshmouth(final StallionOfAshmouth card) { diff --git a/Mage.Sets/src/mage/cards/s/StrangeAugmentation.java b/Mage.Sets/src/mage/cards/s/StrangeAugmentation.java index f4bc4494ea1..1fee8ac212a 100644 --- a/Mage.Sets/src/mage/cards/s/StrangeAugmentation.java +++ b/Mage.Sets/src/mage/cards/s/StrangeAugmentation.java @@ -6,16 +6,15 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.continuous.BoostEnchantedEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Outcome; -import mage.constants.Zone; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -41,7 +40,7 @@ public final class StrangeAugmentation extends CardImpl { // Delirium &mdash Enchanted creature gets an additional +2/+2 as long as there are four or more card types among cards in your graveyard. this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(new BoostEnchantedEffect(2, 2), DeliriumCondition.instance, "Delirium — Enchanted creature gets an additional +2/+2 as long as there are four or more card types among cards in your graveyard.")) - .addHint(CardTypesInGraveyardHint.YOU)); + .addHint(CardTypesInGraveyardCount.YOU.getHint())); } private StrangeAugmentation(final StrangeAugmentation card) { diff --git a/Mage.Sets/src/mage/cards/t/Tarmogoyf.java b/Mage.Sets/src/mage/cards/t/Tarmogoyf.java index f0d292c4318..d8ed06f564f 100644 --- a/Mage.Sets/src/mage/cards/t/Tarmogoyf.java +++ b/Mage.Sets/src/mage/cards/t/Tarmogoyf.java @@ -18,8 +18,6 @@ import java.util.UUID; */ public final class Tarmogoyf extends CardImpl { - private static final DynamicValue powerValue = CardTypesInGraveyardCount.ALL; - public Tarmogoyf(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); this.subtype.add(SubType.LHURGOYF); @@ -28,7 +26,9 @@ public final class Tarmogoyf extends CardImpl { this.toughness = new MageInt(1); // Tarmogoyf's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1. - this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue))); + this.addAbility(new SimpleStaticAbility(Zone.ALL, + new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.ALL) + ).addHint(CardTypesInGraveyardCount.ALL.getHint())); } private Tarmogoyf(final Tarmogoyf card) { diff --git a/Mage.Sets/src/mage/cards/t/TheRollercrusherRide.java b/Mage.Sets/src/mage/cards/t/TheRollercrusherRide.java index 1dbe303bd32..d36dd9455d3 100644 --- a/Mage.Sets/src/mage/cards/t/TheRollercrusherRide.java +++ b/Mage.Sets/src/mage/cards/t/TheRollercrusherRide.java @@ -6,10 +6,10 @@ import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.dynamicvalue.common.GetXValue; import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.common.DamageTargetEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.constants.*; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -34,7 +34,7 @@ public final class TheRollercrusherRide extends CardImpl { // it deals double that damage instead. this.addAbility(new SimpleStaticAbility(new TheRollercrusherRideEffect()) .setAbilityWord(AbilityWord.DELIRIUM) - .addHint(CardTypesInGraveyardHint.YOU)); + .addHint(CardTypesInGraveyardCount.YOU.getHint())); // When The Rollercrusher Ride enters, it deals X damage to each of up to X target creatures. Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(GetXValue.instance) diff --git a/Mage.Sets/src/mage/cards/t/TheSwarmweaver.java b/Mage.Sets/src/mage/cards/t/TheSwarmweaver.java index eb12ffe1b25..b16aaa71d2b 100644 --- a/Mage.Sets/src/mage/cards/t/TheSwarmweaver.java +++ b/Mage.Sets/src/mage/cards/t/TheSwarmweaver.java @@ -6,10 +6,10 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.DeathtouchAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -62,7 +62,7 @@ public final class TheSwarmweaver extends CardImpl { DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield, filter2 ), DeliriumCondition.instance, "and have deathtouch" )); - this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU)); + this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private TheSwarmweaver(final TheSwarmweaver card) { diff --git a/Mage.Sets/src/mage/cards/t/ThrabenFoulbloods.java b/Mage.Sets/src/mage/cards/t/ThrabenFoulbloods.java index 2b011cce9a5..5d358717bba 100644 --- a/Mage.Sets/src/mage/cards/t/ThrabenFoulbloods.java +++ b/Mage.Sets/src/mage/cards/t/ThrabenFoulbloods.java @@ -7,16 +7,15 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.MenaceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Duration; -import mage.constants.Zone; /** * @author LevelX2 @@ -35,7 +34,7 @@ public final class ThrabenFoulbloods extends CardImpl { Ability ability = new SimpleStaticAbility(effect); ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(new MenaceAbility()), DeliriumCondition.instance, "and 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.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/ToTheSlaughter.java b/Mage.Sets/src/mage/cards/t/ToTheSlaughter.java index 6cb638d7c2c..0b441cf269c 100644 --- a/Mage.Sets/src/mage/cards/t/ToTheSlaughter.java +++ b/Mage.Sets/src/mage/cards/t/ToTheSlaughter.java @@ -5,8 +5,8 @@ import java.util.UUID; import mage.abilities.condition.InvertCondition; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.SacrificeEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -37,7 +37,7 @@ public final class ToTheSlaughter extends CardImpl { new SacrificeEffect(StaticFilters.FILTER_PERMANENT_PLANESWALKER, 1, "Target player"), DeliriumCondition.instance, "and a planeswalker.")); this.getSpellAbility().addTarget(new TargetPlayer()); - this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); + this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint()); } private ToTheSlaughter(final ToTheSlaughter card) { diff --git a/Mage.Sets/src/mage/cards/t/ToothCollector.java b/Mage.Sets/src/mage/cards/t/ToothCollector.java index d4b8893c581..6e032980e2c 100644 --- a/Mage.Sets/src/mage/cards/t/ToothCollector.java +++ b/Mage.Sets/src/mage/cards/t/ToothCollector.java @@ -8,8 +8,8 @@ import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.BoostTargetEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -48,7 +48,7 @@ public final class ToothCollector extends CardImpl { DeliriumCondition.instance, "Delirium — At the beginning of each opponent's upkeep, if there are four or more card types among cards in your graveyard, " + "target creature that player controls gets -1/-1 until end of turn."); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/Topplegeist.java b/Mage.Sets/src/mage/cards/t/Topplegeist.java index 1d948ec2114..c7123946614 100644 --- a/Mage.Sets/src/mage/cards/t/Topplegeist.java +++ b/Mage.Sets/src/mage/cards/t/Topplegeist.java @@ -8,8 +8,8 @@ import mage.abilities.TriggeredAbilityImpl; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.TapTargetEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -50,7 +50,7 @@ public final class Topplegeist extends CardImpl { DeliriumCondition.instance, "Delirium — At the beginning of each opponent's upkeep, if there are four or more card types among cards in your graveyard, " + "tap target creature that player controls."); - ability.addHint(CardTypesInGraveyardHint.YOU); + ability.addHint(CardTypesInGraveyardCount.YOU.getHint()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/t/TraverseTheUlvenwald.java b/Mage.Sets/src/mage/cards/t/TraverseTheUlvenwald.java index 3f1bf860b31..85af720195f 100644 --- a/Mage.Sets/src/mage/cards/t/TraverseTheUlvenwald.java +++ b/Mage.Sets/src/mage/cards/t/TraverseTheUlvenwald.java @@ -3,7 +3,6 @@ package mage.cards.t; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.AbilityWord; diff --git a/Mage.Sets/src/mage/cards/u/UnholyHeat.java b/Mage.Sets/src/mage/cards/u/UnholyHeat.java index ae3f1920fd6..296fc21f8f8 100644 --- a/Mage.Sets/src/mage/cards/u/UnholyHeat.java +++ b/Mage.Sets/src/mage/cards/u/UnholyHeat.java @@ -2,8 +2,8 @@ package mage.cards.u; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.DamageTargetEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -28,7 +28,7 @@ public final class UnholyHeat extends CardImpl { "if there are four or more card types among cards in your graveyard." )); this.getSpellAbility().addTarget(new TargetCreatureOrPlaneswalker()); - this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); + this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint()); } private UnholyHeat(final UnholyHeat card) { diff --git a/Mage.Sets/src/mage/cards/u/UrborgLhurgoyf.java b/Mage.Sets/src/mage/cards/u/UrborgLhurgoyf.java index d25cb2e8fb2..8c02220162f 100644 --- a/Mage.Sets/src/mage/cards/u/UrborgLhurgoyf.java +++ b/Mage.Sets/src/mage/cards/u/UrborgLhurgoyf.java @@ -9,6 +9,7 @@ import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount; import mage.abilities.dynamicvalue.common.MultikickerCount; import mage.abilities.effects.common.MillCardsControllerEffect; import mage.abilities.effects.common.continuous.SetBasePowerToughnessPlusOneSourceEffect; +import mage.abilities.hint.ValueHint; import mage.abilities.keyword.KickerAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -43,7 +44,9 @@ public final class UrborgLhurgoyf extends CardImpl { this.addAbility(new AsEntersBattlefieldAbility(new MillCardsControllerEffect(millValue))); // Urborg Lhurgoyf's power is equal to the number of creature cards in your graveyard and its toughness is equal to that number plus 1. - this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue))); + this.addAbility(new SimpleStaticAbility(Zone.ALL, + new SetBasePowerToughnessPlusOneSourceEffect(powerValue) + ).addHint(new ValueHint("Creature cards in your graveyard", powerValue))); } private UrborgLhurgoyf(final UrborgLhurgoyf card) { diff --git a/Mage.Sets/src/mage/cards/v/ViolentUrge.java b/Mage.Sets/src/mage/cards/v/ViolentUrge.java index dda8d7c1cdf..c9a3b8ab777 100644 --- a/Mage.Sets/src/mage/cards/v/ViolentUrge.java +++ b/Mage.Sets/src/mage/cards/v/ViolentUrge.java @@ -2,10 +2,10 @@ package mage.cards.v; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.AddContinuousEffectToGame; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.DoubleStrikeAbility; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; @@ -40,7 +40,7 @@ public final class ViolentUrge extends CardImpl { DeliriumCondition.instance, AbilityWord.DELIRIUM.formatWord() + "If there are four or more " + "card types among cards in your graveyard, that creature gains double strike until end of turn" ).concatBy("
")); - this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); + this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint()); } private ViolentUrge(final ViolentUrge card) { diff --git a/Mage.Sets/src/mage/cards/w/WhispersOfEmrakul.java b/Mage.Sets/src/mage/cards/w/WhispersOfEmrakul.java index c60aef42e84..e51b24000da 100644 --- a/Mage.Sets/src/mage/cards/w/WhispersOfEmrakul.java +++ b/Mage.Sets/src/mage/cards/w/WhispersOfEmrakul.java @@ -5,8 +5,8 @@ import java.util.UUID; import mage.abilities.condition.InvertCondition; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.discard.DiscardTargetEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; @@ -32,7 +32,7 @@ public final class WhispersOfEmrakul extends CardImpl { DeliriumCondition.instance, "
Delirium — If there are four or more card types among cards in your graveyard, that player discards two cards at random instead")); this.getSpellAbility().addTarget(new TargetOpponent()); - this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); + this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint()); } private WhispersOfEmrakul(final WhispersOfEmrakul card) { diff --git a/Mage.Sets/src/mage/cards/w/WickerfolkThresher.java b/Mage.Sets/src/mage/cards/w/WickerfolkThresher.java index 9d405b5897f..c22f8d62ab0 100644 --- a/Mage.Sets/src/mage/cards/w/WickerfolkThresher.java +++ b/Mage.Sets/src/mage/cards/w/WickerfolkThresher.java @@ -5,8 +5,8 @@ import mage.abilities.Ability; import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.OneShotEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -34,7 +34,7 @@ public final class WickerfolkThresher extends CardImpl { DeliriumCondition.instance, "Whenever {this} attacks, if there are four or more card types " + "among cards in your graveyard, look at the top card of your library. If it's a land card, you may " + "put it onto the battlefield. If you don't put the card onto the battlefield, put it into your hand." - ).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU)); + ).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private WickerfolkThresher(final WickerfolkThresher card) { diff --git a/Mage.Sets/src/mage/cards/w/WildfireWickerfolk.java b/Mage.Sets/src/mage/cards/w/WildfireWickerfolk.java index f473e11cf01..2fed84eee1f 100644 --- a/Mage.Sets/src/mage/cards/w/WildfireWickerfolk.java +++ b/Mage.Sets/src/mage/cards/w/WildfireWickerfolk.java @@ -5,9 +5,9 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; @@ -43,7 +43,7 @@ public final class WildfireWickerfolk extends CardImpl { new GainAbilitySourceEffect(TrampleAbility.getInstance()), DeliriumCondition.instance, "and has trample as long as there are four or more card types among cards in your graveyard" )); - this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU)); + this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private WildfireWickerfolk(final WildfireWickerfolk card) { diff --git a/Mage.Sets/src/mage/cards/w/WinterMisanthropicGuide.java b/Mage.Sets/src/mage/cards/w/WinterMisanthropicGuide.java index aab1d89b7fe..323628285c4 100644 --- a/Mage.Sets/src/mage/cards/w/WinterMisanthropicGuide.java +++ b/Mage.Sets/src/mage/cards/w/WinterMisanthropicGuide.java @@ -8,7 +8,6 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.common.DrawCardAllEffect; -import mage.abilities.hint.common.CardTypesInGraveyardHint; import mage.abilities.keyword.WardAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -43,7 +42,7 @@ public final class WinterMisanthropicGuide extends CardImpl { // Delirium -- As long as there are four or more card types among cards in your graveyard, each opponent's maximum hand size is equal to seven minus the number of those card types. this.addAbility(new SimpleStaticAbility(new WinterMisanthropicGuideEffect()) .setAbilityWord(AbilityWord.DELIRIUM) - .addHint(CardTypesInGraveyardHint.YOU)); + .addHint(CardTypesInGraveyardCount.YOU.getHint())); } private WinterMisanthropicGuide(final WinterMisanthropicGuide card) { diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/CardTypesInGraveyardCount.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/CardTypesInGraveyardCount.java index c307f98adf9..07f2116470e 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/CardTypesInGraveyardCount.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/CardTypesInGraveyardCount.java @@ -3,14 +3,16 @@ package mage.abilities.dynamicvalue.common; import mage.abilities.Ability; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.effects.Effect; +import mage.abilities.hint.Hint; +import mage.abilities.hint.ValueHint; import mage.cards.Card; +import mage.constants.CardType; import mage.game.Game; import mage.game.permanent.PermanentToken; import mage.players.Player; -import java.util.Collection; -import java.util.Objects; -import java.util.UUID; +import java.util.*; +import java.util.stream.Collectors; import java.util.stream.Stream; /** @@ -20,16 +22,18 @@ public enum CardTypesInGraveyardCount implements DynamicValue { YOU("your graveyard"), ALL("all graveyards"), OPPONENTS("your opponents' graveyards"); + private final String message; + private final CardTypesInGraveyardHint hint; CardTypesInGraveyardCount(String message) { this.message = "the number of card types among cards in " + message; + this.hint = new CardTypesInGraveyardHint(this); } @Override public int calculate(Game game, Ability sourceAbility, Effect effect) { - return getStream(game, sourceAbility) - .filter(card -> !card.isCopy() && !(card instanceof PermanentToken)) + return getGraveyardCards(game, sourceAbility) .map(card -> card.getCardType(game)) .flatMap(Collection::stream) .distinct() @@ -52,16 +56,16 @@ public enum CardTypesInGraveyardCount implements DynamicValue { return message; } - private final Stream getStream(Game game, Ability ability) { + public Hint getHint() { + return hint; + } + + public Stream getGraveyardCards(Game game, Ability ability) { Collection playerIds; switch (this) { case YOU: - Player player = game.getPlayer(ability.getControllerId()); - return player == null - ? null : player - .getGraveyard() - .getCards(game) - .stream(); + playerIds = Collections.singletonList(ability.getControllerId()); + break; case OPPONENTS: playerIds = game.getOpponents(ability.getControllerId()); break; @@ -69,13 +73,47 @@ public enum CardTypesInGraveyardCount implements DynamicValue { playerIds = game.getState().getPlayersInRange(ability.getControllerId(), game); break; default: - return null; + throw new IllegalArgumentException("Wrong code usage: miss implementation for " + this); } return playerIds.stream() .map(game::getPlayer) .filter(Objects::nonNull) .map(Player::getGraveyard) .map(graveyard -> graveyard.getCards(game)) - .flatMap(Collection::stream); + .flatMap(Collection::stream) + .filter(Objects::nonNull) + .filter(card -> !card.isCopy() && !(card instanceof PermanentToken)); } } + +class CardTypesInGraveyardHint implements Hint { + + CardTypesInGraveyardCount value; + + CardTypesInGraveyardHint(CardTypesInGraveyardCount value) { + this.value = value; + } + + private CardTypesInGraveyardHint(final CardTypesInGraveyardHint hint) { + this.value = hint.value; + } + + @Override + public String getText(Game game, Ability ability) { + Stream stream = this.value.getGraveyardCards(game, ability); + List types = stream + .map(card -> card.getCardType(game)) + .flatMap(Collection::stream) + .distinct() + .map(CardType::toString) + .sorted() + .collect(Collectors.toList()); + return "Card types in " + this.value.getMessage() + ": " + types.size() + + (types.size() > 0 ? " (" + String.join(", ", types) + ')' : ""); + } + + @Override + public CardTypesInGraveyardHint copy() { + return new CardTypesInGraveyardHint(this); + } +} \ No newline at end of file diff --git a/Mage/src/main/java/mage/abilities/hint/ConditionTrueHint.java b/Mage/src/main/java/mage/abilities/hint/ConditionTrueHint.java index 66c114a8b72..b7172258258 100644 --- a/Mage/src/main/java/mage/abilities/hint/ConditionTrueHint.java +++ b/Mage/src/main/java/mage/abilities/hint/ConditionTrueHint.java @@ -52,7 +52,7 @@ public class ConditionTrueHint implements Hint { } @Override - public Hint copy() { + public ConditionTrueHint copy() { return new ConditionTrueHint(this); } } diff --git a/Mage/src/main/java/mage/abilities/hint/StaticHint.java b/Mage/src/main/java/mage/abilities/hint/StaticHint.java index 848b09ac568..72d9f64b1d0 100644 --- a/Mage/src/main/java/mage/abilities/hint/StaticHint.java +++ b/Mage/src/main/java/mage/abilities/hint/StaticHint.java @@ -30,7 +30,7 @@ public class StaticHint implements Hint { } @Override - public Hint copy() { + public StaticHint copy() { return new StaticHint(this); } } diff --git a/Mage/src/main/java/mage/abilities/hint/common/CardTypesInGraveyardHint.java b/Mage/src/main/java/mage/abilities/hint/common/CardTypesInGraveyardHint.java deleted file mode 100644 index 81f920d30f0..00000000000 --- a/Mage/src/main/java/mage/abilities/hint/common/CardTypesInGraveyardHint.java +++ /dev/null @@ -1,79 +0,0 @@ -package mage.abilities.hint.common; - -import mage.abilities.Ability; -import mage.abilities.hint.Hint; -import mage.cards.Card; -import mage.constants.CardType; -import mage.game.Game; -import mage.players.Player; - -import java.util.Collection; -import java.util.List; -import java.util.Objects; -import java.util.UUID; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -/** - * @author JayDi85 - */ -public enum CardTypesInGraveyardHint implements Hint { - - YOU("your graveyard"), - ALL("all graveyards"), - OPPONENTS("your opponents' graveyards"); - private final String message; - - CardTypesInGraveyardHint(String message) { - this.message = message; - } - - @Override - public String getText(Game game, Ability ability) { - Stream stream = getStream(game, ability); - if (stream == null) { - return null; - } - List types = stream - .map(card -> card.getCardType(game)) - .flatMap(Collection::stream) - .distinct() - .map(CardType::toString) - .sorted() - .collect(Collectors.toList()); - return "Card types in " + this.message + ": " + types.size() - + (types.size() > 0 ? " (" + String.join(", ", types) + ')' : ""); - } - - @Override - public Hint copy() { - return this; - } - - private final Stream getStream(Game game, Ability ability) { - Collection playerIds; - switch (this) { - case YOU: - Player player = game.getPlayer(ability.getControllerId()); - return player == null - ? null : player - .getGraveyard() - .getCards(game) - .stream(); - case OPPONENTS: - playerIds = game.getOpponents(ability.getControllerId()); - break; - case ALL: - playerIds = game.getState().getPlayersInRange(ability.getControllerId(), game); - break; - default: - return null; - } - return playerIds.stream() - .map(game::getPlayer) - .filter(Objects::nonNull) - .map(Player::getGraveyard) - .map(graveyard -> graveyard.getCards(game)) - .flatMap(Collection::stream); - } -} diff --git a/Mage/src/main/java/mage/abilities/hint/common/CountersOnPermanentsHint.java b/Mage/src/main/java/mage/abilities/hint/common/CountersOnPermanentsHint.java index 027cd4d7dba..8b44491811b 100644 --- a/Mage/src/main/java/mage/abilities/hint/common/CountersOnPermanentsHint.java +++ b/Mage/src/main/java/mage/abilities/hint/common/CountersOnPermanentsHint.java @@ -1,19 +1,19 @@ package mage.abilities.hint.common; import mage.abilities.Ability; +import mage.abilities.condition.common.CountersOnPermanentsCondition; import mage.abilities.hint.Hint; import mage.counters.Counter; import mage.counters.CounterType; import mage.filter.FilterPermanent; import mage.game.Game; import mage.game.permanent.Permanent; -import mage.abilities.condition.common.CountersOnPermanentsCondition; import mage.util.CardUtil; /** * A hint which keeps track of how many counters of a specific type there are * among some type of permanents - * + * * @author alexander-novo */ public class CountersOnPermanentsHint implements Hint { @@ -23,6 +23,10 @@ public class CountersOnPermanentsHint implements Hint { // Which counter type to count public final CounterType counterType; + public CountersOnPermanentsHint(CountersOnPermanentsCondition condition) { + this(condition.filter, condition.counterType); + } + /** * @param filter Which permanents to consider counters on * @param counterType Which counter type to count @@ -32,12 +36,9 @@ public class CountersOnPermanentsHint implements Hint { this.counterType = counterType; } - /** - * Copy parameters from a {@link CountersOnPermanentsCondition} - */ - public CountersOnPermanentsHint(CountersOnPermanentsCondition condition) { - this.filter = condition.filter; - this.counterType = condition.counterType; + public CountersOnPermanentsHint(final CountersOnPermanentsHint hint) { + this.filter = hint.filter.copy(); + this.counterType = hint.counterType; } @Override @@ -56,7 +57,7 @@ public class CountersOnPermanentsHint implements Hint { } @Override - public Hint copy() { - return this; + public CountersOnPermanentsHint copy() { + return new CountersOnPermanentsHint(this); } } diff --git a/Mage/src/main/java/mage/game/permanent/token/ConsumingBlobOozeToken.java b/Mage/src/main/java/mage/game/permanent/token/ConsumingBlobOozeToken.java index 42a7f067a44..176a4829c59 100644 --- a/Mage/src/main/java/mage/game/permanent/token/ConsumingBlobOozeToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/ConsumingBlobOozeToken.java @@ -14,8 +14,6 @@ import mage.constants.Zone; */ public final class ConsumingBlobOozeToken extends TokenImpl { - private static final DynamicValue powerValue = CardTypesInGraveyardCount.YOU; - public ConsumingBlobOozeToken() { super("Ooze Token", "green Ooze creature token with \"This creature's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1.\""); cardType.add(CardType.CREATURE); @@ -26,7 +24,9 @@ public final class ConsumingBlobOozeToken extends TokenImpl { toughness = new MageInt(1); // This creature's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1. - this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue))); + this.addAbility(new SimpleStaticAbility(Zone.ALL, + new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.YOU) + ).addHint(CardTypesInGraveyardCount.YOU.getHint())); } private ConsumingBlobOozeToken(final ConsumingBlobOozeToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/TarmogoyfToken.java b/Mage/src/main/java/mage/game/permanent/token/TarmogoyfToken.java index c9107b97f5d..4c24a3ff76d 100644 --- a/Mage/src/main/java/mage/game/permanent/token/TarmogoyfToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/TarmogoyfToken.java @@ -24,7 +24,9 @@ public final class TarmogoyfToken extends TokenImpl { toughness = new MageInt(1); // Tarmogoyf's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1. - this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.ALL))); + this.addAbility(new SimpleStaticAbility(Zone.ALL, + new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.ALL) + ).addHint(CardTypesInGraveyardCount.ALL.getHint())); } private TarmogoyfToken(final TarmogoyfToken token) {