diff --git a/src/do.c b/src/do.c index e069c3ac6..ad2e3045d 100644 --- a/src/do.c +++ b/src/do.c @@ -1420,6 +1420,7 @@ boolean at_stairs, falling, portal; /* we'll reach here if running in wizard mode */ error("Cannot continue this game."); } + reseed_random(); minit(); /* ZEROCOMP */ getlev(fd, hackpid, new_ledger, FALSE); (void) nhclose(fd); diff --git a/src/hacklib.c b/src/hacklib.c index 8ceb9fcde..409c34007 100644 --- a/src/hacklib.c +++ b/src/hacklib.c @@ -917,6 +917,17 @@ init_random() set_random(seed); } +/* Reshuffles the random number generator. */ +void +reseed_random() +{ + /* only reseed if we are certain that the seed generation is unguessable + * by the players. */ +#ifdef DEV_RANDOM + init_random(); +#endif +} + time_t getnow() { diff --git a/src/mklev.c b/src/mklev.c index 16cc32bde..4cf5b9000 100644 --- a/src/mklev.c +++ b/src/mklev.c @@ -982,6 +982,8 @@ mklev() struct mkroom *croom; int ridx; + reseed_random(); + init_mapseen(&u.uz); if (getbones()) return; @@ -1009,6 +1011,8 @@ mklev() entered; rooms[].orig_rtype always retains original rtype value */ for (ridx = 0; ridx < SIZE(rooms); ridx++) rooms[ridx].orig_rtype = rooms[ridx].rtype; + + reseed_random(); } void