diff --git a/doc/fixes35.0 b/doc/fixes35.0 index 2a91f7bcb..4021ae6be 100644 --- a/doc/fixes35.0 +++ b/doc/fixes35.0 @@ -308,6 +308,8 @@ mimic posing as statue or corpse now picks and maintains particular monst type when levitating, don't show '>' as a likely direction for digging poly'd or mimicking hero who was hidden from monsters would still be treated as a normal target for their ranged attacks +hero would remain stuck to an adjacent monster after rehumanizing if he had + been attacked while hiding via #monster when poly'd into a small mimic Platform- and/or Interface-Specific Fixes diff --git a/src/mhitu.c b/src/mhitu.c index 9b38755de..288ed669e 100644 --- a/src/mhitu.c +++ b/src/mhitu.c @@ -1,4 +1,4 @@ -/* SCCS Id: @(#)mhitu.c 3.5 2007/12/19 */ +/* SCCS Id: @(#)mhitu.c 3.5 2009/02/17 */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* NetHack may be freely redistributed. See license for details. */ @@ -424,20 +424,23 @@ mattacku(mtmp) return(0); } + /* hero might be a mimic, concealed via #monster */ if (youmonst.data->mlet == S_MIMIC && youmonst.m_ap_type && !range2 && foundyou && !u.uswallow) { + boolean sticky = sticks(youmonst.data); + if (!canspotmon(mtmp)) map_invisible(mtmp->mx, mtmp->my); - if (!youseeit) pline("It gets stuck on you."); + if (sticky && !youseeit) pline("It gets stuck on you."); else pline("Wait, %s! That's a %s named %s!", m_monnam(mtmp), youmonst.data->mname, plname); - u.ustuck = mtmp; + if (sticky) u.ustuck = mtmp; youmonst.m_ap_type = M_AP_NOTHING; youmonst.mappearance = 0; newsym(u.ux,u.uy); return(0); } - /* player might be mimicking an object */ + /* non-mimic hero might be mimicking an object after eating m corpse */ if (youmonst.m_ap_type == M_AP_OBJECT && !range2 && foundyou && !u.uswallow) { if (!canspotmon(mtmp)) map_invisible(mtmp->mx, mtmp->my); if (!youseeit)