AI logic for Krumar Initiate (#8450)

* - Add achievement for EOE/EOC by Marek14.

* - Add AI logic for Krumar Initiate
This commit is contained in:
Agetian
2025-08-19 13:11:41 +03:00
committed by GitHub
parent 2c7e7d5b63
commit 9bbfad5be3
2 changed files with 21 additions and 5 deletions

View File

@@ -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);
}

View File

@@ -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<X> | 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<X> | 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.)