diff --git a/include/extern.h b/include/extern.h index a2ff304da..ade96f43c 100644 --- a/include/extern.h +++ b/include/extern.h @@ -707,9 +707,11 @@ extern char *x_monnam(struct monst *, int, const char *, int, boolean) NONNULLAR extern char *l_monnam(struct monst *) NONNULLARG1; extern char *mon_nam(struct monst *) NONNULLARG1; extern char *noit_mon_nam(struct monst *) NONNULLARG1; +extern char *noit_or_your_mon_nam(struct monst *) NONNULLARG1; extern char *some_mon_nam(struct monst *) NONNULLARG1; extern char *Monnam(struct monst *) NONNULLARG1; extern char *noit_Monnam(struct monst *) NONNULLARG1; +extern char *noit_or_your_Monnam(struct monst *) NONNULLARG1; extern char *Some_Monnam(struct monst *) NONNULLARG1; extern char *noname_monnam(struct monst *, int) NONNULLARG1; extern char *m_monnam(struct monst *) NONNULLARG1; diff --git a/src/do_name.c b/src/do_name.c index d3943b7cf..76dbae9bc 100644 --- a/src/do_name.c +++ b/src/do_name.c @@ -1059,6 +1059,15 @@ noit_mon_nam(struct monst *mtmp) FALSE); } +char * +noit_or_your_mon_nam(struct monst *mtmp) +{ + return x_monnam(mtmp, ARTICLE_THE, (char *) 0, + (has_mgivenname(mtmp) ? (SUPPRESS_SADDLE | SUPPRESS_IT) + : SUPPRESS_IT), + FALSE); +} + /* in between noit_mon_nam() and mon_nam(); if the latter would pick "it", use "someone" (for humanoids) or "something" (for others) instead */ char * @@ -1088,6 +1097,15 @@ noit_Monnam(struct monst *mtmp) return bp; } +char * +noit_or_your_Monnam(struct monst *mtmp) +{ + char *bp = noit_or_your_mon_nam(mtmp); + + *bp = highc(*bp); + return bp; +} + char * Some_Monnam(struct monst *mtmp) { diff --git a/src/dogmove.c b/src/dogmove.c index ad499b7f4..9c18b93ff 100644 --- a/src/dogmove.c +++ b/src/dogmove.c @@ -286,8 +286,10 @@ dog_eat(struct monst *mtmp, if (tunnels(mtmp->data)) pline_mon(mtmp, "%s digs in.", noit_Monnam(mtmp)); else - pline_mon(mtmp, "%s %s %s.", noit_Monnam(mtmp), - devour ? "devours" : "eats", obj_name); + pline_mon(mtmp, "%s %s %s.", + devour ? noit_or_your_Monnam(mtmp) + : noit_Monnam(mtmp), + devour ? "devours" : "eats", obj_name); } else if (seeobj) { obj_name = distant_name(obj, doname); pline("It %s %s.", devour ? "devours" : "eats", obj_name); diff --git a/src/zap.c b/src/zap.c index dca9a97c0..261fd3914 100644 --- a/src/zap.c +++ b/src/zap.c @@ -3586,7 +3586,7 @@ miss(const char *str, struct monst *mtmp) { pline("%s %s %s.", The(str), vtense(str, "miss"), ((cansee(gb.bhitpos.x, gb.bhitpos.y) || canspotmon(mtmp)) - && flags.verbose) ? mon_nam(mtmp) : "it"); + && flags.verbose) ? ((mtmp->mtame) ? noit_mon_nam(mtmp) : mon_nam(mtmp)) : "it"); } staticfn void