110 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
include("../scripts/ai/include/basic.lua")
 | 
						|
 | 
						|
-- Required control rate.
 | 
						|
control_rate = 2
 | 
						|
 | 
						|
-- Required "control" function.
 | 
						|
function control()
 | 
						|
 task = ai.taskname()
 | 
						|
 enemy = ai.getenemy()
 | 
						|
 | 
						|
 -- Runaway if enemy is near.
 | 
						|
 if task ~= "runaway" and enemy ~= nil and ai.dist(enemy) < 500 then
 | 
						|
   ai.poptask();
 | 
						|
   ai.pushtask(0, "runaway", enemy)
 | 
						|
 | 
						|
 -- Enter hyperspace if possible.
 | 
						|
 elseif task == "hyperspace" then
 | 
						|
  ai.hyperspace() -- Try to go to hyperspace.
 | 
						|
 | 
						|
 -- Try to jump when far enough away.
 | 
						|
 elseif task == "runaway" then
 | 
						|
  if ai.dist(ai.pos(ai.targetid())) > 400 then
 | 
						|
   ai.hyperspace()
 | 
						|
  end
 | 
						|
 | 
						|
 -- Find something to do.
 | 
						|
 elseif task == "none" then
 | 
						|
    planet = ai.landplanet()
 | 
						|
  -- Planet must exist.
 | 
						|
  if planet == nil then
 | 
						|
   ai.pushtask(0, "hyperspace")
 | 
						|
  else
 | 
						|
     ai.pushtask(0, "go", planet)
 | 
						|
  end
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
-- Required "attacked" function.
 | 
						|
function attacked(attacker)
 | 
						|
  if ai.taskname() ~= "runaway" then
 | 
						|
    -- Let's have some messages.
 | 
						|
    num = rnd.int(0,3)
 | 
						|
    if num == 0 then msg = "Mayday! We are under attack!"
 | 
						|
    elseif num == 1 then msg = "Requesting assistance! Some scoundral is attacking us!"
 | 
						|
    elseif num == 2 then msg = "Merchant vessle under attack here! HALP!"
 | 
						|
    end
 | 
						|
    if msg then ai.broadcast(msg) end
 | 
						|
 | 
						|
    -- So bravely run away!
 | 
						|
    ai.pushtask(0, "runaway", attacker)
 | 
						|
 else -- Runaway from the new bad guys.
 | 
						|
  ai.poptask()
 | 
						|
  ai.pushtask(0, "runaway", attacker)
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
function create()
 | 
						|
  ai.setcredits(rnd.int(100, ai.shipprice()/50))
 | 
						|
 | 
						|
  -- Some stuff has more chance than other.
 | 
						|
  num = rnd.int(12)
 | 
						|
  if num < 5 then
 | 
						|
    cargo = "Food"
 | 
						|
  elseif num < 8 then
 | 
						|
    cargo = "Ore"
 | 
						|
  elseif num < 10 then
 | 
						|
    cargo = "Industrial Goods"
 | 
						|
  elseif num < 12 then
 | 
						|
    cargo = "Luxury Goods"
 | 
						|
  else
 | 
						|
    cargo = "Medicine"
 | 
						|
  end
 | 
						|
  ai.setcargo(cargo, rnd.int(0, ai.cargofree()))
 | 
						|
end
 | 
						|
 | 
						|
-- Fly to the target.
 | 
						|
function go()
 | 
						|
  target = ai.target()
 | 
						|
  dir = ai.face(target)
 | 
						|
  dist = ai.dist(target)
 | 
						|
  bdist = ai.minbrakedist()
 | 
						|
  if dir < 10 and dist > bdist then
 | 
						|
    ai.accel()
 | 
						|
  elseif dir < 10 and dist < bdist then
 | 
						|
    ai.poptask()
 | 
						|
    ai.pushtask(0, "stop")
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
-- Backthrust.
 | 
						|
function stop()
 | 
						|
  ai.brake()
 | 
						|
  if ai.isstopped() then
 | 
						|
  ai.stop()
 | 
						|
    ai.poptask()
 | 
						|
    ai.settimer(0, rnd.int(8000, 15000)) -- We wait during a while.
 | 
						|
    ai.pushtask(0, "land")
 | 
						|
 else
 | 
						|
  ai.brake()
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
--Waits.
 | 
						|
function land()
 | 
						|
  if ai.timeup(0) then
 | 
						|
    ai.pushtask(0, "hyperspace")
 | 
						|
  end
 | 
						|
end
 | 
						|
 |