meltitems() computes #items * etus per update * fallout in type long.
Theoretical maximum is ITEM_MAX * etus * FALLOUT_MAX =
99980001 *
etus. Can overflow 32 bits for etus > 21. Has been broken since the
introduction of fallout in KSU.
Compute the product in double instead.
int melt;
for (n = I_NONE + 1; n <= I_MAX; n++) {
int melt;
for (n = I_NONE + 1; n <= I_MAX; n++) {
- melt = roundavg(vec[n] * etus * (long)fallout
+ melt = roundavg(vec[n] * etus * (double)fallout
/ (1000.0 * ichr[n].i_melt_denom));
if (melt > vec[n])
melt = vec[n];
/ (1000.0 * ichr[n].i_melt_denom));
if (melt > vec[n])
melt = vec[n];