diff --git a/src/main/java/forge/card/abilityfactory/ai/ChooseSourceAi.java b/src/main/java/forge/card/abilityfactory/ai/ChooseSourceAi.java index 2ecebb5e7c2..86037fc9bd6 100644 --- a/src/main/java/forge/card/abilityfactory/ai/ChooseSourceAi.java +++ b/src/main/java/forge/card/abilityfactory/ai/ChooseSourceAi.java @@ -77,10 +77,14 @@ public class ChooseSourceAi extends SpellAiLogic { } else { objects.addAll(threatTgt.getTargetPlayers()); } - if (objects.contains(ai)) { - return true; + if (!objects.contains(ai) || topStack.hasParam("NoPrevention")) { + return false; } - return false; + int dmg = AbilityFactory.calculateAmount(source, topStack.getParam("NumDmg"), topStack); + if (ai.predictDamage(dmg, source, false) <= 0) { + return false; + } + return true; } if (!Singletons.getModel().getGame().getPhaseHandler().getPhase() .equals(PhaseType.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY)) { diff --git a/src/main/java/forge/card/abilityfactory/effects/ChooseSourceEffect.java b/src/main/java/forge/card/abilityfactory/effects/ChooseSourceEffect.java index 3ff3d34b4b1..0c50d30bb77 100644 --- a/src/main/java/forge/card/abilityfactory/effects/ChooseSourceEffect.java +++ b/src/main/java/forge/card/abilityfactory/effects/ChooseSourceEffect.java @@ -163,10 +163,14 @@ public class ChooseSourceEffect extends SpellEffect { } else { objects.addAll(threatTgt.getTargetPlayers()); } - if (objects.contains(ai)) { - chosen.add(topStack.getSourceCard()); + if (!objects.contains(ai) || topStack.hasParam("NoPrevention")) { + break; } - break; + int dmg = AbilityFactory.calculateAmount(source, topStack.getParam("NumDmg"), topStack); + if (ai.predictDamage(dmg, source, false) <= 0) { + break; + } + chosen.add(topStack.getSourceCard()); } else { sourcesToChooseFrom = CardLists.filter(sourcesToChooseFrom, new Predicate() { @Override