[Add] Mission tracks cargo and makes sure you have it.

This commit is contained in:
Allanis 2013-04-06 13:32:19 +01:00
parent 8172d0f21f
commit 1d57250606
4 changed files with 19 additions and 12 deletions

View File

@ -44,11 +44,16 @@ end
function land()
if space.landName() == planet then
player.rmCargo(carg_id)
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

View File

@ -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;
}

View File

@ -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,

View File

@ -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.