diff --git a/forge-ai/src/main/java/forge/ai/AiController.java b/forge-ai/src/main/java/forge/ai/AiController.java index 41b89134c62..d3591bbc27a 100644 --- a/forge-ai/src/main/java/forge/ai/AiController.java +++ b/forge-ai/src/main/java/forge/ai/AiController.java @@ -654,13 +654,21 @@ public class AiController { else if (sa.getPayCosts() != null){ Cost payCosts = sa.getPayCosts(); ManaCost mana = payCosts.getTotalMana(); - if (mana!= null && mana.countX() > 0) { - // Set PayX here to maximum value. - final int xPay = ComputerUtilMana.determineLeftoverMana(sa, player); - if (xPay <= 0) { - return AiPlayDecision.CantAffordX; + if (mana != null) { + if(mana.countX() > 0) { + // Set PayX here to maximum value. + final int xPay = ComputerUtilMana.determineLeftoverMana(sa, player); + if (xPay <= 0) { + return AiPlayDecision.CantAffordX; + } + card.setSVar("PayX", Integer.toString(xPay)); + } else if (mana.isZero()) { + // if mana is zero, but card mana cost does have X, then something is wrong + ManaCost cardCost = card.getManaCost(); + if (cardCost != null && cardCost.countX() > 0) { + return AiPlayDecision.CantPlayAi; + } } - card.setSVar("PayX", Integer.toString(xPay)); } } if (checkCurseEffects(sa)) { @@ -691,6 +699,12 @@ public class AiController { } card.setSVar("PayX", Integer.toString(xPay)); } + } else if (mana.isZero()) { + // if mana is zero, but card mana cost does have X, then something is wrong + ManaCost cardCost = card.getManaCost(); + if (cardCost != null && cardCost.countX() > 0) { + return AiPlayDecision.CantPlayAi; + } } // Check for valid targets before casting