From 6dd9de983544ffcec4d5f78b304443365afcfd7d Mon Sep 17 00:00:00 2001 From: Allanis Date: Mon, 30 Sep 2013 22:43:33 +0100 Subject: [PATCH] [Fix] Some obscure bugs like not being able to shoot secondary weapons right away. --- src/pilot.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/pilot.c b/src/pilot.c index 1c843dd..e599be1 100644 --- a/src/pilot.c +++ b/src/pilot.c @@ -270,7 +270,9 @@ static void pilot_shootWeapon(Pilot* p, PilotOutfit* w, const unsigned int t) { delay = outfit_delay(w->outfit); /* Check to see if weapon is ready. */ - if((SDL_GetTicks() - w->timer) < (unsigned int)(delay/quantity)) return; + if((w->timer > 0) && + (SDL_GetTicks() - w->timer) < (unsigned int)(delay/quantity)) + return; /* Regular bolt weapons. */ if(outfit_isBolt(w->outfit)) { /* Enough energy? */ @@ -287,7 +289,7 @@ static void pilot_shootWeapon(Pilot* p, PilotOutfit* w, const unsigned int t) { /** @todo Handle warmup stage. */ w->state = PILOT_OUTFIT_ON; - w->beamid = beam_start(w->outfit, p->solid, p->solid->dir, + w->beamid = beam_start(w->outfit, p->solid->dir, &p->solid->pos, &p->solid->vel, p->id, t); } @@ -746,9 +748,11 @@ int pilot_addOutfit(Pilot* pilot, Outfit* outfit, int quantity) { /* since pilot has only one afterburner it's handled at the end. */ /* Grow the outfits. */ - pilot->outfits = realloc(pilot->outfits, (pilot->noutfits+1)*sizeof(PilotOutfit)); - pilot->outfits[pilot->noutfits].outfit = outfit; - pilot->outfits[pilot->noutfits].quantity = q; + pilot->outfits = realloc(pilot->outfits, (pilot->noutfits+1)*sizeof(PilotOutfit)); + pilot->outfits[pilot->noutfits].outfit = outfit; + pilot->outfits[pilot->noutfits].quantity = q; + pilot->outfits[pilot->noutfits].timer = 0; + pilot->outfits[pilot->noutfits].beamid = 0; /* Can't be over max. */ if(pilot->outfits[pilot->noutfits].quantity > outfit->max) {