From 1d40924d0ab0be4f855427f69e21c413ccb71612 Mon Sep 17 00:00:00 2001 From: drdev Date: Sun, 14 Sep 2014 16:55:10 +0000 Subject: [PATCH] Prevent Gorilla Shaman refunding mana after there are no more remaining targets --- forge-ai/src/main/java/forge/ai/ComputerUtilMana.java | 6 ++++++ forge-game/src/main/java/forge/game/mana/ManaPool.java | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java b/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java index 33202f960e9..7f4111ae9c8 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilMana.java @@ -334,6 +334,9 @@ public class ComputerUtilMana { if (test) { refundMana(manaSpentToPay, ai, sa); } + else { + manaSpentToPay.clear(); //prevent mana spent to pay sticking around such that it can cause an improper refund later + } handleOfferingsAI(sa, test, cost.isPaid()); return true; } @@ -461,6 +464,9 @@ public class ComputerUtilMana { if (test) { refundMana(manaSpentToPay, ai, sa); } + else { + manaSpentToPay.clear(); //prevent mana spent to pay sticking around such that it can cause an improper refund later + } sa.getHostCard().setColorsPaid(cost.getColorsPaid()); // if (sa instanceof Spell_Permanent) // should probably add this sa.getHostCard().setSunburstValue(cost.getSunburst()); diff --git a/forge-game/src/main/java/forge/game/mana/ManaPool.java b/forge-game/src/main/java/forge/game/mana/ManaPool.java index e7253bb8648..393bf19ea06 100644 --- a/forge-game/src/main/java/forge/game/mana/ManaPool.java +++ b/forge-game/src/main/java/forge/game/mana/ManaPool.java @@ -231,8 +231,9 @@ public class ManaPool implements Iterable { paidAbs.add(saPayment); // assumes some part on the mana produced by the ability will get used for (final Mana mana : abManaPart.getLastManaProduced()) { - if( tryPayCostWithMana(saPaidFor, manaCost, mana) ) + if (tryPayCostWithMana(saPaidFor, manaCost, mana)) { saPaidFor.getPayingMana().add(0, mana); + } } }