Merge branch 'master' into actions-arithmetic
[open-adventure.git] / main.c
diff --git a/main.c b/main.c
index 26f1f705303f8b6f58d1fca8b1ad06d0979e44a2..1c1b299017a91b740e9b8def7cef69d04eb1ac09 100644 (file)
--- a/main.c
+++ b/main.c
@@ -127,8 +127,8 @@ int main(int argc, char *argv[])
     /*  Start-up, dwarf stuff */
     game.zzword=RNDVOC(3,0);
     game.novice=YES(stdin, WELCOME_YOU,CAVE_NEARBY,ARB_0);
-    game.newloc=1;
-    game.loc=1;
+    game.newloc = LOC_START;
+    game.loc = LOC_START;
     game.limit=330;
     if (game.novice)game.limit=1000;
 
@@ -176,7 +176,7 @@ static void checkhints(FILE *cmdin)
            ++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]) 
+           if (game.hintlc[hint] >= HINTS[hint][1])
            {
                int i;
 
@@ -324,7 +324,7 @@ static bool dwarfmove(void)
     int kk, stick, attack;
     long tk[21];
 
-       /*  Dwarf stuff.  See earlier comments for description of
+    /*  Dwarf stuff.  See earlier comments for description of
      *  variables.  Remember sixth dwarf is pirate and is thus
      *  very different except for motion rules. */
 
@@ -490,16 +490,16 @@ static void croak(FILE *cmdin)
            int i=NOBJECTS + 1 - j;
            if (TOTING(i)) {
                /* Always leave lamp where it's accessible aboveground */
-               DROP(i, (i == LAMP) ? 1 : game.oldlc2);
+               DROP(i, (i == LAMP) ? LOC_START : game.oldlc2);
            }
        }
-       game.loc=3;
+       game.loc = LOC_BUILDING;
        game.oldloc=game.loc;
     }
 }
 
 /*  Given the current location in "game.loc", and a motion verb number in
- *  "K", put the new location in "game.newloc".  The current loc is saved
+ *  "motion", put the new location in "game.newloc".  The current loc is saved
  *  in "game.oldloc" in case he wants to retreat.  The current
  *  game.oldloc is saved in game.oldlc2, in case he dies.  (if he
  *  does, game.newloc will be limbo, and game.oldloc will be what killed
@@ -556,9 +556,10 @@ static bool playermove(FILE *cmdin, token_t verb, int motion)
     }
     else if (motion == LOOK) {
        /*  Look.  Can't give more detail.  Pretend it wasn't dark
-        *  (though it may "now" be dark) so he won't fall into a
+        *  (though it may now be dark) so he won't fall into a
         *  pit while staring into the gloom. */
-       if (game.detail < 3)RSPEAK(NO_MORE_DETAIL);
+       if (game.detail < 3)
+           RSPEAK(NO_MORE_DETAIL);
        ++game.detail;
        game.wzdark=false;
        game.abbrev[game.loc]=0;
@@ -566,7 +567,7 @@ static bool playermove(FILE *cmdin, token_t verb, int motion)
     }
     else if (motion == CAVE) {
        /*  Cave.  Different messages depending on whether above ground. */
-       RSPEAK((OUTSID(game.loc) && game.loc != 8) ? FOLLOW_STREAM : NEED_DETAIL);
+       RSPEAK((OUTSID(game.loc) && game.loc != LOC_GRATE) ? FOLLOW_STREAM : NEED_DETAIL);
        return true;
     }
     else {
@@ -581,6 +582,7 @@ static bool playermove(FILE *cmdin, token_t verb, int motion)
        if (MOD(scratchloc,1000) == 1 || MOD(scratchloc,1000) == motion)
            break;
        if (TRAVEL[kk] < 0) {
+           /* FIXME: Magic numbers! */
            /*  Non-applicable motion.  Various messages depending on
             *  word given. */
            int spk=CANT_APPLY;
@@ -640,6 +642,7 @@ static bool playermove(FILE *cmdin, token_t verb, int motion)
                 *  emerald.  Note: travel table must include "useless"
                 *  entries going through passage, which can never be used for
                 *  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;
@@ -695,7 +698,8 @@ static bool playermove(FILE *cmdin, token_t verb, int motion)
            BUG(20);
        }
     } while
-           (false);
+       (false);
+    /* FIXME: Arithmetic on location number, becoming a message number */
     RSPEAK(game.newloc-500);
     game.newloc=game.loc;
     return true;
@@ -778,29 +782,29 @@ static bool closecheck(void)
         *  objects he might be carrying (lest he have some which
         *  could cause trouble, such as the keys).  We describe the
         *  flash of light and trundle back. */
