(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.
#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 {
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;
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);
#endif
if (inc < 0)
inc = 0;
- ap->sct_fallout += inc;
+ ap->sct_fallout = min(ap->sct_fallout + inc, FALLOUT_MAX);
}
}
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)