Merge branch 'dev'

This commit is contained in:
Allanis 2014-03-14 23:59:43 +00:00
commit 820d0516ac
5 changed files with 51 additions and 8 deletions

View File

@ -186,11 +186,19 @@ end
-- Time hook.
function timeup()
if time.get() > misn_time then
player.msg(msg_msg[4])
misn.finish(false)
end
misn.setDesc(string.format( misn_desc[11], planet:name(), system:name(),
misn.timerStart("failed", 2000)
else
misn.setDesc(string.format( misn_desc[11], planet:name(), system:name(),
carg_mass, carg_type,
time.str(misn_time), time.str(misn_time-time.get())))
end
end
function failed()
player.msg(msg_msg[4])
if misn_type ~= "People" then
player.jetCargo(carg_id)
end
misn.finish(false)
end

View File

@ -110,6 +110,7 @@ static int player_shipname(lua_State* L);
static int player_freeSpace(lua_State* L);
static int player_addCargo(lua_State* L);
static int player_rmCargo(lua_State* L);
static int player_jetCargo(lua_State* L);
static int player_pay(lua_State* L);
static int player_msg(lua_State* L);
static int player_modFaction(lua_State* L);
@ -124,6 +125,7 @@ static const luaL_reg player_methods[] = {
{ "freeCargo", player_freeSpace },
{ "addCargo", player_addCargo },
{ "rmCargo", player_rmCargo },
{ "jetCargo", player_jetCargo },
{ "pay", player_pay },
{ "msg", player_msg },
{ "modFaction", player_modFaction },
@ -751,7 +753,35 @@ static int player_rmCargo(lua_State* L) {
else LLUA_INVALID_PARAMETER();
/* First try to remove the cargo from player. */
if(pilot_rmMissionCargo(player, id) != 0) {
if(pilot_rmMissionCargo(player, id, 0) != 0) {
lua_pushboolean(L, 0);
return 1;
}
/* Now unlink the mission cargo if it was successful. */
ret = mission_unlinkCargo(cur_mission, id);
lua_pushboolean(L, !ret);
return 1;
}
/**
* @brief jetCargo(number cargoid)
*
* Jettison the mission cargo.
* @param cargoid ID of the cargo to jettison.
*/
static int player_jetCargo(lua_State* L) {
int ret;
unsigned int id;
LLUA_MIN_ARGS(1);
if(lua_isnumber(L, 1)) id = (unsigned int)lua_tonumber(L, 1);
else LLUA_INVALID_PARAMETER();
/* First try to remove the cargo from player. */
if(pilot_rmMissionCargo(player, id, 0) != 0) {
lua_pushboolean(L, 0);
return 1;
}

View File

@ -393,7 +393,7 @@ void mission_cleanup(Mission* misn) {
if(misn->cargo != NULL) {
for(i = 0; i < misn->ncargo; i++) { /* Must unlink all the cargo. */
if(player != NULL) /* Only remove if player exists. */
pilot_rmMissionCargo(player, misn->cargo[i]);
pilot_rmMissionCargo(player, misn->cargo[i], 0);
mission_unlinkCargo(misn, misn->cargo[i]);
}
free(misn->cargo);

View File

@ -1243,9 +1243,10 @@ unsigned int pilot_addMissionCargo(Pilot* pilot, Commodity* cargo, int quantity)
* @brief Remove special mission cargo based on id.
* @param pilot Pilot to remove cargo from.
* @param cargo_id ID of the cargo to remove.
* @param jettison Should we jettison the cargo?
* @return 0 on success (cargo removed).
*/
int pilot_rmMissionCargo(Pilot* pilot, unsigned int cargo_id) {
int pilot_rmMissionCargo(Pilot* pilot, unsigned int cargo_id, int jettison) {
int i;
/* Check if pilot has it. */
@ -1256,6 +1257,10 @@ int pilot_rmMissionCargo(Pilot* pilot, unsigned int cargo_id) {
if(i >= pilot->ncommodities)
return 1; /* Pilot doesn't have it. */
if(jettison)
commodity_Jettison(pilot->id, pilot->commodities[i].commodity,
pilot->commodities[i].quantity);
/* Remove cargo. */
pilot->cargo_free += pilot->commodities[i].quantity;
pilot->solid->mass -= pilot->commodities[i].quantity;

View File

@ -263,7 +263,7 @@ int pilot_rmCargo(Pilot* pilot, Commodity* cargo, int quantity);
int pilot_moveCargo(Pilot* dest, Pilot* src);
/* Mission cargo - Not to be confused with normal cargo. */
unsigned int pilot_addMissionCargo(Pilot* pilot, Commodity* cargo, int quantity);
int pilot_rmMissionCargo(Pilot* pilot, unsigned int cargo_id);
int pilot_rmMissionCargo(Pilot* pilot, unsigned int cargo_id, int jettison);
/* Creation. */