Improve documentation if the *most* obscure span of code.
[open-adventure.git] / main.c
diff --git a/main.c b/main.c
index 8acae39e43bc2b94aea85d3147643a2f995dcf04..75cdf371229852fda434b5ed43f0fee0e05ca20a 100644 (file)
--- a/main.c
+++ b/main.c
@@ -250,7 +250,7 @@ static void checkhints(void)
                     game.hintlc[hint] = 0;
                     return;
                 default:
-                    BUG(HINT_NUMBER_EXCEEDS_GOTO_LIST);
+                    BUG(HINT_NUMBER_EXCEEDS_GOTO_LIST); // LCOV_EXCL_LINE
                     break;
                 }
 
@@ -524,7 +524,7 @@ static bool playermove(token_t verb, int motion)
     int scratchloc, k2, kk = tkey[game.loc];
     game.newloc = game.loc;
     if (kk == 0)
-        BUG(LOCATION_HAS_NO_TRAVEL_ENTRIES);
+        BUG(LOCATION_HAS_NO_TRAVEL_ENTRIES); // LCOV_EXCL_LINE
     if (motion == NUL)
         return true;
     else if (motion == BACK) {
@@ -625,22 +625,26 @@ static bool playermove(token_t verb, int motion)
         for (;;) { /* L12 loop */
             for (;;) {
                 game.newloc = scratchloc / 1000;
-                motion = MOD(game.newloc, 100);
+                long arg = MOD(game.newloc, 100);
                 if (!SPECIAL(game.newloc)) {
+                   /* YAML N and [pct N] conditionals */
                     if (game.newloc <= 100) {
                         if (game.newloc == 0 || PCT(game.newloc))
                             break;
                         /* else fall through */
                     }
-                   /* handles the YAML "with" clause */
-                    if (TOTING(motion) || (game.newloc > 200 && AT(motion)))
+                   /* YAML [with OBJ] clause */
+                    if (TOTING(arg) || (game.newloc > 200 && AT(arg)))
                         break;
-                    /* else fall through */
-                } else if (game.prop[motion] != game.newloc / 100 - 3)
+                    /* else fall through to check [not OBJ STATE] */
+                } else if (game.prop[arg] != game.newloc / 100 - 3)
                     break;
-                do {
+
+               /* We arrive here on conditional failure.
+                * Skip to next non-matching destination */
+               do {
                     if (travel[kk].stop)
-                        BUG(CONDITIONAL_TRAVEL_ENTRY_WITH_NO_ALTERATION);
+                        BUG(CONDITIONAL_TRAVEL_ENTRY_WITH_NO_ALTERATION); // LCOV_EXCL_LINE
                     ++kk;
                     game.newloc = T_HIGH(travel[kk]);
                 } while
@@ -681,7 +685,7 @@ static bool playermove(token_t verb, int motion)
                     drop(EMERALD, game.loc);
                     do {
                         if (travel[kk].stop)
-                            BUG(CONDITIONAL_TRAVEL_ENTRY_WITH_NO_ALTERATION);
+                            BUG(CONDITIONAL_TRAVEL_ENTRY_WITH_NO_ALTERATION); // LCOV_EXCL_LINE
                         ++kk;
                         game.newloc = T_HIGH(travel[kk]);
                     } while
@@ -717,13 +721,13 @@ static bool playermove(token_t verb, int motion)
                         game.prop[TROLL] = 2;
                         drop(BEAR, game.newloc);
                         game.fixed[BEAR] = -1;
-                        game.prop[BEAR] = 3;
+                        game.prop[BEAR] = BEAR_DEAD;
                         game.oldlc2 = game.newloc;
                         croak();
                         return true;
                     }
                default:
-                   BUG(SPECIAL_TRAVEL_500_GT_L_GT_300_EXCEEDS_GOTO_LIST);
+                   BUG(SPECIAL_TRAVEL_500_GT_L_GT_300_EXCEEDS_GOTO_LIST); // LCOV_EXCL_LINE
                 }
             }
             break; /* Leave L12 loop */
@@ -780,7 +784,8 @@ static bool closecheck(void)
         move(TROLL2, objects[TROLL].plac);
         move(TROLL2 + NOBJECTS, objects[TROLL].fixd);
         juggle(CHASM);
-        if (game.prop[BEAR] != 3)DESTROY(BEAR);
+        if (game.prop[BEAR] != BEAR_DEAD)
+           DESTROY(BEAR);
         game.prop[CHAIN] = 0;
         game.fixed[CHAIN] = 0;
         game.prop[AXE] = 0;
@@ -1113,7 +1118,7 @@ Lookup:
             rspeak(kmod);
             goto L2012;
         default:
-            BUG(VOCABULARY_TYPE_N_OVER_1000_NOT_BETWEEN_0_AND_3);
+            BUG(VOCABULARY_TYPE_N_OVER_1000_NOT_BETWEEN_0_AND_3); // LCOV_EXCL_LINE
         }
 
 Laction:
@@ -1150,7 +1155,7 @@ Laction:
             rspeak(DWARVES_AWAKEN);
             terminate(endgame);
         default:
-            BUG(ACTION_RETURNED_PHASE_CODE_BEYOND_END_OF_SWITCH);
+            BUG(ACTION_RETURNED_PHASE_CODE_BEYOND_END_OF_SWITCH); // LCOV_EXCL_LINE
         }
     }
 }