From 0567c7a3a54f5c370a154cdafe351fe88f18d474 Mon Sep 17 00:00:00 2001 From: swordshine Date: Tue, 2 Apr 2013 02:06:44 +0000 Subject: [PATCH] - Improved AI for Cleansing --- res/cardsfolder/c/cleansing.txt | 2 +- src/main/java/forge/card/ability/AbilityUtils.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/res/cardsfolder/c/cleansing.txt b/res/cardsfolder/c/cleansing.txt index d24016ad157..b5f31778bac 100644 --- a/res/cardsfolder/c/cleansing.txt +++ b/res/cardsfolder/c/cleansing.txt @@ -2,7 +2,7 @@ Name:Cleansing ManaCost:W W W Types:Sorcery A:SP$ RepeatEach | Cost$ W W W | RepeatSubAbility$ DBSac | RepeatCards$ Land | SpellDescription$ For each land, destroy that land unless any player pays 1 life. -SVar:DBSac:DB$ Destroy | UnlessCost$ PayLife<1> | UnlessPayer$ Player | Defined$ Remembered +SVar:DBSac:DB$ Destroy | UnlessCost$ PayLife<1> | UnlessPayer$ Player | UnlessAI$ DefinedRememberedController | Defined$ Remembered SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/cleansing.jpg Oracle:For each land, destroy that land unless any player pays 1 life. diff --git a/src/main/java/forge/card/ability/AbilityUtils.java b/src/main/java/forge/card/ability/AbilityUtils.java index 8db20cd141d..c6c8c5cea1d 100644 --- a/src/main/java/forge/card/ability/AbilityUtils.java +++ b/src/main/java/forge/card/ability/AbilityUtils.java @@ -1181,11 +1181,19 @@ public class AbilityUtils { private static boolean willAIPayForAbility(SpellAbility sa, Player payer, SpellAbility ability, boolean paid, List payers) { Card source = sa.getSourceCard(); boolean payForOwnOnly = "OnlyOwn".equals(sa.getParam("UnlessAI")); + boolean payOwner = sa.getParam("UnlessAI").startsWith("Defined"); boolean payNever = "Never".equals(sa.getParam("UnlessAI")); boolean isMine = sa.getActivatingPlayer().equals(payer); if (payNever) { return false; } if (payForOwnOnly && !isMine) { return false; } + if (payOwner) { + final String defined = sa.getParam("UnlessAI").substring(7); + final Player player = AbilityUtils.getDefinedPlayers(source, defined, sa).get(0); + if (!payer.equals(player)) { + return false; + } + } // AI will only pay when it's not already payed and only opponents abilities if (paid || (payers.size() > 1 && (isMine && !payForOwnOnly))) {