More use of manifest constants.
authorEric S. Raymond <esr@thyrsus.com>
Thu, 15 Jun 2017 14:59:43 +0000 (10:59 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Thu, 15 Jun 2017 14:59:43 +0000 (10:59 -0400)
actions.c
advent.h
main.c

index 9cd6e0df4547afc21048ea9eac4a93d14ad712e4..4d077628e4c8f003039ea2edb8c45fe5ba3909b7 100644 (file)
--- a/actions.c
+++ b/actions.c
@@ -78,12 +78,18 @@ static int attack(FILE *input, long verb, token_t obj)
                game.dseen[i]=false;
            }
        }
-       spk=spk+1+1/k;
+       spk=spk+1+1/k;  /* FIXME: Arithmetic on message numbers */
+       RSPEAK(spk);
+       return GO_CLEAROBJ;
+    }
+
+    if (obj == BEAR)
+       /* FIXME: Arithmetic on message numbers */
+       spk = BEAR_HANDS+(game.prop[BEAR]+1)/2;
+    if (obj != DRAGON || game.prop[DRAGON] != 0) {
        RSPEAK(spk);
        return GO_CLEAROBJ;
     }
-    if (obj == BEAR)spk=BEAR_HANDS+(game.prop[BEAR]+1)/2;
-    if (obj != DRAGON || game.prop[DRAGON] != 0) {RSPEAK(spk); return GO_CLEAROBJ;}
     /*  Fun stuff for dragon.  If he insists on attacking it, win!
      *  Set game.prop to dead, move dragon to central loc (still
      *  fixed), move rug there (not fixed), and move him there,
@@ -306,7 +312,10 @@ static int chain(token_t verb)
        spk=CHAIN_LOCKED;
        if (game.prop[CHAIN] != 0)spk=ALREADY_LOCKED;
        if (game.loc != PLAC[CHAIN])spk=NO_LOCKSITE;
-       if (spk != CHAIN_LOCKED) {RSPEAK(spk); return GO_CLEAROBJ;}
+       if (spk != CHAIN_LOCKED) {
+           RSPEAK(spk);
+           return GO_CLEAROBJ;
+       }
        game.prop[CHAIN]=2;
        if (TOTING(CHAIN))DROP(CHAIN,game.loc);
        game.fixed[CHAIN]= -1;
@@ -396,7 +405,7 @@ static int drink(token_t verb, token_t obj)
        return GO_UNKNOWN;
     if (obj != BLOOD) {
        if (obj != 0 && obj != WATER)spk=RIDICULOUS_ATTEMPT;
-       if (spk != 110 && LIQUID() == WATER && HERE(BOTTLE)) {
+       if (spk != RIDICULOUS_ATTEMPT && LIQUID() == WATER && HERE(BOTTLE)) {
            game.prop[BOTTLE]=1;
            game.place[WATER]=0;
            spk=BOTTLE_EMPTY;
@@ -519,7 +528,7 @@ int fill(token_t verb, token_t obj)
            return GO_CLEAROBJ;
        }
        RSPEAK(SHATTER_VASE);
-       game.prop[VASE]=2;
+       game.prop[VASE] = 2;
        game.fixed[VASE]= -1;
        return(discard(verb, obj, true));
     }
@@ -553,7 +562,7 @@ int fill(token_t verb, token_t obj)
        game.prop[BOTTLE]=MOD(COND[game.loc],4)/2*2;
        k=LIQUID();
        if (TOTING(BOTTLE))
-           game.place[k]= -1;
+           game.place[k] = -1;
        if (k == OIL)
            spk=BOTTLED_OIL;
     }
@@ -600,7 +609,8 @@ static int fly(token_t verb, token_t obj)
     game.oldloc=game.loc;
     game.newloc=game.place[RUG]+game.fixed[RUG]-game.loc;
     spk=RUG_GOES;
-    if (game.prop[SAPPH] >= 0)spk=RUG_RETURNS;
+    if (game.prop[SAPPH] >= 0)
+       spk=RUG_RETURNS;
     RSPEAK(spk);
     return GO_TERMINATE;
 }
@@ -811,11 +821,14 @@ static int reservoir(void)
     } else {
        PSPEAK(RESER,game.prop[RESER]+1);
        game.prop[RESER]=1-game.prop[RESER];
-       if (AT(RESER)) return GO_CLEAROBJ;
-       game.oldlc2=game.loc;
-       game.newloc=0;
-       RSPEAK(NOT_BRIGHT);
-       return GO_TERMINATE;
+       if (AT(RESER))
+           return GO_CLEAROBJ;
+       else {
+           game.oldlc2=game.loc;
+           game.newloc=0;
+           RSPEAK(NOT_BRIGHT);
+           return GO_TERMINATE;
+       }
     }
 }
 
@@ -875,7 +888,7 @@ static int throw(FILE *cmdin, long verb, token_t obj)
        RSPEAK(spk);
        return GO_CLEAROBJ;
     }
-    if (obj >= 50 && obj <= MAXTRS && AT(TROLL)) {
+    if (obj >= MINTRS && obj <= MAXTRS && AT(TROLL)) {
         spk=TROLL_SATISFIED;
         /*  Snarf a treasure for the troll. */
         DROP(obj,0);
