Save/resume fail test coverage -- test works in Docker now
[open-adventure.git] / main.c
diff --git a/main.c b/main.c
index e341d8f4d2bbcd707c8226baf6399f7d3adedc06..7a179212619ba34b306182894dde4205a0032cb9 100644 (file)
--- a/main.c
+++ b/main.c
@@ -77,7 +77,14 @@ int main(int argc, char *argv[])
 
     /*  Options. */
 
-    while ((ch = getopt(argc, argv, "l:or:s")) != EOF) {
+#ifndef ADVENT_NOSAVE
+    char* opts = "l:or:s";
+    char* usage = "Usage: %s [-l logfilename] [-o] [-r restorefilename] [-s] \n";
+#else
+    char* opts = "l:os";
+    char* usage = "Usage: %s [-l logfilename] [-o] [-s] \n";
+#endif
+    while ((ch = getopt(argc, argv, opts)) != EOF) {
         switch (ch) {
         case 'l':
             logfp = fopen(optarg, "w");
@@ -91,6 +98,7 @@ int main(int argc, char *argv[])
             oldstyle = true;
             editline = prompt = false;
             break;
+#ifndef ADVENT_NOSAVE
         case 'r':
             rfp = fopen(optarg, "r");
             if (rfp == NULL)
@@ -99,18 +107,21 @@ int main(int argc, char *argv[])
                         optarg);
             signal(SIGINT, sig_handler);
             break;
+#endif
         case 's':
             editline = false;
             break;
         default:
             fprintf(stderr,
-                    "Usage: %s [-l logfilename] [-o] [-r restorefilename] [-s] \n", argv[0]);
+                    usage, argv[0]);
             fprintf(stderr,
                     "  where -l creates a log file of your game named as specified'\n");
             fprintf(stderr,
                     "        -o 'oldstyle' (no prompt, no command editing, displays 'Initialising...')\n");
+#ifndef ADVENT_NOSAVE
             fprintf(stderr,
                     "        -r indicates restoring from specified saved game file\n");
+#endif
             fprintf(stderr,
                     "        -s indicates playing with command editing suppressed\n");
             exit(-1);
@@ -451,7 +462,7 @@ static bool dwarfmove(void)
     if (game.dtotal == 0)
         return true;
     SETPRM(1, game.dtotal, 0);
-    RSPEAK(DWARF_PACK + 1 / game.dtotal);      /* FIXME: Arithmetic on message number */
+    RSPEAK(game.dtotal == 1 ? DWARF_SINGLE : DWARF_PACK);
     if (attack == 0)
         return true;
     if (game.dflag == 2)game.dflag = 3;
@@ -498,8 +509,7 @@ static void croak(void)
          *  death and exit. */
         RSPEAK(DEATH_CLOSING);
         terminate(endgame);
-    }
-    else if (game.numdie == maximum_deaths || !YES(query, yes_response, arbitrary_messages[OK_MAN]))
+    } else if (game.numdie == maximum_deaths || !YES(query, yes_response, arbitrary_messages[OK_MAN]))
         terminate(endgame);
     else {
         game.place[WATER] = game.place[OIL] = NOWHERE;
@@ -606,7 +616,7 @@ static bool playermove(token_t verb, int motion)
             if (motion == 29 || motion == 30)spk = BAD_DIRECTION;
             if (motion == 7 || motion == 36 || motion == 37)spk = UNSURE_FACING;
             if (motion == 11 || motion == 19)spk = NO_INOUT_HERE;
-            if (verb == FIND || verb == INVENT)spk = NEreplace;
+            if (verb == FIND || verb == INVENT)spk = NEARBY;
             if (motion == 62 || motion == 65)spk = NOTHING_HAPPENS;
             if (motion == 17)spk = WHICH_WAY;
             RSPEAK(spk);
@@ -619,7 +629,7 @@ static bool playermove(token_t verb, int motion)
     do {
         /*
          * (ESR) This special-travel loop may have to be repeated if it includes
-         * the plover passage.  Same deal for any future cases wgerw we beed to
+         * the plover passage.  Same deal for any future cases where we need to
          * block travel and then redo it once the blocking condition has been
          * removed.
          */
@@ -644,7 +654,7 @@ static bool playermove(token_t verb, int motion)
                     ++kk;
                     game.newloc = labs(TRAVEL[kk]) / 1000;
                 } while
-                    (game.newloc == scratchloc);
+                (game.newloc == scratchloc);
                 scratchloc = game.newloc;
             }
 
@@ -652,7 +662,7 @@ static bool playermove(token_t verb, int motion)
             if (!SPECIAL(game.newloc))
                 return true;
             if (game.newloc <= 500) {
-                game.newloc = game.newloc - SPECIALBASE;
+                game.newloc -= SPECIALBASE;
                 switch (game.newloc) {
                 case 1:
                     /*  Travel 301.  Plover-alcove passage.  Can carry only
@@ -678,7 +688,7 @@ static bool playermove(token_t verb, int motion)
                         ++kk;
                         game.newloc = labs(TRAVEL[kk]) / 1000;
                     } while
-                        (game.newloc == scratchloc);
+                    (game.newloc == scratchloc);
                     scratchloc = game.newloc;
                     continue; /* goto L12 */
                 case 3:
@@ -711,6 +721,7 @@ static bool playermove(token_t verb, int motion)
                         game.prop[BEAR] = 3;
                         game.oldlc2 = game.newloc;
                         croak();
+                        return true;
                     }
                 }
                 BUG(SPECIAL_TRAVEL_500_GT_L_GT_300_EXCEEDS_GOTO_LIST);
@@ -856,7 +867,7 @@ static void lampcheck(void)
         game.prop[BATTERY] = 1;
         if (TOTING(BATTERY))
             DROP(BATTERY, game.loc);
-        game.limit = game.limit + 2500;
+        game.limit += BATTERYLIFE;
         game.lmwarn = false;
     } else if (game.limit == 0) {
         game.limit = -1;
@@ -982,7 +993,8 @@ static bool do_command(FILE *cmdin)
             else
                 continue;      /* back to top of main interpreter loop */
         }
-        if (game.loc == 33 && PCT(25) && !game.closng)RSPEAK(SAYS_PLUGH);
+        if (game.loc == LOC_Y2 && PCT(25) && !game.closng)
+            RSPEAK(SAYS_PLUGH);
 
         listobjects();