diff --git a/dat/missions/cargo.lua b/dat/missions/cargo.lua index 3bf64af..2b8e436 100644 --- a/dat/missions/cargo.lua +++ b/dat/missions/cargo.lua @@ -44,11 +44,16 @@ end function land() if space.landName() == planet then - player.rmCargo(carg_id) - player.pay(misn_reward) - tk.msg("Mission Accomplished", - string.format("The workers unload the %s at the docks.", carg_type)) - misn_finish() + if player.rmCargo(carg_id) then + player.pay(misn_reward) + tk.msg("Mission Accomplished", + string.format("The workers unload the %s at the docks.", carg_type)) + misn_finish() + else + tk.msg("Where is the cargo?", + string.format("You are missing the %d tons of %s!.", + carg_mass, carg_type)) + end end end diff --git a/src/misn_lua.c b/src/misn_lua.c index 191ed5a..fb19ea0 100644 --- a/src/misn_lua.c +++ b/src/misn_lua.c @@ -281,6 +281,7 @@ static int player_addCargo(lua_State* L) { } static int player_rmCargo(lua_State* L) { + int ret; unsigned int id; MIN_ARGS(1); @@ -288,8 +289,9 @@ static int player_rmCargo(lua_State* L) { if(lua_isnumber(L, -1)) id = (unsigned int) lua_tonumber(L, -1); else return 0; - pilot_rmMissionCargo(player, id); + ret = pilot_rmMissionCargo(player, id); + lua_pushboolean(L, !ret); return 0; } diff --git a/src/pilot.c b/src/pilot.c index 40c20c3..fee9b80 100644 --- a/src/pilot.c +++ b/src/pilot.c @@ -656,17 +656,15 @@ unsigned int pilot_addMissionCargo(Pilot* pilot, Commodity* cargo, int quantity) return pilot->commodities[pilot->ncommodities-1].id; } -void pilot_rmMissionCargo(Pilot* pilot, unsigned int cargo_id) { +int pilot_rmMissionCargo(Pilot* pilot, unsigned int cargo_id) { int i; for(i = 0; i < pilot->ncommodities; i++) if(pilot->commodities[i].id == cargo_id) break; - if(i >= pilot->ncommodities) { - DEBUG("Mission Cargo id '%d' not found on pilot '%s'", cargo_id, pilot->name); - return; - } + if(i >= pilot->ncommodities) + return 1; // Remove cargo. pilot->cargo_free += pilot->commodities[i].quantity; @@ -676,6 +674,8 @@ void pilot_rmMissionCargo(Pilot* pilot, unsigned int cargo_id) { pilot->ncommodities--; pilot->commodities = realloc(pilot->commodities, sizeof(PilotCommodity) * pilot->ncommodities); + + return 0; } // Try to get rid of quantity cargo from pilot, diff --git a/src/pilot.h b/src/pilot.h index e72d38c..80cd1cb 100644 --- a/src/pilot.h +++ b/src/pilot.h @@ -148,7 +148,7 @@ int pilot_addCargo(Pilot* pilot, Commodity* cargo, int quantity); int pilot_rmCargo(Pilot* pilot, Commodity* cargo, int quantity); // Mission cargo - Not to be confused with normal cargo. unsigned int pilot_addMissionCargo(Pilot* pilot, Commodity* cargo, int quantity); -void pilot_rmMissionCargo(Pilot* pilot, unsigned int cargo_id); +int pilot_rmMissionCargo(Pilot* pilot, unsigned int cargo_id); // Creation.