From 85b46f34b066580aab1e8fb3b6e9ea7ba108ad8c Mon Sep 17 00:00:00 2001 From: mattsc Date: Sun, 11 Feb 2018 08:02:14 -0800 Subject: [PATCH] Fast Micro AI: make code robust against events removing units The previous version caused errors under some circumstances when an event removed units other than the attacker during or immediately after an AI attack. --- data/ai/micro_ais/cas/ca_fast_combat.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/ai/micro_ais/cas/ca_fast_combat.lua b/data/ai/micro_ais/cas/ca_fast_combat.lua index e8d2e8e4f08..c0a33b02446 100644 --- a/data/ai/micro_ais/cas/ca_fast_combat.lua +++ b/data/ai/micro_ais/cas/ca_fast_combat.lua @@ -79,10 +79,10 @@ function ca_fast_combat:evaluation(cfg, data) for i = #data.fast_combat_units,1,-1 do local unit = data.fast_combat_units[i] - local unit_info = FAU.get_unit_info(unit, data.gamedata) - local unit_copy = FAU.get_unit_copy(unit.id, data.gamedata) - if (unit.attacks_left > 0) and (#unit.attacks > 0) then + if unit and unit.valid and (unit.attacks_left > 0) and (#unit.attacks > 0) then + local unit_info = FAU.get_unit_info(unit, data.gamedata) + local unit_copy = FAU.get_unit_copy(unit.id, data.gamedata) local attacks = AH.get_attacks({ unit }, { include_occupied = cfg.include_occupied_attack_hexes, viewing_side = viewing_side }) if (#attacks > 0) then