Merge branch 'dev'
This commit is contained in:
commit
820d0516ac
@ -186,11 +186,19 @@ end
|
|||||||
-- Time hook.
|
-- Time hook.
|
||||||
function timeup()
|
function timeup()
|
||||||
if time.get() > misn_time then
|
if time.get() > misn_time then
|
||||||
player.msg(msg_msg[4])
|
misn.timerStart("failed", 2000)
|
||||||
misn.finish(false)
|
else
|
||||||
end
|
misn.setDesc(string.format( misn_desc[11], planet:name(), system:name(),
|
||||||
misn.setDesc(string.format( misn_desc[11], planet:name(), system:name(),
|
|
||||||
carg_mass, carg_type,
|
carg_mass, carg_type,
|
||||||
time.str(misn_time), time.str(misn_time-time.get())))
|
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
|
end
|
||||||
|
|
||||||
|
@ -110,6 +110,7 @@ static int player_shipname(lua_State* L);
|
|||||||
static int player_freeSpace(lua_State* L);
|
static int player_freeSpace(lua_State* L);
|
||||||
static int player_addCargo(lua_State* L);
|
static int player_addCargo(lua_State* L);
|
||||||
static int player_rmCargo(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_pay(lua_State* L);
|
||||||
static int player_msg(lua_State* L);
|
static int player_msg(lua_State* L);
|
||||||
static int player_modFaction(lua_State* L);
|
static int player_modFaction(lua_State* L);
|
||||||
@ -124,6 +125,7 @@ static const luaL_reg player_methods[] = {
|
|||||||
{ "freeCargo", player_freeSpace },
|
{ "freeCargo", player_freeSpace },
|
||||||
{ "addCargo", player_addCargo },
|
{ "addCargo", player_addCargo },
|
||||||
{ "rmCargo", player_rmCargo },
|
{ "rmCargo", player_rmCargo },
|
||||||
|
{ "jetCargo", player_jetCargo },
|
||||||
{ "pay", player_pay },
|
{ "pay", player_pay },
|
||||||
{ "msg", player_msg },
|
{ "msg", player_msg },
|
||||||
{ "modFaction", player_modFaction },
|
{ "modFaction", player_modFaction },
|
||||||
@ -751,7 +753,35 @@ static int player_rmCargo(lua_State* L) {
|
|||||||
else LLUA_INVALID_PARAMETER();
|
else LLUA_INVALID_PARAMETER();
|
||||||
|
|
||||||
/* First try to remove the cargo from player. */
|
/* 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);
|
lua_pushboolean(L, 0);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -393,7 +393,7 @@ void mission_cleanup(Mission* misn) {
|
|||||||
if(misn->cargo != NULL) {
|
if(misn->cargo != NULL) {
|
||||||
for(i = 0; i < misn->ncargo; i++) { /* Must unlink all the cargo. */
|
for(i = 0; i < misn->ncargo; i++) { /* Must unlink all the cargo. */
|
||||||
if(player != NULL) /* Only remove if player exists. */
|
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]);
|
mission_unlinkCargo(misn, misn->cargo[i]);
|
||||||
}
|
}
|
||||||
free(misn->cargo);
|
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.
|
* @brief Remove special mission cargo based on id.
|
||||||
* @param pilot Pilot to remove cargo from.
|
* @param pilot Pilot to remove cargo from.
|
||||||
* @param cargo_id ID of the cargo to remove.
|
* @param cargo_id ID of the cargo to remove.
|
||||||
|
* @param jettison Should we jettison the cargo?
|
||||||
* @return 0 on success (cargo removed).
|
* @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;
|
int i;
|
||||||
|
|
||||||
/* Check if pilot has it. */
|
/* Check if pilot has it. */
|
||||||
@ -1256,6 +1257,10 @@ int pilot_rmMissionCargo(Pilot* pilot, unsigned int cargo_id) {
|
|||||||
if(i >= pilot->ncommodities)
|
if(i >= pilot->ncommodities)
|
||||||
return 1; /* Pilot doesn't have it. */
|
return 1; /* Pilot doesn't have it. */
|
||||||
|
|
||||||
|
if(jettison)
|
||||||
|
commodity_Jettison(pilot->id, pilot->commodities[i].commodity,
|
||||||
|
pilot->commodities[i].quantity);
|
||||||
|
|
||||||
/* Remove cargo. */
|
/* Remove cargo. */
|
||||||
pilot->cargo_free += pilot->commodities[i].quantity;
|
pilot->cargo_free += pilot->commodities[i].quantity;
|
||||||
pilot->solid->mass -= 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);
|
int pilot_moveCargo(Pilot* dest, Pilot* src);
|
||||||
/* Mission cargo - Not to be confused with normal cargo. */
|
/* Mission cargo - Not to be confused with normal cargo. */
|
||||||
unsigned int pilot_addMissionCargo(Pilot* pilot, Commodity* cargo, int quantity);
|
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. */
|
/* Creation. */
|
||||||
|
Loading…
Reference in New Issue
Block a user