From 4b3839b143aa276035c113ec7d2d38674af3c958 Mon Sep 17 00:00:00 2001 From: Bug Hunter Date: Sun, 6 Jun 2021 03:29:08 +0000 Subject: [PATCH] Suspend Fixes --- forge-ai/src/main/java/forge/ai/AiController.java | 2 +- forge-ai/src/main/java/forge/ai/ability/PermanentAi.java | 2 +- forge-ai/src/main/java/forge/ai/ability/PlayAi.java | 2 +- .../src/main/java/forge/game/ability/SpellAbilityEffect.java | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/AiController.java b/forge-ai/src/main/java/forge/ai/AiController.java index e1a9e70e8da..811e283cfdf 100644 --- a/forge-ai/src/main/java/forge/ai/AiController.java +++ b/forge-ai/src/main/java/forge/ai/AiController.java @@ -1354,7 +1354,7 @@ public class AiController { public AiPlayDecision canPlayFromEffectAI(Spell spell, boolean mandatory, boolean withoutPayingManaCost) { int damage = ComputerUtil.getDamageForPlaying(player, spell); - if (damage >= player.getLife() && !player.cantLoseForZeroOrLessLife() && player.canLoseLife()) { + if (!mandatory && damage >= player.getLife() && !player.cantLoseForZeroOrLessLife() && player.canLoseLife()) { return AiPlayDecision.CurseEffects; } diff --git a/forge-ai/src/main/java/forge/ai/ability/PermanentAi.java b/forge-ai/src/main/java/forge/ai/ability/PermanentAi.java index e755393b75b..d1590ea8be2 100644 --- a/forge-ai/src/main/java/forge/ai/ability/PermanentAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/PermanentAi.java @@ -297,7 +297,7 @@ public class PermanentAi extends SpellAbilityAi { if (!checkPhaseRestrictions(ai, sa, ai.getGame().getPhaseHandler())) { return false; } - return mandatory || checkApiLogic(ai, sa); + return checkApiLogic(ai, sa) || mandatory; } } diff --git a/forge-ai/src/main/java/forge/ai/ability/PlayAi.java b/forge-ai/src/main/java/forge/ai/ability/PlayAi.java index 0fa0805fe7e..06cf5c6c084 100644 --- a/forge-ai/src/main/java/forge/ai/ability/PlayAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/PlayAi.java @@ -192,7 +192,7 @@ public class PlayAi extends SpellAbilityAi { spell = (Spell) spell.copyWithDefinedCost(abCost); } - if( AiPlayDecision.WillPlay == ((PlayerControllerAi)ai.getController()).getAi().canPlayFromEffectAI(spell, !isOptional, true)) { + if (AiPlayDecision.WillPlay == ((PlayerControllerAi)ai.getController()).getAi().canPlayFromEffectAI(spell, !isOptional, true)) { // Before accepting, see if the spell has a valid number of targets (it should at this point). // Proceeding past this point if the spell is not correctly targeted will result // in "Failed to add to stack" error and the card disappearing from the game completely. diff --git a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java index f41a8bf9390..7928d57ff2b 100644 --- a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java +++ b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java @@ -704,8 +704,8 @@ public abstract class SpellAbilityEffect { Card host = sa.getHostCard(); final Game game = host.getGame(); final String duration = sa.getParam("Duration"); - // in case host was LKI - if (host.isLKI()) { + // in case host was LKI or still resolving + if (host.isLKI() || host.getZone().is(ZoneType.Stack)) { host = game.getCardState(host); }