index 93681a630d71084e7ffd9fb3864e12817de208ac..327c717254cd4177d377fec58adeee9dfcf955d9 100644 (file)
--- a/advent.h
+++ b/advent.h
@@ -6,7 +6,7 @@
 #define LINESIZE       100
 #define NDWARVES       6
 #define PIRATE         NDWARVES        /* must be NDWARVES-1 when zero-origin */
-#define DALTLC         18              /* alternate dwarf location; low room */
+#define DALTLC         LOC_NUGGET      /* alternate dwarf location */
 #define MINTRS         50
 #define MAXTRS         79
 #define MAXPARMS       25
@@ -140,7 +140,7 @@ extern int saveresume(FILE *, bool);
 #define DARK(DUMMY)    ((!CNDBIT(game.loc,LIGHT)) && (game.prop[LAMP] == 0 || !HERE(LAMP)))
 #define PCT(N) (randrange(100) < (N))
 #define GSTONE(OBJ)    ((OBJ) == EMRALD || (OBJ) == RUBY || (OBJ) == AMBER || (OBJ) == SAPPH)
-#define FOREST(LOC)    ((LOC) >= 145 && (LOC) <= 166)
+#define FOREST(LOC)    ((LOC) >= LOC_FOREST1 && (LOC) <= LOC_FOREST22)
 #define VOCWRD(LETTRS,SECT)    (VOCAB(MAKEWD(LETTRS),SECT))
 #define SPECIAL(LOC)   ((LOC) > SPECIALBASE)
 
@@ -150,8 +150,8 @@ extern int saveresume(FILE *, bool);
  *  LOC is outside, INDEEP(LOC) is true if LOC is "deep" in the cave (hall
  *  of mists or deeper).  Note special kludges for "Foof!" locs. */
 
-#define OUTSID(LOC)    ((LOC) <= 8 || FOREST(LOC) || (LOC) == PLAC[SAPPH] || (LOC) == 180 || (LOC) == 182)
-#define INDEEP(LOC)    ((LOC) >= 15 && !OUTSID(LOC) && (LOC) != 179)
+#define OUTSID(LOC)    ((LOC) <= LOC_GRATE || FOREST(LOC) || (LOC) == PLAC[SAPPH] || (LOC) == LOC_FOOF2 || (LOC) == LOC_FOOF4)
+#define INDEEP(LOC)    ((LOC) >= LOC_MISTHALL && !OUTSID(LOC) && (LOC) != LOC_FOOF1)
 
 /* vocabulary items */ 
 extern long AMBER, ATTACK, AXE, BACK, BATTER, BEAR,
diff --git a/main.c b/main.c
index 1dc395eccab8fb6205c356d14e76cb7a88422320..66c5cafa74010d1d53f6ca5441031f4705d67242 100644 (file)
--- a/main.c
+++ b/main.c
@@ -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,7 +490,7 @@ 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 = LOC_BUILDING;
@@ -558,7 +558,8 @@ static bool playermove(FILE *cmdin, token_t verb, int motion)
        /*  Look.  Can't give more detail.  Pretend it wasn't dark
         *  (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;
@@ -640,6 +641,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;
@@ -950,7 +952,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);