Merge branch 'dev'
This commit is contained in:
commit
820d0516ac
@ -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
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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. */
|
||||
|
Loading…
Reference in New Issue
Block a user