updated cards to use built-in devotion hints

This commit is contained in:
Evan Kranzler 2019-12-29 11:52:27 -05:00
parent d9e0b75545
commit e34a481b6c
38 changed files with 163 additions and 276 deletions

View file

@ -7,7 +7,6 @@ import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.SacrificeControllerEffect; import mage.abilities.effects.common.SacrificeControllerEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -37,7 +36,7 @@ public final class AbhorrentOverlord extends CardImpl {
// When Abhorrent Overlord enters the battlefield, create a number of 1/1 black Harpy creature tokens with flying equal to your devotion to black. // When Abhorrent Overlord enters the battlefield, create a number of 1/1 black Harpy creature tokens with flying equal to your devotion to black.
Effect effect = new CreateTokenEffect(new AbhorrentOverlordHarpyToken(), DevotionCount.B); Effect effect = new CreateTokenEffect(new AbhorrentOverlordHarpyToken(), DevotionCount.B);
effect.setText("create a number of 1/1 black Harpy creature tokens with flying equal to your devotion to black. <i>(Each {B} in the mana costs of permanents you control counts toward your devotion to black.)</i>"); effect.setText("create a number of 1/1 black Harpy creature tokens with flying equal to your devotion to black. <i>(Each {B} in the mana costs of permanents you control counts toward your devotion to black.)</i>");
this.addAbility(new EntersBattlefieldTriggeredAbility(effect).addHint(new ValueHint("Devotion to black", DevotionCount.B))); this.addAbility(new EntersBattlefieldTriggeredAbility(effect).addHint(DevotionCount.B.getHint()));
// At the beginning of your upkeep, sacrifice a creature. // At the beginning of your upkeep, sacrifice a creature.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SacrificeControllerEffect(StaticFilters.FILTER_PERMANENT_CREATURE, 1, null), TargetController.YOU, false)); this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SacrificeControllerEffect(StaticFilters.FILTER_PERMANENT_CREATURE, 1, null), TargetController.YOU, false));

View file

@ -3,7 +3,6 @@ package mage.cards.a;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.PreventionEffectImpl; import mage.abilities.effects.PreventionEffectImpl;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -31,7 +30,7 @@ public final class AcolytesReward extends CardImpl {
this.getSpellAbility().addEffect(new AcolytesRewardEffect()); this.getSpellAbility().addEffect(new AcolytesRewardEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addTarget(new TargetAnyTarget()); this.getSpellAbility().addTarget(new TargetAnyTarget());
this.getSpellAbility().addHint(new ValueHint("Devotion to white", DevotionCount.W)); this.getSpellAbility().addHint(DevotionCount.W.getHint());
} }
private AcolytesReward(final AcolytesReward card) { private AcolytesReward(final AcolytesReward card) {

View file

@ -3,7 +3,6 @@ package mage.cards.a;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -25,10 +24,10 @@ public final class AspectOfHydra extends CardImpl {
effect.setText("Target creature gets +X/+X until end of turn, where X is your devotion to green"); effect.setText("Target creature gets +X/+X until end of turn, where X is your devotion to green");
this.getSpellAbility().addEffect(effect); this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addHint(new ValueHint("Devotion to green", DevotionCount.G)); this.getSpellAbility().addHint(DevotionCount.G.getHint());
} }
public AspectOfHydra(final AspectOfHydra card) { private AspectOfHydra(final AspectOfHydra card) {
super(card); super(card);
} }

View file

@ -10,7 +10,6 @@ import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.Card; import mage.cards.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -52,9 +51,8 @@ public final class AthreosGodOfPassage extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to white and black is less than seven, Athreos isn't a creature. // As long as your devotion to white and black is less than seven, Athreos isn't a creature.
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.WB, 7); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.WB, 7))
effect.setText("As long as your devotion to white and black is less than seven, {this} isn't a creature"); .addHint(DevotionCount.WB.getHint()));
this.addAbility(new SimpleStaticAbility(effect).addHint(new ValueHint("Devotion to white and black", DevotionCount.WB)));
// Whenever another creature you own dies, return it to your hand unless target opponent pays 3 life. // Whenever another creature you own dies, return it to your hand unless target opponent pays 3 life.
Ability ability = new AthreosDiesCreatureTriggeredAbility(new AthreosGodOfPassageReturnEffect(), false, filter); Ability ability = new AthreosDiesCreatureTriggeredAbility(new AthreosGodOfPassageReturnEffect(), false, filter);
@ -63,7 +61,7 @@ public final class AthreosGodOfPassage extends CardImpl {
} }
public AthreosGodOfPassage(final AthreosGodOfPassage card) { private AthreosGodOfPassage(final AthreosGodOfPassage card) {
super(card); super(card);
} }
@ -75,12 +73,12 @@ public final class AthreosGodOfPassage extends CardImpl {
class AthreosGodOfPassageReturnEffect extends OneShotEffect { class AthreosGodOfPassageReturnEffect extends OneShotEffect {
public AthreosGodOfPassageReturnEffect() { AthreosGodOfPassageReturnEffect() {
super(Outcome.Benefit); super(Outcome.Benefit);
this.staticText = "return it to your hand unless target opponent pays 3 life"; this.staticText = "return it to your hand unless target opponent pays 3 life";
} }
public AthreosGodOfPassageReturnEffect(final AthreosGodOfPassageReturnEffect effect) { private AthreosGodOfPassageReturnEffect(final AthreosGodOfPassageReturnEffect effect) {
super(effect); super(effect);
} }
@ -92,30 +90,29 @@ class AthreosGodOfPassageReturnEffect extends OneShotEffect {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
if (controller != null) { if (controller == null) {
return false;
}
UUID creatureId = (UUID) this.getValue("creatureId"); UUID creatureId = (UUID) this.getValue("creatureId");
Card creature = game.getCard(creatureId); Card creature = game.getCard(creatureId);
if (creature != null) { if (creature == null) {
return true;
}
Player opponent = game.getPlayer(source.getFirstTarget()); Player opponent = game.getPlayer(source.getFirstTarget());
boolean paid = false; boolean paid = false;
if (opponent != null) { if (opponent != null) {
Cost cost = new PayLifeCost(3); Cost cost = new PayLifeCost(3);
if (cost.canPay(source, source.getSourceId(), opponent.getId(), game) if (cost.canPay(source, source.getSourceId(), opponent.getId(), game)
&& opponent.chooseUse(outcome, "Pay 3 life to prevent that " + creature.getLogName() + " returns to " + controller.getLogName() + "'s hand?", source, game)) { && opponent.chooseUse(outcome, "Pay 3 life to prevent that " + creature.getLogName() + " returns to " + controller.getLogName() + "'s hand?", source, game)
if (cost.pay(source, game, source.getSourceId(), opponent.getId(), false, null)) { && cost.pay(source, game, source.getSourceId(), opponent.getId(), false, null)) {
paid = true; paid = true;
} }
} }
} if ((opponent != null && paid) || game.getState().getZone(creature.getId()) != Zone.GRAVEYARD) {
if (opponent == null || !paid) {
if (game.getState().getZone(creature.getId()) == Zone.GRAVEYARD) {
controller.moveCards(creature, Zone.HAND, source, game);
}
}
}
return true; return true;
} }
return false; controller.moveCards(creature, Zone.HAND, source, game);
return true;
} }
} }
@ -123,12 +120,12 @@ class AthreosDiesCreatureTriggeredAbility extends TriggeredAbilityImpl {
protected FilterCreaturePermanent filter; protected FilterCreaturePermanent filter;
public AthreosDiesCreatureTriggeredAbility(Effect effect, boolean optional, FilterCreaturePermanent filter) { AthreosDiesCreatureTriggeredAbility(Effect effect, boolean optional, FilterCreaturePermanent filter) {
super(Zone.BATTLEFIELD, effect, optional); super(Zone.BATTLEFIELD, effect, optional);
this.filter = filter; this.filter = filter;
} }
public AthreosDiesCreatureTriggeredAbility(AthreosDiesCreatureTriggeredAbility ability) { private AthreosDiesCreatureTriggeredAbility(AthreosDiesCreatureTriggeredAbility ability) {
super(ability); super(ability);
this.filter = ability.filter; this.filter = ability.filter;
} }
@ -146,16 +143,17 @@ class AthreosDiesCreatureTriggeredAbility extends TriggeredAbilityImpl {
@Override @Override
public boolean checkTrigger(GameEvent event, Game game) { public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event; ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
if (zEvent.isDiesEvent()) { if (!zEvent.isDiesEvent()) {
if (zEvent.getTarget() != null && filter.match(zEvent.getTarget(), sourceId, controllerId, game)) { return false;
}
if (zEvent.getTarget() == null || !filter.match(zEvent.getTarget(), sourceId, controllerId, game)) {
return false;
}
for (Effect effect : this.getEffects()) { for (Effect effect : this.getEffects()) {
effect.setValue("creatureId", event.getTargetId()); effect.setValue("creatureId", event.getTargetId());
} }
return true; return true;
} }
}
return false;
}
@Override @Override
public String getRule() { public String getRule() {

View file

@ -7,11 +7,9 @@ import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.BeginningOfEndStepTriggeredAbility; import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.Card; import mage.cards.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -53,10 +51,8 @@ public final class AthreosShroudVeiled extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to white and black is less than seven, Athreos isn't a creature. // As long as your devotion to white and black is less than seven, Athreos isn't a creature.
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.WB, 7); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.WB, 7))
effect.setText("As long as your devotion to white and black is less than seven, {this} isn't a creature"); .addHint(DevotionCount.WB.getHint()));
this.addAbility(new SimpleStaticAbility(effect)
.addHint(new ValueHint("Devotion to white and black", DevotionCount.WB)));
// At the beginning of your end step, put a coin counter on another target creature. // At the beginning of your end step, put a coin counter on another target creature.
Ability ability = new BeginningOfEndStepTriggeredAbility( Ability ability = new BeginningOfEndStepTriggeredAbility(

View file

@ -6,7 +6,6 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.continuous.SetToughnessSourceEffect; import mage.abilities.effects.common.continuous.SetToughnessSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
@ -32,9 +31,10 @@ public final class DaxosBlessedByTheSun extends CardImpl {
// Daxos's toughness is equal to your devotion to white. // Daxos's toughness is equal to your devotion to white.
this.addAbility(new SimpleStaticAbility( this.addAbility(new SimpleStaticAbility(
Zone.ALL, new SetToughnessSourceEffect(DevotionCount.W, Duration.EndOfGame Zone.ALL,
).setText("{this}'s toughness is equal to your devotion to white")) new SetToughnessSourceEffect(DevotionCount.W, Duration.EndOfGame)
.addHint(new ValueHint("Devotion to white", DevotionCount.W))); .setText("{this}'s toughness is equal to your devotion to white")
).addHint(DevotionCount.W.getHint()));
// Whenever another creature you control enters the battlefield or dies, you gain 1 life. // Whenever another creature you control enters the battlefield or dies, you gain 1 life.
this.addAbility(new DaxosBlessedByTheSunAbility()); this.addAbility(new DaxosBlessedByTheSunAbility());

View file

@ -5,7 +5,6 @@ import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.hint.ValueHint;
import mage.cards.*; import mage.cards.*;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
@ -38,7 +37,7 @@ public final class DiscipleOfPhenax extends CardImpl {
// from their hand equal to your devotion to black. You choose one of them. That player discards that card. // from their hand equal to your devotion to black. You choose one of them. That player discards that card.
Ability ability = new EntersBattlefieldTriggeredAbility(new DiscipleOfPhenaxEffect(), false); Ability ability = new EntersBattlefieldTriggeredAbility(new DiscipleOfPhenaxEffect(), false);
ability.addTarget(new TargetPlayer()); ability.addTarget(new TargetPlayer());
ability.addHint(new ValueHint("Devotion to black", DevotionCount.B)); ability.addHint(DevotionCount.B.getHint());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -8,7 +8,6 @@ import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.abilities.effects.common.search.SearchLibraryGraveyardPutOntoBattlefieldEffect; import mage.abilities.effects.common.search.SearchLibraryGraveyardPutOntoBattlefieldEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -58,7 +57,7 @@ public final class ElspethUndauntedHero extends CardImpl {
ability.addEffect(new BoostControlledEffect( ability.addEffect(new BoostControlledEffect(
DevotionCount.W, DevotionCount.W, Duration.EndOfTurn DevotionCount.W, DevotionCount.W, Duration.EndOfTurn
).setText("and get +X/+X, where X is your devotion to white")); ).setText("and get +X/+X, where X is your devotion to white"));
ability.addHint(new ValueHint("Devotion to white", DevotionCount.W)); ability.addHint(DevotionCount.W.getHint());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -7,10 +7,8 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition; import mage.abilities.condition.Condition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility; import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -38,9 +36,8 @@ public final class EpharaGodOfThePolis extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to white and blue is less than seven, Ephara isn't a creature. // As long as your devotion to white and blue is less than seven, Ephara isn't a creature.
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.WU, 7); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.WU, 7))
effect.setText("As long as your devotion to white and blue is less than seven, {this} isn't a creature"); .addHint(DevotionCount.WU.getHint()));
this.addAbility(new SimpleStaticAbility(effect).addHint(new ValueHint("Devotion to white and blue", DevotionCount.WU)));
// At the beginning of each upkeep, if you had another creature enter the battlefield under your control last turn, draw a card. // At the beginning of each upkeep, if you had another creature enter the battlefield under your control last turn, draw a card.
this.addAbility(new ConditionalInterveningIfTriggeredAbility( this.addAbility(new ConditionalInterveningIfTriggeredAbility(

View file

@ -7,11 +7,9 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.PayLifeCost; import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.continuous.CantGainLifeAllEffect; import mage.abilities.effects.common.continuous.CantGainLifeAllEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -36,9 +34,8 @@ public final class ErebosGodOfTheDead extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to black is less than five, Erebos isn't a creature. // As long as your devotion to black is less than five, Erebos isn't a creature.
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.B, 5); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.B, 5))
effect.setText("As long as your devotion to black is less than five, {this} isn't a creature."); .addHint(DevotionCount.B.getHint()));
this.addAbility(new SimpleStaticAbility(effect).addHint(new ValueHint("Devotion to black", DevotionCount.B)));
// Your opponents can't gain life. // Your opponents can't gain life.
this.addAbility(new SimpleStaticAbility( this.addAbility(new SimpleStaticAbility(

View file

@ -4,7 +4,6 @@ import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -27,11 +26,12 @@ public final class EvangelOfHeliod extends CardImpl {
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
// When Evangel of Heliod enters the battlefield, create a number of 1/1 white Soldier creature tokens equal to your devotion to white. // When Evangel of Heliod enters the battlefield, create a number of 1/1 white Soldier creature tokens equal to your devotion to white.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new SoldierToken(), DevotionCount.W)) this.addAbility(new EntersBattlefieldTriggeredAbility(
.addHint(new ValueHint("Devotion to white", DevotionCount.W))); new CreateTokenEffect(new SoldierToken(), DevotionCount.W)
).addHint(DevotionCount.W.getHint()));
} }
public EvangelOfHeliod(final EvangelOfHeliod card) { private EvangelOfHeliod(final EvangelOfHeliod card) {
super(card); super(card);
} }

View file

@ -3,9 +3,7 @@ package mage.cards.f;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DamagePlayersEffect; import mage.abilities.effects.common.DamagePlayersEffect;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -29,9 +27,10 @@ public final class FanaticOfMogis extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// When Fanatic of Mogis enters the battlefield, it deals damage to each opponent equal to your devotion to red. // When Fanatic of Mogis enters the battlefield, it deals damage to each opponent equal to your devotion to red.
Effect effect = new DamagePlayersEffect(Outcome.Damage, DevotionCount.R, TargetController.OPPONENT); this.addAbility(new EntersBattlefieldTriggeredAbility(
effect.setText("it deals damage to each opponent equal to your devotion to red. (Each {R} in the mana costs of permanents you control counts towards your devotion to red.)"); new DamagePlayersEffect(Outcome.Damage, DevotionCount.R, TargetController.OPPONENT)
this.addAbility(new EntersBattlefieldTriggeredAbility(effect, false).addHint(new ValueHint("Devotion to red", DevotionCount.R))); .setText("it deals damage to each opponent equal to your devotion to red."), false
).addHint(DevotionCount.R.getHint()));
} }
private FanaticOfMogis(final FanaticOfMogis card) { private FanaticOfMogis(final FanaticOfMogis card) {

View file

@ -5,7 +5,6 @@ import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -30,8 +29,9 @@ public final class GrayMerchantOfAsphodel extends CardImpl {
this.toughness = new MageInt(4); this.toughness = new MageInt(4);
// When Gray Merchant of Asphodel enters the battlefield, each opponent loses X life, where X is your devotion to black. You gain life equal to the life lost this way. // When Gray Merchant of Asphodel enters the battlefield, each opponent loses X life, where X is your devotion to black. You gain life equal to the life lost this way.
this.addAbility(new EntersBattlefieldTriggeredAbility(new GrayMerchantOfAsphodelEffect(), false) this.addAbility(new EntersBattlefieldTriggeredAbility(
.addHint(new ValueHint("Devotion to black", DevotionCount.B))); new GrayMerchantOfAsphodelEffect(), false
).addHint(DevotionCount.B.getHint()));
} }
private GrayMerchantOfAsphodel(final GrayMerchantOfAsphodel card) { private GrayMerchantOfAsphodel(final GrayMerchantOfAsphodel card) {

View file

@ -5,11 +5,9 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.abilities.keyword.VigilanceAbility; import mage.abilities.keyword.VigilanceAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -40,9 +38,8 @@ public final class HeliodGodOfTheSun extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to white is less than five, Heliod isn't a creature.<i>(Each {W} in the mana costs of permanents you control counts towards your devotion to white.)</i> // As long as your devotion to white is less than five, Heliod isn't a creature.<i>(Each {W} in the mana costs of permanents you control counts towards your devotion to white.)</i>
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.W, 5); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.W, 5))
effect.setText("As long as your devotion to white is less than five, {this} isn't a creature."); .addHint(DevotionCount.W.getHint()));
this.addAbility(new SimpleStaticAbility(effect).addHint(new ValueHint("Devotion to white", DevotionCount.W)));
// Other creatures you control have vigilance. // Other creatures you control have vigilance.
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
@ -57,7 +54,7 @@ public final class HeliodGodOfTheSun extends CardImpl {
} }
public HeliodGodOfTheSun(final HeliodGodOfTheSun card) { private HeliodGodOfTheSun(final HeliodGodOfTheSun card) {
super(card); super(card);
} }

