From e148d25d2abeab4c1a99142ffa35b5a15918a947 Mon Sep 17 00:00:00 2001 From: mattsc Date: Wed, 10 Jul 2019 08:07:11 -0700 Subject: [PATCH] ExpAI grab villages CA: fix enemy distance rating under fog ai_helper.get_closest_enemy() returns math.huge for the enemy distance if no enemy is visible to the AI. This fixes #4157. --- data/ai/lua/ca_grab_villages.lua | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/data/ai/lua/ca_grab_villages.lua b/data/ai/lua/ca_grab_villages.lua index f9ff3810f357..edb66ab19e9e 100644 --- a/data/ai/lua/ca_grab_villages.lua +++ b/data/ai/lua/ca_grab_villages.lua @@ -64,7 +64,8 @@ function ca_grab_villages:evaluation(cfg, data) if wesnoth.is_enemy(owner, wesnoth.current.side) then village_rating = village_rating + 20000 end end - local _, enemy_distance_from_village = AH.get_closest_enemy(v) + local village_closest_enemy, enemy_distance_from_village = AH.get_closest_enemy(v) + if (not village_closest_enemy) then enemy_distance_from_village = 0 end -- Now we go on to the unit-dependent rating local best_unit_rating = - math.huge @@ -96,7 +97,8 @@ function ca_grab_villages:evaluation(cfg, data) end -- Prefer not backtracking and moving more distant units to capture villages - local _, enemy_distance_from_unit = AH.get_closest_enemy({u.x, u.y}) + local unit_closest_enemy, enemy_distance_from_unit = AH.get_closest_enemy({u.x, u.y}) + if (not unit_closest_enemy) then enemy_distance_from_unit = 0 end rating = rating - (enemy_distance_from_village + enemy_distance_from_unit)/5 if (rating > best_unit_rating) then