From ed572e5e84900de493fd0970e8a7b64a6fb6de0f Mon Sep 17 00:00:00 2001 From: PatR Date: Fri, 19 May 2017 16:51:05 -0700 Subject: [PATCH] high priest extinction This issue has been around for a while but wasn't noticable to players until some post-3.6.0 tweaking of end of game disclosure. When testing the DUMPLOG artifact_score fix, I level teleported to the Astral Plane and performed a cheat ascension. Final disclosure listed high priests as extinct. Same thing would happen after visiting Moloch's Sanctum instead. (The latter didn't interfere with creating the Astral high priests if you got that far, just as creation of the first one there didn't prevent the other two.) I forget why high priests are flagged as unique (something I think I'm responisble for...), but they shouldn't share unique's setting of extinct during monster creation. (They could be set that way after 4 are created, but this fix doesn't do that. It just treats them like ordinary monsters so you'd need 127 or 255 or some such to make them become extinct. Unlike other creatures with a special creation limit, high priests can be produced when aligned priests gain experience--an event that I don't recall ever noticing happen.) --- doc/fixes36.1 | 3 +++ src/makemon.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/fixes36.1 b/doc/fixes36.1 index 456defcf8..0c8a42b91 100644 --- a/doc/fixes36.1 +++ b/doc/fixes36.1 @@ -424,6 +424,9 @@ minor ^X/enlightenment bugs: grammar when poly'd into '1 hit dice' critter, missing punctuation for "You entered the dungeon N turns ago" when configured with DUMPLOG enabled, artifacts were counted twice towards final score +once Moloch's Sanctum (or Astral Plane via wizard mode level teleport direct + to end-game) was entered, end of game disclosure would reveal that + high priests had been incorrectly flagged as extinct Platform- and/or Interface-Specific Fixes diff --git a/src/makemon.c b/src/makemon.c index c60adfa1f..232e9d9a9 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 makemon.c $NHDT-Date: 1450451931 2015/12/18 15:18:51 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.106 $ */ +/* NetHack 3.6 makemon.c $NHDT-Date: 1495237801 2017/05/19 23:50:01 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.116 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* NetHack may be freely redistributed. See license for details. */ @@ -903,7 +903,7 @@ boolean ghostly; result = (((int) mvitals[mndx].born < lim) && !gone) ? TRUE : FALSE; /* if it's unique, don't ever make it again */ - if (mons[mndx].geno & G_UNIQ) + if ((mons[mndx].geno & G_UNIQ) && mndx != PM_HIGH_PRIEST) mvitals[mndx].mvflags |= G_EXTINCT; if (mvitals[mndx].born < 255 && tally -- 2.50.1