diff --git a/Mage/src/main/java/mage/abilities/costs/common/CollectEvidenceCost.java b/Mage/src/main/java/mage/abilities/costs/common/CollectEvidenceCost.java index f061d48e90e..f8ceb580131 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/CollectEvidenceCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/CollectEvidenceCost.java @@ -47,14 +47,21 @@ public class CollectEvidenceCost extends CostImpl { @Override public boolean canPay(Ability ability, Ability source, UUID controllerId, Game game) { + return getAvailableEvidence(controllerId, game) >= amount; + } + + public static int getAvailableEvidence(UUID controllerId, Game game) { Player player = game.getPlayer(controllerId); - return player != null && player + if (player == null) { + return 0; + } + return player .getGraveyard() .getCards(game) .stream() .filter(Objects::nonNull) .mapToInt(MageObject::getManaValue) - .sum() >= amount; + .sum(); } @Override diff --git a/Mage/src/main/java/mage/abilities/hint/common/EvidenceHint.java b/Mage/src/main/java/mage/abilities/hint/common/EvidenceHint.java new file mode 100644 index 00000000000..a1bdb54bf9d --- /dev/null +++ b/Mage/src/main/java/mage/abilities/hint/common/EvidenceHint.java @@ -0,0 +1,39 @@ +package mage.abilities.hint.common; + +import mage.abilities.Ability; +import mage.abilities.condition.common.CollectedEvidenceCondition; +import mage.abilities.costs.common.CollectEvidenceCost; +import mage.abilities.hint.ConditionHint; +import mage.game.Game; + +/** + * @author JayDi85 + */ +public class EvidenceHint extends ConditionHint { + + private final int needAmount; + + public EvidenceHint(int needAmount) { + super(CollectedEvidenceCondition.instance, "evidence was collected"); + this.needAmount = needAmount; + } + + private EvidenceHint(final EvidenceHint hint) { + super(hint); + this.needAmount = hint.needAmount; + } + + @Override + public String getText(Game game, Ability ability) { + return String.format("%s (need: %d, can collect: %d)", + super.getText(game, ability), + this.needAmount, + CollectEvidenceCost.getAvailableEvidence(ability.getControllerId(), game) + ); + } + + @Override + public EvidenceHint copy() { + return new EvidenceHint(this); + } +} diff --git a/Mage/src/main/java/mage/abilities/keyword/CollectEvidenceAbility.java b/Mage/src/main/java/mage/abilities/keyword/CollectEvidenceAbility.java index d2fb0681fb7..74352bdcbf3 100644 --- a/Mage/src/main/java/mage/abilities/keyword/CollectEvidenceAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/CollectEvidenceAbility.java @@ -3,11 +3,9 @@ package mage.abilities.keyword; import mage.abilities.Ability; import mage.abilities.SpellAbility; import mage.abilities.StaticAbility; -import mage.abilities.condition.common.CollectedEvidenceCondition; import mage.abilities.costs.*; import mage.abilities.costs.common.CollectEvidenceCost; -import mage.abilities.hint.ConditionTrueHint; -import mage.abilities.hint.Hint; +import mage.abilities.hint.common.EvidenceHint; import mage.constants.Outcome; import mage.constants.Zone; import mage.game.Game; @@ -28,7 +26,7 @@ public class CollectEvidenceAbility extends StaticAbility implements OptionalAdd protected OptionalAdditionalCost additionalCost; - private static final Hint hint = new ConditionTrueHint(CollectedEvidenceCondition.instance, "evidence was collected"); + //private static final Hint hint = new ConditionHint(CollectedEvidenceCondition.instance, "evidence was collected"); public static OptionalAdditionalCost makeCost(int amount) { OptionalAdditionalCost cost = new OptionalAdditionalCostImpl( @@ -43,12 +41,13 @@ public class CollectEvidenceAbility extends StaticAbility implements OptionalAdd public CollectEvidenceAbility(int amount) { this(amount, null); } + public CollectEvidenceAbility(int amount, String extraInfoText) { super(Zone.STACK, null); this.additionalCost = makeCost(amount); this.rule = additionalCost.getName() + ". " + (extraInfoText == null ? "" : extraInfoText + ". ") + additionalCost.getReminderText(); this.setRuleAtTheTop(true); - this.addHint(hint); + this.addHint(new EvidenceHint(amount)); this.amount = amount; } diff --git a/Mage/src/main/java/mage/util/CardUtil.java b/Mage/src/main/java/mage/util/CardUtil.java index 8815a5c831f..884c1fa231d 100644 --- a/Mage/src/main/java/mage/util/CardUtil.java +++ b/Mage/src/main/java/mage/util/CardUtil.java @@ -1241,6 +1241,7 @@ public final class CardUtil { } // restrict hints only for permanents, not cards + // total hints if (!abilityHints.isEmpty()) { rules.add(HintUtils.HINT_START_MARK);