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:
@@ -429,12 +429,8 @@ dipfountain(register struct obj *obj)
|
|||||||
} else {
|
} else {
|
||||||
er = water_damage(obj, NULL, TRUE);
|
er = water_damage(obj, NULL, TRUE);
|
||||||
|
|
||||||
if (obj->otyp == POT_ACID
|
if (er == ER_DESTROYED || (er != ER_NOTHING && !rn2(2))) {
|
||||||
&& er != ER_DESTROYED) { /* Acid and water don't mix */
|
return; /* no further effect */
|
||||||
useup(obj);
|
|
||||||
return;
|
|
||||||
} else if (er != ER_NOTHING && !rn2(2)) { /* no further effect */
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4146,10 +4146,13 @@ water_damage(
|
|||||||
wet_a_towel(obj, -rnd(7 - obj->spe), TRUE);
|
wet_a_towel(obj, -rnd(7 - obj->spe), TRUE);
|
||||||
return ER_NOTHING;
|
return ER_NOTHING;
|
||||||
} else if (obj->greased) {
|
} else if (obj->greased) {
|
||||||
if (!rn2(2))
|
if (!rn2(2)) {
|
||||||
obj->greased = 0;
|
obj->greased = 0;
|
||||||
if (carried(obj))
|
if (carried(obj)) {
|
||||||
update_inventory();
|
pline_The("grease on %s washes off.", yname(obj));
|
||||||
|
update_inventory();
|
||||||
|
}
|
||||||
|
}
|
||||||
return ER_GREASED;
|
return ER_GREASED;
|
||||||
} else if (Is_container(obj)
|
} else if (Is_container(obj)
|
||||||
&& (!Waterproof_container(obj) || (obj->cursed && !rn2(3)))) {
|
&& (!Waterproof_container(obj) || (obj->cursed && !rn2(3)))) {
|
||||||
|
|||||||
Reference in New Issue
Block a user