diff --git a/doc/fixes34.4 b/doc/fixes34.4 index 7ab93d466..ec6e902f5 100644 --- a/doc/fixes34.4 +++ b/doc/fixes34.4 @@ -249,6 +249,8 @@ fix phrasing in monster against monster attack feedback when attacker is don't place hero on top of monster when arriving on level which is so full that the monster can't be moved out of the way have to see a divine gift in order to have it become a discovery +honor the never-in-hell flag when selecting random monster type for corpses, + eggs, figurines, and statues created in Gehennom Platform- and/or Interface-Specific Fixes diff --git a/src/mkobj.c b/src/mkobj.c index d7f487a2e..0786fee26 100644 --- a/src/mkobj.c +++ b/src/mkobj.c @@ -1,4 +1,4 @@ -/* SCCS Id: @(#)mkobj.c 3.5 2006/07/08 */ +/* SCCS Id: @(#)mkobj.c 3.5 2006/08/23 */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* NetHack may be freely redistributed. See license for details. */ @@ -308,16 +308,18 @@ rndmonnum() /* select a random, common monster type */ { register struct permonst *ptr; register int i; + unsigned short excludeflags; /* Plan A: get a level-appropriate common monster */ ptr = rndmonst(); if (ptr) return(monsndx(ptr)); /* Plan B: get any common monster */ + excludeflags = G_UNIQ | G_NOGEN | (Inhell ? G_NOHELL : G_HELL); do { i = rn1(SPECIAL_PM - LOW_PM, LOW_PM); ptr = &mons[i]; - } while((ptr->geno & G_NOGEN) || (!Inhell && (ptr->geno & G_HELL))); + } while ((ptr->geno & excludeflags) != 0); return(i); } diff --git a/src/monst.c b/src/monst.c index 95953e99a..af7305661 100644 --- a/src/monst.c +++ b/src/monst.c @@ -297,7 +297,7 @@ NEARDATA struct permonst mons[] = { M3_INFRAVISIBLE, CLR_RED), #ifdef CHARON MON("Cerberus", S_DOG, - LVL(12, 10, 2, 20, -7), (G_HELL|G_UNIQ|1), + LVL(12, 10, 2, 20, -7), (G_NOGEN|G_UNIQ|G_HELL), A(ATTK(AT_BITE, AD_PHYS, 3, 6), ATTK(AT_BITE, AD_PHYS, 3, 6), ATTK(AT_BITE, AD_PHYS, 3, 6), NO_ATTK, NO_ATTK, NO_ATTK), SIZ(1000, 350, MS_BARK, MZ_LARGE), MR_FIRE, MR_FIRE,