From 0eb1e2cc6dc25ebe0d44268a05935fef43124c7d Mon Sep 17 00:00:00 2001 From: Oliver Brakmann Date: Mon, 17 Mar 2014 17:55:40 +0100 Subject: [PATCH] Actor.Patrol*: make sure that the actor is still alive --- mods/common/lua/actor.lua | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/mods/common/lua/actor.lua b/mods/common/lua/actor.lua index 98cdf7f9f3..8f17d9c21b 100644 --- a/mods/common/lua/actor.lua +++ b/mods/common/lua/actor.lua @@ -214,19 +214,23 @@ Actor.Guard = function(actor, target) end Actor.Patrol = function(actor, waypoints, wait, loop) - Utils.Do(waypoints, function(wpt) - Actor.AttackMove(actor, wpt.Location, 3) - Actor.Wait(actor, wait or 0) - end) - if loop or loop == nil then - Actor.CallFunc(actor, function() Actor.Patrol(actor, waypoints, wait, loop) end) + if not Actor.IsDead(actor) then + Utils.Do(waypoints, function(wpt) + Actor.AttackMove(actor, wpt.Location, 3) + Actor.Wait(actor, wait or 0) + end) + if loop or loop == nil then + Actor.CallFunc(actor, function() Actor.Patrol(actor, waypoints, wait, loop) end) + end end end Actor.PatrolUntil = function(actor, waypoints, wait, func) if func == nil then error("No function specified", 2) end - Actor.Patrol(actor, waypoints, wait, false) - if not func(actor) then - Actor.CallFunc(actor, function() Actor.PatrolUntil(actor, waypoints, wait, func) end) + if not Actor.IsDead(actor) then + Actor.Patrol(actor, waypoints, wait, false) + if not func(actor) then + Actor.CallFunc(actor, function() Actor.PatrolUntil(actor, waypoints, wait, func) end) + end end end