diff --git a/forge-ai/src/main/java/forge/ai/AiAttackController.java b/forge-ai/src/main/java/forge/ai/AiAttackController.java index fb09d4a3769..4df57f6601b 100644 --- a/forge-ai/src/main/java/forge/ai/AiAttackController.java +++ b/forge-ai/src/main/java/forge/ai/AiAttackController.java @@ -1126,7 +1126,9 @@ public class AiAttackController { } } - if (canKillAllDangerous && !hasAttackEffect && !hasCombatEffect && this.attackers.size() <= defenders.size()) { + if (canKillAllDangerous + && !hasAttackEffect && !hasCombatEffect + && (this.attackers.size() <= defenders.size() || attacker.getNetPower() <= 0)) { if (ai.getController().isAI()) { if (((PlayerControllerAi)ai.getController()).getAi().getBooleanProperty(AiProps.TRY_TO_AVOID_ATTACKING_INTO_CERTAIN_BLOCK)) { // We can't kill a blocker, there is no reason to attack unless we can cripple a diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java index 30bd36ee5ef..3d5c7743aae 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java @@ -1242,7 +1242,10 @@ public class ComputerUtilCard { // cast it during Declare Blockers, thus ruining its attacker if (holdCombatTricks && sa.getApi() == ApiType.Pump && sa.hasParam("NumAtt") && sa.getHostCard() != null - && sa.getHostCard().getZone() != null && sa.getHostCard().getZone().is(ZoneType.Hand)) { + && sa.getHostCard().getZone() != null && sa.getHostCard().getZone().is(ZoneType.Hand) + && c.getNetPower() > 0 // too obvious if attacking with a 0-power creature + && sa.getHostCard().isInstant() // only do it for instant speed spells in hand + && ComputerUtilMana.hasEnoughManaSourcesToCast(sa, ai)) { combatTrick = true; final List kws = sa.hasParam("KW") ? Arrays.asList(sa.getParam("KW").split(" & "))