Fix bug that made YES() case-sensitive.
[open-adventure.git] / main.c
diff --git a/main.c b/main.c
index 21fedadb11b7e5ff1af2cb2a393ac8f2aee1017b..b97e44c24872de5d95d1d6a3db6ee437b748301b 100644 (file)
--- a/main.c
+++ b/main.c
@@ -135,7 +135,7 @@ int main(int argc, char *argv[])
     game.loc = LOC_START;
     game.limit = 330;
     if (!rfp) {
-        game.novice = YES(stdin, WELCOME_YOU, CAVE_NEARBY, NO_MESSAGE);
+        game.novice = YES(WELCOME_YOU, CAVE_NEARBY, NO_MESSAGE);
         if (game.novice)game.limit = 1000;
     } else {
         restore(rfp);
@@ -251,11 +251,11 @@ static void checkhints(FILE *cmdin)
 
                 /* Fall through to hint display */
                 game.hintlc[hint] = 0;
-                if (!YES(cmdin, HINTS[hint][3], NO_MESSAGE, OK_MAN))
+                if (!YES(HINTS[hint][3], NO_MESSAGE, OK_MAN))
                     return;
                 SETPRM(1, HINTS[hint][2], HINTS[hint][2]);
                 RSPEAK(HINT_COST);
-                game.hinted[hint] = YES(cmdin, WANT_HINT, HINTS[hint][4], OK_MAN);
+                game.hinted[hint] = YES(WANT_HINT, HINTS[hint][4], OK_MAN);
                 if (game.hinted[hint] && game.limit > WARNTIME)
                     game.limit += WARNTIME * HINTS[hint][2];
             }
@@ -485,7 +485,7 @@ static void croak(FILE *cmdin)
         terminate(endgame);
     }
     /* FIXME: Arithmetic on message numbers */
-    else if (game.numdie == MAXDIE || !YES(cmdin, WATCH_IT + game.numdie * 2, WHICH_WAY + game.numdie * 2, OK_MAN))
+    else if (game.numdie == MAXDIE || !YES(WATCH_IT + game.numdie * 2, WHICH_WAY + game.numdie * 2, OK_MAN))
         terminate(endgame);
     else {
         game.place[WATER] = game.place[OIL] = NOWHERE;
@@ -623,6 +623,7 @@ static bool playermove(FILE *cmdin, token_t verb, int motion)
                 /* else fall through */
             } else if (game.prop[motion] != game.newloc / 100 - 3)
                 break;
+       L12:
             do {
                 if (TRAVEL[kk] < 0)BUG(25);
                 ++kk;
@@ -645,10 +646,10 @@ static bool playermove(FILE *cmdin, token_t verb, int motion)
                  *  actual motion, but can be spotted by "go back". */
                 /* FIXME: Arithmetic on location numbers */
                 game.newloc = 99 + 100 - game.loc;
-                if (game.holdng == 0 || (game.holdng == 1 && TOTING(EMRALD)))
-                    return true;
-                game.newloc = game.loc;
-                RSPEAK(MUST_DROP);
+                if (game.holdng > 1 || (game.holdng == 1 && !TOTING(EMRALD))) {
+                   game.newloc = game.loc;
+                   RSPEAK(MUST_DROP);
+               }
                 return true;
             case 2:
                 /*  Travel 302.  Plover transport.  Drop the emerald (only use
@@ -656,13 +657,7 @@ static bool playermove(FILE *cmdin, token_t verb, int motion)
                  *  plover-passage to get it out.  Having dropped it, go back and
                  *  pretend he wasn't carrying it after all. */
                 DROP(EMRALD, game.loc);
-                do {
-                    if (TRAVEL[kk] < 0)BUG(25);
-                    ++kk;
-                    game.newloc = labs(TRAVEL[kk]) / 1000;
-                } while
-                (game.newloc == scratchloc);
-                continue;      /* back to top of do/while loop */
+               goto L12;
             case 3:
                 /*  Travel 303.  Troll bridge.  Must be done only as special
                  *  motion so that dwarves won't wander across and encounter
@@ -693,13 +688,12 @@ static bool playermove(FILE *cmdin, token_t verb, int motion)
                     game.prop[BEAR] = 3;
                     game.oldlc2 = game.newloc;
                     croak(cmdin);
-                    return false;
                 }
             }
             BUG(20);
         }
     } while
-    (false);
+       (false);
     /* FIXME: Arithmetic on location number, becoming a message number */
     RSPEAK(game.newloc - 500);
     game.newloc = game.loc;