Fixed logic, documented it in notes and tests
[open-adventure.git] / main.c
diff --git a/main.c b/main.c
index 766082b13bf481d348417ffb9dc2de9b7576b8d5..cf5d396c37e4af6ed2ba46ba391c6734973e552f 100644 (file)
--- a/main.c
+++ b/main.c
@@ -25,7 +25,7 @@
 
 #define DIM(a) (sizeof(a)/sizeof(a[0]))
 
-FILE  *logfp = NULL, *rfp = NULL;
+FILE *logfp = NULL;
 bool oldstyle = false;
 bool prompt = true;
 
@@ -61,8 +61,9 @@ int main(int argc, char *argv[])
     /*  Options. */
 
 #ifndef ADVENT_NOSAVE
-    const char* opts = "l:or";
+    const char* opts = "l:or:";
     const char* usage = "Usage: %s [-l logfilename] [-o] [-r restorefilename]\n";
+    FILE *rfp = NULL;
 #else
     const char* opts = "l:o";
     const char* usage = "Usage: %s [-l logfilename] [-o]\n";
@@ -110,9 +111,6 @@ int main(int argc, char *argv[])
     /*  Initialize game variables */
     long seedval = initialise();
 
-    /*  Start-up, dwarf stuff */
-    make_zzword(game.zzword);
-
 #ifndef ADVENT_NOSAVE
     if (!rfp) {
         game.novice = yes(arbitrary_messages[WELCOME_YOU], arbitrary_messages[CAVE_NEARBY], arbitrary_messages[NO_MESSAGE]);
@@ -144,8 +142,6 @@ static bool fallback_handler(char *buf)
         printf("Seed set to %ld\n", sv);
         // autogenerated, so don't charge user time for it.
         --game.turns;
-        // here we reconfigure any global game state that uses random numbers
-        make_zzword(game.zzword);
         return true;
     }
     return false;
@@ -382,26 +378,26 @@ static bool dwarfmove(void)
                 game.newloc = travel[kk].dest;
                 /* Have we avoided a dwarf encounter? */
                 if (SPECIAL(game.newloc))
-                   continue;
+                    continue;
                 else if (!INDEEP(game.newloc))
-                   continue;
-               else if (game.newloc == game.odloc[i])
-                   continue;
+                    continue;
+                else if (game.newloc == game.odloc[i])
+                    continue;
                 else if (j > 1 && game.newloc == tk[j - 1])
-                   continue;
-               else if (j >= DIM(tk) - 1)
-                   continue;
-               else if (game.newloc == game.dloc[i])
-                   continue;
-               else if (FORCED(game.newloc))
-                   continue;
-               else if (i == PIRATE && CNDBIT(game.newloc, COND_NOARRR))
-                   continue;
-               else if (travel[kk].nodwarves)
-                   continue;
-               tk[j++] = game.newloc;
+                    continue;
+                else if (j >= DIM(tk) - 1)
+                    continue;
+                else if (game.newloc == game.dloc[i])
+                    continue;
+                else if (FORCED(game.newloc))
+                    continue;
+                else if (i == PIRATE && CNDBIT(game.newloc, COND_NOARRR))
+                    continue;
+                else if (travel[kk].nodwarves)
+                    continue;
+                tk[j++] = game.newloc;
             } while
-               (!travel[kk++].stop);
+            (!travel[kk++].stop);
         tk[j] = game.odloc[i];
         if (j >= 2)
             --j;
@@ -501,7 +497,7 @@ static bool traveleq(long a, long b)
 /* Are two travel entries equal for purposes of skip after failed condition? */
 {
     return (travel[a].cond == travel[b].cond)
-       && (travel[a].dest == travel[b].dest);
+           && (travel[a].dest == travel[b].dest);
 }
 
 /*  Given the current location in "game.loc", and a motion verb number in
@@ -641,7 +637,7 @@ static bool playermove( int motion)
                         BUG(CONDITIONAL_TRAVEL_ENTRY_WITH_NO_ALTERATION); // LCOV_EXCL_LINE
                     ++te_tmp;
                 } while
-                   (traveleq(travel_entry, te_tmp));
+                (traveleq(travel_entry, te_tmp));
                 travel_entry = te_tmp;
             }
 
@@ -683,7 +679,7 @@ static bool playermove( int motion)
                             BUG(CONDITIONAL_TRAVEL_ENTRY_WITH_NO_ALTERATION); // LCOV_EXCL_LINE
                         ++te_tmp;
                     } while
-                       (traveleq(travel_entry, te_tmp));
+                    (traveleq(travel_entry, te_tmp));
                     travel_entry = te_tmp;
                     continue; /* goto L12 */
                 case 3: