Actor.Patrol*: make sure that the actor is still alive

This commit is contained in:
Oliver Brakmann
2014-03-17 17:55:40 +01:00
parent 64a18389b7
commit 0eb1e2cc6d

View File

@@ -214,19 +214,23 @@ Actor.Guard = function(actor, target)
end end
Actor.Patrol = function(actor, waypoints, wait, loop) Actor.Patrol = function(actor, waypoints, wait, loop)
Utils.Do(waypoints, function(wpt) if not Actor.IsDead(actor) then
Actor.AttackMove(actor, wpt.Location, 3) Utils.Do(waypoints, function(wpt)
Actor.Wait(actor, wait or 0) Actor.AttackMove(actor, wpt.Location, 3)
end) Actor.Wait(actor, wait or 0)
if loop or loop == nil then end)
Actor.CallFunc(actor, function() Actor.Patrol(actor, waypoints, wait, loop) end) if loop or loop == nil then
Actor.CallFunc(actor, function() Actor.Patrol(actor, waypoints, wait, loop) end)
end
end end
end end
Actor.PatrolUntil = function(actor, waypoints, wait, func) Actor.PatrolUntil = function(actor, waypoints, wait, func)
if func == nil then error("No function specified", 2) end if func == nil then error("No function specified", 2) end
Actor.Patrol(actor, waypoints, wait, false) if not Actor.IsDead(actor) then
if not func(actor) then Actor.Patrol(actor, waypoints, wait, false)
Actor.CallFunc(actor, function() Actor.PatrolUntil(actor, waypoints, wait, func) end) if not func(actor) then
Actor.CallFunc(actor, function() Actor.PatrolUntil(actor, waypoints, wait, func) end)
end
end end
end end