From 6ab610507cf7b331b11612cd49d7f95ffe7ec40e Mon Sep 17 00:00:00 2001 From: Michael Kamensky Date: Tue, 21 Sep 2021 07:34:28 +0300 Subject: [PATCH] - AI support implementation --- .../forge/ai/ability/ImmediateTriggerAi.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/ImmediateTriggerAi.java b/forge-ai/src/main/java/forge/ai/ability/ImmediateTriggerAi.java index 5b32df43cee..57d6d2577e4 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ImmediateTriggerAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ImmediateTriggerAi.java @@ -1,11 +1,8 @@ package forge.ai.ability; -import forge.ai.AiController; -import forge.ai.AiPlayDecision; -import forge.ai.ComputerUtilCost; -import forge.ai.PlayerControllerAi; -import forge.ai.SpellAbilityAi; -import forge.ai.SpellApiToAi; +import forge.ai.*; +import forge.card.mana.ManaCost; +import forge.game.mana.ManaCostBeingPaid; import forge.game.player.Player; import forge.game.spellability.AbilitySub; import forge.game.spellability.SpellAbility; @@ -47,6 +44,19 @@ public class ImmediateTriggerAi extends SpellAbilityAi { sa.setXManaCostPaid(ComputerUtilCost.getMaxXValue(sa, ai)); } + if ("NumTimes".equals(sa.getParam("Announce"))) { // e.g. the Adversary cycle + ManaCost mkCost = sa.getPayCosts().getTotalMana(); + ManaCost mCost = ManaCost.ZERO; + for (int i = 0; i < 10; i++) { + mCost = ManaCost.combine(mCost, mkCost); + ManaCostBeingPaid mcbp = new ManaCostBeingPaid(mCost); + if (!ComputerUtilMana.canPayManaCost(mcbp, sa, ai)) { + sa.getHostCard().setSVar("NumTimes", "Number$" + i); + break; + } + } + } + AiController aic = ((PlayerControllerAi)ai.getController()).getAi(); trigsa.setActivatingPlayer(ai);