-       game.prop[BOTTLE]=PUT(BOTTLE,115,1);
-       game.prop[PLANT]=PUT(PLANT,115,0);
-       game.prop[OYSTER]=PUT(OYSTER,115,0);
+       game.prop[BOTTLE]=PUT(BOTTLE,LOC_NE,1);
+       game.prop[PLANT]=PUT(PLANT,LOC_NE,0);
+       game.prop[OYSTER]=PUT(OYSTER,LOC_NE,0);
        OBJTXT[OYSTER]=3;
-       game.prop[LAMP]=PUT(LAMP,115,0);
-       game.prop[ROD]=PUT(ROD,115,0);
-       game.prop[DWARF]=PUT(DWARF,115,0);
-       game.loc=115;
-       game.oldloc=115;
-       game.newloc=115;
+       game.prop[LAMP]=PUT(LAMP,LOC_NE,0);
+       game.prop[ROD]=PUT(ROD,LOC_NE,0);
+       game.prop[DWARF]=PUT(DWARF,LOC_NE,0);
+       game.loc = LOC_NE;
+       game.oldloc = LOC_NE;
+       game.newloc = LOC_NE;
        /*  Leave the grate with normal (non-negative) property.
         *  Reuse sign. */
-       PUT(GRATE,116,0);
-       PUT(SIGN,116,0);
+       PUT(GRATE,LOC_SW,0);
+       PUT(SIGN,LOC_SW,0);
        ++OBJTXT[SIGN];
-       game.prop[SNAKE]=PUT(SNAKE,116,1);
-       game.prop[BIRD]=PUT(BIRD,116,1);
-       game.prop[CAGE]=PUT(CAGE,116,0);
-       game.prop[ROD2]=PUT(ROD2,116,0);
-       game.prop[PILLOW]=PUT(PILLOW,116,0);
+       game.prop[SNAKE]=PUT(SNAKE,LOC_SW,1);
+       game.prop[BIRD]=PUT(BIRD,LOC_SW,1);
+       game.prop[CAGE]=PUT(CAGE,LOC_SW,0);
+       game.prop[ROD2]=PUT(ROD2,LOC_SW,0);
+       game.prop[PILLOW]=PUT(PILLOW,LOC_SW,0);
 
-       game.prop[MIRROR]=PUT(MIRROR,115,0);
-       game.fixed[MIRROR]=116;
+       game.prop[MIRROR]=PUT(MIRROR,LOC_NE,0);
+       game.fixed[MIRROR]=LOC_SW;
 
        for (int i=1; i<=NOBJECTS; i++) {
            if (TOTING(i))
@@ -901,8 +905,8 @@ static void listobjects(void)
 static bool do_command(FILE *cmdin)
 /* Get and execute a command */ 
 {
-    long KQ, verb, V1, V2;
-    long i, k, KMOD;
+    long kq, verb, V1, V2;
+    long i, k, kmod;
     static long igo = 0;
     static long obj = 0;
     enum speechpart part;
@@ -950,7 +954,7 @@ static bool do_command(FILE *cmdin)
                croak(cmdin);
                continue;       /* back to top of main interpreter loop */
            }
-           msg=arbitrary_messages[16];
+           msg=arbitrary_messages[PITCH_DARK];
        }
        if (TOTING(BEAR))RSPEAK(TAME_BEAR);
        newspeak(msg);
@@ -1019,8 +1023,8 @@ static bool do_command(FILE *cmdin)
        } else
            lampcheck();
 
-       k=43;
-       if (LIQLOC(game.loc) == WATER)k=70;
+       k=WHERE_QUERY;
+       if (LIQLOC(game.loc) == WATER)k=FEET_WET;
        V1=VOCAB(WD1,-1);
        V2=VOCAB(WD2,-1);
        if (V1 == ENTER && (V2 == STREAM || V2 == 1000+WATER)) {
@@ -1060,18 +1064,18 @@ static bool do_command(FILE *cmdin)
            RSPEAK(DONT_KNOW);
            goto L2600;
        }
-       KMOD=MOD(i,1000);
-       KQ=i/1000+1;
-       switch (KQ-1)
+       kmod=MOD(i,1000);
+       kq=i/1000+1;
+       switch (kq-1)
        {
        case 0:
-           if (playermove(cmdin, verb, KMOD))
+           if (playermove(cmdin, verb, kmod))
                return true;
            else
                continue;       /* back to top of main interpreter loop */
-       case 1: part=unknown; obj = KMOD; break;
-       case 2: part=intransitive; verb = KMOD; break;
-       case 3: RSPEAK(KMOD); goto L2012;
+       case 1: part=unknown; obj = kmod; break;
+       case 2: part=intransitive; verb = kmod; break;
+       case 3: RSPEAK(kmod); goto L2012;
        default: BUG(22);
        }