From cd9670d17983000ac825885ef60eb7bef0bc03a0 Mon Sep 17 00:00:00 2001 From: Agetian Date: Thu, 2 Feb 2023 15:15:29 +0300 Subject: [PATCH] Clean up ConniveAi a little bit. (#2371) * - Update the MTGDecksNet conversion and AI playability test toolchain to the latest version (Python 3 compatible). * - Make the input/output folders generic * - Make the input/output folders generic, part 2. * - Add the Scryfall all-prices.txt generator script. * - Minor code cleanup. * - Improve ConniveAi for Change of Plans. * - Check if the AI can draw cards for ConniveAI * - Improve the price generation script to account for the Scryfall set code to Forge set code mapping. - Tweak paths in some of the scripts. * - Fix scryfallPricesGenerator. * - Clean up ConniveAi code, limit the X choice to available mana. --- forge-ai/src/main/java/forge/ai/ability/ConniveAi.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/ConniveAi.java b/forge-ai/src/main/java/forge/ai/ability/ConniveAi.java index b08a8675c96..54962f926e4 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ConniveAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ConniveAi.java @@ -2,6 +2,7 @@ package forge.ai.ability; import forge.ai.ComputerUtil; import forge.ai.ComputerUtilCard; +import forge.ai.ComputerUtilMana; import forge.ai.SpellAbilityAi; import forge.game.card.Card; import forge.game.card.CardCollection; @@ -23,10 +24,10 @@ public class ConniveAi extends SpellAbilityAi { // Filter AI-specific targets if provided list = ComputerUtil.filterAITgts(sa, ai, list, false); - int maxTargets = sa.getMaxTargets(); if ("X".equals(sa.getParam("TargetMax")) && "Count$xPaid".equals(sa.getSVar("X"))) { // TODO: consider making the library margin (currently hardcoded to 5) a configurable AI parameter - maxTargets = Math.min(list.size(), Math.max(0, ai.getCardsIn(ZoneType.Library).size() - 5)); + int maxTargets = Math.min(list.size(), Math.max(0, ai.getCardsIn(ZoneType.Library).size() - 5)); + maxTargets = Math.min(maxTargets, ComputerUtilMana.getAvailableManaEstimate(ai)); sa.setXManaCostPaid(maxTargets); }