Number of card types in graveyards - added card hint for cards like Tarmogoyf

This commit is contained in:
Oleg Agafonov 2025-02-07 07:37:27 +04:00
parent 4a960995f7
commit 25e4930bd5
94 changed files with 245 additions and 306 deletions

View file

@ -5,7 +5,6 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; 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. // 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( this.addAbility(new AttacksAloneControlledTriggeredAbility(
new BoostTargetEffect(CardTypesInGraveyardCount.ALL, CardTypesInGraveyardCount.ALL, Duration.EndOfTurn), 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. // Lhurgoyf creatures you control have trample.
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(

View file

@ -4,8 +4,8 @@ import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.DealsDamageSourceTriggeredAbility; import mage.abilities.common.DealsDamageSourceTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.ExileTargetEffect; import mage.abilities.effects.common.ExileTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -35,7 +35,7 @@ public final class AngelOfDeliverance extends CardImpl {
Ability ability = new DealsDamageSourceTriggeredAbility(new ExileTargetEffect()) Ability ability = new DealsDamageSourceTriggeredAbility(new ExileTargetEffect())
.withInterveningIf(DeliriumCondition.instance); .withInterveningIf(DeliriumCondition.instance);
ability.addTarget(new TargetOpponentsCreaturePermanent()); ability.addTarget(new TargetOpponentsCreaturePermanent());
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM)); this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM));
} }

View file

@ -3,20 +3,19 @@ package mage.cards.a;
import java.util.UUID; import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.MillCardsControllerEffect; import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AbilityWord; import mage.constants.AbilityWord;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.constants.Zone;
/** /**
* @author LevelX2 * @author LevelX2
@ -34,7 +33,7 @@ public final class AutumnalGloom extends CardImpl {
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
Ability ability = new BeginningOfEndStepTriggeredAbility(TargetController.YOU, new TransformSourceEffect(), false, DeliriumCondition.instance); Ability ability = new BeginningOfEndStepTriggeredAbility(TargetController.YOU, new TransformSourceEffect(), false, DeliriumCondition.instance);
ability.setAbilityWord(AbilityWord.DELIRIUM); ability.setAbilityWord(AbilityWord.DELIRIUM);
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -7,16 +7,15 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone;
/** /**
* @author LevelX2 * @author LevelX2
@ -33,7 +32,7 @@ public final class BackwoodsSurvivalists extends CardImpl {
ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new BoostSourceEffect(1, 1, Duration.WhileOnBattlefield), DeliriumCondition.instance, "<i>Delirium</i> &mdash; {this} gets +1/+1"); ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new BoostSourceEffect(1, 1, Duration.WhileOnBattlefield), DeliriumCondition.instance, "<i>Delirium</i> &mdash; {this} gets +1/+1");
Ability ability = new SimpleStaticAbility(effect); 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.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); this.addAbility(ability);
} }

View file

@ -5,8 +5,8 @@ import mage.abilities.common.ActivateIfConditionActivatedAbility;
import mage.abilities.common.CantBeCounteredSourceAbility; import mage.abilities.common.CantBeCounteredSourceAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldWithCounterEffect; import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldWithCounterEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -42,7 +42,7 @@ public final class BalustradeWurm extends CardImpl {
Zone.GRAVEYARD, Zone.GRAVEYARD,
new ReturnSourceFromGraveyardToBattlefieldWithCounterEffect(CounterType.FINALITY.createInstance(), false), new ReturnSourceFromGraveyardToBattlefieldWithCounterEffect(CounterType.FINALITY.createInstance(), false),
new ManaCostsImpl<>("{2}{G}{G}"), DeliriumCondition.instance, TimingRule.SORCERY 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) { private BalustradeWurm(final BalustradeWurm card) {

View file

@ -24,8 +24,6 @@ import java.util.UUID;
*/ */
public final class Barrowgoyf extends CardImpl { public final class Barrowgoyf extends CardImpl {
private static final DynamicValue powerValue = CardTypesInGraveyardCount.ALL;
public Barrowgoyf(UUID ownerId, CardSetInfo setInfo) { public Barrowgoyf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
this.subtype.add(SubType.LHURGOYF); this.subtype.add(SubType.LHURGOYF);
@ -40,7 +38,9 @@ public final class Barrowgoyf extends CardImpl {
this.addAbility(LifelinkAbility.getInstance()); 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. // 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. // 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( this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(

View file

@ -2,10 +2,10 @@ package mage.cards.b;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.DamageWithPowerFromOneToAnotherTargetEffect; import mage.abilities.effects.common.DamageWithPowerFromOneToAnotherTargetEffect;
import mage.abilities.effects.common.InfoEffect; import mage.abilities.effects.common.InfoEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AbilityWord; 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 " + 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." "card types among cards in your graveyard, put two +1/+1 counters on the creature you control."
).concatBy("<br>")); ).concatBy("<br>"));
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. // The creature you control deals damage equal to its power to the creature an opponent controls.
this.getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect() this.getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect()

View file

