From 86e81d35849247926d675feb441cea8abf355aff Mon Sep 17 00:00:00 2001 From: Luke Way Date: Mon, 12 Mar 2018 12:52:47 -0400 Subject: [PATCH] Make AI check energy when testing if it can pay for a mana ability --- .../src/main/java/forge/ai/ComputerUtilMana.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java b/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java index d30d7006045..fe35e1bb6c2 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java @@ -19,6 +19,7 @@ import forge.game.combat.CombatUtil; import forge.game.cost.Cost; import forge.game.cost.CostAdjustment; import forge.game.cost.CostPartMana; +import forge.game.cost.CostPayEnergy; import forge.game.cost.CostPayment; import forge.game.mana.Mana; import forge.game.mana.ManaCostBeingPaid; @@ -360,6 +361,7 @@ public class ComputerUtilMana { adjustManaCostToAvoidNegEffects(cost, sa.getHostCard(), ai); List manaSpentToPay = test ? new ArrayList() : sa.getPayingMana(); boolean purePhyrexian = cost.containsOnlyPhyrexianMana(); + int testEnergyPool = ai.getCounters(CounterType.ENERGY); List paymentList = Lists.newArrayList(); @@ -458,6 +460,16 @@ public class ComputerUtilMana { setExpressColorChoice(sa, ai, cost, toPay, saPayment); if (test) { + // Check energy when testing + CostPayEnergy energyCost = saPayment.getPayCosts().getCostEnergy(); + if (energyCost != null) { + testEnergyPool -= Integer.parseInt(energyCost.getAmount()); + if (testEnergyPool < 0) { + // Can't pay energy cost + break; + } + } + String manaProduced = toPay.isSnow() ? "S" : GameActionUtil.generatedMana(saPayment); manaProduced = AbilityManaPart.applyManaReplacement(saPayment, manaProduced); //System.out.println(manaProduced);