From b5d7e071ebba85ea6e74f3ab5573ce5e92b45ca3 Mon Sep 17 00:00:00 2001 From: Hanmac Date: Mon, 26 Sep 2016 20:11:47 +0000 Subject: [PATCH] AiController: canPlaySa add check if the mana cost is zero, but the card cost does contain X should not play this spell for free. --- .../src/main/java/forge/ai/AiController.java | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) 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