View file

@ -3,11 +3,9 @@ package mage.cards.i;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.PreventAllDamageToAllEffect; import mage.abilities.effects.common.PreventAllDamageToAllEffect;
import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.abilities.keyword.MenaceAbility; import mage.abilities.keyword.MenaceAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -48,9 +46,8 @@ public final class IroasGodOfVictory extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to red and white is less than seven, Iroas isn't a creature. // As long as your devotion to red and white is less than seven, Iroas isn't a creature.
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.RW, 7); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.RW, 7))
effect.setText("As long as your devotion to red and white is less than seven, {this} isn't a creature"); .addHint(DevotionCount.RW.getHint()));
this.addAbility(new SimpleStaticAbility(effect).addHint(new ValueHint("Devotion to red and white", DevotionCount.RW)));
// Creatures you control have menace. (They can't be blocked except by two or more creatures.) // Creatures you control have menace. (They can't be blocked except by two or more creatures.)
this.addAbility(new SimpleStaticAbility( this.addAbility(new SimpleStaticAbility(

View file

@ -4,10 +4,8 @@ import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -48,9 +46,8 @@ public final class KarametraGodOfHarvests extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to green and white is less than seven, Karametra isn't a creature. // As long as your devotion to green and white is less than seven, Karametra isn't a creature.
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.GW, 7); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.GW, 7))
effect.setText("As long as your devotion to green and white is less than seven, {this} isn't a creature"); .addHint(DevotionCount.GW.getHint()));
this.addAbility(new SimpleStaticAbility(effect).addHint(new ValueHint("Devotion to green and white", DevotionCount.GW)));
// Whenever you cast a creature spell, you may search your library for a Forest or Plains card, put it onto the battlefield tapped, then shuffle your library. // Whenever you cast a creature spell, you may search your library for a Forest or Plains card, put it onto the battlefield tapped, then shuffle your library.
this.addAbility(new SpellCastControllerTriggeredAbility( this.addAbility(new SpellCastControllerTriggeredAbility(
@ -59,7 +56,7 @@ public final class KarametraGodOfHarvests extends CardImpl {
)); ));
} }
public KarametraGodOfHarvests(final KarametraGodOfHarvests card) { private KarametraGodOfHarvests(final KarametraGodOfHarvests card) {
super(card); super(card);
} }

View file

@ -3,7 +3,6 @@ package mage.cards.k;
import mage.MageInt; import mage.MageInt;
import mage.Mana; import mage.Mana;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.hint.ValueHint;
import mage.abilities.mana.DynamicManaAbility; import mage.abilities.mana.DynamicManaAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -29,10 +28,10 @@ public final class KarametrasAcolyte extends CardImpl {
this.addAbility(new DynamicManaAbility( this.addAbility(new DynamicManaAbility(
Mana.GreenMana(1), DevotionCount.G, "Add an amount of {G} equal to your devotion to green. " + Mana.GreenMana(1), DevotionCount.G, "Add an amount of {G} equal to your devotion to green. " +
"(Each {G} in the mana costs of permanents you control counts towards your devotion to green.)" "(Each {G} in the mana costs of permanents you control counts towards your devotion to green.)"
).addHint(new ValueHint("Devotion to green", DevotionCount.G))); ).addHint(DevotionCount.G.getHint()));
} }
public KarametrasAcolyte(final KarametrasAcolyte card) { private KarametrasAcolyte(final KarametrasAcolyte card) {
super(card); super(card);
} }

View file

@ -4,12 +4,10 @@ import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.InfoEffect; import mage.abilities.effects.common.InfoEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.Card; import mage.cards.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -46,9 +44,8 @@ public final class KeranosGodOfStorms extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to blue and red is less than seven, Keranos isn't a creature. // As long as your devotion to blue and red is less than seven, Keranos isn't a creature.
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.UR, 7); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.UR, 7))
effect.setText("As long as your devotion to blue and red is less than seven, {this} isn't a creature"); .addHint(DevotionCount.UR.getHint()));
this.addAbility(new SimpleStaticAbility(effect).addHint(new ValueHint("Devotion to blue and red", DevotionCount.UR)));
// Reveal the first card you draw on each of your turns. // Reveal the first card you draw on each of your turns.
// Whenever you reveal a land card this way, draw a card. // Whenever you reveal a land card this way, draw a card.
@ -56,7 +53,7 @@ public final class KeranosGodOfStorms extends CardImpl {
this.addAbility(new KeranosGodOfStormsTriggeredAbility(), new CardsAmountDrawnThisTurnWatcher()); this.addAbility(new KeranosGodOfStormsTriggeredAbility(), new CardsAmountDrawnThisTurnWatcher());
} }
public KeranosGodOfStorms(final KeranosGodOfStorms card) { private KeranosGodOfStorms(final KeranosGodOfStorms card) {
super(card); super(card);
} }

