Fix things so seed doesn't cost clock time.
[open-adventure.git] / main.c
diff --git a/main.c b/main.c
index 53aff69af94fd7088b4c1a1425da42a954527ab4..ea620fce3fa26c232a65cc956daad25862d29511 100644 (file)
--- a/main.c
+++ b/main.c
@@ -8,8 +8,9 @@
 #include <stdbool.h>
 #include <getopt.h>
 #include <signal.h>
+#include <time.h>
 #include "main.h"
-#include "database/database.h"
+#include "database.h"
 #include "misc.h"
 
 long ABB[186], ATLOC[186], BLKLIN = true, DFLAG,
@@ -29,7 +30,7 @@ long ABBNUM, AMBER, ATTACK, AXE, BACK, BATTER, BEAR, BIRD, BLOOD, BONUS,
                I, INVENT, IGO, IWEST, J, JADE, K, K2, KEYS, KK,
                KNFLOC, KNIFE, KQ, L, LAMP, LIMIT, LL,
                LMWARN, LOC, LOCK, LOOK,
-               MAGZIN, MAXDIE, MAXTRS, MESH = 123456789,
+               MAGZIN, MAXDIE, MAXTRS,
                MESSAG, MIRROR, MXSCOR,
                NEWLOC, NOVICE, NUGGET, NUL, NUMDIE, OBJ,
                ODLOC[7], OGRE, OIL, OLDLC2, OLDLOC, OLDOBJ, OYSTER,
@@ -109,7 +110,8 @@ int main(int argc, char *argv[]) {
        lcgstate.a = 1093;
        lcgstate.c = 221587;
        lcgstate.m = 1048576;
-       long seedval = (long)time(NULL);
+       srand(time(NULL));
+       long seedval = (long)rand();
        set_seed(seedval);
 
 /*  Read the database if we have not yet done so */
@@ -130,7 +132,7 @@ int main(int argc, char *argv[]) {
 
 L1:    SETUP= -1;
        I=0;
-       ZZWORD=RNDVOC(3,0)+MESH*2;
+       ZZWORD=RNDVOC(3,0);
        NOVICE=YES(stdin, 65,1,0);
        NEWLOC=1;
        LOC=1;
@@ -154,8 +156,10 @@ static bool fallback_handler(signed char *buf)
     if (sscanf(buf, "seed %ld", &sv) == 1) {
        set_seed(sv);
        printf("Seed set to %ld\n", sv);
+       // autogenerated, so don't charge user time for it.
+       --TURNS;
        // here we reconfigure any global game state that uses random numbers
-       ZZWORD=RNDVOC(3,0)+MESH*2;
+       ZZWORD=RNDVOC(3,0);
        return true;
     }
     return false;
@@ -920,4 +924,5 @@ L12400: LIMIT= -1;
 L18999: RSPEAK(SPK);
 L19000: RSPEAK(136);
        score(0);
+       return true;
 }