(FALLOUT_MAX): New.

(doland, detonate, spread_fallout): Use it.  With variables, fallout
beyond the capacity of variables (65535) was ignored, except in
doland(), where it saturated at 9999, and spread_fallout, where it
could overflow.  Now it always saturates at FALLOUT_MAX.
This commit is contained in:
Markus Armbruster 2004-03-04 16:19:50 +00:00
parent 828b84d840
commit abd1fd2c1e
4 changed files with 6 additions and 5 deletions

View file

@ -188,6 +188,8 @@ extern struct dchrstr bigcity_dchr;
#define CHE_MAX 255
/* maximum number of mines, must fit into struct sctstr member sct_mines */
#define MINES_MAX 65535
/* maximum fallout, must fit into struct sctstr member sct_fallout */
#define FALLOUT_MAX 9999
/* Each cost is per point of efficency */
struct sctintrins {

View file

@ -616,7 +616,7 @@ doland(s_char op, int arg, s_char *p, struct sctstr *sect)
break;
case 'F':
old = sect->sct_fallout;
new = errcheck(arg, 0, 9999);
new = errcheck(arg, 0, FALLOUT_MAX);
pr("Fallout for sector %s changed from %d to %d\n",
xyas(sect->sct_x, sect->sct_y, player->cnum), old, new);
sect->sct_fallout = new;

View file

@ -112,7 +112,7 @@ detonate(struct plnstr *pp, int x, int y)
fallout += damage * 30;
else
fallout += damage * 3;
sect.sct_fallout = fallout;
sect.sct_fallout = min(fallout, FALLOUT_MAX);
}
if (damage > 100) {
makelost(EF_SECTOR, sect.sct_own, 0, sect.sct_x, sect.sct_y);

View file

@ -307,7 +307,7 @@ spread_fallout(struct sctstr *sp, int etus)
#endif
if (inc < 0)
inc = 0;
ap->sct_fallout += inc;
ap->sct_fallout = min(ap->sct_fallout + inc, FALLOUT_MAX);
}
}
@ -327,8 +327,7 @@ decay_fallout(struct sctstr *sp, int etus)
sp->sct_y, decay, sp->sct_fallout);
#endif
sp->sct_fallout =
(decay < sp->sct_fallout) ? (sp->sct_fallout - decay) : 0;
sp->sct_fallout = decay < sp->sct_fallout ? sp->sct_fallout - decay : 0;
}
#define SHOULD_PRODUCE(sp,t) (((sp->sct_type == t) || (t == -1)) ? 1 : 0)