View file

@ -6,10 +6,8 @@ import mage.abilities.Ability;
import mage.abilities.common.BeginningOfPreCombatMainTriggeredAbility; import mage.abilities.common.BeginningOfPreCombatMainTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.Card; import mage.cards.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -39,9 +37,8 @@ public final class KlothysGodOfDestiny extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to red and green is less than seven, Klothys isn't a creature. // As long as your devotion to red and green is less than seven, Klothys isn't a creature.
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.RG, 7); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.RG, 7))
effect.setText("As long as your devotion to red and green is less than seven, {this} isn't a creature"); .addHint(DevotionCount.RG.getHint()));
this.addAbility(new SimpleStaticAbility(effect).addHint(new ValueHint("Devotion to red and green", DevotionCount.RG)));
// At the beginning of your precombat main phase, exile target card from a graveyard. If it was a land card, add {R} or {G}. Otherwise, you gain 2 life and Klothys deals 2 damage to each opponent. // At the beginning of your precombat main phase, exile target card from a graveyard. If it was a land card, add {R} or {G}. Otherwise, you gain 2 life and Klothys deals 2 damage to each opponent.
Ability ability = new BeginningOfPreCombatMainTriggeredAbility( Ability ability = new BeginningOfPreCombatMainTriggeredAbility(

View file

@ -2,7 +2,6 @@ package mage.cards.k;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -22,10 +21,9 @@ public final class KlothyssDesign extends CardImpl {
// Creatures you control get +X/+X until end of turn, where X is your devotion to green. // Creatures you control get +X/+X until end of turn, where X is your devotion to green.
this.getSpellAbility().addEffect(new BoostControlledEffect( this.getSpellAbility().addEffect(new BoostControlledEffect(
DevotionCount.G, DevotionCount.G, Duration.EndOfTurn, DevotionCount.G, DevotionCount.G, Duration.EndOfTurn,
StaticFilters.FILTER_PERMANENT_CREATURES, StaticFilters.FILTER_PERMANENT_CREATURES, false, true
false, true
)); ));
this.getSpellAbility().addHint(new ValueHint("Devotion to green", DevotionCount.G)); this.getSpellAbility().addHint(DevotionCount.G.getHint());
} }
private KlothyssDesign(final KlothyssDesign card) { private KlothyssDesign(final KlothyssDesign card) {

View file

@ -4,11 +4,9 @@ import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.ReplacementEffectImpl;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.effects.common.continuous.MaximumHandSizeControllerEffect; import mage.abilities.effects.common.continuous.MaximumHandSizeControllerEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -35,9 +33,8 @@ public final class KruphixGodOfHorizons extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to green and blue is less than seven, Kruhpix isn't a creature. // As long as your devotion to green and blue is less than seven, Kruhpix isn't a creature.
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.GU, 7); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.GU, 7))
effect.setText("As long as your devotion to green and blue is less than seven, {this} isn't a creature"); .addHint(DevotionCount.GU.getHint()));
this.addAbility(new SimpleStaticAbility(effect).addHint(new ValueHint("Devotion to green and blue", DevotionCount.GU)));
// You have no maximum hand size. // You have no maximum hand size.
this.addAbility(new SimpleStaticAbility(new MaximumHandSizeControllerEffect( this.addAbility(new SimpleStaticAbility(new MaximumHandSizeControllerEffect(

View file

@ -7,7 +7,6 @@ import mage.abilities.SpellAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.common.cost.CostModificationEffectImpl; import mage.abilities.effects.common.cost.CostModificationEffectImpl;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
@ -29,7 +28,7 @@ public final class MarshmistTitan extends CardImpl {
// Marshmist Titan costs {X} less to cast, where X is your devotion to black. // Marshmist Titan costs {X} less to cast, where X is your devotion to black.
this.addAbility(new SimpleStaticAbility(Zone.STACK, new MarshmistTitanCostReductionEffect()) this.addAbility(new SimpleStaticAbility(Zone.STACK, new MarshmistTitanCostReductionEffect())
.addHint(new ValueHint("Devotion to black", DevotionCount.B))); .addHint(DevotionCount.B.getHint()));
} }
private MarshmistTitan(final MarshmistTitan card) { private MarshmistTitan(final MarshmistTitan card) {
@ -46,7 +45,7 @@ class MarshmistTitanCostReductionEffect extends CostModificationEffectImpl {
MarshmistTitanCostReductionEffect() { MarshmistTitanCostReductionEffect() {
super(Duration.Custom, Outcome.Benefit, CostModificationType.REDUCE_COST); super(Duration.Custom, Outcome.Benefit, CostModificationType.REDUCE_COST);
staticText = "{this} costs {X} less to cast, where X is your devotion to black. " + staticText = "This spell costs {X} less to cast, where X is your devotion to black. " +
"<i>(Each {B} in the mana costs of permanents you control counts toward your devotion to black.)</i> "; "<i>(Each {B} in the mana costs of permanents you control counts toward your devotion to black.)</i> ";
} }

View file

@ -8,7 +8,6 @@ import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.ProtectionAbility; import mage.abilities.keyword.ProtectionAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -48,7 +47,7 @@ public final class MasterOfWaves extends CardImpl {
// <i>(Each {U} in the mana costs of permanents you control counts toward your devotion to blue.)</i> // <i>(Each {U} in the mana costs of permanents you control counts toward your devotion to blue.)</i>
Effect effect = new CreateTokenEffect(new MasterOfWavesElementalToken(), DevotionCount.U); Effect effect = new CreateTokenEffect(new MasterOfWavesElementalToken(), DevotionCount.U);
effect.setText("create a number of 1/0 blue Elemental creature tokens equal to your devotion to blue. <i>(Each {U} in the mana costs of permanents you control counts toward your devotion to blue.)</i>"); effect.setText("create a number of 1/0 blue Elemental creature tokens equal to your devotion to blue. <i>(Each {U} in the mana costs of permanents you control counts toward your devotion to blue.)</i>");
this.addAbility(new EntersBattlefieldTriggeredAbility(effect).addHint(new ValueHint("Devotion to blue", DevotionCount.U))); this.addAbility(new EntersBattlefieldTriggeredAbility(effect).addHint(DevotionCount.U.getHint()));
} }
public MasterOfWaves(final MasterOfWaves card) { public MasterOfWaves(final MasterOfWaves card) {

View file

@ -1,33 +1,25 @@
package mage.cards.m; package mage.cards.m;
import mage.MageInt; import mage.MageInt;
import mage.MageObject;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.Mode;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.Cost;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.filter.StaticFilters;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent;
import mage.util.CardUtil;
import java.util.Locale;
import java.util.UUID; import java.util.UUID;
import static mage.filter.StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT;
/** /**
* @author LevelX2 * @author LevelX2
*/ */
@ -45,16 +37,14 @@ public final class MogisGodOfSlaughter extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to black and red is less than seven, Mogis isn't a creature. // As long as your devotion to black and red is less than seven, Mogis isn't a creature.
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.BR, 7); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.BR, 7))
effect.setText("As long as your devotion to black and red is less than seven, {this} isn't a creature"); .addHint(DevotionCount.BR.getHint()));
this.addAbility(new SimpleStaticAbility(effect).addHint(new ValueHint("Devotion to black and red", DevotionCount.BR)));
// At the beginning of each opponent's upkeep, Mogis deals 2 damage to that player unless they sacrifice a creature. // At the beginning of each opponent's upkeep, Mogis deals 2 damage to that player unless they sacrifice a creature.
effect = new DoUnlessTargetPaysCost(new DamageTargetEffect(2, true, "that player"), Ability ability = new BeginningOfUpkeepTriggeredAbility(
new SacrificeTargetCost(new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT)), Zone.BATTLEFIELD, new MogisGodOfSlaughterEffect(),
"Sacrifice a creature? (otherwise you get 2 damage)"); TargetController.OPPONENT, false, true
effect.setText("Mogis deals 2 damage to that player unless they sacrifice a creature"); );
Ability ability = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, effect, TargetController.OPPONENT, false, true);
this.addAbility(ability); this.addAbility(ability);
} }
@ -68,76 +58,35 @@ public final class MogisGodOfSlaughter extends CardImpl {
} }
} }
class DoUnlessTargetPaysCost extends OneShotEffect { class MogisGodOfSlaughterEffect extends OneShotEffect {
private final OneShotEffect executingEffect; MogisGodOfSlaughterEffect() {
private final Cost cost; super(Outcome.Damage);
private final String userMessage; staticText = "{this} deals 2 damage to that player unless they sacrifice a creature";
public DoUnlessTargetPaysCost(OneShotEffect effect, Cost cost) {
this(effect, cost, null);
} }
public DoUnlessTargetPaysCost(OneShotEffect effect, Cost cost, String userMessage) { private MogisGodOfSlaughterEffect(final MogisGodOfSlaughterEffect effect) {
super(Outcome.Benefit);
this.executingEffect = effect;
this.cost = cost;
this.userMessage = userMessage;
}
public DoUnlessTargetPaysCost(final DoUnlessTargetPaysCost effect) {
super(effect); super(effect);
this.executingEffect = (OneShotEffect) effect.executingEffect.copy(); }
this.cost = effect.cost.copy();
this.userMessage = effect.userMessage; @Override
public MogisGodOfSlaughterEffect copy() {
return new MogisGodOfSlaughterEffect(this);
} }
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(targetPointer.getFirst(game, source)); Player player = game.getPlayer(game.getActivePlayerId());
MageObject mageObject = game.getObject(source.getSourceId()); if (player == null || game.getBattlefield().countAll(StaticFilters.FILTER_PERMANENT_CREATURE, game.getActivePlayerId(), game) == 0) {
if (player != null && mageObject != null) {
String message = userMessage;
if (message == null) {
message = getCostText() + " to prevent " + executingEffect.getText(source.getModes().getMode()) + '?';
}
message = CardUtil.replaceSourceName(message, mageObject.getLogName());
cost.clearPaid();
if (cost.canPay(source, source.getSourceId(), player.getId(), game) && player.chooseUse(executingEffect.getOutcome(), message, source, game)) {
cost.pay(source, game, source.getSourceId(), player.getId(), false, null);
}
if (!cost.isPaid()) {
executingEffect.setTargetPointer(this.targetPointer);
return executingEffect.apply(game, source);
}
return true;
}
return false; return false;
} }
TargetPermanent target = new TargetControlledCreaturePermanent(1);
@Override target.setNotTarget(true);
public String getText(Mode mode) { if (!player.chooseUse(outcome, "Sacrifice a creature to prevent 2 damage?", source, game)
if (!staticText.isEmpty()) { || !player.choose(outcome, target, source.getSourceId(), game)) {
return staticText; return player.damage(2, source.getSourceId(), game) > 0;
} }
return executingEffect.getText(mode) + "unless they" + Permanent permanent = game.getPermanent(target.getFirstTarget());
getCostText(); return permanent != null && permanent.sacrifice(source.getSourceId(), game);
}
private String getCostText() {
StringBuilder sb = new StringBuilder();
String costText = cost.getText();
if (costText != null
&& !costText.toLowerCase(Locale.ENGLISH).startsWith("discard")
&& !costText.toLowerCase(Locale.ENGLISH).startsWith("sacrifice")
&& !costText.toLowerCase(Locale.ENGLISH).startsWith("remove")) {
sb.append("pay ");
}
return sb.append(costText).toString();
}
@Override
public DoUnlessTargetPaysCost copy() {
return new DoUnlessTargetPaysCost(this);
} }
} }

