From 6ea52c93fe5935cdc13309e21049bcd6ca04f2f7 Mon Sep 17 00:00:00 2001 From: Agetian Date: Thu, 26 Apr 2018 07:34:14 +0300 Subject: [PATCH] - Fixed Exalted and possibly other triggers with overwriting ability crashing the trigger checking code in getPossibleNonCombatDamage. --- forge-ai/src/main/java/forge/ai/ComputerUtil.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtil.java b/forge-ai/src/main/java/forge/ai/ComputerUtil.java index 42d4eca7c5c..faed8a063a9 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtil.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtil.java @@ -1383,11 +1383,14 @@ public class ComputerUtil { if (c.isCreature() && c.isInZone(ZoneType.Battlefield) && CombatUtil.canAttack(c)) { for (final Trigger t : c.getTriggers()) { if ("Attacks".equals(t.getParam("Mode")) && t.hasParam("Execute")) { - SpellAbility trigSa = AbilityFactory.getAbility(c.getSVar(t.getParam("Execute")), c); - if (trigSa != null && trigSa.getApi() == ApiType.LoseLife - && trigSa.getParamOrDefault("Defined", "").contains("Opponent")) { - trigSa.setHostCard(c); - damage += AbilityUtils.calculateAmount(trigSa.getHostCard(), trigSa.getParam("LifeAmount"), trigSa); + String exec = c.getSVar(t.getParam("Execute")); + if (!exec.isEmpty()) { + SpellAbility trigSa = AbilityFactory.getAbility(exec, c); + if (trigSa != null && trigSa.getApi() == ApiType.LoseLife + && trigSa.getParamOrDefault("Defined", "").contains("Opponent")) { + trigSa.setHostCard(c); + damage += AbilityUtils.calculateAmount(trigSa.getHostCard(), trigSa.getParam("LifeAmount"), trigSa); + } } } }