Unhide monster hiding under shrinking glob

This commit is contained in:
Pasi Kallinen
2022-03-11 17:34:06 +02:00
parent 3fc39f273a
commit ea52bacfce

View File

@@ -1516,18 +1516,20 @@ shrink_glob(
static void static void
shrinking_glob_gone(struct obj *obj) shrinking_glob_gone(struct obj *obj)
{ {
if (obj->where == OBJ_INVENT) { xchar owhere = obj->where;
if (owhere == OBJ_INVENT) {
if (obj->owornmask) { if (obj->owornmask) {
remove_worn_item(obj, FALSE); remove_worn_item(obj, FALSE);
stop_occupation(); stop_occupation();
} }
useupall(obj); /* freeinv()+obfree() */ useupall(obj); /* freeinv()+obfree() */
} else { } else {
if (obj->where == OBJ_MIGRATING) { if (owhere == OBJ_MIGRATING) {
/* destination flag overloads owornmask; clear it so obfree()'s /* destination flag overloads owornmask; clear it so obfree()'s
check for freeing a worn object doesn't get a false hit */ check for freeing a worn object doesn't get a false hit */
obj->owornmask = 0L; obj->owornmask = 0L;
} else if (obj->where == OBJ_MINVENT) { } else if (owhere == OBJ_MINVENT) {
/* monsters don't wield globs so this isn't strictly needed */ /* monsters don't wield globs so this isn't strictly needed */
if (obj->owornmask && obj == MON_WEP(obj->ocarry)) if (obj->owornmask && obj == MON_WEP(obj->ocarry))
setmnotwielded(obj->ocarry, obj); /* clears owornmask */ setmnotwielded(obj->ocarry, obj); /* clears owornmask */
@@ -1536,6 +1538,8 @@ shrinking_glob_gone(struct obj *obj)
if it's contained, obj_extract_self() will update the container's if it's contained, obj_extract_self() will update the container's
weight and if nested, the enclosing containers' weights too */ weight and if nested, the enclosing containers' weights too */
obj_extract_self(obj); obj_extract_self(obj);
if (owhere == OBJ_FLOOR)
maybe_unhide_at(obj->ox, obj->oy);
obfree(obj, (struct obj *) 0); obfree(obj, (struct obj *) 0);
} }
} }