@ -6,8 +6,8 @@ import mage.abilities.common.CantBlockAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.CascadeAbility; import mage.abilities.keyword.CascadeAbility;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
@ -45,7 +45,7 @@ public final class BloodbraidMarauder extends CardImpl {
new GainAbilitySourceEffect(new CascadeAbility(), Duration.WhileOnStack, true), new GainAbilitySourceEffect(new CascadeAbility(), Duration.WhileOnStack, true),
DeliriumCondition.instance, DeliriumCondition.instance,
"<i>Delirium</i> &mdash; This spell has cascade as long as there are four or more card types among cards in your graveyard." + REMINDER_TEXT "<i>Delirium</i> &mdash; 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) { private BloodbraidMarauder(final BloodbraidMarauder card) {

View file

@ -10,7 +10,6 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.keyword.SurveilEffect; import mage.abilities.effects.keyword.SurveilEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.ReachAbility; import mage.abilities.keyword.ReachAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -45,7 +44,7 @@ public final class Broodspinner extends CardImpl {
new ManaCostsImpl<>("{4}{B}{G}")); new ManaCostsImpl<>("{4}{B}{G}"));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost()); ability.addCost(new SacrificeSourceCost());
this.addAbility(ability.addHint(CardTypesInGraveyardHint.YOU)); this.addAbility(ability.addHint(CardTypesInGraveyardCount.YOU.getHint()));
} }
private Broodspinner(final Broodspinner card) { private Broodspinner(final Broodspinner card) {

View file

@ -21,8 +21,6 @@ import java.util.UUID;
*/ */
public final class ConsumingBlob extends CardImpl { public final class ConsumingBlob extends CardImpl {
private static final DynamicValue powerValue = CardTypesInGraveyardCount.YOU;
public ConsumingBlob(UUID ownerId, CardSetInfo setInfo) { public ConsumingBlob(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}"); 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); 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. // 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". // 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( this.addAbility(new BeginningOfEndStepTriggeredAbility(

View file

@ -2,8 +2,8 @@ package mage.cards.c;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AbilityWord; 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 TargetArtifactPermanent(0, 1));
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 1)); this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 1));
this.getSpellAbility().addTarget(new TargetEnchantmentPermanent(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) { private ConvertToSlime(final ConvertToSlime card) {

View file

@ -3,6 +3,7 @@ package mage.cards.c;
import java.util.UUID; import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.common.SacrificeSourceCost;
@ -10,7 +11,6 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalActivatedAbility; import mage.abilities.decorator.ConditionalActivatedAbility;
import mage.abilities.effects.common.MillCardsControllerEffect; import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AbilityWord; 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_CREATURE));
ability.addTarget(new TargetCardInYourGraveyard(0, 1, StaticFilters.FILTER_CARD_LAND)); ability.addTarget(new TargetCardInYourGraveyard(0, 1, StaticFilters.FILTER_CARD_LAND));
ability.setAbilityWord(AbilityWord.DELIRIUM); ability.setAbilityWord(AbilityWord.DELIRIUM);
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -6,8 +6,8 @@ import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.DeathtouchAbility; import mage.abilities.keyword.DeathtouchAbility;
import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.BlackManaAbility;
import mage.abilities.mana.GreenManaAbility; import mage.abilities.mana.GreenManaAbility;
@ -16,7 +16,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone;
/** /**
* @author fireshoes * @author fireshoes
@ -38,7 +37,7 @@ public final class DeathcapCultivator extends CardImpl {
this.addAbility(new SimpleStaticAbility( this.addAbility(new SimpleStaticAbility(
new ConditionalContinuousEffect(new GainAbilitySourceEffect(DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield), new ConditionalContinuousEffect(new GainAbilitySourceEffect(DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield),
DeliriumCondition.instance, "<i>Delirium</i> &mdash; {this} has deathtouch as long as there are four or more card types among cards in your graveyard")) DeliriumCondition.instance, "<i>Delirium</i> &mdash; {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) { private DeathcapCultivator(final DeathcapCultivator card) {

View file

@ -4,7 +4,6 @@ import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.dynamicvalue.common.SignInversionDynamicValue; import mage.abilities.dynamicvalue.common.SignInversionDynamicValue;
import mage.abilities.effects.common.continuous.BoostAllEffect; import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; 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. // 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) 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")); .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) { private DelugeOfDoom(final DelugeOfDoom card) {

View file

@ -4,8 +4,8 @@ import mage.MageInt;
import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostAllEffect; import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -43,7 +43,7 @@ public final class DemolisherSpawn extends CardImpl {
StaticFilters.FILTER_ATTACKING_CREATURES, true StaticFilters.FILTER_ATTACKING_CREATURES, true
)), DeliriumCondition.instance, "Whenever {this} attacks, if there are four or more " + )), 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." "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) { private DemolisherSpawn(final DemolisherSpawn card) {

View file

@ -2,8 +2,8 @@ package mage.cards.d;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AbilityWord; 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, " + "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." "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) { private DemonicCounsel(final DemonicCounsel card) {

View file

@ -4,10 +4,10 @@ import java.util.UUID;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.ExileAllEffect; import mage.abilities.effects.common.ExileAllEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; 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 effect = new ConditionalOneShotEffect(new CreateTokenEffect(new AngelToken()), DeliriumCondition.instance);
effect.setText("<br/><i>Delirium</i> &mdash; Create a 4/4 white Angel creature token with flying if there are four or more card types among cards in your graveyard"); effect.setText("<br/><i>Delirium</i> &mdash; 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().addEffect(effect);
this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
} }
private DescendUponTheSinful(final DescendUponTheSinful card) { private DescendUponTheSinful(final DescendUponTheSinful card) {

View file

@ -8,15 +8,14 @@ import mage.abilities.common.DiesSourceTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone;
import mage.game.permanent.token.EldraziHorrorToken; import mage.game.permanent.token.EldraziHorrorToken;
/** /**
@ -39,7 +38,7 @@ public final class DesperateSentry extends CardImpl {
new BoostSourceEffect(3, 0, Duration.WhileOnBattlefield), DeliriumCondition.instance, new BoostSourceEffect(3, 0, Duration.WhileOnBattlefield), DeliriumCondition.instance,
"<i>Delirium</i> &mdash; {this} gets +3/+0 as long as there are four or more card types among cards in your graveyard."); "<i>Delirium</i> &mdash; {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 ability = new SimpleStaticAbility(effect);
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -2,9 +2,9 @@ package mage.cards.d;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AbilityWord; import mage.constants.AbilityWord;
@ -26,7 +26,7 @@ public final class DragToTheRoots extends CardImpl {
this.addAbility(new SimpleStaticAbility( this.addAbility(new SimpleStaticAbility(
Zone.ALL, new SpellCostReductionSourceEffect(2, DeliriumCondition.instance) 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") .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. // Destroy target nonland permanent.
this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new DestroyTargetEffect());

View file

@ -7,11 +7,11 @@ import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.decorator.ConditionalRequirementEffect; import mage.abilities.decorator.ConditionalRequirementEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.combat.AttacksIfAbleSourceEffect; import mage.abilities.effects.common.combat.AttacksIfAbleSourceEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.effects.keyword.SurveilEffect; import mage.abilities.effects.keyword.SurveilEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -55,7 +55,7 @@ public final class DragonsRageChanneler extends CardImpl {
DeliriumCondition.instance, ", and attacks each combat if able" DeliriumCondition.instance, ", and attacks each combat if able"
)); ));
ability.setAbilityWord(AbilityWord.DELIRIUM); ability.setAbilityWord(AbilityWord.DELIRIUM);
this.addAbility(ability.addHint(CardTypesInGraveyardHint.YOU)); this.addAbility(ability.addHint(CardTypesInGraveyardCount.YOU.getHint()));
} }
private DragonsRageChanneler(final DragonsRageChanneler card) { private DragonsRageChanneler(final DragonsRageChanneler card) {

View file

@ -4,8 +4,8 @@ import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; 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 ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(2, DeliriumCondition.instance));
ability.setRuleAtTheTop(true); ability.setRuleAtTheTop(true);
ability.setAbilityWord(AbilityWord.DELIRIUM); ability.setAbilityWord(AbilityWord.DELIRIUM);
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability); this.addAbility(ability);
// Flying // Flying

View file

@ -7,7 +7,6 @@ import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CastSourceTriggeredAbility; import mage.abilities.effects.common.CastSourceTriggeredAbility;
import mage.abilities.effects.common.cost.SpellCostReductionForEachSourceEffect; import mage.abilities.effects.common.cost.SpellCostReductionForEachSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.ProtectionAbility; import mage.abilities.keyword.ProtectionAbility;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
@ -46,7 +45,7 @@ public final class EmrakulThePromisedEnd extends CardImpl {
new SpellCostReductionForEachSourceEffect( new SpellCostReductionForEachSourceEffect(
1, CardTypesInGraveyardCount.YOU 1, CardTypesInGraveyardCount.YOU
).setText("this spell costs {1} less to cast for each card type among cards in your graveyard") ).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. // 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()); Ability ability = new CastSourceTriggeredAbility(new EmrakulThePromisedEndGainControlEffect());

View file

@ -3,6 +3,7 @@ package mage.cards.e;
import java.util.UUID; import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; 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.CreateTokenEffect;
import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -52,7 +52,7 @@ public final class ExtricatorOfSin extends CardImpl {
DeliriumCondition.instance, DeliriumCondition.instance,
"<i>Delirium</i> &mdash; At the beginning of your upkeep, if there are four or more card types among cards in your graveyard, " "<i>Delirium</i> &mdash; At the beginning of your upkeep, if there are four or more card types among cards in your graveyard, "
+ " transform {this}.") + " transform {this}.")
.addHint(CardTypesInGraveyardHint.YOU)); .addHint(CardTypesInGraveyardCount.YOU.getHint()));
} }
private ExtricatorOfSin(final ExtricatorOfSin card) { private ExtricatorOfSin(final ExtricatorOfSin card) {

View file

@ -4,10 +4,10 @@ import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.dynamicvalue.common.SavedDamageValue; import mage.abilities.dynamicvalue.common.SavedDamageValue;
import mage.abilities.effects.common.DamagePlayersEffect; import mage.abilities.effects.common.DamagePlayersEffect;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
@ -60,7 +60,7 @@ class FearOfBurningAliveTriggeredAbility extends TriggeredAbilityImpl {
this.setTriggerPhrase("Whenever a source you control deals noncombat damage to an opponent, " + 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, "); "if there are four or more card types among cards in your graveyard, ");
this.setAbilityWord(AbilityWord.DELIRIUM); this.setAbilityWord(AbilityWord.DELIRIUM);
this.addHint(CardTypesInGraveyardHint.YOU); this.addHint(CardTypesInGraveyardCount.YOU.getHint());
} }
private FearOfBurningAliveTriggeredAbility(final FearOfBurningAliveTriggeredAbility ability) { private FearOfBurningAliveTriggeredAbility(final FearOfBurningAliveTriggeredAbility ability) {

View file

@ -6,11 +6,11 @@ import mage.abilities.common.AttacksFirstTimeTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.AdditionalCombatPhaseEffect; import mage.abilities.effects.common.AdditionalCombatPhaseEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.effects.common.discard.DiscardControllerEffect; import mage.abilities.effects.common.discard.DiscardControllerEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -45,7 +45,7 @@ public final class FearOfMissingOut extends CardImpl {
); );
ability.addTarget(new TargetCreaturePermanent()); ability.addTarget(new TargetCreaturePermanent());
ability.addEffect(new AdditionalCombatPhaseEffect()); ability.addEffect(new AdditionalCombatPhaseEffect());
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -5,9 +5,9 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.keyword.SurveilEffect; import mage.abilities.effects.keyword.SurveilEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -41,7 +41,7 @@ public final class FoulWatcher extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new BoostSourceEffect(1, 0, Duration.WhileOnBattlefield), DeliriumCondition.instance, 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" "{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) { private FoulWatcher(final FoulWatcher card) {

View file

@ -6,9 +6,9 @@ import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalAsThoughEffect; import mage.abilities.decorator.ConditionalAsThoughEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.common.combat.CanAttackAsThoughItDidntHaveDefenderSourceEffect; import mage.abilities.effects.common.combat.CanAttackAsThoughItDidntHaveDefenderSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.DefenderAbility; import mage.abilities.keyword.DefenderAbility;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -16,7 +16,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone;
/** /**
* @author LevelX2 * @author LevelX2
@ -40,7 +39,7 @@ public final class GeistOfTheLonelyVigil extends CardImpl {
new CanAttackAsThoughItDidntHaveDefenderSourceEffect(Duration.WhileOnBattlefield), new CanAttackAsThoughItDidntHaveDefenderSourceEffect(Duration.WhileOnBattlefield),
DeliriumCondition.instance); DeliriumCondition.instance);
effect.setText("<i>Delirium</i> &mdash; {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"); effect.setText("<i>Delirium</i> &mdash; {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) { private GeistOfTheLonelyVigil(final GeistOfTheLonelyVigil card) {

View file

@ -3,13 +3,13 @@ package mage.cards.g;
import java.util.UUID; import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.DamagePlayersEffect; import mage.abilities.effects.common.DamagePlayersEffect;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -37,7 +37,7 @@ public final class GibberingFiend extends CardImpl {
DeliriumCondition.instance, DeliriumCondition.instance,
"<i>Delirium</i> &mdash; At the beginning of each opponent's upkeep, if there are four or more card types among cards in your graveyard, " "<i>Delirium</i> &mdash; 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.") + "{this} deals 1 damage to that player.")
.addHint(CardTypesInGraveyardHint.YOU)); .addHint(CardTypesInGraveyardCount.YOU.getHint()));
} }
private GibberingFiend(final GibberingFiend card) { private GibberingFiend(final GibberingFiend card) {

View file

@ -7,15 +7,14 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.DeathtouchAbility; import mage.abilities.keyword.DeathtouchAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone;
/** /**
* @author fireshoes * @author fireshoes
@ -37,7 +36,7 @@ public final class GnarlwoodDryad extends CardImpl {
new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield), DeliriumCondition.instance, new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield), DeliriumCondition.instance,
"<i>Delirium</i> &mdash; {this} gets +2/+2 as long as there are four or more card types among cards in your graveyard."); "<i>Delirium</i> &mdash; {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 ability = new SimpleStaticAbility(effect);
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -4,8 +4,8 @@ import mage.MageInt;
import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.DamageAllControlledTargetEffect; import mage.abilities.effects.common.DamageAllControlledTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.ReachAbility; import mage.abilities.keyword.ReachAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -37,7 +37,7 @@ public final class GougedZealot extends CardImpl {
new AttacksTriggeredAbility(new DamageAllControlledTargetEffect(1), false, null, SetTargetPointer.PLAYER), new AttacksTriggeredAbility(new DamageAllControlledTargetEffect(1), false, null, SetTargetPointer.PLAYER),
DeliriumCondition.instance, DeliriumCondition.instance,
"<i>Delirium</i> &mdash; 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." "<i>Delirium</i> &mdash; 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) { private GougedZealot(final GougedZealot card) {

View file

@ -5,9 +5,9 @@ import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.keyword.SurveilEffect; import mage.abilities.effects.keyword.SurveilEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; 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 " + DeliriumCondition.instance, "{this} gets +2/+2 as long as there are " +
"four or more card types among cards in your graveyard" "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) { private GrimFlayer(final GrimFlayer card) {

View file

@ -5,9 +5,9 @@ import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.MenaceAbility; import mage.abilities.keyword.MenaceAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; 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." "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)); 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) { private HandThatFeeds(final HandThatFeeds card) {

View file

@ -7,8 +7,8 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.MenaceAbility; import mage.abilities.keyword.MenaceAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -16,7 +16,6 @@ import mage.constants.AbilityWord;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone;
/** /**
* @author fireshoes * @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. " + "{this} has menace as long as there are four or more card types among cards in your graveyard. " +
"<i>(A creature with menace can't be blocked except by two or more creatures.)</i>")); "<i>(A creature with menace can't be blocked except by two or more creatures.)</i>"));
ability.setAbilityWord(AbilityWord.DELIRIUM); ability.setAbilityWord(AbilityWord.DELIRIUM);
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -2,9 +2,9 @@ package mage.cards.i;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.ExileTopXMayPlayUntilEffect; import mage.abilities.effects.common.ExileTopXMayPlayUntilEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AbilityWord; 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. " + "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" "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) { private ImpossibleInferno(final ImpossibleInferno card) {

View file

@ -6,8 +6,8 @@ import mage.MageInt;
import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -31,7 +31,7 @@ public final class InexorableBlob extends CardImpl {
DeliriumCondition.instance, DeliriumCondition.instance,
"<i>Delirium</i> &mdash; Whenever {this} attacks, if there are four or more card types among cards in your graveyard, " + "<i>Delirium</i> &mdash; 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.") "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) { private InexorableBlob(final InexorableBlob card) {

View file

@ -7,16 +7,15 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.VigilanceAbility; import mage.abilities.keyword.VigilanceAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone;
/** /**
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com) * @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, "<i>Delirium</i> &mdash; {this} gets +1/+0"); ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new BoostSourceEffect(1, 0, Duration.WhileOnBattlefield), DeliriumCondition.instance, "<i>Delirium</i> &mdash; {this} gets +1/+0");
Ability ability = new SimpleStaticAbility(effect); 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.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); this.addAbility(ability);
} }

View file

@ -4,10 +4,9 @@ import java.util.UUID;
import mage.MageObject; import mage.MageObject;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.Mode;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.search.SearchTargetGraveyardHandLibraryForCardNameAndExileEffect; import mage.abilities.effects.common.search.SearchTargetGraveyardHandLibraryForCardNameAndExileEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.Card; import mage.cards.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -36,7 +35,7 @@ public final class InvasiveSurgery extends CardImpl {
// <i>Delirium</i> &mdash; 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. // <i>Delirium</i> &mdash; 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().addEffect(new InvasiveSurgeryEffect());
this.getSpellAbility().addTarget(new TargetSpell(filter)); this.getSpellAbility().addTarget(new TargetSpell(filter));
this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
} }
private InvasiveSurgery(final InvasiveSurgery card) { private InvasiveSurgery(final InvasiveSurgery card) {

View file

@ -7,18 +7,17 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.LoseLifeTargetEffect; import mage.abilities.effects.common.LoseLifeTargetEffect;
import mage.abilities.hint.ValueHint; import mage.abilities.hint.ValueHint;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.ReachAbility; import mage.abilities.keyword.ReachAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.SpiderToken; import mage.game.permanent.token.SpiderToken;
import mage.target.common.TargetOpponent; import mage.target.common.TargetOpponent;
@ -49,7 +48,7 @@ public final class IshkanahGrafwidow extends CardImpl {
DeliriumCondition.instance, DeliriumCondition.instance,
"<i>Delirium</i> &mdash; When {this} enters, if there are four or more card types among cards in your graveyard, " "<i>Delirium</i> &mdash; 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."); + "create three 1/2 green Spider creature tokens with reach.");
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability); this.addAbility(ability);
// {5}{B}: Target opponent loses 1 life for each Spider you control. // {5}{B}: Target opponent loses 1 life for each Spider you control.

View file

@ -6,15 +6,14 @@ import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone;
/** /**
* @author LevelX2 * @author LevelX2
@ -32,7 +31,7 @@ public final class KessigDireSwine extends CardImpl {
this.addAbility(new SimpleStaticAbility( this.addAbility(new SimpleStaticAbility(
new ConditionalContinuousEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield), new ConditionalContinuousEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield),
DeliriumCondition.instance, "<i>Delirium</i> &mdash; {this} has trample as long as there are four or more card types among cards in your graveyard")) DeliriumCondition.instance, "<i>Delirium</i> &mdash; {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) { private KessigDireSwine(final KessigDireSwine card) {

View file

@ -4,8 +4,8 @@ import mage.MageInt;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalActivatedAbility; import mage.abilities.decorator.ConditionalActivatedAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.TransformSourceEffect; import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -34,7 +34,7 @@ public final class KindlyStranger extends CardImpl {
Zone.BATTLEFIELD, new TransformSourceEffect(), new ManaCostsImpl<>("{2}{B}"), Zone.BATTLEFIELD, new TransformSourceEffect(), new ManaCostsImpl<>("{2}{B}"),
DeliriumCondition.instance, "<i>Delirium</i> &mdash; {2}{B}: Transform {this}. " + DeliriumCondition.instance, "<i>Delirium</i> &mdash; {2}{B}: Transform {this}. " +
"Activate only if there are four or more card types among cards in your graveyard." "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) { private KindlyStranger(final KindlyStranger card) {

View file

@ -2,12 +2,12 @@ package mage.cards.l;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.LoseLifeOpponentsEffect; import mage.abilities.effects.common.LoseLifeOpponentsEffect;
import mage.abilities.effects.common.continuous.BoostAllEffect; import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.abilities.effects.common.discard.DiscardEachPlayerEffect; import mage.abilities.effects.common.discard.DiscardEachPlayerEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AbilityWord; import mage.constants.AbilityWord;
@ -32,7 +32,7 @@ public final class LetsPlayAGame extends CardImpl {
); );
this.getSpellAbility().getModes().setMoreCondition(3, DeliriumCondition.instance); this.getSpellAbility().getModes().setMoreCondition(3, DeliriumCondition.instance);
this.getSpellAbility().setAbilityWord(AbilityWord.DELIRIUM); 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. // * Creatures your opponents control get -1/-1 until end of turn.
this.getSpellAbility().addEffect(new BoostAllEffect( this.getSpellAbility().addEffect(new BoostAllEffect(

View file

@ -5,6 +5,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CardsInAllGraveyardsCount; import mage.abilities.dynamicvalue.common.CardsInAllGraveyardsCount;
import mage.abilities.effects.common.continuous.SetBasePowerToughnessPlusOneSourceEffect; import mage.abilities.effects.common.continuous.SetBasePowerToughnessPlusOneSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -30,7 +31,9 @@ public final class Lhurgoyf extends CardImpl {
this.toughness = new MageInt(0); 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. // 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) { private Lhurgoyf(final Lhurgoyf card) {

View file

@ -2,7 +2,6 @@ package mage.cards.l;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; 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. // Draw X cards, where X is the number of card types among cards in your graveyard.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(CardTypesInGraveyardCount.YOU) this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(CardTypesInGraveyardCount.YOU)
.setText("draw X cards, where X is the number of card types among cards in your graveyard")); .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) { private LucidDreams(final LucidDreams card) {

View file

@ -1,13 +1,13 @@
package mage.cards.m; package mage.cards.m;
import mage.MageInt; import mage.MageInt;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.MillCardsEachPlayerEffect; import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.effects.common.MillCardsTargetEffect; import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -42,7 +42,7 @@ public final class ManicScribe extends CardImpl {
false false
), DeliriumCondition.instance, "<i>Delirium</i> &mdash; At the beginning of each opponent's upkeep, " + ), DeliriumCondition.instance, "<i>Delirium</i> &mdash; 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." "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) { private ManicScribe(final ManicScribe card) {

View file

@ -4,8 +4,8 @@ import java.util.UUID;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -30,7 +30,7 @@ public final class MightBeyondReason extends CardImpl {
+ "<i>Delirium</i> &mdash; Put three +1/+1 counters on that creature instead if there are four or more card types among cards in your graveyard" + "<i>Delirium</i> &mdash; 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().addTarget(new TargetCreaturePermanent());
getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
} }
private MightBeyondReason(final MightBeyondReason card) { private MightBeyondReason(final MightBeyondReason card) {

View file

@ -4,6 +4,7 @@ import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.InvertCondition; import mage.abilities.condition.InvertCondition;
@ -11,7 +12,6 @@ import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
import mage.abilities.effects.common.MillCardsControllerEffect; import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -44,7 +44,7 @@ public final class MindwrackDemon extends CardImpl {
new BeginningOfUpkeepTriggeredAbility(new LoseLifeSourceControllerEffect(4)), new BeginningOfUpkeepTriggeredAbility(new LoseLifeSourceControllerEffect(4)),
new InvertCondition(DeliriumCondition.instance), new InvertCondition(DeliriumCondition.instance),
"<i>Delirium</i> &mdash; At the beginning of your upkeep, you lose 4 life unless there are four or more card types among cards in your graveyard."); "<i>Delirium</i> &mdash; 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); this.addAbility(ability);
} }

View file

@ -6,14 +6,13 @@ import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone;
/** /**
* @author LevelX2 * @author LevelX2
@ -31,7 +30,7 @@ public final class MoldgrafScavenger extends CardImpl {
new BoostSourceEffect(3, 0, Duration.WhileOnBattlefield), new BoostSourceEffect(3, 0, Duration.WhileOnBattlefield),
DeliriumCondition.instance, DeliriumCondition.instance,
"<i>Delirium</i> &mdash; {this} gets +3/+0 as long as there are four or more card types among cards in your graveyard")) "<i>Delirium</i> &mdash; {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) { private MoldgrafScavenger(final MoldgrafScavenger card) {

View file

@ -6,14 +6,13 @@ import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone;
/** /**
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com) * @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
@ -28,7 +27,7 @@ public final class MoorlandDrifter extends CardImpl {
// <i>Delirium</i> &mdash; Moorland Drifter has flying as long as there are four or more card types among cards in your graveyard. // <i>Delirium</i> &mdash; 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, "<i>Delirium</i> &mdash; 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, "<i>Delirium</i> &mdash; 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) { private MoorlandDrifter(final MoorlandDrifter card) {

View file

@ -5,8 +5,8 @@ import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.RestrictionEffect; import mage.abilities.effects.RestrictionEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -40,7 +40,7 @@ public final class Mournwillow extends CardImpl {
DeliriumCondition.instance, DeliriumCondition.instance,
"<i>Delirium</i> &mdash; When {this} enters, if there are four or more card types among cards in your graveyard, " "<i>Delirium</i> &mdash; 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."); + "creatures with power 2 or less can't block this turn.");
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -34,8 +34,6 @@ import java.util.stream.Collectors;
*/ */
public final class Nethergoyf extends CardImpl { public final class Nethergoyf extends CardImpl {
private static final DynamicValue powerValue = CardTypesInGraveyardCount.YOU;
public Nethergoyf(UUID ownerId, CardSetInfo setInfo) { public Nethergoyf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
@ -44,7 +42,9 @@ public final class Nethergoyf extends CardImpl {
this.toughness = new MageInt(1); 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. // 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. // Escape--{2}{B}, Exile any number of other cards from your graveyard with four or more card types among them.
CostsImpl<Cost> additionalCost = new CostsImpl(); CostsImpl<Cost> additionalCost = new CostsImpl();

View file

@ -7,7 +7,6 @@ import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.common.continuous.SetBasePowerSourceEffect; import mage.abilities.effects.common.continuous.SetBasePowerSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.DeathtouchAbility; import mage.abilities.keyword.DeathtouchAbility;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.LifelinkAbility; 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 " + .setText("{this}'s power is equal to 1 plus the number of " +
"card types among cards in your opponents' graveyards. " + "card types among cards in your opponents' graveyards. " +
"<i>(Cards in graveyards have only the characteristics of their front face.)</i>") "<i>(Cards in graveyards have only the characteristics of their front face.)</i>")
).addHint(CardTypesInGraveyardHint.OPPONENTS)); ).addHint(CardTypesInGraveyardCount.OPPONENTS.getHint()));
} }
private NighthawkScavenger(final NighthawkScavenger card) { private NighthawkScavenger(final NighthawkScavenger card) {

View file

@ -4,12 +4,12 @@ import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -43,7 +43,7 @@ public final class ObsessiveSkinner extends CardImpl {
"<i>Delirium</i> &mdash; At the beginning of each opponent's upkeep, if there are four or more card types among cards in your graveyard, " "<i>Delirium</i> &mdash; 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."); + "put a +1/+1 counter on target creature.");
ability.addTarget(new TargetCreaturePermanent()); ability.addTarget(new TargetCreaturePermanent());
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -9,7 +9,6 @@ import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.counter.DistributeCountersEffect; import mage.abilities.effects.common.counter.DistributeCountersEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
@ -42,7 +41,7 @@ public final class OmnivorousFlytrap extends CardImpl {
new OmnivorousFlytrapCondition()) new OmnivorousFlytrapCondition())
.concatBy("Then")); .concatBy("Then"));
ability.addTarget(new TargetCreaturePermanentAmount(2)); ability.addTarget(new TargetCreaturePermanentAmount(2));
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM)); this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM));
} }

