diff --git a/Mage.Sets/src/mage/cards/c/CrypticSerpent.java b/Mage.Sets/src/mage/cards/c/CrypticSerpent.java index c7e91127ba..fb28357301 100644 --- a/Mage.Sets/src/mage/cards/c/CrypticSerpent.java +++ b/Mage.Sets/src/mage/cards/c/CrypticSerpent.java @@ -1,23 +1,28 @@ - package mage.cards.c; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount; import mage.abilities.effects.common.cost.SourceCostReductionForEachCardInGraveyardEffect; +import mage.abilities.hint.ValueHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; +import mage.filter.StaticFilters; import mage.filter.common.FilterInstantOrSorceryCard; +import java.util.UUID; + /** - * * @author fireshoes */ public final class CrypticSerpent extends CardImpl { + private static final DynamicValue cardsCount = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_INSTANT_OR_SORCERY); + public CrypticSerpent(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{U}{U}"); @@ -26,7 +31,8 @@ public final class CrypticSerpent extends CardImpl { this.toughness = new MageInt(5); // Cryptic Serpent costs {1} less to cast for each instant and sorcery card in your graveyard. - this.addAbility(new SimpleStaticAbility(Zone.ALL, new SourceCostReductionForEachCardInGraveyardEffect(new FilterInstantOrSorceryCard()))); + this.addAbility(new SimpleStaticAbility(Zone.ALL, new SourceCostReductionForEachCardInGraveyardEffect(new FilterInstantOrSorceryCard())) + .addHint(new ValueHint("Instant and sorcery card in your graveyard", cardsCount))); } public CrypticSerpent(final CrypticSerpent card) { diff --git a/Mage.Sets/src/mage/cards/p/Pteramander.java b/Mage.Sets/src/mage/cards/p/Pteramander.java index 0c5777a0d4..6a98bcf192 100644 --- a/Mage.Sets/src/mage/cards/p/Pteramander.java +++ b/Mage.Sets/src/mage/cards/p/Pteramander.java @@ -5,8 +5,11 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount; import mage.abilities.effects.common.cost.CostModificationEffectImpl; import mage.abilities.effects.keyword.AdaptEffect; +import mage.abilities.hint.ValueHint; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; @@ -23,6 +26,8 @@ import java.util.UUID; */ public final class Pteramander extends CardImpl { + static final DynamicValue cardsCount = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_INSTANT_OR_SORCERY); + public Pteramander(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}"); @@ -38,7 +43,8 @@ public final class Pteramander extends CardImpl { // TODO: Make ability properly copiable Ability ability = new SimpleActivatedAbility(new AdaptEffect(4).setText("Adapt 4. This ability costs {1} less to activate for each instant and sorcery card in your graveyard."), new ManaCostsImpl("{7}{U}")); this.addAbility(ability); - this.addAbility(new SimpleStaticAbility(Zone.ALL, new PteramanderCostIncreasingEffect(ability.getOriginalId()))); + this.addAbility(new SimpleStaticAbility(Zone.ALL, new PteramanderCostIncreasingEffect(ability.getOriginalId())) + .addHint(new ValueHint("Instant and sorcery card in your graveyard", cardsCount))); } private Pteramander(final Pteramander card) { @@ -69,7 +75,8 @@ class PteramanderCostIncreasingEffect extends CostModificationEffectImpl { public boolean apply(Game game, Ability source, Ability abilityToModify) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - CardUtil.reduceCost(abilityToModify, controller.getGraveyard().count(StaticFilters.FILTER_CARD_INSTANT_OR_SORCERY, game)); + int count = Pteramander.cardsCount.calculate(game, source, this); + CardUtil.reduceCost(abilityToModify, count); } return true; } diff --git a/Mage.Sets/src/mage/cards/r/RiseFromTheTides.java b/Mage.Sets/src/mage/cards/r/RiseFromTheTides.java index cdd12e6bea..56e5849d63 100644 --- a/Mage.Sets/src/mage/cards/r/RiseFromTheTides.java +++ b/Mage.Sets/src/mage/cards/r/RiseFromTheTides.java @@ -1,27 +1,30 @@ - package mage.cards.r; -import java.util.UUID; +import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount; import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.hint.ValueHint; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.filter.common.FilterInstantOrSorceryCard; +import mage.filter.StaticFilters; import mage.game.permanent.token.ZombieToken; +import java.util.UUID; + /** - * * @author fireshoes */ public final class RiseFromTheTides extends CardImpl { + private static final DynamicValue cardsCount = new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_INSTANT_OR_SORCERY); + public RiseFromTheTides(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{U}"); + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{U}"); // Create a tapped 2/2 black Zombie creature token for each instant and sorcery card in your graveyard. - CardsInControllerGraveyardCount value = new CardsInControllerGraveyardCount(new FilterInstantOrSorceryCard()); - this.getSpellAbility().addEffect(new CreateTokenEffect(new ZombieToken(), value, true, false)); + this.getSpellAbility().addEffect(new CreateTokenEffect(new ZombieToken(), cardsCount, true, false)); + this.getSpellAbility().addHint(new ValueHint("Instant and sorcery card in your graveyard", cardsCount)); } public RiseFromTheTides(final RiseFromTheTides card) {