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.
This commit is contained in:
@@ -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
|
||||
|
||||
12
src/end.c
12
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 ? "" :
|
||||
|
||||
Reference in New Issue
Block a user