View file

@ -5,7 +5,6 @@ import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.IntimidateAbility; import mage.abilities.keyword.IntimidateAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -44,7 +43,7 @@ public final class MogissMarauder extends CardImpl {
"and haste until end of turn, where X is your devotion to black" "and haste until end of turn, where X is your devotion to black"
)); ));
ability.setTargetAdjuster(MogissMarauderAdjuster.instance); ability.setTargetAdjuster(MogissMarauderAdjuster.instance);
ability.addHint(new ValueHint("Devotion to black", DevotionCount.B)); ability.addHint(DevotionCount.B.getHint());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -6,7 +6,6 @@ import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.common.ManaEffect; import mage.abilities.effects.common.ManaEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.mana.ActivatedManaAbilityImpl; import mage.abilities.mana.ActivatedManaAbilityImpl;
import mage.abilities.mana.ColorlessManaAbility; import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -34,14 +33,9 @@ public final class NykthosShrineToNyx extends CardImpl {
// {T}: Add {C}. // {T}: Add {C}.
this.addAbility(new ColorlessManaAbility()); this.addAbility(new ColorlessManaAbility());
// {2}, {T}: Choose a color. Add an amount of mana of that color equal to your devotion to that color. // {2}, {T}: Choose a color. Add an amount of mana of that color equal to your devotion to that color.
Ability ability = new NykthosShrineToNyxManaAbility(); this.addAbility(new NykthosShrineToNyxManaAbility());
ability.addHint(new ValueHint("Devotion to white", DevotionCount.W));
ability.addHint(new ValueHint("Devotion to blue", DevotionCount.U));
ability.addHint(new ValueHint("Devotion to black", DevotionCount.B));
ability.addHint(new ValueHint("Devotion to red", DevotionCount.R));
ability.addHint(new ValueHint("Devotion to green", DevotionCount.G));
this.addAbility(ability);
} }
private NykthosShrineToNyx(final NykthosShrineToNyx card) { private NykthosShrineToNyx(final NykthosShrineToNyx card) {
@ -59,6 +53,11 @@ class NykthosShrineToNyxManaAbility extends ActivatedManaAbilityImpl {
NykthosShrineToNyxManaAbility() { NykthosShrineToNyxManaAbility() {
super(Zone.BATTLEFIELD, new NykthosDynamicManaEffect(), new GenericManaCost(2)); super(Zone.BATTLEFIELD, new NykthosDynamicManaEffect(), new GenericManaCost(2));
this.addCost(new TapSourceCost()); this.addCost(new TapSourceCost());
this.addHint(DevotionCount.W.getHint());
this.addHint(DevotionCount.U.getHint());
this.addHint(DevotionCount.B.getHint());
this.addHint(DevotionCount.R.getHint());
this.addHint(DevotionCount.G.getHint());
} }
private NykthosShrineToNyxManaAbility(final NykthosShrineToNyxManaAbility ability) { private NykthosShrineToNyxManaAbility(final NykthosShrineToNyxManaAbility ability) {

View file

@ -6,11 +6,9 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -41,9 +39,8 @@ public final class NyleaGodOfTheHunt extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to green is less than five, Nylea isn't a creature.<i>(Each {G} in the mana costs of permanents you control counts towards your devotion to green.)</i> // As long as your devotion to green is less than five, Nylea isn't a creature.<i>(Each {G} in the mana costs of permanents you control counts towards your devotion to green.)</i>
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.G, 5); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.G, 5))
effect.setText("As long as your devotion to green is less than five, {this} isn't a creature."); .addHint(DevotionCount.G.getHint()));
this.addAbility(new SimpleStaticAbility(effect).addHint(new ValueHint("Devotion to green", DevotionCount.G)));
// Other creatures you control have trample. // Other creatures you control have trample.
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(

View file

@ -4,7 +4,6 @@ import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -28,7 +27,7 @@ public final class NyleasDisciple extends CardImpl {
// When Nylea's Disciple enters the battlefield, you gain life equal to your devotion to green. // When Nylea's Disciple enters the battlefield, you gain life equal to your devotion to green.
this.addAbility(new EntersBattlefieldTriggeredAbility( this.addAbility(new EntersBattlefieldTriggeredAbility(
new GainLifeEffect(DevotionCount.G).setText("you gain life equal to your devotion to green") new GainLifeEffect(DevotionCount.G).setText("you gain life equal to your devotion to green")
).addHint(new ValueHint("Devotion to green", DevotionCount.G))); ).addHint(DevotionCount.G.getHint()));
} }
private NyleasDisciple(final NyleasDisciple card) { private NyleasDisciple(final NyleasDisciple card) {

View file

@ -6,10 +6,8 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.Card; import mage.cards.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -42,9 +40,8 @@ public final class PharikaGodOfAffliction extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to black and green is less than seven, Pharika isn't a creature. // As long as your devotion to black and green is less than seven, Pharika isn't a creature.
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.BG, 7); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.BG, 7))
effect.setText("As long as your devotion to black and green is less than seven, {this} isn't a creature"); .addHint(DevotionCount.BG.getHint()));
this.addAbility(new SimpleStaticAbility(effect).addHint(new ValueHint("Devotion to black and green", DevotionCount.BG)));
// {B}{G}: Exile target creature card from a graveyard. It's owner creates a 1/1 black and green Snake enchantment creature token with deathtouch. // {B}{G}: Exile target creature card from a graveyard. It's owner creates a 1/1 black and green Snake enchantment creature token with deathtouch.
Ability ability = new SimpleActivatedAbility(new PharikaExileEffect(), new ManaCostsImpl("{B}{G}")); Ability ability = new SimpleActivatedAbility(new PharikaExileEffect(), new ManaCostsImpl("{B}{G}"));

