From 7e72bc0944491c4d6b3d0094f488722ea558ca07 Mon Sep 17 00:00:00 2001 From: Bart House Date: Sat, 6 Jul 2019 14:18:02 -0700 Subject: [PATCH] mklev() set xxstairs_room pointers back to NULL upon completion. When mklev() is called multiple times, previous state stored in the xxstairs_room pointers can be mistakenly used when making decisions about the new level being constructed. This caused non-deterministic level creation behavior when replaying from a snapshot. --- src/mklev.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mklev.c b/src/mklev.c index 525e0a58e..10f019f82 100644 --- a/src/mklev.c +++ b/src/mklev.c @@ -1016,6 +1016,10 @@ mklev() for (ridx = 0; ridx < SIZE(rooms); ridx++) rooms[ridx].orig_rtype = rooms[ridx].rtype; + dnstairs_room = NULL; + upstairs_room = NULL; + sstairs_room = NULL; + reseed_random(rn2); reseed_random(rn2_on_display_rng); }