lava_effects() bit

lava_effects() item destrunction had the logic for handling Book of
the Dead wrong.  (However, that didn't matter since the obj_resists()
check earlier would prevent it from being burned up.  Fix it anyway.)
This commit is contained in:
PatR
2024-02-09 15:52:17 -08:00
parent 381851348b
commit 9326f80ecc
2 changed files with 7 additions and 7 deletions

View File

@@ -236,9 +236,9 @@ remove_worn_item(
/*
* Losing worn gear might drop hero into water or lava or onto a
* location-changing trap or take away the ability to breathe in water.
* Marking it 'in_use' prevents emergency_disrobe() from dropping it.
* in_lava() appears to be ok; other cases impacting object location
* (or destruction) might still have issues.
* Marking it 'in_use' prevents emergency_disrobe() from dropping it
* and lava_effects() from destroying it; other cases impacting object
* location (or destruction) might still have issues.
*
* Note: if a hangup save occurs when 'in_use' is set, the item will
* be destroyed via useup() during restore. Maybe remove_worn_item()

View File

@@ -6609,11 +6609,11 @@ lava_effects(void)
for (obj = gi.invent; obj; obj = obj2) {
obj2 = obj->nobj;
/* above, we set in_use for objects which are to be destroyed */
if (obj->o_id == protect_oid) {
; /* skip protected item; caller expects to retain access */
} else if (obj->otyp == SPE_BOOK_OF_THE_DEAD && !Blind) {
if (usurvive)
/* skip protected item; caller expects to retain access */
obj->in_use = 1; /* was cleared when setting protect_oid */
} else if (obj->otyp == SPE_BOOK_OF_THE_DEAD) {
if (usurvive && !Blind)
pline("%s glows a strange %s, but remains intact.",
The(xname(obj)), hcolor("dark red"));
} else if (obj->in_use) {