View file

@ -7,11 +7,9 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.dynamicvalue.common.SourcePermanentToughnessValue; import mage.abilities.dynamicvalue.common.SourcePermanentToughnessValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect; import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -41,9 +39,8 @@ public final class PhenaxGodOfDeception extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to blue and black is less than seven, Phenax isn't a creature. // As long as your devotion to blue and black is less than seven, Phenax isn't a creature.
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.UB, 7); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.UB, 7))
effect.setText("As long as your devotion to blue and black is less than seven, {this} isn't a creature"); .addHint(DevotionCount.UB.getHint()));
this.addAbility(new SimpleStaticAbility(effect).addHint(new ValueHint("Devotion to blue and black", DevotionCount.UB)));
// Creatures you control have "{T}: Target player puts the top X cards of their library into their graveyard, where X is this creature's toughness." // Creatures you control have "{T}: Target player puts the top X cards of their library into their graveyard, where X is this creature's toughness."
Ability ability = new SimpleActivatedAbility( Ability ability = new SimpleActivatedAbility(
@ -59,7 +56,7 @@ public final class PhenaxGodOfDeception extends CardImpl {
)); ));
} }
public PhenaxGodOfDeception(final PhenaxGodOfDeception card) { private PhenaxGodOfDeception(final PhenaxGodOfDeception card) {
super(card); super(card);
} }

