126 lines
3.7 KiB
Lua
126 lines
3.7 KiB
Lua
lang = lephisto.lang()
|
|
if lang == "es" then
|
|
-- Not translated atm.
|
|
else -- Default english.
|
|
misn_desc = "The Empire needs to ship %d tons of %s to %s in the %s system by %s (%s left)."
|
|
misn_reward = "%d credits"
|
|
title = {}
|
|
title[1] = "ES: Ship to %s"
|
|
title[2] = "ES: Delivery to %s"
|
|
full_title = "Ship is full"
|
|
full_msg = "Your ship is too full. You need to make room for %d more tons if you want to be able to accept the mission."
|
|
accept_title = "Mission Accepted"
|
|
accept_msg = "The Empire workers load the %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 Empire workers unload the %s at the docks."
|
|
miss_title = "Cargo Missing"
|
|
miss_msg = "You are missing the %d tons of %s!."
|
|
miss_timeup = "MISSION FAILED: You have failed to deliver the goods to the Empire on time!"
|
|
end
|
|
|
|
-- Empire shipping missions are always timed, but quite lax on the schedules.
|
|
-- Pays a bit more then the rush missions.
|
|
|
|
-- Create the mission.
|
|
function create()
|
|
-- Target destination.
|
|
local i = 0
|
|
local landed = space.getLanded()
|
|
repeat
|
|
planet, system = space.getPlanet(misn.factions())
|
|
i = i + 1
|
|
until planet ~= landed or i > 10
|
|
-- Infinite loop protection.
|
|
if i > 10 then
|
|
misn.finish(false)
|
|
end
|
|
misn.setMarker(system) -- Set system marker.
|
|
misn_dist = space.jumpDist(system)
|
|
|
|
-- Mission generics.
|
|
misn_type = "Cargo"
|
|
i = rnd.int(1)
|
|
misn.setTitle(string.format(title[i+1], planet:name()))
|
|
|
|
-- More mission specifics.
|
|
carg_mass = rnd.int(10, 30)
|
|
i = rnd.int(12)
|
|
if i < 5 then
|
|
carg_type = "Food"
|
|
elseif i < 8 then
|
|
carg_type = "Ore"
|
|
elseif i < 10 then
|
|
carg_type = "Industrial Goods"
|
|
elseif i < 12 then
|
|
carg_type = "Luxury Goods"
|
|
else
|
|
carg_type = "Medicine"
|
|
end
|
|
|
|
misn_time = time.get() + time.units(5) +
|
|
rnd.int(time.units(5), time.units(8)) * misn_dist
|
|
misn.setDesc(string.format( misn_desc, carg_mass, carg_type, planet:name(),, system,
|
|
time.str(misn_time), time.str(misn_time-time.get())))
|
|
reward = misn_dist * carg_mass * (500+rnd.int(250)) +
|
|
carg_mass * (250+rnd.int(150)) +
|
|
rnd.int(2500)
|
|
misn.setReward(string.format( misn_reward, reward))
|
|
end
|
|
|
|
-- Mission is accepted.
|
|
function accept()
|
|
if player.freeCargo() < carg_mass then
|
|
tk.msg(full_title, string.format(full_msg, carg_mass-player.freeCargo()))
|
|
misn.finish()
|
|
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.
|
|
hook.time("timeup")
|
|
else
|
|
tk.msg(toomany_title, toomany_msg)
|
|
misn.finish()
|
|
end
|
|
end
|
|
|
|
-- Land hook.
|
|
function land()
|
|
local landed = space.getLanded()
|
|
if landed == planet then
|
|
if player.rmCargo(carg_id) then
|
|
player.pay(reward)
|
|
tk.msg(finish_title, string.format(finish_msg, carg_type))
|
|
|
|
-- Increase empire shipping mission counter.
|
|
n = var.peek("es_misn")
|
|
if n ~= nil then
|
|
var.push("es_misn", n+1)
|
|
else
|
|
var.push("es_misn", 1)
|
|
end
|
|
|
|
-- Increase faction.
|
|
if player.getFaction("Empire") < 50 then
|
|
player.modFaction("Empire", rnd.int(5))
|
|
end
|
|
|
|
misn.finish(true)
|
|
else
|
|
tk.msg(miss_title, string.format( miss_msg, carg_mass, carg_type))
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Time hook.
|
|
function timeup()
|
|
if time.get() > misn_time then
|
|
player.msg(miss_timeup)
|
|
misn.finish(false)
|
|
end
|
|
misn.setDesc(string.format( misn_desc, carg_mass, carg_type, planet:name(), system,
|
|
time.str(misn_time), time.str(misn_time-time.get())))
|
|
end
|
|
|