Switch to 0-indexing for hint handling code. 127/head
authorJason S. Ninneman <jsn@mbar.us>
Wed, 21 Jun 2017 17:22:45 +0000 (10:22 -0700)
committerJason S. Ninneman <jsn@mbar.us>
Wed, 21 Jun 2017 17:26:23 +0000 (10:26 -0700)
init.c
main.c
score.c

diff --git a/init.c b/init.c
index 220f9cbe197aa6084376683dda0da8934995c9bb..76bdc8ae21732c08e4449120769f81a8149e4aa6 100644 (file)
--- a/init.c
+++ b/init.c
@@ -225,7 +225,7 @@ void initialise(void)
     /*  Clear the hint stuff.  game.hintlc[i] is how long he's been at LOC
      *  with cond bit i.  game.hinted[i] is true iff hint i has been
      *  used. */
-    for (int i = 1; i <= HINT_COUNT; i++) {
+    for (int i = 0; i < HINT_COUNT; i++) {
         game.hinted[i] = false;
         game.hintlc[i] = 0;
     }
diff --git a/main.c b/main.c
index f9d0284e8b775eea35b2bf08965676f60e71ca8d..724194df110d6f73d5434a47f4b9980e8daf8963 100644 (file)
--- a/main.c
+++ b/main.c
@@ -189,18 +189,18 @@ static bool fallback_handler(char *buf)
 static void checkhints(void)
 {
     if (COND[game.loc] >= game.conds) {
-        for (int hint = 1; hint <= HINT_COUNT; hint++) {
+        for (int hint = 0; hint < HINT_COUNT; hint++) {
             if (game.hinted[hint])
                 continue;
-            if (!CNDBIT(game.loc, hint + HBASE))
+            if (!CNDBIT(game.loc, hint + 1 + HBASE))
                 game.hintlc[hint] = -1;
             ++game.hintlc[hint];
             /*  Come here if he's been long enough at required loc(s) for some
              *  unused hint. */
-            if (game.hintlc[hint] >= hints[hint-1].turns) {
+            if (game.hintlc[hint] >= hints[hint].turns) {
                 int i;
 
-                switch (hint - 1) {
+                switch (hint) {
                 case 0:
                     /* cave */
                     if (game.prop[GRATE] == 0 && !HERE(KEYS))
@@ -263,12 +263,12 @@ static void checkhints(void)
 
                 /* Fall through to hint display */
                 game.hintlc[hint] = 0;
-                if (!YES(hints[hint-1].question, arbitrary_messages[NO_MESSAGE], arbitrary_messages[OK_MAN]))
+                if (!YES(hints[hint].question, arbitrary_messages[NO_MESSAGE], arbitrary_messages[OK_MAN]))
                     return;
-                rspeak(HINT_COST, hints[hint-1].penalty, hints[hint-1].penalty);
-                game.hinted[hint] = YES(arbitrary_messages[WANT_HINT], hints[hint-1].hint, arbitrary_messages[OK_MAN]);
+                rspeak(HINT_COST, hints[hint].penalty, hints[hint].penalty);
+                game.hinted[hint] = YES(arbitrary_messages[WANT_HINT], hints[hint].hint, arbitrary_messages[OK_MAN]);
                 if (game.hinted[hint] && game.limit > WARNTIME)
-                    game.limit += WARNTIME * hints[hint-1].penalty;
+                    game.limit += WARNTIME * hints[hint].penalty;
             }
         }
     }
diff --git a/score.c b/score.c
index b2db8a6a54097913ad2068c701533b34b8f66008..cd4b9e6d2ff779ce65ca37decc1667165adc9723 100644 (file)
--- a/score.c
+++ b/score.c
@@ -87,9 +87,9 @@ long score(enum termination mode)
     mxscor += 2;
 
     /* Deduct for hints/turns/saves. Hints < 4 are special; see database desc. */
-    for (long i = 1; i <= HINT_COUNT; i++) {
+    for (long i = 0; i < HINT_COUNT; i++) {
         if (game.hinted[i])
-            score = score - hints[i-1].penalty;
+            score = score - hints[i].penalty;
     }
     if (game.novice)
         score -= 5;