updated delirium hint (#7050)

This commit is contained in:
Evan Kranzler 2020-09-06 20:20:25 -04:00
parent c4f8d93cb9
commit 5dffa447d1
2 changed files with 34 additions and 10 deletions

View file

@ -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());

View file

@ -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<String> 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