fix #K4142 - camera flash vs mimic

When a camera flash hit a mimic which was posing as something, the
feedback mentioned the mimic but didn't bring it out of hiding.

Change to make light pass over a mimic impersonating an object but
unhide one impersonating furniture.  Ones impersonating some other
monster are woken up but wakeup doesn't force it back to mimic shape.

Trying to get the messages right brought on more code changes than
antipated.  I changed one of the arguments to mhidden_description()
so had to change its callers; fortunately there aren't very many.
This commit is contained in:
PatR
2024-04-16 23:34:26 -07:00
parent e20774e16f
commit 29b4c47bdf
8 changed files with 95 additions and 41 deletions

View File

@@ -1,4 +1,4 @@
/* NetHack 3.7 makemon.c $NHDT-Date: 1695327268 2023/09/21 20:14:28 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.227 $ */
/* NetHack 3.7 makemon.c $NHDT-Date: 1713334814 2024/04/17 06:20:14 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.245 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2012. */
/* NetHack may be freely redistributed. See license for details. */
@@ -1464,8 +1464,8 @@ makemon(
exclaim = TRUE;
} else if (canseemon(mtmp)) {
/* mimic masquerading as furniture or object and not sensed */
mhidden_description(mtmp, FALSE, mbuf);
what = upstart(strsubst(mbuf, ", mimicking ", ""));
mhidden_description(mtmp, MHID_ARTICLE | MHID_ALTMON, mbuf);
what = upstart(mbuf);
}
if (what) {
set_msg_xy(mtmp->mx, mtmp->my);