From 2224a48eed07bf75235789cedb2f23fce756c521 Mon Sep 17 00:00:00 2001 From: Sloth Date: Wed, 23 Nov 2011 17:03:56 +0000 Subject: [PATCH] - Fixed a general bug that prevented the AI from using most X costs. - Fixed a bug in AF GainLife that prevented the AI from using X costs. --- res/cardsfolder/s/stream_of_life.txt | 1 - src/main/java/forge/ComputerUtil.java | 2 +- .../abilityfactory/AbilityFactoryAlterLife.java | 16 +++++++++------- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/res/cardsfolder/s/stream_of_life.txt b/res/cardsfolder/s/stream_of_life.txt index 9c2b229031e..3368fc7544f 100644 --- a/res/cardsfolder/s/stream_of_life.txt +++ b/res/cardsfolder/s/stream_of_life.txt @@ -4,7 +4,6 @@ Types:Sorcery Text:no text A:SP$ GainLife | Cost$ X G | ValidTgts$ Player | TgtPrompt$ Select target player | LifeAmount$ X | SpellDescription$ Target player gains X life. SVar:X:Count$xPaid -SVar:RemAIDeck:True SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/stream_of_life.jpg SetInfo:8ED|Uncommon|http://magiccards.info/scans/en/8e/282.jpg diff --git a/src/main/java/forge/ComputerUtil.java b/src/main/java/forge/ComputerUtil.java index a53cc7c2ccf..5f0b6248448 100644 --- a/src/main/java/forge/ComputerUtil.java +++ b/src/main/java/forge/ComputerUtil.java @@ -454,7 +454,7 @@ public class ComputerUtil { int xMana = 0; for (int i = 1; i < 99; i++) { - if (!ComputerUtil.payManaCost(sa, player, true, xMana)) { + if (!ComputerUtil.payManaCost(sa, player, true, i)) { break; } xMana = i; diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java index bf4a4fb84f7..dc4bc960589 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java @@ -239,8 +239,16 @@ public class AbilityFactoryAlterLife { final Cost abCost = sa.getPayCosts(); final Card source = sa.getSourceCard(); final int life = AllZone.getComputerPlayer().getLife(); - final int lifeAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa); final String amountStr = params.get("LifeAmount"); + int lifeAmount = 0; + if (amountStr.equals("X") && source.getSVar(amountStr).equals("Count$xPaid")) { + // Set PayX here to maximum value. + final int xPay = ComputerUtil.determineLeftoverMana(sa); + source.setSVar("PayX", Integer.toString(xPay)); + lifeAmount = xPay; + } else { + lifeAmount = AbilityFactory.calculateAmount(af.getHostCard(), amountStr, sa); + } // don't use it if no life to gain if (lifeAmount <= 0) { @@ -298,12 +306,6 @@ public class AbilityFactoryAlterLife { } } - if (amountStr.equals("X") && source.getSVar(amountStr).equals("Count$xPaid")) { - // Set PayX here to maximum value. - final int xPay = ComputerUtil.determineLeftoverMana(sa); - source.setSVar("PayX", Integer.toString(xPay)); - } - boolean randomReturn = r.nextFloat() <= .6667; if (AbilityFactory.playReusable(sa)) { randomReturn = true;