View file

@ -6,15 +6,14 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DamagePlayersEffect; import mage.abilities.effects.common.DamagePlayersEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.permanent.AnotherPredicate; import mage.filter.predicate.permanent.AnotherPredicate;
@ -25,7 +24,7 @@ import java.util.UUID;
*/ */
public final class PurphorosGodOfTheForge extends CardImpl { public final class PurphorosGodOfTheForge extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature"); private static final FilterPermanent filter = new FilterCreaturePermanent("another creature");
static { static {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
@ -44,9 +43,8 @@ public final class PurphorosGodOfTheForge extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to red is less than five, Purphoros isn't a creature. // As long as your devotion to red is less than five, Purphoros isn't a creature.
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.R, 5); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.R, 5))
effect.setText("As long as your devotion to red is less than five, {this} isn't a creature."); .addHint(DevotionCount.R.getHint()));
this.addAbility(new SimpleStaticAbility(effect).addHint(new ValueHint("Devotion to red", DevotionCount.R)));
// Whenever another creature enters the battlefield under your control, Purphoros deals 2 damage to each opponent. // Whenever another creature enters the battlefield under your control, Purphoros deals 2 damage to each opponent.
this.addAbility(new EntersBattlefieldControlledTriggeredAbility( this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
@ -59,7 +57,7 @@ public final class PurphorosGodOfTheForge extends CardImpl {
)); ));
} }
public PurphorosGodOfTheForge(final PurphorosGodOfTheForge card) { private PurphorosGodOfTheForge(final PurphorosGodOfTheForge card) {
super(card); super(card);
} }

View file

@ -4,7 +4,6 @@ import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -29,10 +28,10 @@ public final class ReverentHunter extends CardImpl {
// When Reverent Hunter enters the battlefield, put a number of +1/+1 counters on it equal to your devotion to green. // When Reverent Hunter enters the battlefield, put a number of +1/+1 counters on it equal to your devotion to green.
this.addAbility(new EntersBattlefieldTriggeredAbility(new AddCountersSourceEffect( this.addAbility(new EntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(
CounterType.P1P1.createInstance(0), DevotionCount.G, true CounterType.P1P1.createInstance(0), DevotionCount.G, true
)).addHint(new ValueHint("Devotion to green", DevotionCount.G))); )).addHint(DevotionCount.G.getHint()));
} }
public ReverentHunter(final ReverentHunter card) { private ReverentHunter(final ReverentHunter card) {
super(card); super(card);
} }

View file

