fix "dropping Medusa's corpse down the stairs"

User reported the following incorrect feedback:
	You drop Medusa's corpse.  corpse falls down the stairs.
and apparently thought that the problem was a glitch in the middle of the
sentence; the actual problem is that the second sentence lacks its start.

     This fix isn't perfect.  You'll now get
	Medusa's corpse falls down the stairs.
for the second sentence, but
	The Oracle corpse falls down the stairs.
when dealing with a unique monster who doesn't have a personal name.
Either form seems acceptable to me, but mixing them appears inconsistent.

     Probably all the uses of corpse_xname() (and its callers back up the
chain cxname(), aobjnam(), yobjnam()) need to be reviewed for usage.  I
don't have the energy for that.
This commit is contained in:
nethack.rankin
2004-08-03 02:37:44 +00:00
parent 5d72e0be52
commit fa345979d4
3 changed files with 9 additions and 4 deletions

View File

@@ -43,6 +43,7 @@ shopkeeper removal of trap from shop doorway yields an open door instead of
a closed one if an intact open door is present
guarantee that hostile djinn released from bottles really are hostile
handle lava when removing or losing water walking boots
fix incomplete sentence occuring when unique monster's corpse fell down stairs
Platform- and/or Interface-Specific Fixes

View File

@@ -1,4 +1,4 @@
/* SCCS Id: @(#)dokick.c 3.4 2004/06/12 */
/* SCCS Id: @(#)dokick.c 3.4 2004/08/02 */
/* Copyright (c) Izchak Miller, Mike Stephenson, Steve Linhart, 1989. */
/* NetHack may be freely redistributed. See license for details. */
@@ -1470,7 +1470,7 @@ long num;
Sprintf(obuf, "%s%s",
(otmp->otyp == CORPSE &&
type_is_pname(&mons[otmp->corpsenm])) ? "" : "The ",
xname(otmp));
cxname(otmp));
if(num) { /* means: other objects are impacted */
Sprintf(eos(obuf), " %s %s object%s",

View File

@@ -1,4 +1,4 @@
/* SCCS Id: @(#)objnam.c 3.4 2003/12/22 */
/* SCCS Id: @(#)objnam.c 3.4 2004/08/02 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -812,8 +812,12 @@ struct obj *otmp;
boolean ignore_oquan; /* to force singular */
{
char *nambuf = nextobuf();
int mndx = otmp->corpsenm;
const char *mname = (mndx != NON_PM) ? mons[mndx].mname :
(const char *)"thing"; /* shouldn't happen */
Sprintf(nambuf, "%s corpse", mons[otmp->corpsenm].mname);
if (type_is_pname(&mons[mndx])) mname = s_suffix(mname);
Sprintf(nambuf, "%s corpse", mname);
if (ignore_oquan || otmp->quan < 2)
return nambuf;