From f16a7ff0b0be6f71e1bea401b29b17fe2d1b4e68 Mon Sep 17 00:00:00 2001 From: Seravy Date: Sun, 18 Feb 2018 15:32:14 +0100 Subject: [PATCH] incomplete --- .../src/main/java/forge/ai/AiController.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/forge-ai/src/main/java/forge/ai/AiController.java b/forge-ai/src/main/java/forge/ai/AiController.java index 65a73a93cda..464a05b9bed 100644 --- a/forge-ai/src/main/java/forge/ai/AiController.java +++ b/forge-ai/src/main/java/forge/ai/AiController.java @@ -703,6 +703,36 @@ public class AiController { if ("True".equals(card.getSVar("NonStackingEffect")) && isNonDisabledCardInPlay(card.getName())) { return AiPlayDecision.NeedsToPlayCriteriaNotMet; } + // Trying to play a card that has Buyback without a Buyback cost + if (card.hasKeyword("Buyback")) { // This line does not work? + if (!sa.isBuyBackAbility()) { + boolean wastebuybackallowed = false; + // About to lose game : allow + if (ComputerUtil.aiLifeInDanger(player, true, 0)) { + wastebuybackallowed = true; + } + int copies = 0; + // Have two copies : allow + for (Card hand : player.getCardsIn(ZoneType.Hand)) { + if (hand.getName().equals(card.getName())) { + copies++; + } + } + if (copies >= 2) { + wastebuybackallowed = true; + } + // Won't be able to afford buyback any time soon + /* if ( ComputerUtilMana.getAvailableManaEstimate(player) >= + sa. + + + ) { wastebuybackallowed = true; } */ + + // If Buyback cost includes sacrifice, life, discard + + if (!wastebuybackallowed) return AiPlayDecision.NeedsToPlayCriteriaNotMet; + } + } // add any other necessary logic to play a basic spell here return ComputerUtilCard.checkNeedsToPlayReqs(card, sa); }