From 30aaa7852df92edb4ed0bcc2a4d82ccd7d8da7b8 Mon Sep 17 00:00:00 2001 From: Allanis Date: Wed, 7 Aug 2013 14:26:45 +0100 Subject: [PATCH] [Fix] You can no longer buy extra outfits. --- src/pilot.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/pilot.c b/src/pilot.c index 55ce25f..706c36e 100644 --- a/src/pilot.c +++ b/src/pilot.c @@ -566,9 +566,10 @@ static void pilot_hyperspace(Pilot* p) { } int pilot_addOutfit(Pilot* pilot, Outfit* outfit, int quantity) { - int i, q; + int i, q, free_space; char* osec; + free_space = pilot_freeSpace(pilot); q = quantity; /* Special case if it's a map. */ @@ -577,10 +578,18 @@ int pilot_addOutfit(Pilot* pilot, Outfit* outfit, int quantity) { return 1; /* Must return 1 for paying purposes. */ } + /* Mod quantity down if it doesn't fit. */ + if(q*outfit->mass > free_space) + q = free_space / outfit->mass; + + /* Can we actually add any? */ + if(q == 0) + return 0; + /* Does outfit already exist? */ for(i = 0; i < pilot->noutfits; i++) if(strcmp(outfit->name, pilot->outfits[i].outfit->name)==0) { - pilot->outfits[i].quantity += quantity; + pilot->outfits[i].quantity += q; /* Can't be over max. */ if(pilot->outfits[i].quantity > outfit->max) { q -= pilot->outfits[i].quantity - outfit->max; @@ -599,7 +608,7 @@ int pilot_addOutfit(Pilot* pilot, Outfit* outfit, int quantity) { /* Grow the outfits. */ pilot->outfits = realloc(pilot->outfits, (pilot->noutfits+1)*sizeof(PilotOutfit)); pilot->outfits[pilot->noutfits].outfit = outfit; - pilot->outfits[pilot->noutfits].quantity = quantity; + pilot->outfits[pilot->noutfits].quantity = q; /* Can't be over max. */ if(pilot->outfits[pilot->noutfits].quantity > outfit->max) {