riding a steed into water kills the steed if it cannot swim, with penalties
gaze attacks now stop occupation
proper death message when killed by "plain" high priest
+don't conceal the identity of Moloch's high priest
blessed full healing can't recover levels lost when polymorphing into new man
blessed full healing can reciver at most half of other lost levels
golden glow when praying will recover lost level if blessed full healing could
E char *FDECL(Adjmonnam, (struct monst *,const char *));
E char *FDECL(Amonnam, (struct monst *));
E char *FDECL(a_monnam, (struct monst *));
+E char *FDECL(distant_monnam, (struct monst *,int,char *));
E const char *NDECL(rndmonnam);
E const char *FDECL(hcolor, (const char *));
#ifdef REINCARNATION
-/* SCCS Id: @(#)do_name.c 3.3 2000/06/12 */
+/* SCCS Id: @(#)do_name.c 3.3 2002/01/17 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
return(0);
}
/* special case similar to the one in lookat() */
- if (mtmp->data != &mons[PM_HIGH_PRIEST])
- Strcpy(buf, x_monnam(mtmp, ARTICLE_THE, (char *)0, 0, TRUE));
- else
- Sprintf(buf, "the high priest%s", mtmp->female ? "ess" : "");
+ (void) distant_monnam(mtmp, ARTICLE_THE, buf);
Sprintf(qbuf, "What do you want to call %s?", buf);
getlin(qbuf,buf);
if(!*buf || *buf == '\033') return(0);
return(bp);
}
+/* used for monster ID by the '/', ';', and 'C' commands to block remote
+ identification of the endgame altars via their attending priests */
+char *
+distant_monnam(mon, article, outbuf)
+struct monst *mon;
+int article; /* only ARTICLE_NONE and ARTICLE_THE are handled here */
+char *outbuf;
+{
+ /* high priest(ess)'s identity is concealed on the Astral Plane,
+ unless you're adjacent (overridden for hallucination which does
+ its own obfuscation) */
+ if (mon->data == &mons[PM_HIGH_PRIEST] && !Hallucination &&
+ Is_astralevel(&u.uz) && distu(mon->mx, mon->my) > 2) {
+ Strcpy(outbuf, article == ARTICLE_THE ? "the " : "");
+ Strcat(outbuf, mon->female ? "high priestess" : "high priest");
+ } else {
+ Strcpy(outbuf, x_monnam(mon, article, (char *)0, 0, TRUE));
+ }
+ return outbuf;
+}
+
static const char *bogusmons[] = {
"jumbo shrimp", "giant pigmy", "gnu", "killer penguin",
"giant cockroach", "giant slug", "maggot", "pterodactyl",
-/* SCCS Id: @(#)pager.c 3.3 2001/06/10 */
+/* SCCS Id: @(#)pager.c 3.3 2002/01/17 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
bhitpos.x = x;
bhitpos.y = y;
mtmp = m_at(x,y);
- if(mtmp != (struct monst *) 0) {
- register boolean hp = (mtmp->data == &mons[PM_HIGH_PRIEST]);
- char coybuf[QBUFSZ];
- char *name;
-
- if (hp && !Hallucination)
- name = (mtmp->female ? "high priestess" : "high priest");
- else if (mtmp->data == &mons[PM_COYOTE] && !Hallucination)
- name = coyotename(mtmp, coybuf);
+ if (mtmp != (struct monst *) 0) {
+ char *name, monnambuf[BUFSZ];
+ boolean accurate = !Hallucination;
+
+ if (mtmp->data == &mons[PM_COYOTE] && accurate)
+ name = coyotename(mtmp, monnambuf);
else
- name = x_monnam(mtmp, ARTICLE_NONE, (char *)0, 0, TRUE);
+ name = distant_monnam(mtmp, ARTICLE_NONE, monnambuf);
pm = mtmp->data;
Sprintf(buf, "%s%s%s",
(mtmp->mx != x || mtmp->my != y) ?
- ((mtmp->isshk && !Hallucination)
+ ((mtmp->isshk && accurate)
? "tail of " : "tail of a ") : "",
- (!hp && mtmp->mtame && !Hallucination) ? "tame " :
- (!hp && mtmp->mpeaceful && !Hallucination) ?
- "peaceful " : "",
+ (mtmp->mtame && accurate) ? "tame " :
+ (mtmp->mpeaceful && accurate) ? "peaceful " : "",
name);
if (u.ustuck == mtmp)
Strcat(buf, (Upolyd && sticks(youmonst.data)) ?