Lephisto/dat/missions/cargo.lua

77 lines
2.3 KiB
Lua

lang = lephisto.lang()
if lang == "es" then
-- Not translated.
else -- Default English.
misn_desc = "%s needs a delivery of %d tons of %s."
misn_reward = "%d Scred."
title = {}
title[1] = "Cargo delivery to %s"
title[2] = "Freight delivery to %s"
title[3] = "Transport to %s"
title[4] = "Delivery to %s"
full_title = "Ship is full"
full_msg = "Your ship is too full. You need to make room for %d tons if you want to be able to accept the mission."
accept_title = "Mission Accepted"
accept_msg = "The workers load %d tons of %s onto your ship."
toomany_title = "Too many missions"
toomany_msg = "You have too many active missions."
finish_title = "Succesful Delivery"
finish_msg = "The workers unload the %s at the docks."
miss_title = "Cargo missing"
miss_msg = "You are missing the %d tons of %s!"
end
-- Create the mission.
function create()
-- Target destination.
local i = 0
repeat
planet = space.getPlanet(misn.factions())
i = i + 1
until planet ~= space.landName() or i > 10
-- Protect agains inf loop.
if i > 10 then
misn.finish()
end
-- Missions generic.
misn_type = "Cargo"
i = rnd.int(3)
misn.setTitle(string.format(title[i+1], planet))
-- More mission specifics.
carg_mass = rnd.int(10, 30)
i = rnd.int(1)
if i == 0 then carg_type = "Food"
elseif i == 1 then carg_type = "Ore"
end
misn.setDesc(string.format(misn_desc, planet, carg_mass, carg_type))
reward = carg_mass * (750 + rnd.int(250)) + rnd.int(5000)
misn.setReward(string.format(misn_reward, reward))
end
function accept()
if player.freeCargo() < carg_mass then
tk.msg(full_title, string.format(full_msg, carg_mass-player.freeCargo()))
elseif misn.accept() then -- Able to accept the mission, hooks BREAK after accepting.
carg_id = player.addCargo(carg_type, carg_mass)
tk.msg(accept_title, string.format(accept_msg, carg_mass, carg_type))
hook.land("land"); -- Only hook after accepting.
else
tk.msg(toomany_title, toomany_msg)
end
end
function land()
if space.landName() == planet then
if player.rmCargo(carg_id) then
player.pay(reward)
tk.msg(finish_title, string.format(finish_msg, carg_type))
misn_finish()
else
tk.msg(miss_title, string.format(miss_msg, carg_mass, carg_type))
end
end
end