84 lines
1.7 KiB
Lua
84 lines
1.7 KiB
Lua
include("../scripts/ai/include/basic.lua")
|
|
|
|
-- Variables.
|
|
enemy_close = 500 -- Distance enemy is too close for comfort.
|
|
|
|
-- Required control rate.
|
|
control_rate = 2
|
|
|
|
function control()
|
|
task = ai.taskname()
|
|
enemy = ai.getenemy()
|
|
|
|
-- Runaway if enemy is near.
|
|
if task ~= "runaway" and enemy ~= nil and ai.dist(enemy) < enemy_close then
|
|
if task ~= "none" then
|
|
ai.poptask()
|
|
end
|
|
ai.pushtask(0, "runaway", enemy)
|
|
elseif task == "hyperspace" then
|
|
ai.hyperspace() -- Try to hyperspace.
|
|
|
|
-- Try to jump when far enough away.
|
|
elseif task == "runaway" then
|
|
target = ai.target()
|
|
|
|
-- Check if should still run.
|
|
if not ai.exists(target) then
|
|
ai.poptask()
|
|
return
|
|
end
|
|
|
|
-- See if another enemy is closer.
|
|
if enemy ~= nil and enemy ~= target then
|
|
ai.poptask()
|
|
ai.pushtask(0, "runaway", enemy)
|
|
end
|
|
|
|
-- Try to jump.
|
|
if ai.dist(target) > 400 then
|
|
ai.hyperspace()
|
|
end
|
|
|
|
-- Find something to do.
|
|
elseif task == "none" then
|
|
planet = ai.landplanet()
|
|
-- Planet must exist.
|
|
if planet == nil then
|
|
ai.settimer(0, rnd.int(1000, 3000))
|
|
ai.pushtask(0, "enterdelay")
|
|
else
|
|
mem.land = planet
|
|
ai.pushtask(0, "hyperspace")
|
|
ai.pushtask(0, "land")
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Delay the ship when entering systems so that it doesn't leave right away.
|
|
function entedelay()
|
|
if ai.timeup(0) then
|
|
ai.pushtask(0, "hyperspace")
|
|
end
|
|
end
|
|
|
|
function sos()
|
|
|
|
end
|
|
|
|
function attacked(attacker)
|
|
if ai.taskname() ~= "runaway" then
|
|
sos()
|
|
-- Sir Robin bravely ran away!!
|
|
ai.pushtask(0, "runaway", attacker)
|
|
else
|
|
ai.poptask()
|
|
ai.pushtask(0, "runaway", attacker)
|
|
end
|
|
end
|
|
|
|
function create()
|
|
|
|
end
|
|
|