]> granicus.if.org Git - nethack/commitdiff
lookat of high priests
authornethack.rankin <nethack.rankin>
Sat, 19 Jan 2002 06:52:03 +0000 (06:52 +0000)
committernethack.rankin <nethack.rankin>
Sat, 19 Jan 2002 06:52:03 +0000 (06:52 +0000)
     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

doc/fixes33.2
include/extern.h
src/do_name.c
src/pager.c

index 1e2adca45daa27884ec92663ce57d3f524e95574..ab716e1be78deda3ab0de1569b4f284e4f2c954a 100644 (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
index 6508184c131ab94dc167be88a54b5fa5f63971d0..2a40f3df43915a610d2597ca879eeed8eea066a1 100644 (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
index a1e0bfec918d5db622a29aa36476b246ca48745a..b24b81668abbcaeb1d8035c4762ce2c277e47fad 100644 (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",
index 08d469eac9dacf0416af653586a5707b960d2d1b..143a8ca541cdd31abae5b987611aec906f337871 100644 (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 (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)) ?