else if (mtmp->isshk &&
!(Deaf || mtmp->msleeping ||
!mtmp->mcanmove || mtmp->data->msound <= MS_ANIMAL))
- verbalize("I'm %s, not %s.", monnambuf, buf);
+ verbalize("I'm %s, not %s.", shkname(mtmp), buf);
else if (mtmp->ispriest || mtmp->isminion || mtmp->isshk)
pline("%s will not accept the name %s.", upstart(monnambuf), buf);
else
{
char *buf = nextmbuf();
struct permonst *mdat = mtmp->data;
+ const char *pm_name = mdat->mname;
boolean do_hallu, do_invis, do_it, do_saddle;
boolean name_at_start, has_adjectives;
char *bp;
name += 4;
return strcpy(buf, name);
}
+ /* an "aligned priest" not flagged as a priest or minion should be
+ "priest" or "priestess" (normally handled by priestname()) */
+ if (mdat == &mons[PM_ALIGNED_PRIEST])
+ pm_name = mtmp->female ? "priestess" : "priest";
+ else if (mdat == &mons[PM_HIGH_PRIEST] && mtmp->female)
+ pm_name = "high priestess";
/* Shopkeepers: use shopkeeper name. For normal shopkeepers, just
* "Asidonhopo"; for unusual ones, "Asidonhopo the invisible
Strcat(buf, " the ");
if (do_invis)
Strcat(buf, "invisible ");
- Strcat(buf, mdat->mname);
+ Strcat(buf, pm_name);
return buf;
}
Sprintf(eos(buf), "%s ghost", s_suffix(name));
name_at_start = TRUE;
} else if (called) {
- Sprintf(eos(buf), "%s called %s", mdat->mname, name);
+ Sprintf(eos(buf), "%s called %s", pm_name, name);
name_at_start = (boolean)type_is_pname(mdat);
} else if (is_mplayer(mdat) && (bp = strstri(name, " the ")) != 0) {
/* <name> the <adjective> <invisible> <saddled> <rank> */
Strcat(buf, lcase(pbuf));
name_at_start = FALSE;
} else {
- Strcat(buf, mdat->mname);
+ Strcat(buf, pm_name);
name_at_start = (boolean)type_is_pname(mdat);
}