When destroy_item() or destroy_mitem() burned up a glob of green slime,
they had the message index and damage amount reversed. This could give
a nonsense message ("the glob of green slime freezes and shatters") or
go out of array bounds and wreak havoc. Even if the message index had
been correct, fatal damage would have produced an incorrect cause of
death since it would have used a potion or scroll string.
Now globs will boil and explode like potions, and damage will be
proportional to the size (weight) of the glob, which seems to be the
original intent.
suppress "you climb up the stairs" message if verbose option is off
physical damage from mind flayer attack was being inflicted twice
adjust pending movement points when polymorphing into a slower creature
+damage inflicted by burning glob of green slime gave wrong messages
Platform- and/or Interface-Specific Fixes
break;
case FOOD_CLASS:
if (obj->otyp == GLOB_OF_GREEN_SLIME) {
- dindx = obj->owt / 20;
- dmg = 1;
+ dindx = 1; /* boil and explode */
+ dmg = (obj->owt + 19) / 20;
} else {
skip++;
}
const char *how = destroy_strings[dindx][2];
boolean one = (cnt == 1L);
+ if (dmgtyp == AD_FIRE && osym == FOOD_CLASS)
+ how = "exploding glob of slime";
if (physical_damage)
dmg = Maybe_Half_Phys(dmg);
losehp(dmg, one ? how : (const char *) makeplural(how),
break;
case FOOD_CLASS:
if (obj->otyp == GLOB_OF_GREEN_SLIME) {
- dindx = obj->owt / 20;
- tmp++;
+ dindx = 1; /* boil and explode */
+ tmp += (obj->owt + 19) / 20;
} else {
skip++;
}