pull request #936 - feedback for grease wash off

Pull request from entrez:  if a greased item loses its grease after
being affected by water, say so.

Also, the post-water code could access freed memory for an item that
had been destroyed by the water (potion of acid).

Fixes #936
This commit is contained in:
PatR
2022-11-30 12:56:16 -08:00
2 changed files with 8 additions and 9 deletions

View File

@@ -429,12 +429,8 @@ dipfountain(register struct obj *obj)
} else {
er = water_damage(obj, NULL, TRUE);
if (obj->otyp == POT_ACID
&& er != ER_DESTROYED) { /* Acid and water don't mix */
useup(obj);
return;
} else if (er != ER_NOTHING && !rn2(2)) { /* no further effect */
return;
if (er == ER_DESTROYED || (er != ER_NOTHING && !rn2(2))) {
return; /* no further effect */
}
}

View File

@@ -4146,10 +4146,13 @@ water_damage(
wet_a_towel(obj, -rnd(7 - obj->spe), TRUE);
return ER_NOTHING;
} else if (obj->greased) {
if (!rn2(2))
if (!rn2(2)) {
obj->greased = 0;
if (carried(obj))
update_inventory();
if (carried(obj)) {
pline_The("grease on %s washes off.", yname(obj));
update_inventory();
}
}
return ER_GREASED;
} else if (Is_container(obj)
&& (!Waterproof_container(obj) || (obj->cursed && !rn2(3)))) {