diff --git a/Mage.Sets/src/mage/cards/e/EmrakulThePromisedEnd.java b/Mage.Sets/src/mage/cards/e/EmrakulThePromisedEnd.java index 28af8e6a1ec..25f0ef45608 100644 --- a/Mage.Sets/src/mage/cards/e/EmrakulThePromisedEnd.java +++ b/Mage.Sets/src/mage/cards/e/EmrakulThePromisedEnd.java @@ -1,9 +1,6 @@ package mage.cards.e; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.SpellAbility; @@ -11,6 +8,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CastSourceTriggeredAbility; import mage.abilities.effects.common.cost.CostModificationEffectImpl; +import mage.abilities.hint.common.DeliriumHint; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ProtectionAbility; import mage.abilities.keyword.TrampleAbility; @@ -25,8 +23,11 @@ import mage.players.Player; import mage.target.common.TargetOpponent; import mage.util.CardUtil; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** - * * @author emerald000 */ public final class EmrakulThePromisedEnd extends CardImpl { @@ -47,7 +48,7 @@ public final class EmrakulThePromisedEnd extends CardImpl { // Emrakul, the Promised End costs {1} less to cast for each card type among cards in your graveyard. Ability ability = new SimpleStaticAbility(Zone.ALL, new EmrakulThePromisedEndCostReductionEffect()); ability.setRuleAtTheTop(true); - this.addAbility(ability); + this.addAbility(ability.addHint(DeliriumHint.instance)); // 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 = new CastSourceTriggeredAbility(new EmrakulThePromisedEndGainControlEffect()); diff --git a/Mage/src/main/java/mage/abilities/hint/common/DeliriumHint.java b/Mage/src/main/java/mage/abilities/hint/common/DeliriumHint.java index 824f4e45974..baebb2d3045 100644 --- a/Mage/src/main/java/mage/abilities/hint/common/DeliriumHint.java +++ b/Mage/src/main/java/mage/abilities/hint/common/DeliriumHint.java @@ -1,11 +1,15 @@ package mage.abilities.hint.common; +import mage.MageObject; import mage.abilities.Ability; -import mage.abilities.condition.common.DeliriumCondition; -import mage.abilities.dynamicvalue.common.CardTypesInGraveyardCount; -import mage.abilities.hint.ConditionHint; import mage.abilities.hint.Hint; +import mage.constants.CardType; import mage.game.Game; +import mage.players.Player; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; /** * @author JayDi85 @@ -13,11 +17,30 @@ import mage.game.Game; public enum DeliriumHint implements Hint { instance; - private static final ConditionHint hint = new ConditionHint(DeliriumCondition.instance, "4+ card types in your graveyard"); @Override public String getText(Game game, Ability ability) { - return hint.getText(game, ability) + " (current: " + CardTypesInGraveyardCount.instance.calculate(game, ability, null) + ")"; + Player player = game.getPlayer(ability.getControllerId()); + if (player == null) { + return null; + } + List types = player + .getGraveyard() + .getCards(game) + .stream() + .map(MageObject::getCardType) + .flatMap(Collection::stream) + .distinct() + .map(CardType::toString) + .sorted() + .collect(Collectors.toList()); + String message = "" + types.size(); + if (types.size() > 0) { + message += " ("; + message += types.stream().reduce((a, b) -> a + ", " + b); + message += ')'; + } + return "Card types in your graveyard: " + message; } @Override