try even harder to avoid incorrect map display while changing levels
no "freaked" message by exploding black light, unless you really are
sleeping monster could respond to attacks by other monsters
+sleeping shopkeeper responds to various events without waking
Platform- and/or Interface-Specific Fixes
struct monst *shkp;
boolean verbosely;
{
- if (!shkp->mcanmove) {
+ if (!shkp->mcanmove || shkp->msleeping) {
/* greed induced recovery... */
if (verbosely && canspotmon(shkp))
pline("%s %s.", Monnam(shkp),
if (ltmp || eshkp->billct || eshkp->debit)
rouse_shk(shkp, TRUE);
- if (!shkp->mcanmove) { /* still asleep or paralyzed */
+ if (!shkp->mcanmove || shkp->msleeping) { /* still asleep/paralyzed */
pline("%s %s.", Monnam(shkp),
rn2(2) ? "seems to be napping" : "doesn't respond");
return 0;
if (cansee(shkp->mx, shkp->my && croaked))
pline("%s %slooks at your corpse%s and %s.",
Monnam(shkp),
- !shkp->mcanmove ? "wakes up, " : "",
+ (!shkp->mcanmove || shkp->msleeping) ? "wakes up, " : "",
!rn2(2) ? (shkp->female ? ", shakes her head," :
", shakes his head,") : "",
!inhishop(shkp) ? "disappears" : "sighs");
umoney = money_cnt(invent);
#endif
takes[0] = '\0';
- if (!shkp->mcanmove)
+ if (!shkp->mcanmove || shkp->msleeping)
Strcat(takes, "wakes up and ");
if (distu(shkp->mx, shkp->my) > 2)
Strcat(takes, "comes and ");