From: nethack.allison Date: Sat, 29 Nov 2003 18:48:13 +0000 (+0000) Subject: egg hatching message bug X-Git-Tag: MOVE2GIT~1552 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c1c4ba99d909ac97695728d97c5596e35e3be9da;p=nethack egg hatching message bug > From the newsgroup: an egg carried by the hero hatched and the > resulting monster was placed in hiding underneath an adjacent object. > The silly hatching message given was "You see it drop from your pack." > (Player said he was using 3.4.1, but the relevant code hasn't changed > since then.) --- diff --git a/doc/fixes34.3 b/doc/fixes34.3 index bec10e46e..64b0ad5b6 100644 --- a/doc/fixes34.3 +++ b/doc/fixes34.3 @@ -96,6 +96,7 @@ when you're asleep you shouldn't "notice" monsters that have become undetected must be able to reach floor in order to use stethoscope on corpse or statue fix a few coordinate (y,y) -> (x,y) typos in apply.c, mon.c, and wizard.c killing a long worm on a drawbridge could produce a panic +suppress "it" and adjust message when you see a figurine transform, then hide Platform- and/or Interface-Specific Fixes diff --git a/src/apply.c b/src/apply.c index 1b8925cc7..36564e359 100644 --- a/src/apply.c +++ b/src/apply.c @@ -1705,22 +1705,44 @@ long timeout; cansee_spot = cansee(cc.x, cc.y); mtmp = make_familiar(figurine, cc.x, cc.y, TRUE); if (mtmp) { - Sprintf(monnambuf, "%s",a_monnam(mtmp)); + char hidebuf[BUFSZ]; + struct obj *mshelter; + /* + * We're suppressing "it" here because if + * the monster ends up undetected, the "it" + * makes no sense since monnambuf is only + * used in "You see " type messages. + * + * It has been suggested that it might be + * better to have the transformed figurine + * monster wait until the next turn before + * hiding, but that is currently not implemented. + */ + Sprintf(monnambuf, "%s", + x_monnam(mtmp, ARTICLE_A, (char *)0, + SUPPRESS_IT, FALSE)); + if (mtmp->mundetected) { + if ((mshelter = level.objects[mtmp->mx][mtmp->my]) != 0) + Sprintf(hidebuf, " and %s under %s", + locomotion(mtmp->data, "crawl"), doname(mshelter)); + else + Strcpy(hidebuf, " and hide"); + } else hidebuf[0] = '\0'; + switch (figurine->where) { case OBJ_INVENT: if (Blind) You_feel("%s %s from your pack!", something, locomotion(mtmp->data,"drop")); else - You("see %s %s out of your pack!", - monnambuf, - locomotion(mtmp->data,"drop")); + You("see %s %s out of your pack%s!", + monnambuf, locomotion(mtmp->data,"drop"), hidebuf); break; case OBJ_FLOOR: if (cansee_spot && !silent) { - You("suddenly see a figurine transform into %s!", - monnambuf); + You("suddenly see a figurine transform into %s%s!", + monnambuf, hidebuf); redraw = TRUE; /* update figurine's map location */ } break; @@ -1738,8 +1760,9 @@ long timeout; Strcpy(carriedby, "empty water"); else Strcpy(carriedby, "thin air"); - You("see %s %s out of %s!", monnambuf, - locomotion(mtmp->data, "drop"), carriedby); + You("see %s %s out of %s%s!", monnambuf, + locomotion(mtmp->data, "drop"), carriedby, + hidebuf); } break; #if 0