View file

@ -7,16 +7,15 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone;
/** /**
* @author fireshoes * @author fireshoes
@ -38,7 +37,7 @@ public final class ParanoidParishBlade extends CardImpl {
effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield), 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."); 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.addEffect(effect);
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -2,12 +2,12 @@ package mage.cards.p;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.effects.RestrictionEffect; import mage.abilities.effects.RestrictionEffect;
import mage.abilities.effects.common.MillCardsControllerEffect; import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; 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. // 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()) this.addAbility(new SimpleStaticAbility(new PatchworkBeastieEffect())
.setAbilityWord(AbilityWord.DELIRIUM) .setAbilityWord(AbilityWord.DELIRIUM)
.addHint(CardTypesInGraveyardHint.YOU)); .addHint(CardTypesInGraveyardCount.YOU.getHint()));
// At the beginning of your upkeep, you may mill a card. // At the beginning of your upkeep, you may mill a card.
this.addAbility(new BeginningOfUpkeepTriggeredAbility( this.addAbility(new BeginningOfUpkeepTriggeredAbility(

View file

@ -3,7 +3,6 @@ package mage.cards.p;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.discard.DiscardHandControllerEffect; import mage.abilities.effects.common.discard.DiscardHandControllerEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; 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. // 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 DiscardHandControllerEffect());
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(CardTypesInGraveyardCount.YOU).concatBy("Then")); 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) { private PeerPastTheVeil(final PeerPastTheVeil card) {

View file

@ -3,10 +3,9 @@ package mage.cards.p;
import java.util.UUID; import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.Mode;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.search.SearchTargetGraveyardHandLibraryForCardNameAndExileEffect; import mage.abilities.effects.common.search.SearchTargetGraveyardHandLibraryForCardNameAndExileEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.Card; import mage.cards.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -31,7 +30,7 @@ public final class PickTheBrain extends CardImpl {
// <i>Delirium</i> &mdash; 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. // <i>Delirium</i> &mdash; 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().addEffect(new PickTheBrainEffect());
this.getSpellAbility().addTarget(new TargetOpponent()); this.getSpellAbility().addTarget(new TargetOpponent());
this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
} }
private PickTheBrain(final PickTheBrain card) { private PickTheBrain(final PickTheBrain card) {

View file

@ -20,8 +20,6 @@ import mage.constants.Zone;
*/ */
public final class Polygoyf extends CardImpl { public final class Polygoyf extends CardImpl {
private static final DynamicValue powerValue = CardTypesInGraveyardCount.ALL;
public Polygoyf(UUID ownerId, CardSetInfo setInfo) { public Polygoyf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
@ -36,7 +34,9 @@ public final class Polygoyf extends CardImpl {
this.addAbility(new MyriadAbility()); 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. // 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) { private Polygoyf(final Polygoyf card) {

View file

@ -4,9 +4,9 @@ import mage.MageInt;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect; import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AbilityWord; 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." "choose one. If there are four or more card types among cards in your graveyard, choose both instead."
); );
this.addTarget(new TargetAnyTarget()); this.addTarget(new TargetAnyTarget());
this.addHint(CardTypesInGraveyardHint.YOU); this.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.setAbilityWord(AbilityWord.DELIRIUM); this.setAbilityWord(AbilityWord.DELIRIUM);
} }

