diff --git a/src/main/java/forge/GameActionUtil.java b/src/main/java/forge/GameActionUtil.java index 222dd7159ba..2136821f5f8 100644 --- a/src/main/java/forge/GameActionUtil.java +++ b/src/main/java/forge/GameActionUtil.java @@ -447,10 +447,23 @@ public final class GameActionUtil { */ public static void payCostDuringAbilityResolve(final SpellAbility ability, final Cost cost, final Command paid, final Command unpaid) { final Card source = ability.getSourceCard(); - if (cost.getCostParts().size() > 1) { + final ArrayList parts = cost.getCostParts(); + if (parts.size() > 1) { throw new RuntimeException("GameActionUtil::payCostDuringAbilityResolve - Too many payment types - " + source); } - final CostPart costPart = cost.getCostParts().get(0); + CostPart costPart = null; + if (!parts.isEmpty()) { + costPart = parts.get(0); + } + if (parts.isEmpty() || costPart.getAmount().equals("0")) { + if (showYesNoDialog(source, "Do you want to pay 0?")) { + paid.execute(); + } else { + unpaid.execute(); + } + return; + } + if (costPart instanceof CostPayLife) { String amountString = costPart.getAmount(); final int amount = amountString.matches("[0-9][0-9]?") ? Integer.parseInt(amountString) @@ -520,14 +533,6 @@ public final class GameActionUtil { AllZone.getStack().setResolving(bResolving); } else if (costPart instanceof CostMana) { - if (costPart.getAmount().equals("0")) { - if (showYesNoDialog(source, "Do you want to pay 0?")) { - paid.execute(); - } else { - unpaid.execute(); - } - return; - } // temporarily disable the Resolve flag, so the user can payMana for the // resolving Ability final boolean bResolving = AllZone.getStack().getResolving(); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactory.java b/src/main/java/forge/card/abilityfactory/AbilityFactory.java index 8e329decdfa..b6bc391873a 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactory.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactory.java @@ -2796,7 +2796,6 @@ public class AbilityFactory { }; if (payer.isHuman()) { - //GameActionUtil.payCostDuringAbilityResolve(source + "\r\n", source, unlessCost, paidCommand, unpaidCommand); GameActionUtil.payCostDuringAbilityResolve(ability, cost, paidCommand, unpaidCommand); } else { if (ComputerUtil.canPayCost(ability) && CostUtil.checkLifeCost(cost, source, 4)