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))) {