From b88aa51507cbc51a997a056c4180dc3d6823e0a4 Mon Sep 17 00:00:00 2001 From: Agetian Date: Sat, 10 Jun 2017 14:48:20 +0000 Subject: [PATCH] - Improved Auto mana payment for Cavern of Souls. - Fixed the AI trying to play Endless One for 0 when in presence of Cavern of Souls. --- forge-ai/src/main/java/forge/ai/ComputerUtilMana.java | 3 ++- forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java b/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java index ffa56f68b93..145b95c44f0 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java @@ -223,7 +223,8 @@ public class ComputerUtilMana { // to attempt to make the spell uncounterable when possible. if ((toPay == ManaCostShard.GENERIC || toPay == ManaCostShard.X) && ma.getHostCard().getName().equals("Cavern of Souls") - && !ma.getManaPart().isAnyMana()) { + && !ma.getManaPart().isAnyMana() + && sa.getHostCard().getType().getCreatureTypes().contains(ma.getHostCard().getChosenType())) { continue; } diff --git a/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java b/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java index 574988b30ae..278849ba399 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java @@ -590,7 +590,9 @@ public class CountersPutAi extends SpellAbilityAi { // No target. So must be defined list = new CardCollection(AbilityUtils.getDefinedCards(source, sa.getParam("Defined"), sa)); - if (amountStr.equals("X") && ((sa.hasParam(amountStr) && sa.getSVar(amountStr).equals("Count$xPaid")) || source.getSVar(amountStr).equals("Count$xPaid") )) { + if (amountStr.equals("X") + && !source.hasSVar("PayX") /* SubAbility on something that already had set PayX, e.g. Endless One ETB counters */ + && ((sa.hasParam(amountStr) && sa.getSVar(amountStr).equals("Count$xPaid")) || source.getSVar(amountStr).equals("Count$xPaid") )) { // detect if there's more than one X in the cost (Hangarback Walker, Walking Ballista, etc.) SpellAbility testSa = sa;