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.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -33,7 +32,7 @@ public final class AltarOfTheGoyf extends CardImpl {
// Whenever a creature you control attacks alone, it gets +X/+X until end of turn, where X is the number of card types among cards in all graveyards.
this.addAbility(new AttacksAloneControlledTriggeredAbility(
new BoostTargetEffect(CardTypesInGraveyardCount.ALL, CardTypesInGraveyardCount.ALL, Duration.EndOfTurn),
true, false).addHint(CardTypesInGraveyardHint.ALL));
true, false).addHint(CardTypesInGraveyardCount.ALL.getHint()));
// Lhurgoyf creatures you control have trample.
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(

View file

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

View file

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

View file

@ -7,16 +7,15 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
/**
* @author LevelX2
@ -33,7 +32,7 @@ public final class BackwoodsSurvivalists extends CardImpl {
ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new BoostSourceEffect(1, 1, Duration.WhileOnBattlefield), DeliriumCondition.instance, "<i>Delirium</i> &mdash; {this} gets +1/+1");
Ability ability = new SimpleStaticAbility(effect);
ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance()), DeliriumCondition.instance, "and has trample as long as there are four or more card types among cards in your graveyard."));
ability.addHint(CardTypesInGraveyardHint.YOU);
ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability);
}

View file

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

View file

@ -24,8 +24,6 @@ import java.util.UUID;
*/
public final class Barrowgoyf extends CardImpl {
private static final DynamicValue powerValue = CardTypesInGraveyardCount.ALL;
public Barrowgoyf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
this.subtype.add(SubType.LHURGOYF);
@ -40,7 +38,9 @@ public final class Barrowgoyf extends CardImpl {
this.addAbility(LifelinkAbility.getInstance());
// Barrowgoyf's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue)));
this.addAbility(new SimpleStaticAbility(Zone.ALL,
new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.ALL)
).addHint(CardTypesInGraveyardCount.ALL.getHint()));
// Whenever Barrowgoyf deals combat damage to a player, you may mill that many cards. If you do, you may put a creature card from among them into your hand.
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(

View file

@ -2,10 +2,10 @@ package mage.cards.b;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.DamageWithPowerFromOneToAnotherTargetEffect;
import mage.abilities.effects.common.InfoEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AbilityWord;
@ -37,7 +37,7 @@ public final class BeastieBeatdown extends CardImpl {
DeliriumCondition.instance, AbilityWord.DELIRIUM.formatWord() + "If there are four or more " +
"card types among cards in your graveyard, put two +1/+1 counters on the creature you control."
).concatBy("<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.
this.getSpellAbility().addEffect(new DamageWithPowerFromOneToAnotherTargetEffect()

View file

@ -6,8 +6,8 @@ import mage.abilities.common.CantBlockAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.CascadeAbility;
import mage.constants.Duration;
import mage.constants.SubType;
@ -45,7 +45,7 @@ public final class BloodbraidMarauder extends CardImpl {
new GainAbilitySourceEffect(new CascadeAbility(), Duration.WhileOnStack, true),
DeliriumCondition.instance,
"<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) {

View file

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

View file

@ -21,8 +21,6 @@ import java.util.UUID;
*/
public final class ConsumingBlob extends CardImpl {
private static final DynamicValue powerValue = CardTypesInGraveyardCount.YOU;
public ConsumingBlob(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
@ -31,7 +29,9 @@ public final class ConsumingBlob extends CardImpl {
this.toughness = new MageInt(1);
// Consuming Blob's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue)));
this.addAbility(new SimpleStaticAbility(Zone.ALL,
new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.YOU)
).addHint(CardTypesInGraveyardCount.YOU.getHint()));
// At the beginning of your end step, create a green Ooze creature token with "This creature's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1".
this.addAbility(new BeginningOfEndStepTriggeredAbility(

View file

@ -2,8 +2,8 @@ package mage.cards.c;
import mage.abilities.Ability;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AbilityWord;
@ -33,7 +33,7 @@ public final class ConvertToSlime extends CardImpl {
this.getSpellAbility().addTarget(new TargetArtifactPermanent(0, 1));
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 1));
this.getSpellAbility().addTarget(new TargetEnchantmentPermanent(0, 1));
this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU);
this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
}
private ConvertToSlime(final ConvertToSlime card) {

View file

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

View file

@ -6,8 +6,8 @@ import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.DeathtouchAbility;
import mage.abilities.mana.BlackManaAbility;
import mage.abilities.mana.GreenManaAbility;
@ -16,7 +16,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
/**
* @author fireshoes
@ -38,7 +37,7 @@ public final class DeathcapCultivator extends CardImpl {
this.addAbility(new SimpleStaticAbility(
new ConditionalContinuousEffect(new GainAbilitySourceEffect(DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield),
DeliriumCondition.instance, "<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) {

View file

@ -4,7 +4,6 @@ import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.dynamicvalue.common.SignInversionDynamicValue;
import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -25,7 +24,7 @@ public final class DelugeOfDoom extends CardImpl {
// All creatures get -X/-X until end of turn, where X is the number of card types among cards in your graveyard.
this.getSpellAbility().addEffect(new BoostAllEffect(xValue, xValue, Duration.EndOfTurn)
.setText("all creatures get -X/-X until end of turn, where X is the number of card types among cards in your graveyard"));
this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU);
this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
}
private DelugeOfDoom(final DelugeOfDoom card) {

View file

@ -4,8 +4,8 @@ import mage.MageInt;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
@ -43,7 +43,7 @@ public final class DemolisherSpawn extends CardImpl {
StaticFilters.FILTER_ATTACKING_CREATURES, true
)), DeliriumCondition.instance, "Whenever {this} attacks, if there are four or more " +
"card types among cards in your graveyard, other attacking creatures get +4/+4 until end of turn."
).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU));
).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private DemolisherSpawn(final DemolisherSpawn card) {

View file

@ -2,8 +2,8 @@ package mage.cards.d;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AbilityWord;
@ -38,7 +38,7 @@ public final class DemonicCounsel extends CardImpl {
"If there are four or more card types among cards in your graveyard, " +
"instead search your library for any card, put it into your hand, then shuffle."
));
this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU);
this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
}
private DemonicCounsel(final DemonicCounsel card) {

View file

@ -4,10 +4,10 @@ import java.util.UUID;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.ExileAllEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -29,7 +29,7 @@ public final class DescendUponTheSinful extends CardImpl {
Effect effect = new ConditionalOneShotEffect(new CreateTokenEffect(new AngelToken()), DeliriumCondition.instance);
effect.setText("<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().addHint(CardTypesInGraveyardHint.YOU);
this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
}
private DescendUponTheSinful(final DescendUponTheSinful card) {

View file

@ -8,15 +8,14 @@ import mage.abilities.common.DiesSourceTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
import mage.game.permanent.token.EldraziHorrorToken;
/**
@ -39,7 +38,7 @@ public final class DesperateSentry extends CardImpl {
new BoostSourceEffect(3, 0, Duration.WhileOnBattlefield), DeliriumCondition.instance,
"<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.addHint(CardTypesInGraveyardHint.YOU);
ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability);
}

View file

@ -2,9 +2,9 @@ package mage.cards.d;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AbilityWord;
@ -26,7 +26,7 @@ public final class DragToTheRoots extends CardImpl {
this.addAbility(new SimpleStaticAbility(
Zone.ALL, new SpellCostReductionSourceEffect(2, DeliriumCondition.instance)
.setText("this spell costs {2} less to cast as long as there are four or more card types among cards in your graveyard")
).setRuleAtTheTop(true).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU));
).setRuleAtTheTop(true).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
// Destroy target nonland permanent.
this.getSpellAbility().addEffect(new DestroyTargetEffect());

View file

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

View file

@ -4,8 +4,8 @@ import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -31,7 +31,7 @@ public final class DuskFeaster extends CardImpl {
Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(2, DeliriumCondition.instance));
ability.setRuleAtTheTop(true);
ability.setAbilityWord(AbilityWord.DELIRIUM);
ability.addHint(CardTypesInGraveyardHint.YOU);
ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability);
// Flying

View file

@ -7,7 +7,6 @@ import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CastSourceTriggeredAbility;
import mage.abilities.effects.common.cost.SpellCostReductionForEachSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.ProtectionAbility;
import mage.abilities.keyword.TrampleAbility;
@ -46,7 +45,7 @@ public final class EmrakulThePromisedEnd extends CardImpl {
new SpellCostReductionForEachSourceEffect(
1, CardTypesInGraveyardCount.YOU
).setText("this spell costs {1} less to cast for each card type among cards in your graveyard")
).setRuleAtTheTop(true).addHint(CardTypesInGraveyardHint.YOU));
).setRuleAtTheTop(true).addHint(CardTypesInGraveyardCount.YOU.getHint()));
// When you cast Emrakul, you gain control of target opponent during that player's next turn. After that turn, that player takes an extra turn.
Ability ability = new CastSourceTriggeredAbility(new EmrakulThePromisedEndGainControlEffect());

View file

@ -3,6 +3,7 @@ package mage.cards.e;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition;
@ -11,7 +12,6 @@ import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.TransformAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -52,7 +52,7 @@ public final class ExtricatorOfSin extends CardImpl {
DeliriumCondition.instance,
"<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}.")
.addHint(CardTypesInGraveyardHint.YOU));
.addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private ExtricatorOfSin(final ExtricatorOfSin card) {

View file

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

View file

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

View file

@ -5,9 +5,9 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.keyword.SurveilEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -41,7 +41,7 @@ public final class FoulWatcher extends CardImpl {
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new BoostSourceEffect(1, 0, Duration.WhileOnBattlefield), DeliriumCondition.instance,
"{this} gets +1/+0 as long as there are four or more card types among cards in your graveyard"
)).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU));
)).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private FoulWatcher(final FoulWatcher card) {

View file

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

View file

@ -3,13 +3,13 @@ package mage.cards.g;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.DamagePlayersEffect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -37,7 +37,7 @@ public final class GibberingFiend extends CardImpl {
DeliriumCondition.instance,
"<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.")
.addHint(CardTypesInGraveyardHint.YOU));
.addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private GibberingFiend(final GibberingFiend card) {

View file

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

View file

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

View file

@ -5,9 +5,9 @@ import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.keyword.SurveilEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -46,7 +46,7 @@ public final class GrimFlayer extends CardImpl {
DeliriumCondition.instance, "{this} gets +2/+2 as long as there are " +
"four or more card types among cards in your graveyard"
)
).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU));
).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private GrimFlayer(final GrimFlayer card) {

View file

@ -5,9 +5,9 @@ import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.MenaceAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -37,7 +37,7 @@ public final class HandThatFeeds extends CardImpl {
"card types among cards in your graveyard, it gets +2/+0 and gains menace until end of turn."
);
ability.addEffect(new GainAbilitySourceEffect(new MenaceAbility(false), Duration.EndOfTurn));
this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU));
this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private HandThatFeeds(final HandThatFeeds card) {

View file

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

View file

@ -2,9 +2,9 @@ package mage.cards.i;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.ExileTopXMayPlayUntilEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AbilityWord;
@ -33,7 +33,7 @@ public final class ImpossibleInferno extends CardImpl {
"four or more card types among cards in your graveyard, exile the top card of your library. " +
"You may play it until the end of your next turn"
));
this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU);
this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
}
private ImpossibleInferno(final ImpossibleInferno card) {

View file

@ -6,8 +6,8 @@ import mage.MageInt;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -31,7 +31,7 @@ public final class InexorableBlob extends CardImpl {
DeliriumCondition.instance,
"<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.")
.addHint(CardTypesInGraveyardHint.YOU));
.addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private InexorableBlob(final InexorableBlob card) {

View file

@ -7,16 +7,15 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.VigilanceAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
/**
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
@ -34,7 +33,7 @@ public final class InquisitorsOx extends CardImpl {
ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new BoostSourceEffect(1, 0, Duration.WhileOnBattlefield), DeliriumCondition.instance, "<i>Delirium</i> &mdash; {this} gets +1/+0");
Ability ability = new SimpleStaticAbility(effect);
ability.addEffect(new ConditionalContinuousEffect(new GainAbilitySourceEffect(VigilanceAbility.getInstance()), DeliriumCondition.instance, "and has vigilance as long as there are four or more card types among cards in your graveyard."));
ability.addHint(CardTypesInGraveyardHint.YOU);
ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability);
}

View file

@ -4,10 +4,9 @@ import java.util.UUID;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.Mode;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.search.SearchTargetGraveyardHandLibraryForCardNameAndExileEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -36,7 +35,7 @@ public final class InvasiveSurgery extends CardImpl {
// <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().addTarget(new TargetSpell(filter));
this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU);
this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
}
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.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.LoseLifeTargetEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.ReachAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.SpiderToken;
import mage.target.common.TargetOpponent;
@ -49,7 +48,7 @@ public final class IshkanahGrafwidow extends CardImpl {
DeliriumCondition.instance,
"<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.");
ability.addHint(CardTypesInGraveyardHint.YOU);
ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability);
// {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.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
/**
* @author LevelX2
@ -32,7 +31,7 @@ public final class KessigDireSwine extends CardImpl {
this.addAbility(new SimpleStaticAbility(
new ConditionalContinuousEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield),
DeliriumCondition.instance, "<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) {

View file

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

View file

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

View file

@ -5,6 +5,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CardsInAllGraveyardsCount;
import mage.abilities.effects.common.continuous.SetBasePowerToughnessPlusOneSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -30,7 +31,9 @@ public final class Lhurgoyf extends CardImpl {
this.toughness = new MageInt(0);
// Lhurgoyf's power is equal to the number of creature cards in all graveyards and its toughness is equal to that number plus 1.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue)));
this.addAbility(new SimpleStaticAbility(Zone.ALL,
new SetBasePowerToughnessPlusOneSourceEffect(powerValue)
).addHint(new ValueHint("Creature cards in all graveyards", powerValue)));
}
private Lhurgoyf(final Lhurgoyf card) {

View file

@ -2,7 +2,6 @@ package mage.cards.l;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -20,7 +19,7 @@ public final class LucidDreams extends CardImpl {
// Draw X cards, where X is the number of card types among cards in your graveyard.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(CardTypesInGraveyardCount.YOU)
.setText("draw X cards, where X is the number of card types among cards in your graveyard"));
this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU);
this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
}
private LucidDreams(final LucidDreams card) {

View file

@ -1,13 +1,13 @@
package mage.cards.m;
import mage.MageInt;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -42,7 +42,7 @@ public final class ManicScribe extends CardImpl {
false
), DeliriumCondition.instance, "<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."
).addHint(CardTypesInGraveyardHint.YOU));
).addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private ManicScribe(final ManicScribe card) {

View file

@ -4,8 +4,8 @@ import java.util.UUID;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -30,7 +30,7 @@ public final class MightBeyondReason extends CardImpl {
+ "<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().addHint(CardTypesInGraveyardHint.YOU);
getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
}
private MightBeyondReason(final MightBeyondReason card) {

View file

@ -4,6 +4,7 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.InvertCondition;
@ -11,7 +12,6 @@ import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
@ -44,7 +44,7 @@ public final class MindwrackDemon extends CardImpl {
new BeginningOfUpkeepTriggeredAbility(new LoseLifeSourceControllerEffect(4)),
new InvertCondition(DeliriumCondition.instance),
"<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);
}

View file

@ -6,14 +6,13 @@ import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
/**
* @author LevelX2
@ -31,7 +30,7 @@ public final class MoldgrafScavenger extends CardImpl {
new BoostSourceEffect(3, 0, Duration.WhileOnBattlefield),
DeliriumCondition.instance,
"<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) {

View file

@ -6,14 +6,13 @@ import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
/**
* @author escplan9 (Derek Monturo - dmontur1 at gmail dot com)
@ -28,7 +27,7 @@ public final class MoorlandDrifter extends CardImpl {
// <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) {

View file

@ -5,8 +5,8 @@ import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.RestrictionEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.HasteAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -40,7 +40,7 @@ public final class Mournwillow extends CardImpl {
DeliriumCondition.instance,
"<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.");
ability.addHint(CardTypesInGraveyardHint.YOU);
ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability);
}

View file

@ -34,8 +34,6 @@ import java.util.stream.Collectors;
*/
public final class Nethergoyf extends CardImpl {
private static final DynamicValue powerValue = CardTypesInGraveyardCount.YOU;
public Nethergoyf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}");
@ -44,7 +42,9 @@ public final class Nethergoyf extends CardImpl {
this.toughness = new MageInt(1);
// Nethergoyf's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue)));
this.addAbility(new SimpleStaticAbility(Zone.ALL,
new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.YOU)
).addHint(CardTypesInGraveyardCount.YOU.getHint()));
// Escape--{2}{B}, Exile any number of other cards from your graveyard with four or more card types among them.
CostsImpl<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.StaticValue;
import mage.abilities.effects.common.continuous.SetBasePowerSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.DeathtouchAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.LifelinkAbility;
@ -51,7 +50,7 @@ public final class NighthawkScavenger extends CardImpl {
.setText("{this}'s power is equal to 1 plus the number of " +
"card types among cards in your opponents' graveyards. " +
"<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) {

View file

@ -4,12 +4,12 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -43,7 +43,7 @@ public final class ObsessiveSkinner extends CardImpl {
"<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.");
ability.addTarget(new TargetCreaturePermanent());
ability.addHint(CardTypesInGraveyardHint.YOU);
ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability);
}

View file

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

View file

@ -7,16 +7,15 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
/**
* @author fireshoes
@ -38,7 +37,7 @@ public final class ParanoidParishBlade extends CardImpl {
effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield),
DeliriumCondition.instance, "and has first strike as long as there are four or more card types among cards in your graveyard.");
ability.addEffect(effect);
ability.addHint(CardTypesInGraveyardHint.YOU);
ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability);
}

View file

@ -2,12 +2,12 @@ package mage.cards.p;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.effects.RestrictionEffect;
import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
@ -31,7 +31,7 @@ public final class PatchworkBeastie extends CardImpl {
// Delirium -- Patchwork Beastie can't attack or block unless there are four or more card types among cards in your graveyard.
this.addAbility(new SimpleStaticAbility(new PatchworkBeastieEffect())
.setAbilityWord(AbilityWord.DELIRIUM)
.addHint(CardTypesInGraveyardHint.YOU));
.addHint(CardTypesInGraveyardCount.YOU.getHint()));
// At the beginning of your upkeep, you may mill a card.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(

View file

@ -3,7 +3,6 @@ package mage.cards.p;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.discard.DiscardHandControllerEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -21,7 +20,7 @@ public final class PeerPastTheVeil extends CardImpl {
// Discard your hand. Then draw X cards, where X is the number of card types among cards in your graveyard.
this.getSpellAbility().addEffect(new DiscardHandControllerEffect());
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(CardTypesInGraveyardCount.YOU).concatBy("Then"));
this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU);
this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
}
private PeerPastTheVeil(final PeerPastTheVeil card) {

View file

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

View file

@ -20,8 +20,6 @@ import mage.constants.Zone;
*/
public final class Polygoyf extends CardImpl {
private static final DynamicValue powerValue = CardTypesInGraveyardCount.ALL;
public Polygoyf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
@ -36,7 +34,9 @@ public final class Polygoyf extends CardImpl {
this.addAbility(new MyriadAbility());
// Polygoyf's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue)));
this.addAbility(new SimpleStaticAbility(Zone.ALL,
new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.ALL)
).addHint(CardTypesInGraveyardCount.ALL.getHint()));
}
private Polygoyf(final Polygoyf card) {

View file

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

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 DynamicValue powerValue = CardTypesInGraveyardCount.ALL;
public Pyrogoyf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
this.subtype.add(SubType.LHURGOYF);
@ -37,7 +35,9 @@ public final class Pyrogoyf extends CardImpl {
this.toughness = new MageInt(1);
// Pyrogoyf's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue)));
this.addAbility(new SimpleStaticAbility(Zone.ALL,
new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.ALL)
).addHint(CardTypesInGraveyardCount.ALL.getHint()));
// Whenever Pyrogoyf or another Lhurgoyf creature you control enters, that creature deals damage equal to its power to any target.
Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility(

View file

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

View file

@ -6,8 +6,8 @@ import mage.MageInt;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.decorator.ConditionalActivatedAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -18,8 +18,6 @@ import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.target.common.TargetControlledCreaturePermanent;
/**
* @author fireshoes
*/
@ -42,7 +40,7 @@ public final class ReaperOfFlightMoonsilver extends CardImpl {
DeliriumCondition.instance,
"<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.")
.addHint(CardTypesInGraveyardHint.YOU));
.addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private ReaperOfFlightMoonsilver(final ReaperOfFlightMoonsilver card) {

View file

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

View file

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

View file

@ -6,8 +6,8 @@ import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.DoubleStrikeAbility;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
@ -15,7 +15,6 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.Zone;
/**
* @author fireshoes
@ -35,7 +34,7 @@ public final class ScourgeWolf extends CardImpl {
// <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),
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) {

View file

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

View file

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

View file

@ -3,11 +3,11 @@ package mage.cards.s;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -35,7 +35,7 @@ public final class SoulSwallower extends CardImpl {
DeliriumCondition.instance,
"<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.")
.addHint(CardTypesInGraveyardHint.YOU));
.addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
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.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(xValue))
.setAbilityWord(AbilityWord.FATHOMLESS_DESCENT).addHint(DescendCondition.getHint()));
this.addAbility(new SimpleStaticAbility(Zone.ALL,
new SetBasePowerToughnessPlusOneSourceEffect(xValue)
).setAbilityWord(AbilityWord.FATHOMLESS_DESCENT).addHint(DescendCondition.getHint()));
}
private SoulsOfTheLost(final SoulsOfTheLost card) {

View file

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

View file

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

View file

@ -6,16 +6,15 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
@ -41,7 +40,7 @@ public final class StrangeAugmentation extends CardImpl {
// <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,
"<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) {

View file

@ -18,8 +18,6 @@ import java.util.UUID;
*/
public final class Tarmogoyf extends CardImpl {
private static final DynamicValue powerValue = CardTypesInGraveyardCount.ALL;
public Tarmogoyf(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}");
this.subtype.add(SubType.LHURGOYF);
@ -28,7 +26,9 @@ public final class Tarmogoyf extends CardImpl {
this.toughness = new MageInt(1);
// Tarmogoyf's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue)));
this.addAbility(new SimpleStaticAbility(Zone.ALL,
new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.ALL)
).addHint(CardTypesInGraveyardCount.ALL.getHint()));
}
private Tarmogoyf(final Tarmogoyf card) {

View file

@ -6,10 +6,10 @@ import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.dynamicvalue.common.GetXValue;
import mage.abilities.effects.ReplacementEffectImpl;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.constants.*;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -34,7 +34,7 @@ public final class TheRollercrusherRide extends CardImpl {
// it deals double that damage instead.
this.addAbility(new SimpleStaticAbility(new TheRollercrusherRideEffect())
.setAbilityWord(AbilityWord.DELIRIUM)
.addHint(CardTypesInGraveyardHint.YOU));
.addHint(CardTypesInGraveyardCount.YOU.getHint()));
// When The Rollercrusher Ride enters, it deals X damage to each of up to X target creatures.
Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(GetXValue.instance)

View file

@ -6,10 +6,10 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.DeathtouchAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -62,7 +62,7 @@ public final class TheSwarmweaver extends CardImpl {
DeathtouchAbility.getInstance(), Duration.WhileOnBattlefield, filter2
), DeliriumCondition.instance, "and have deathtouch"
));
this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU));
this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private TheSwarmweaver(final TheSwarmweaver card) {

View file

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

View file

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

View file

@ -8,8 +8,8 @@ import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -48,7 +48,7 @@ public final class ToothCollector extends CardImpl {
DeliriumCondition.instance,
"<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.");
ability.addHint(CardTypesInGraveyardHint.YOU);
ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability);
}

View file

@ -8,8 +8,8 @@ import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.TapTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -50,7 +50,7 @@ public final class Topplegeist extends CardImpl {
DeliriumCondition.instance,
"<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.");
ability.addHint(CardTypesInGraveyardHint.YOU);
ability.addHint(CardTypesInGraveyardCount.YOU.getHint());
this.addAbility(ability);
}

View file

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

View file

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

View file

@ -9,6 +9,7 @@ import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
import mage.abilities.dynamicvalue.common.MultikickerCount;
import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.continuous.SetBasePowerToughnessPlusOneSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -43,7 +44,9 @@ public final class UrborgLhurgoyf extends CardImpl {
this.addAbility(new AsEntersBattlefieldAbility(new MillCardsControllerEffect(millValue)));
// Urborg Lhurgoyf's power is equal to the number of creature cards in your graveyard and its toughness is equal to that number plus 1.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue)));
this.addAbility(new SimpleStaticAbility(Zone.ALL,
new SetBasePowerToughnessPlusOneSourceEffect(powerValue)
).addHint(new ValueHint("Creature cards in your graveyard", powerValue)));
}
private UrborgLhurgoyf(final UrborgLhurgoyf card) {

View file

@ -2,10 +2,10 @@ package mage.cards.v;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.AddContinuousEffectToGame;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.DoubleStrikeAbility;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
@ -40,7 +40,7 @@ public final class ViolentUrge extends CardImpl {
DeliriumCondition.instance, AbilityWord.DELIRIUM.formatWord() + "If there are four or more " +
"card types among cards in your graveyard, that creature gains double strike until end of turn"
).concatBy("<br>"));
this.getSpellAbility().addHint(CardTypesInGraveyardHint.YOU);
this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
}
private ViolentUrge(final ViolentUrge card) {

View file

@ -5,8 +5,8 @@ import java.util.UUID;
import mage.abilities.condition.InvertCondition;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.discard.DiscardTargetEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@ -32,7 +32,7 @@ public final class WhispersOfEmrakul extends CardImpl {
DeliriumCondition.instance,
"<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().addHint(CardTypesInGraveyardHint.YOU);
this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
}
private WhispersOfEmrakul(final WhispersOfEmrakul card) {

View file

@ -5,8 +5,8 @@ import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -34,7 +34,7 @@ public final class WickerfolkThresher extends CardImpl {
DeliriumCondition.instance, "Whenever {this} attacks, if there are four or more card types " +
"among cards in your graveyard, look at the top card of your library. If it's a land card, you may " +
"put it onto the battlefield. If you don't put the card onto the battlefield, put it into your hand."
).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU));
).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private WickerfolkThresher(final WickerfolkThresher card) {

View file

@ -5,9 +5,9 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
@ -43,7 +43,7 @@ public final class WildfireWickerfolk extends CardImpl {
new GainAbilitySourceEffect(TrampleAbility.getInstance()), DeliriumCondition.instance,
"and has trample as long as there are four or more card types among cards in your graveyard"
));
this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardHint.YOU));
this.addAbility(ability.setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private WildfireWickerfolk(final WildfireWickerfolk card) {

View file

@ -8,7 +8,6 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount;
import mage.abilities.effects.ContinuousEffectImpl;
import mage.abilities.effects.common.DrawCardAllEffect;
import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.abilities.keyword.WardAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@ -43,7 +42,7 @@ public final class WinterMisanthropicGuide extends CardImpl {
// Delirium -- As long as there are four or more card types among cards in your graveyard, each opponent's maximum hand size is equal to seven minus the number of those card types.
this.addAbility(new SimpleStaticAbility(new WinterMisanthropicGuideEffect())
.setAbilityWord(AbilityWord.DELIRIUM)
.addHint(CardTypesInGraveyardHint.YOU));
.addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private WinterMisanthropicGuide(final WinterMisanthropicGuide card) {

View file

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

View file

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

View file

@ -14,8 +14,6 @@ import mage.constants.Zone;
*/
public final class ConsumingBlobOozeToken extends TokenImpl {
private static final DynamicValue powerValue = CardTypesInGraveyardCount.YOU;
public ConsumingBlobOozeToken() {
super("Ooze Token", "green Ooze creature token with \"This creature's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1.\"");
cardType.add(CardType.CREATURE);
@ -26,7 +24,9 @@ public final class ConsumingBlobOozeToken extends TokenImpl {
toughness = new MageInt(1);
// This creature's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(powerValue)));
this.addAbility(new SimpleStaticAbility(Zone.ALL,
new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.YOU)
).addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private ConsumingBlobOozeToken(final ConsumingBlobOozeToken token) {

View file

@ -24,7 +24,9 @@ public final class TarmogoyfToken extends TokenImpl {
toughness = new MageInt(1);
// Tarmogoyf's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.ALL)));
this.addAbility(new SimpleStaticAbility(Zone.ALL,
new SetBasePowerToughnessPlusOneSourceEffect(CardTypesInGraveyardCount.ALL)
).addHint(CardTypesInGraveyardCount.ALL.getHint()));
}
private TarmogoyfToken(final TarmogoyfToken token) {