diff --git a/forge-ai/src/main/java/forge/ai/ability/EndureAi.java b/forge-ai/src/main/java/forge/ai/ability/EndureAi.java index 33f2ee245fe..e64a49ff793 100644 --- a/forge-ai/src/main/java/forge/ai/ability/EndureAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/EndureAi.java @@ -2,16 +2,14 @@ package forge.ai.ability; import com.google.common.collect.Sets; -import forge.ai.AiAbilityDecision; -import forge.ai.AiPlayDecision; -import forge.ai.ComputerUtilCard; -import forge.ai.SpellAbilityAi; +import forge.ai.*; import forge.game.ability.AbilityUtils; import forge.game.Game; import forge.game.card.*; import forge.game.card.token.TokenInfo; import forge.game.combat.Combat; import forge.game.combat.CombatUtil; +import forge.game.phase.PhaseType; import forge.game.player.Player; import forge.game.player.PlayerActionConfirmMode; import forge.game.spellability.SpellAbility; @@ -36,6 +34,24 @@ public class EndureAi extends SpellAbilityAi { sa.getTargets().add(bestCreature); } + // Card-specific logic + String aiLogic = sa.getParamOrDefault("AILogic", ""); + if ("EndureWithLife".equals(aiLogic)) { + if (!aiPlayer.getGame().getPhaseHandler().is(PhaseType.MAIN2)) { + return new AiAbilityDecision(0, AiPlayDecision.AnotherTime); + } + int curLife = aiPlayer.getLife(); + int dangerLife = (((PlayerControllerAi) aiPlayer.getController()).getAi().getIntProperty(AiProps.AI_IN_DANGER_THRESHOLD)); + if (curLife <= dangerLife) { + return new AiAbilityDecision(0, AiPlayDecision.CantAffordX); + } + int availableMana = ComputerUtilMana.getAvailableManaEstimate(aiPlayer) - 1; + int maxEndureX = Math.min(availableMana, curLife - dangerLife); + if (maxEndureX > 0) { + sa.setXManaCostPaid(maxEndureX); + } + } + return new AiAbilityDecision(100, AiPlayDecision.WillPlay); } diff --git a/forge-gui/res/cardsfolder/k/krumar_initiate.txt b/forge-gui/res/cardsfolder/k/krumar_initiate.txt index fe3d9a6d1b6..07c8cfd550f 100644 --- a/forge-gui/res/cardsfolder/k/krumar_initiate.txt +++ b/forge-gui/res/cardsfolder/k/krumar_initiate.txt @@ -2,6 +2,6 @@ Name:Krumar Initiate ManaCost:1 B Types:Creature Human Cleric PT:2/2 -A:AB$ Endure | Cost$ X B T PayLife | Num$ X | SorcerySpeed$ True | SpellDescription$ This creature endures X. Activate only as a sorcery. (Put X +1/+1 counters on it or create an X/X white Spirit creature token.) +A:AB$ Endure | Cost$ X B T PayLife | Num$ X | SorcerySpeed$ True | AILogic$ EndureWithLife | SpellDescription$ This creature endures X. Activate only as a sorcery. (Put X +1/+1 counters on it or create an X/X white Spirit creature token.) SVar:X:Count$xPaid Oracle:{X}{B}, {T}, Pay X life: This creature endures X. Activate only as a sorcery. (Put X +1/+1 counters on it or create an X/X white Spirit creature token.)