[Add] First time limit mission.
This commit is contained in:
parent
b377e18d62
commit
2a502f5426
@ -2,13 +2,16 @@ lang = lephisto.lang()
|
||||
if lang == "es" then
|
||||
-- Not translated.
|
||||
else -- Default English.
|
||||
misn_desc = "%s in the %s system needs a delivery of %d tons of %s."
|
||||
misn_desc = {}
|
||||
misn_desc[1] = "%s in the %s system needs a delivery of %d tons of %s."
|
||||
misn_desc[2] = "%s in the %s system needs a rush delivery of %d tons of %s before %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"
|
||||
title[5] = "Rush 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"
|
||||
@ -37,13 +40,19 @@ function create()
|
||||
misn_dist = space.jumpDist(system)
|
||||
|
||||
-- Missions generic.
|
||||
i = rnd.int(4)
|
||||
if i < 4 then -- Cargo delivery.
|
||||
misn_type = "Cargo"
|
||||
i = rnd.int(3)
|
||||
misn.setTitle(string.format(title[i+1], planet))
|
||||
else -- Rush delivery.
|
||||
misn_type = "Rush"
|
||||
misn.setTitle(string.format(title[5], planet))
|
||||
end
|
||||
|
||||
-- More mission specifics.
|
||||
carg_mass = rnd.int(10, 30)
|
||||
i = rnd.int(12)
|
||||
i = rnd.int(12) -- Set the goods.
|
||||
if i < 5 then
|
||||
carg_type = "Food"
|
||||
elseif i < 8 then
|
||||
@ -56,10 +65,18 @@ function create()
|
||||
carg_type = "Medicine"
|
||||
end
|
||||
|
||||
misn.setDesc(string.format(misn_desc, planet, system, carg_mass, carg_type))
|
||||
if misn_type == "Cargo" then
|
||||
misn_setDesc(string.format(misn_desc[1], planet, system, carg_mass, carg_type))
|
||||
reward = misn_dist * carg_mass * (250+rnd.int(150)) +
|
||||
carg_mass * (150+rnd.int(75)) +
|
||||
rnd.int(1500)
|
||||
elseif misn_type == "Rush" then
|
||||
misn_time = time.get() + rnd.int(time.units(2), time.units(4)) * misn_dist
|
||||
misn.setDesc(string.format(misn_desc[2], planet, system,
|
||||
carg_mass, carg_type, time.str(misn_time)))
|
||||
reward = misn_dist * carg_mass * (450+rnd.int(250)) + rnd.int(3500)
|
||||
end
|
||||
|
||||
misn.setReward(string.format(misn_reward, reward))
|
||||
end
|
||||
|
||||
@ -69,7 +86,13 @@ function accept()
|
||||
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))
|
||||
|
||||
-- Set the hooks.
|
||||
hook.land("land"); -- Only hook after accepting.
|
||||
if misn_type == "Rush" then -- Rush needs additional time hook.
|
||||
hook.time("timeup")
|
||||
end
|
||||
|
||||
else
|
||||
tk.msg(toomany_title, toomany_msg)
|
||||
end
|
||||
@ -87,3 +110,11 @@ function land()
|
||||
end
|
||||
end
|
||||
|
||||
-- Time hook.
|
||||
function timeup()
|
||||
if time.get() > misn_time then
|
||||
player.msg("You have failed to deliver the goods on time!")
|
||||
misn.finish(false)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -116,11 +116,13 @@ static int player_freeSpace(lua_State* L);
|
||||
static int player_addCargo(lua_State* L);
|
||||
static int player_rmCargo(lua_State* L);
|
||||
static int player_pay(lua_State* L);
|
||||
static int player_msg(lua_State* L);
|
||||
static const luaL_Reg player_methods[] = {
|
||||
{ "freeCargo", player_freeSpace },
|
||||
{ "addCargo", player_addCargo },
|
||||
{ "rmCargo", player_rmCargo },
|
||||
{ "pay", player_pay },
|
||||
{ "msg", player_msg },
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
@ -280,10 +282,8 @@ static int misn_finish(lua_State* L) {
|
||||
int b;
|
||||
|
||||
if(lua_isboolean(L, -1)) b = lua_toboolean(L, -1);
|
||||
else {
|
||||
MISN_DEBUG("Trying to finish without specifyint if mission is complete.");
|
||||
return 0;
|
||||
}
|
||||
else return 0; // With no argument it won't delete the mission.
|
||||
|
||||
misn_delete = 1;
|
||||
|
||||
if(b && mis_isFlag(cur_mission->data, MISSION_UNIQUE))
|
||||
@ -625,6 +625,17 @@ static int player_pay(lua_State* L) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int player_msg(lua_State* L) {
|
||||
MIN_ARGS(1);
|
||||
char* str;
|
||||
|
||||
if(lua_isstring(L, -1)) str = (char*) lua_tostring(L, -1);
|
||||
else return 0;
|
||||
|
||||
player_message(str);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// -- RND. --
|
||||
static int rnd_int(lua_State* L) {
|
||||
int o;
|
||||
|
@ -84,7 +84,7 @@ static int mission_init(Mission* mission, MissionData* misn) {
|
||||
|
||||
buf = pack_readfile(DATA, misn->lua, &bufsize);
|
||||
if(luaL_dobuffer(mission->L, buf, bufsize, misn->lua) != 0) {
|
||||
ERR("Error loading AI file: %s", misn->lua);
|
||||
ERR("Error loading mission file: %s", misn->lua);
|
||||
ERR("%s", lua_tostring(mission->L, -1));
|
||||
WARN("Most likely Lua file has improper syntax, please check it");
|
||||
return -1;
|
||||
|
Loading…
Reference in New Issue
Block a user