From 93c2b69769b04eb862be28ad2f1ef62d54dad548 Mon Sep 17 00:00:00 2001 From: cohrs Date: Wed, 24 Apr 2002 05:21:20 +0000 Subject: [PATCH] R788 - bones corpses shouldn't all be human u.umonnum was used to create the corpse in a bones file. However, unless you're polymorphed and manage to actually die in that form, u.umonnum refers to a role monster, which all have M2_HUMAN set, so they're all human. Even if the role monsters were mutated dynamically when the game starts, the problem would still exist, just in a different form. Use urace to determine the corpse type instead. --- doc/fixes34.1 | 1 + src/end.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/doc/fixes34.1 b/doc/fixes34.1 index 1409384a0..369893342 100644 --- a/doc/fixes34.1 +++ b/doc/fixes34.1 @@ -91,6 +91,7 @@ monsters should not repeatedly try to teleport on noteleport levels crocodiles legs are not designed for kicking open doors, chests, et al. walls of one of the luckstone locations in minend-3 were diggable minetn-6 could place downstairs in a cut-off location +corpses in bones files don't retain their role characteristic Platform- and/or Interface-Specific Fixes diff --git a/src/end.c b/src/end.c index a62fe2901..7cac2cbf4 100644 --- a/src/end.c +++ b/src/end.c @@ -646,7 +646,17 @@ die: u.ugrave_arise = (NON_PM - 1); /* statue instead of corpse */ else if (u.ugrave_arise == NON_PM && !(mvitals[u.umonnum].mvflags & G_NOCORPSE)) { - corpse = mk_named_object(CORPSE, &mons[u.umonnum], + int mnum = u.umonnum; + + if (!Upolyd) { + /* Base corpse on race when not poly'd since original + * u.umonnum is based on role, and all role monsters + * are human. + */ + mnum = (flags.female && urace.femalenum != NON_PM) ? + urace.femalenum : urace.malenum; + } + corpse = mk_named_object(CORPSE, &mons[mnum], u.ux, u.uy, plname); Sprintf(pbuf, "%s, %s%s", plname, killer_format == NO_KILLER_PREFIX ? "" : -- 2.40.0