View file

@ -27,8 +27,6 @@ public final class Pyrogoyf extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.LHURGOYF, "Lhurgoyf creature"); private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(SubType.LHURGOYF, "Lhurgoyf creature");
private static final DynamicValue powerValue = CardTypesInGraveyardCount.ALL;
public Pyrogoyf(UUID ownerId, CardSetInfo setInfo) { public Pyrogoyf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
this.subtype.add(SubType.LHURGOYF); this.subtype.add(SubType.LHURGOYF);
@ -37,7 +35,9 @@ public final class Pyrogoyf extends CardImpl {
this.toughness = new MageInt(1); 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. // 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. // Whenever Pyrogoyf or another Lhurgoyf creature you control enters, that creature deals damage equal to its power to any target.
Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility( Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility(

View file

@ -7,9 +7,9 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.DrawDiscardControllerEffect; import mage.abilities.effects.common.DrawDiscardControllerEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AbilityWord; import mage.constants.AbilityWord;
@ -45,7 +45,7 @@ public final class RavingVisionary extends CardImpl {
new ManaCostsImpl<>("{2}{U}"), DeliriumCondition.instance new ManaCostsImpl<>("{2}{U}"), DeliriumCondition.instance
); );
ability.addCost(new TapSourceCost()); 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) { private RavingVisionary(final RavingVisionary card) {

View file

@ -6,8 +6,8 @@ import mage.MageInt;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.decorator.ConditionalActivatedAbility; import mage.abilities.decorator.ConditionalActivatedAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -18,8 +18,6 @@ import mage.constants.Zone;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.target.common.TargetControlledCreaturePermanent;
/** /**
* @author fireshoes * @author fireshoes
*/ */
@ -42,7 +40,7 @@ public final class ReaperOfFlightMoonsilver extends CardImpl {
DeliriumCondition.instance, DeliriumCondition.instance,
"<i>Delirium</i> &mdash; Sacrifice another creature: Reaper of Flight Moonsilver gets +2/+1 until end of turn. " "<i>Delirium</i> &mdash; 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.") + "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) { private ReaperOfFlightMoonsilver(final ReaperOfFlightMoonsilver card) {

View file

@ -4,8 +4,8 @@ import mage.MageInt;
import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.common.ActivateIfConditionActivatedAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldWithCounterEffect; import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldWithCounterEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
@ -31,7 +31,7 @@ public final class ResurrectedCultist extends CardImpl {
Zone.GRAVEYARD, Zone.GRAVEYARD,
new ReturnSourceFromGraveyardToBattlefieldWithCounterEffect(CounterType.FINALITY.createInstance(), false), new ReturnSourceFromGraveyardToBattlefieldWithCounterEffect(CounterType.FINALITY.createInstance(), false),
new ManaCostsImpl<>("{2}{B}{B}"), DeliriumCondition.instance, TimingRule.SORCERY 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) { private ResurrectedCultist(final ResurrectedCultist card) {

View file

@ -4,9 +4,9 @@ import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect; import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AbilityWord; 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 ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(2, DeliriumCondition.instance));
ability.setRuleAtTheTop(true); ability.setRuleAtTheTop(true);
ability.setAbilityWord(AbilityWord.DELIRIUM); ability.setAbilityWord(AbilityWord.DELIRIUM);
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability); this.addAbility(ability);
// Draw three cards. // Draw three cards.

View file

@ -6,8 +6,8 @@ import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.DoubleStrikeAbility; import mage.abilities.keyword.DoubleStrikeAbility;
import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -15,7 +15,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone;
/** /**
* @author fireshoes * @author fireshoes
@ -35,7 +34,7 @@ public final class ScourgeWolf extends CardImpl {
// <i>Delirium</i> &mdash; Scourge Wolf has double strike as long as there are four or more card types among cards in your graveyard. // <i>Delirium</i> &mdash; 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), ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(DoubleStrikeAbility.getInstance(), Duration.WhileOnBattlefield),
DeliriumCondition.instance, "<i>Delirium</i> &mdash; {this} has double strike as long as there are four or more card types among cards in your graveyard."); DeliriumCondition.instance, "<i>Delirium</i> &mdash; {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) { private ScourgeWolf(final ScourgeWolf card) {

View file

@ -7,9 +7,9 @@ import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.costs.common.DiscardCardCost; import mage.abilities.costs.common.DiscardCardCost;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AbilityWord; import mage.constants.AbilityWord;
@ -42,7 +42,7 @@ public final class Scuttletide extends CardImpl {
1, 1, Duration.WhileOnBattlefield, filter, false 1, 1, Duration.WhileOnBattlefield, filter, false
), DeliriumCondition.instance, "Crabs you control get +1/+1 as long " + ), DeliriumCondition.instance, "Crabs you control get +1/+1 as long " +
"as there are four or more card types among cards in your graveyard" "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) { private Scuttletide(final Scuttletide card) {

View file

@ -6,8 +6,8 @@ import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.condition.common.YouControlPermanentCondition; import mage.abilities.condition.common.YouControlPermanentCondition;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalActivatedAbility; import mage.abilities.decorator.ConditionalActivatedAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.mana.GreenManaAbility; import mage.abilities.mana.GreenManaAbility;
import mage.cards.Card; import mage.cards.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -52,7 +52,7 @@ public final class ShiftingWoodland extends CardImpl {
); );
ability.addTarget(new TargetCardInYourGraveyard(1, filterCard)); ability.addTarget(new TargetCardInYourGraveyard(1, filterCard));
ability.setAbilityWord(AbilityWord.DELIRIUM); ability.setAbilityWord(AbilityWord.DELIRIUM);
this.addAbility(ability.addHint(CardTypesInGraveyardHint.YOU)); this.addAbility(ability.addHint(CardTypesInGraveyardCount.YOU.getHint()));
} }
private ShiftingWoodland(final ShiftingWoodland card) { private ShiftingWoodland(final ShiftingWoodland card) {

View file

@ -3,11 +3,11 @@ package mage.cards.s;
import java.util.UUID; import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility; import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -35,7 +35,7 @@ public final class SoulSwallower extends CardImpl {
DeliriumCondition.instance, DeliriumCondition.instance,
"<i>Delirium</i> &mdash; At the beginning of your upkeep, if there are four or more card types among cards in your graveyard, " "<i>Delirium</i> &mdash; 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.") + "put three +1/+1 counters on Soul Swallower.")
.addHint(CardTypesInGraveyardHint.YOU)); .addHint(CardTypesInGraveyardCount.YOU.getHint()));
} }
private SoulSwallower(final SoulSwallower card) { private SoulSwallower(final SoulSwallower card) {

View file

@ -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. // 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)) this.addAbility(new SimpleStaticAbility(Zone.ALL,
.setAbilityWord(AbilityWord.FATHOMLESS_DESCENT).addHint(DescendCondition.getHint())); new SetBasePowerToughnessPlusOneSourceEffect(xValue)
).setAbilityWord(AbilityWord.FATHOMLESS_DESCENT).addHint(DescendCondition.getHint()));
} }
private SoulsOfTheLost(final SoulsOfTheLost card) { private SoulsOfTheLost(final SoulsOfTheLost card) {

View file

@ -6,10 +6,10 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.VigilanceAbility; import mage.abilities.keyword.VigilanceAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -48,7 +48,7 @@ public final class SpineseekerCentipede extends CardImpl {
new GainAbilitySourceEffect(VigilanceAbility.getInstance()), DeliriumCondition.instance, new GainAbilitySourceEffect(VigilanceAbility.getInstance()), DeliriumCondition.instance,
"and has vigilance as long as there are four or more card types among cards in your graveyard" "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) { private SpineseekerCentipede(final SpineseekerCentipede card) {

View file

@ -4,8 +4,8 @@ import mage.MageInt;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalActivatedAbility; import mage.abilities.decorator.ConditionalActivatedAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
@ -30,7 +30,7 @@ public final class StallionOfAshmouth extends CardImpl {
Zone.BATTLEFIELD, Zone.BATTLEFIELD,
new BoostSourceEffect(1, 1, Duration.EndOfTurn), new BoostSourceEffect(1, 1, Duration.EndOfTurn),
new ManaCostsImpl<>("{1}{B}"), DeliriumCondition.instance new ManaCostsImpl<>("{1}{B}"), DeliriumCondition.instance
).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU)); ).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
} }
private StallionOfAshmouth(final StallionOfAshmouth card) { private StallionOfAshmouth(final StallionOfAshmouth card) {

View file

@ -6,16 +6,15 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.BoostEnchantedEffect; import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.Zone;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
@ -41,7 +40,7 @@ public final class StrangeAugmentation extends CardImpl {
// <i>Delirium</i> &mdash Enchanted creature gets an additional +2/+2 as long as there are four or more card types among cards in your graveyard. // <i>Delirium</i> &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, this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(new BoostEnchantedEffect(2, 2), DeliriumCondition.instance,
"<i>Delirium</i> &mdash; Enchanted creature gets an additional +2/+2 as long as there are four or more card types among cards in your graveyard.")) "<i>Delirium</i> &mdash; 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) { private StrangeAugmentation(final StrangeAugmentation card) {

View file

@ -18,8 +18,6 @@ import java.util.UUID;
*/ */
public final class Tarmogoyf extends CardImpl { public final class Tarmogoyf extends CardImpl {
private static final DynamicValue powerValue = CardTypesInGraveyardCount.ALL;
public Tarmogoyf(UUID ownerId, CardSetInfo setInfo) { public Tarmogoyf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
this.subtype.add(SubType.LHURGOYF); this.subtype.add(SubType.LHURGOYF);
@ -28,7 +26,9 @@ public final class Tarmogoyf extends CardImpl {
this.toughness = new MageInt(1); 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. // 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) { private Tarmogoyf(final Tarmogoyf card) {

View file

@ -6,10 +6,10 @@ import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.dynamicvalue.common.GetXValue; import mage.abilities.dynamicvalue.common.GetXValue;
import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.ReplacementEffectImpl;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.constants.*; import mage.constants.*;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -34,7 +34,7 @@ public final class TheRollercrusherRide extends CardImpl {
// it deals double that damage instead. // it deals double that damage instead.
this.addAbility(new SimpleStaticAbility(new TheRollercrusherRideEffect()) this.addAbility(new SimpleStaticAbility(new TheRollercrusherRideEffect())
.setAbilityWord(AbilityWord.DELIRIUM) .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. // 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) Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(GetXValue.instance)

View file

@ -6,10 +6,10 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.DeathtouchAbility; import mage.abilities.keyword.DeathtouchAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -62,7 +62,7 @@ public final class TheSwarmweaver extends CardImpl {
DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield, filter2 DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield, filter2
), DeliriumCondition.instance, "and have deathtouch" ), 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) { private TheSwarmweaver(final TheSwarmweaver card) {

View file

@ -7,16 +7,15 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.MenaceAbility; import mage.abilities.keyword.MenaceAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Zone;
/** /**
* @author LevelX2 * @author LevelX2
@ -35,7 +34,7 @@ public final class ThrabenFoulbloods extends CardImpl {
Ability ability = new SimpleStaticAbility(effect); Ability ability = new SimpleStaticAbility(effect);
ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(new MenaceAbility()), DeliriumCondition.instance, 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. <i>(A creature with menace can't be blocked except by two or more creatures.)</i>")); "and has menace as long as there are four or more card types among cards in your graveyard. <i>(A creature with menace can't be blocked except by two or more creatures.)</i>"));
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -5,8 +5,8 @@ import java.util.UUID;
import mage.abilities.condition.InvertCondition; import mage.abilities.condition.InvertCondition;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.SacrificeEffect; import mage.abilities.effects.common.SacrificeEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -37,7 +37,7 @@ public final class ToTheSlaughter extends CardImpl {
new SacrificeEffect(StaticFilters.FILTER_PERMANENT_PLANESWALKER, 1, "Target player"), new SacrificeEffect(StaticFilters.FILTER_PERMANENT_PLANESWALKER, 1, "Target player"),
DeliriumCondition.instance, "and a planeswalker.")); DeliriumCondition.instance, "and a planeswalker."));
this.getSpellAbility().addTarget(new TargetPlayer()); this.getSpellAbility().addTarget(new TargetPlayer());
this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
} }
private ToTheSlaughter(final ToTheSlaughter card) { private ToTheSlaughter(final ToTheSlaughter card) {

View file

@ -8,8 +8,8 @@ import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -48,7 +48,7 @@ public final class ToothCollector extends CardImpl {
DeliriumCondition.instance, DeliriumCondition.instance,
"<i>Delirium</i> &mdash; At the beginning of each opponent's upkeep, if there are four or more card types among cards in your graveyard, " "<i>Delirium</i> &mdash; 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."); + "target creature that player controls gets -1/-1 until end of turn.");
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -8,8 +8,8 @@ import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.TapTargetEffect; import mage.abilities.effects.common.TapTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -50,7 +50,7 @@ public final class Topplegeist extends CardImpl {
DeliriumCondition.instance, DeliriumCondition.instance,
"<i>Delirium</i> &mdash; At the beginning of each opponent's upkeep, if there are four or more card types among cards in your graveyard, " "<i>Delirium</i> &mdash; 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."); + "tap target creature that player controls.");
ability.addHint(CardTypesInGraveyardHint.YOU); ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -3,7 +3,6 @@ package mage.cards.t;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.AbilityWord; import mage.constants.AbilityWord;

View file

@ -2,8 +2,8 @@ package mage.cards.u;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; 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." "if there are four or more card types among cards in your graveyard."
)); ));
this.getSpellAbility().addTarget(new TargetCreatureOrPlaneswalker()); this.getSpellAbility().addTarget(new TargetCreatureOrPlaneswalker());
this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
} }
private UnholyHeat(final UnholyHeat card) { private UnholyHeat(final UnholyHeat card) {

View file

@ -9,6 +9,7 @@ import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
import mage.abilities.dynamicvalue.common.MultikickerCount; import mage.abilities.dynamicvalue.common.MultikickerCount;
import mage.abilities.effects.common.MillCardsControllerEffect; import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.continuous.SetBasePowerToughnessPlusOneSourceEffect; import mage.abilities.effects.common.continuous.SetBasePowerToughnessPlusOneSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.KickerAbility; import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -43,7 +44,9 @@ public final class UrborgLhurgoyf extends CardImpl {
this.addAbility(new AsEntersBattlefieldAbility(new MillCardsControllerEffect(millValue))); 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. // 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) { private UrborgLhurgoyf(final UrborgLhurgoyf card) {

View file

@ -2,10 +2,10 @@ package mage.cards.v;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.AddContinuousEffectToGame; import mage.abilities.effects.common.AddContinuousEffectToGame;
import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.DoubleStrikeAbility; import mage.abilities.keyword.DoubleStrikeAbility;
import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl; 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 " + 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" "card types among cards in your graveyard, that creature gains double strike until end of turn"
).concatBy("<br>")); ).concatBy("<br>"));
this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
} }
private ViolentUrge(final ViolentUrge card) { private ViolentUrge(final ViolentUrge card) {

View file

@ -5,8 +5,8 @@ import java.util.UUID;
import mage.abilities.condition.InvertCondition; import mage.abilities.condition.InvertCondition;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.discard.DiscardTargetEffect; import mage.abilities.effects.common.discard.DiscardTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -32,7 +32,7 @@ public final class WhispersOfEmrakul extends CardImpl {
DeliriumCondition.instance, DeliriumCondition.instance,
"<br><i>Delirium</i> &mdash; If there are four or more card types among cards in your graveyard, that player discards two cards at random instead")); "<br><i>Delirium</i> &mdash; 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().addTarget(new TargetOpponent());
this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU); this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
} }
private WhispersOfEmrakul(final WhispersOfEmrakul card) { private WhispersOfEmrakul(final WhispersOfEmrakul card) {

View file

@ -5,8 +5,8 @@ import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.Card; import mage.cards.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; 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 " + 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 " + "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." "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) { private WickerfolkThresher(final WickerfolkThresher card) {

View file

@ -5,9 +5,9 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition; import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -43,7 +43,7 @@ public final class WildfireWickerfolk extends CardImpl {
new GainAbilitySourceEffect(TrampleAbility.getInstance()), DeliriumCondition.instance, new GainAbilitySourceEffect(TrampleAbility.getInstance()), DeliriumCondition.instance,
"and has trample as long as there are four or more card types among cards in your graveyard" "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) { private WildfireWickerfolk(final WildfireWickerfolk card) {

View file

@ -8,7 +8,6 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.ContinuousEffectImpl; import mage.abilities.effects.ContinuousEffectImpl;
import mage.abilities.effects.common.DrawCardAllEffect; import mage.abilities.effects.common.DrawCardAllEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.WardAbility; import mage.abilities.keyword.WardAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; 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. // 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()) this.addAbility(new SimpleStaticAbility(new WinterMisanthropicGuideEffect())
.setAbilityWord(AbilityWord.DELIRIUM) .setAbilityWord(AbilityWord.DELIRIUM)
.addHint(CardTypesInGraveyardHint.YOU)); .addHint(CardTypesInGraveyardCount.YOU.getHint()));
} }
private WinterMisanthropicGuide(final WinterMisanthropicGuide card) { private WinterMisanthropicGuide(final WinterMisanthropicGuide card) {

View file

@ -3,14 +3,16 @@ package mage.abilities.dynamicvalue.common;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.hint.Hint;
import mage.abilities.hint.ValueHint;
import mage.cards.Card; import mage.cards.Card;
import mage.constants.CardType;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.PermanentToken; import mage.game.permanent.PermanentToken;
import mage.players.Player; import mage.players.Player;
import java.util.Collection; import java.util.*;
import java.util.Objects; import java.util.stream.Collectors;
import java.util.UUID;
import java.util.stream.Stream; import java.util.stream.Stream;
/** /**
@ -20,16 +22,18 @@ public enum CardTypesInGraveyardCount implements DynamicValue {
YOU("your graveyard"), YOU("your graveyard"),
ALL("all graveyards"), ALL("all graveyards"),
OPPONENTS("your opponents' graveyards"); OPPONENTS("your opponents' graveyards");
private final String message; private final String message;
private final CardTypesInGraveyardHint hint;
CardTypesInGraveyardCount(String message) { CardTypesInGraveyardCount(String message) {
this.message = "the number of card types among cards in " + message; this.message = "the number of card types among cards in " + message;
this.hint = new CardTypesInGraveyardHint(this);
} }
@Override @Override
public int calculate(Game game, Ability sourceAbility, Effect effect) { public int calculate(Game game, Ability sourceAbility, Effect effect) {
return getStream(game, sourceAbility) return getGraveyardCards(game, sourceAbility)
.filter(card -> !card.isCopy() && !(card instanceof PermanentToken))
.map(card -> card.getCardType(game)) .map(card -> card.getCardType(game))
.flatMap(Collection::stream) .flatMap(Collection::stream)
.distinct() .distinct()
@ -52,16 +56,16 @@ public enum CardTypesInGraveyardCount implements DynamicValue {
return message; return message;
} }
private final Stream<Card> getStream(Game game, Ability ability) { public Hint getHint() {
return hint;
}
public Stream<Card> getGraveyardCards(Game game, Ability ability) {
Collection<UUID> playerIds; Collection<UUID> playerIds;
switch (this) { switch (this) {
case YOU: case YOU:
Player player = game.getPlayer(ability.getControllerId()); playerIds = Collections.singletonList(ability.getControllerId());
return player == null break;
? null : player
.getGraveyard()
.getCards(game)
.stream();
case OPPONENTS: case OPPONENTS:
playerIds = game.getOpponents(ability.getControllerId()); playerIds = game.getOpponents(ability.getControllerId());
break; break;
@ -69,13 +73,47 @@ public enum CardTypesInGraveyardCount implements DynamicValue {
playerIds = game.getState().getPlayersInRange(ability.getControllerId(), game); playerIds = game.getState().getPlayersInRange(ability.getControllerId(), game);
break; break;
default: default:
return null; throw new IllegalArgumentException("Wrong code usage: miss implementation for " + this);
} }
return playerIds.stream() return playerIds.stream()
.map(game::getPlayer) .map(game::getPlayer)
.filter(Objects::nonNull) .filter(Objects::nonNull)
.map(Player::getGraveyard) .map(Player::getGraveyard)
.map(graveyard -> graveyard.getCards(game)) .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<Card> stream = this.value.getGraveyardCards(game, ability);
List<String> 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);
} }
} }

View file

@ -52,7 +52,7 @@ public class ConditionTrueHint implements Hint {
} }
@Override @Override
public Hint copy() { public ConditionTrueHint copy() {
return new ConditionTrueHint(this); return new ConditionTrueHint(this);
} }
} }

View file

@ -30,7 +30,7 @@ public class StaticHint implements Hint {
} }
@Override @Override
public Hint copy() { public StaticHint copy() {
return new StaticHint(this); return new StaticHint(this);
} }
} }

View file

@ -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<Card> stream = getStream(game, ability);
if (stream == null) {
return null;
}
List<String> 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<Card> getStream(Game game, Ability ability) {
Collection<UUID> 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);
}
}

View file

@ -1,13 +1,13 @@
package mage.abilities.hint.common; package mage.abilities.hint.common;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.condition.common.CountersOnPermanentsCondition;
import mage.abilities.hint.Hint; import mage.abilities.hint.Hint;
import mage.counters.Counter; import mage.counters.Counter;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.abilities.condition.common.CountersOnPermanentsCondition;
import mage.util.CardUtil; import mage.util.CardUtil;
/** /**
@ -23,6 +23,10 @@ public class CountersOnPermanentsHint implements Hint {
// Which counter type to count // Which counter type to count
public final CounterType counterType; public final CounterType counterType;
public CountersOnPermanentsHint(CountersOnPermanentsCondition condition) {
this(condition.filter, condition.counterType);
}
/** /**
* @param filter Which permanents to consider counters on * @param filter Which permanents to consider counters on
* @param counterType Which counter type to count * @param counterType Which counter type to count
@ -32,12 +36,9 @@ public class CountersOnPermanentsHint implements Hint {
this.counterType = counterType; this.counterType = counterType;
} }
/** public CountersOnPermanentsHint(final CountersOnPermanentsHint hint) {
* Copy parameters from a {@link CountersOnPermanentsCondition} this.filter = hint.filter.copy();
*/ this.counterType = hint.counterType;
public CountersOnPermanentsHint(CountersOnPermanentsCondition condition) {
this.filter = condition.filter;
this.counterType = condition.counterType;
} }
@Override @Override
@ -56,7 +57,7 @@ public class CountersOnPermanentsHint implements Hint {
} }
@Override @Override
public Hint copy() { public CountersOnPermanentsHint copy() {
return this; return new CountersOnPermanentsHint(this);
} }
} }

View file

@ -14,8 +14,6 @@ import mage.constants.Zone;
*/ */
public final class ConsumingBlobOozeToken extends TokenImpl { public final class ConsumingBlobOozeToken extends TokenImpl {
private static final DynamicValue powerValue = CardTypesInGraveyardCount.YOU;
public ConsumingBlobOozeToken() { 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.\""); 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); cardType.add(CardType.CREATURE);
@ -26,7 +24,9 @@ public final class ConsumingBlobOozeToken extends TokenImpl {
toughness = new MageInt(1); 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 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) { private ConsumingBlobOozeToken(final ConsumingBlobOozeToken token) {

View file

@ -24,7 +24,9 @@ public final class TarmogoyfToken extends TokenImpl {
toughness = new MageInt(1); 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. // 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) { private TarmogoyfToken(final TarmogoyfToken token) {