@ -4,7 +4,6 @@ import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -26,7 +25,7 @@ public final class Sanguimancy extends CardImpl {
effect = new LoseLifeSourceControllerEffect(DevotionCount.B); effect = new LoseLifeSourceControllerEffect(DevotionCount.B);
effect.setText("and you lose X life, where X is your devotion to black"); effect.setText("and you lose X life, where X is your devotion to black");
this.getSpellAbility().addEffect(effect); this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addHint(new ValueHint("Devotion to black", DevotionCount.B)); this.getSpellAbility().addHint(DevotionCount.B.getHint());
} }
public Sanguimancy(final Sanguimancy card) { public Sanguimancy(final Sanguimancy card) {

View file

@ -3,7 +3,6 @@ package mage.cards.s;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.effects.common.DamageAllEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -31,7 +30,7 @@ public final class Skyreaping extends CardImpl {
Effect effect = new DamageAllEffect(DevotionCount.G, filter); Effect effect = new DamageAllEffect(DevotionCount.G, filter);
effect.setText("{this} deals damage to each creature with flying equal to your devotion to green <i>(Each {G} in the mana costs of permanents you control counts toward your devotion to green.)</i>"); effect.setText("{this} deals damage to each creature with flying equal to your devotion to green <i>(Each {G} in the mana costs of permanents you control counts toward your devotion to green.)</i>");
this.getSpellAbility().addEffect(effect); this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addHint(new ValueHint("Devotion to green", DevotionCount.G)); this.getSpellAbility().addHint(DevotionCount.G.getHint());
} }
public Skyreaping(final Skyreaping card) { public Skyreaping(final Skyreaping card) {

View file

@ -7,11 +7,9 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.effects.keyword.ScryEffect; import mage.abilities.effects.keyword.ScryEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -38,9 +36,8 @@ public final class ThassaGodOfTheSea extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to blue is less than five, Thassa isn't a creature.<i>(Each {U} in the mana costs of permanents you control counts towards your devotion to white.)</i> // As long as your devotion to blue is less than five, Thassa isn't a creature.<i>(Each {U} in the mana costs of permanents you control counts towards your devotion to white.)</i>
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.U, 5); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.U, 5))
effect.setText("As long as your devotion to blue is less than five, {this} isn't a creature."); .addHint(DevotionCount.U.getHint()));
this.addAbility(new SimpleStaticAbility(effect).addHint(new ValueHint("Devotion to blue", DevotionCount.U)));
// At the beginning of your upkeep, scry 1. // At the beginning of your upkeep, scry 1.
this.addAbility(new BeginningOfUpkeepTriggeredAbility( this.addAbility(new BeginningOfUpkeepTriggeredAbility(

View file

@ -2,7 +2,6 @@ package mage.cards.t;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.common.CounterUnlessPaysEffect; import mage.abilities.effects.common.CounterUnlessPaysEffect;
import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
@ -21,10 +20,10 @@ public final class ThassasRebuff extends CardImpl {
// Counter target spell unless its controller pays {X}, where X is your devotion to blue. // Counter target spell unless its controller pays {X}, where X is your devotion to blue.
this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(DevotionCount.U)); this.getSpellAbility().addEffect(new CounterUnlessPaysEffect(DevotionCount.U));
this.getSpellAbility().addTarget(new TargetSpell()); this.getSpellAbility().addTarget(new TargetSpell());
this.getSpellAbility().addHint(new ValueHint("Devotion to blue", DevotionCount.U)); this.getSpellAbility().addHint(DevotionCount.U.getHint());
} }
public ThassasRebuff(final ThassasRebuff card) { private ThassasRebuff(final ThassasRebuff card) {
super(card); super(card);
} }

View file

@ -6,7 +6,6 @@ import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.continuous.BoostEnchantedEffect; import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
@ -37,10 +36,10 @@ public final class ThunderousMight extends CardImpl {
effect.setText("it gets +X/+0 until end of turn, where X is your devotion to red"); effect.setText("it gets +X/+0 until end of turn, where X is your devotion to red");
effect.setLockedIn(true); effect.setLockedIn(true);
this.addAbility(new AttacksAttachedTriggeredAbility(effect, AttachmentType.AURA, false) this.addAbility(new AttacksAttachedTriggeredAbility(effect, AttachmentType.AURA, false)
.addHint(new ValueHint("Devotion to red", DevotionCount.R))); .addHint(DevotionCount.R.getHint()));
} }
public ThunderousMight(final ThunderousMight card) { private ThunderousMight(final ThunderousMight card) {
super(card); super(card);
} }

View file

@ -5,23 +5,21 @@ import mage.abilities.Ability;
import mage.abilities.common.BeginningOfCombatTriggeredAbility; import mage.abilities.common.BeginningOfCombatTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.hint.ValueHint;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.IndestructibleAbility; import mage.abilities.keyword.IndestructibleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.permanent.AnotherPredicate; import mage.filter.predicate.permanent.AnotherPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.target.common.TargetControlledCreaturePermanent; import mage.target.TargetPermanent;
import java.util.UUID; import java.util.UUID;
@ -30,7 +28,8 @@ import java.util.UUID;
*/ */
public final class XenagosGodOfRevels extends CardImpl { public final class XenagosGodOfRevels extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another target creature you control"); private static final FilterPermanent filter
= new FilterControlledCreaturePermanent("another target creature you control");
static { static {
filter.add(AnotherPredicate.instance); filter.add(AnotherPredicate.instance);
@ -48,18 +47,19 @@ public final class XenagosGodOfRevels extends CardImpl {
this.addAbility(IndestructibleAbility.getInstance()); this.addAbility(IndestructibleAbility.getInstance());
// As long as your devotion to red and green is less than seven, Xenagos isn't a creature. // As long as your devotion to red and green is less than seven, Xenagos isn't a creature.
Effect effect = new LoseCreatureTypeSourceEffect(DevotionCount.RG, 7); this.addAbility(new SimpleStaticAbility(new LoseCreatureTypeSourceEffect(DevotionCount.RG, 7))
effect.setText("As long as your devotion to red and green is less than seven, {this} isn't a creature"); .addHint(DevotionCount.RG.getHint()));
this.addAbility(new SimpleStaticAbility(effect).addHint(new ValueHint("Devotion to red and green", DevotionCount.RG)));
// At the beginning of combat on your turn, another target creature you control gains haste and gets +X/+X until end of turn, where X is that creature's power. // At the beginning of combat on your turn, another target creature you control gains haste and gets +X/+X until end of turn, where X is that creature's power.
effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn);
effect.setText("another target creature you control gains haste");
Ability ability = new BeginningOfCombatTriggeredAbility( Ability ability = new BeginningOfCombatTriggeredAbility(
Zone.BATTLEFIELD, effect, TargetController.YOU, false, false Zone.BATTLEFIELD,
new GainAbilityTargetEffect(
HasteAbility.getInstance(), Duration.EndOfTurn
).setText("another target creature you control gains haste"),
TargetController.YOU, false, false
); );
ability.addEffect(new XenagosGodOfRevelsEffect()); ability.addEffect(new XenagosGodOfRevelsEffect());
ability.addTarget(new TargetControlledCreaturePermanent(1, 1, filter, false)); ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability); this.addAbility(ability);
} }
@ -95,9 +95,10 @@ class XenagosGodOfRevelsEffect extends OneShotEffect {
if (targetCreature == null) { if (targetCreature == null) {
return false; return false;
} }
ContinuousEffect effect = new BoostTargetEffect(targetCreature.getPower().getValue(), targetCreature.getPower().getValue(), Duration.EndOfTurn); int power = targetCreature.getPower().getValue();
effect.setTargetPointer(this.getTargetPointer()); game.addEffect(new BoostTargetEffect(
game.addEffect(effect, source); power, power, Duration.EndOfTurn
).setTargetPointer(this.getTargetPointer()), source);
return false; return false;
} }
} }