Lephisto/dat/missions/es_cargo.lua
2013-05-07 18:40:39 +01:00

117 lines
3.5 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
repeat
planet = space.getPlanet( misn.factions() )
i = i + 1
until planet ~= space.landName() or i > 10
-- Infinite loop protection
if i > 10 then
misn.finish(false)
end
system = space.getSystem( planet )
misn_dist = space.jumpDist(system)
-- Mission generics
misn_type = "Cargo"
i = rnd.int(1)
misn.setTitle( string.format(title[i+1], planet) )
-- 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, 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() ))
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 )
end
end
-- Land hook
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 ))
-- 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
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, system,
time.str(misn_time), time.str(misn_time-time.get())) )
end