Fix lnd_fire() ammo sanity check
Checking l_ammo before lnd_dam() oopses when something attempts to fire from a land unit type that can't fire (l_dam == 0) and uses no ammo. Such usage is perfectly fine. Move the check to the correct place.
This commit is contained in:
parent
9e19123abf
commit
61998d2316
1 changed files with 5 additions and 6 deletions
|
@ -25,7 +25,7 @@
|
||||||
*
|
*
|
||||||
* ---
|
* ---
|
||||||
*
|
*
|
||||||
* landgun.c: Return values for land and ship gun firing damages
|
* landgun.c: Fire weapons
|
||||||
*
|
*
|
||||||
* Known contributors to this file:
|
* Known contributors to this file:
|
||||||
* Markus Armbruster, 2006-2008
|
* Markus Armbruster, 2006-2008
|
||||||
|
@ -185,12 +185,8 @@ shp_torp(struct shpstr *sp, int usemob)
|
||||||
int
|
int
|
||||||
lnd_fire(struct lndstr *lp)
|
lnd_fire(struct lndstr *lp)
|
||||||
{
|
{
|
||||||
int guns, shells;
|
int guns, ammo, shells;
|
||||||
double d;
|
double d;
|
||||||
int ammo = lchr[lp->lnd_type].l_ammo;
|
|
||||||
|
|
||||||
if (CANT_HAPPEN(ammo == 0))
|
|
||||||
ammo = 1;
|
|
||||||
|
|
||||||
if (lp->lnd_effic < LAND_MINFIREEFF)
|
if (lp->lnd_effic < LAND_MINFIREEFF)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -202,6 +198,9 @@ lnd_fire(struct lndstr *lp)
|
||||||
guns = MIN(guns, lp->lnd_item[I_GUN]);
|
guns = MIN(guns, lp->lnd_item[I_GUN]);
|
||||||
if (guns == 0)
|
if (guns == 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
ammo = lchr[lp->lnd_type].l_ammo;
|
||||||
|
if (CANT_HAPPEN(ammo == 0))
|
||||||
|
ammo = 1;
|
||||||
shells = lp->lnd_item[I_SHELL];
|
shells = lp->lnd_item[I_SHELL];
|
||||||
shells += supply_commod(lp->lnd_own, lp->lnd_x, lp->lnd_y,
|
shells += supply_commod(lp->lnd_own, lp->lnd_x, lp->lnd_y,
|
||||||
I_SHELL, ammo - shells);
|
I_SHELL, ammo - shells);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue