From: cohrs Date: Tue, 21 Oct 2003 16:20:18 +0000 (+0000) Subject: U704 - creating unappropriate hell random monsters X-Git-Tag: MOVE2GIT~1665 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6c63831645cacb5045f3411e0a025154d823d29a;p=nethack U704 - creating unappropriate hell random monsters When changing levels, the state of rndmonst() is reset, causing the monster choices to be recalculated. However, the frequency counts for initial uncommon() monsters were never cleared. Thus, if the first non-extinct monster were a hell monster, and you returned to the main dungeon, the hell monster will remain in the list and could be selected. --- diff --git a/doc/fixes34.3 b/doc/fixes34.3 index 9614676ef..9f6247141 100644 --- a/doc/fixes34.3 +++ b/doc/fixes34.3 @@ -64,6 +64,7 @@ prevent boulder option from accepting a symbol that matches a monster symbol traveling while standing on a trap would sometime step in the wrong direction avoid traveling into water/lava, using usual running rules unchanging iron golem would still rehumanize in a rust trap +fix an impossible rndmonst: bad `mndx' bug Platform- and/or Interface-Specific Fixes diff --git a/src/makemon.c b/src/makemon.c index 123de5da1..a6cd84f42 100644 --- a/src/makemon.c +++ b/src/makemon.c @@ -1170,8 +1170,10 @@ rndmonst() rndmonst_state.choice_count = 0; /* look for first common monster */ - for (mndx = LOW_PM; mndx < SPECIAL_PM; mndx++) + for (mndx = LOW_PM; mndx < SPECIAL_PM; mndx++) { if (!uncommon(mndx)) break; + rndmonst_state.mchoices[mndx] = 0; + } if (mndx == SPECIAL_PM) { /* evidently they've all been exterminated */ #ifdef DEBUG