From 6c63831645cacb5045f3411e0a025154d823d29a Mon Sep 17 00:00:00 2001 From: cohrs Date: Tue, 21 Oct 2003 16:20:18 +0000 Subject: [PATCH] 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. --- doc/fixes34.3 | 1 + src/makemon.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) 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 -- 2.40.0