^X feedback when held by unseen monster

When swallowed and blind, the swallowing monster is described
accurately, but being held rather than swallowed describes the
monster as "it".  That's normal, but the status feedback section
of ^X output lists
|You are held by it.
which looks pretty weird.  Change that to be
|You are held by an unseen creature.
This commit is contained in:
PatR
2021-04-13 14:50:12 -07:00
parent 5d6ab55372
commit 519f00e3c4
3 changed files with 17 additions and 6 deletions

View File

@@ -18,7 +18,8 @@
* 2. Add a pointer to your new struct to the mextra struct in this
* file.
* 3. Add a referencing macro at bottom of this file after the mextra
* struct (see MGIVENNAME, EGD, EPRI, ESHK, EMIN, or EDOG for examples).
* struct (see MGIVENNAME, EGD, EPRI, ESHK, EMIN, or EDOG for
* examples).
* 4. If your new field isn't a pointer and requires a non-zero value
* on initialization, add code to init_mextra() in src/makemon.c
* 5. Create a newXX(mtmp) function and possibly a free_XX(mtmp)

View File

@@ -2044,13 +2044,15 @@ minimal_monnam(struct monst *mon, boolean ckloc)
} else if (ckloc && ptr == &mons[PM_LONG_WORM]
&& g.level.monsters[mon->mx][mon->my] != mon) {
Sprintf(outbuf, "%s <%d,%d>",
pmname(&mons[PM_LONG_WORM_TAIL], Mgender(mon)), mon->mx, mon->my);
pmname(&mons[PM_LONG_WORM_TAIL], Mgender(mon)),
mon->mx, mon->my);
} else {
Sprintf(outbuf, "%s%s <%d,%d>",
mon->mtame ? "tame " : mon->mpeaceful ? "peaceful " : "",
pmname(mon->data, Mgender(mon)), mon->mx, mon->my);
if (mon->cham != NON_PM)
Sprintf(eos(outbuf), "{%s}", pmname(&mons[mon->cham], Mgender(mon)));
Sprintf(eos(outbuf), "{%s}",
pmname(&mons[mon->cham], Mgender(mon)));
}
return outbuf;
}

View File

@@ -750,7 +750,7 @@ status_enlightenment(int mode, int final)
{
boolean magic = (mode & MAGICENLIGHTENMENT) ? TRUE : FALSE;
int cap;
char buf[BUFSZ], youtoo[BUFSZ];
char buf[BUFSZ], youtoo[BUFSZ], heldmon[BUFSZ];
boolean Riding = (u.usteed
/* if hero dies while dismounting, u.usteed will still
be set; we want to ignore steed in that situation */
@@ -906,10 +906,18 @@ status_enlightenment(int mode, int final)
} else
you_are(predicament, "");
} /* (u.utrap) */
heldmon[0] = '\0'; /* lint suppression */
if (u.ustuck) { /* includes u.uswallow */
Strcpy(heldmon, a_monnam(u.ustuck));
if (!strcmp(heldmon, "it")
&& (!has_mgivenname(u.ustuck)
|| strcmp(MGIVENNAME(u.ustuck), "it") != 0))
Strcpy(heldmon, "an unseen createure");
}
if (u.uswallow) { /* implies u.ustuck is non-Null */
Sprintf(buf, "%s by %s",
is_animal(u.ustuck->data) ? "swallowed" : "engulfed",
a_monnam(u.ustuck));
heldmon);
if (dmgtype(u.ustuck->data, AD_DGST)) {
/* if final, death via digestion can be deduced by u.uswallow
still being True and u.uswldtim having been decremented to 0 */
@@ -927,7 +935,7 @@ status_enlightenment(int mode, int final)
int dx = u.ustuck->mx - u.ux, dy = u.ustuck->my - u.uy;
Sprintf(buf, "%s %s (%s)", ustick ? "holding" : "held by",
a_monnam(u.ustuck), dxdy_to_dist_descr(dx, dy, TRUE));
heldmon, dxdy_to_dist_descr(dx, dy, TRUE));
you_are(buf, "");
}
if (Riding) {