lookat of high priests

One from <Someone>'s list:  there's no particular reason for
the High Priest of Moloch in the temple on the sanctum level in
Gehennom to have his identity concealed when he's detected from
a distance.  I also changed the concealment of the Astral Plane
to stop when you're adjacent to the priest, since #chat--among
other things, such as simply entering the temple--provides other
means of identifying which temple it is once you're there.

Files patched:
  include/extern.h
  src/do_name.c, pager.c
This commit is contained in:
nethack.rankin
2002-01-19 06:52:03 +00:00
parent cea4a603b2
commit 43a1eadc9c
4 changed files with 35 additions and 19 deletions

View File

@@ -388,6 +388,7 @@ going down to floor using > should set Heart of Ahriman invocation timeout
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

View File

@@ -332,6 +332,7 @@ E char *FDECL(y_monnam, (struct monst *));
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

View File

@@ -1,4 +1,4 @@
/* 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. */
@@ -268,10 +268,7 @@ do_mname()
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);
@@ -844,6 +841,27 @@ register struct monst *mtmp;
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",

View File

@@ -1,4 +1,4 @@
/* 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. */
@@ -98,26 +98,22 @@ lookat(x, y, buf, monbuf)
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 (mtmp != (struct monst *) 0) {
char *name, monnambuf[BUFSZ];
boolean accurate = !Hallucination;
if (hp && !Hallucination)
name = (mtmp->female ? "high priestess" : "high priest");
else if (mtmp->data == &mons[PM_COYOTE] && !Hallucination)
name = coyotename(mtmp, coybuf);
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)) ?