Move PRNG initialization to simplify cheat.c
[open-adventure.git] / init.c
diff --git a/init.c b/init.c
index 4d05e0fa03c6b4ff02f2f1541c0c61ab228a3ef9..fdde548f879c5e83db88d0f60ae478a5dfa89c94 100644 (file)
--- a/init.c
+++ b/init.c
@@ -2,6 +2,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <stdbool.h>
+#include <time.h>
 
 #include "advent.h"
 
  * Initialisation
  */
 
-void initialise(void)
+long initialise(void)
 {
     if (oldstyle)
         printf("Initialising...\n");
 
+    /* Initialize our LCG PRNG with parameters tested against
+     * Knuth vol. 2. by the original authors */
+    game.lcg_a = 1093;
+    game.lcg_c = 221587;
+    game.lcg_m = 1048576;
+    srand(time(NULL));
+    long seedval = (long)rand();
+    set_seed(seedval);
+
     for (int i = 1; i <= NOBJECTS; i++) {
         game.place[i] = LOC_NOWHERE;
     }
@@ -57,4 +67,6 @@ void initialise(void)
         }
     }
     game.conds = setbit(11);
+
+    return seedval;
 }