Replace macros with condition bits.
authorEric S. Raymond <esr@thyrsus.com>
Thu, 22 Jun 2017 22:30:36 +0000 (18:30 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Thu, 22 Jun 2017 22:41:25 +0000 (18:41 -0400)
advent.h
adventure.yaml
init.c

index 94fbd88877ca162c310e0cd9f37e5a405460c9bf..f231569f5620ec7ae7467d14940748b99cec42a9 100644 (file)
--- a/advent.h
+++ b/advent.h
@@ -155,18 +155,12 @@ extern int restore(FILE *);
 #define DARK(DUMMY)    ((!TSTBIT(conditions[game.loc],COND_LIT)) && (game.prop[LAMP] == 0 || !HERE(LAMP)))
 #define PCT(N)         (randrange(100) < (N))
 #define GSTONE(OBJ)    ((OBJ) == EMERALD || (OBJ) == RUBY || (OBJ) == AMBER || (OBJ) == SAPPH)
-#define FOREST(LOC)    ((LOC) >= LOC_FOREST1 && (LOC) <= LOC_FOREST22)
+#define FOREST(LOC)    CNDBIT(LOC, COND_FOREST)
 #define VOCWRD(LETTRS,SECT)    (VOCAB(MAKEWD(LETTRS),SECT))
 #define SPECIAL(LOC)   ((LOC) > SPECIALBASE)
+#define OUTSID(LOC)    (CNDBIT(LOC, COND_ABOVE) || FOREST(LOC))
 
-/*  The following two functions were added to fix a bug (game.clock1 decremented
- *  while in forest).  They should probably be replaced by using another
- *  "cond" bit.  For now, however, a quick fix...  OUTSID(LOC) is true if
- *  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) <= LOC_GRATE || FOREST(LOC) || (LOC) == PLAC[SAPPH] || (LOC) == LOC_FOOF2 || (LOC) == LOC_FOOF4)
-#define INDEEP(LOC)    ((LOC) >= LOC_MISTHALL && !OUTSID(LOC) && (LOC) != LOC_FOOF1)
+#define INDEEP(LOC)    ((LOC) >= LOC_MISTHALL && !OUTSID(LOC))
 
 /* vocabulary items */
 extern long AMBER, ATTACK, AXE, BACK, BATTERY, BEAR,
index 6fd5793b4156f3388ce96a1acb002e47cfb94b49..2b4a8a7fd846d08daa51ff2bc6ec71065216baf9 100644 (file)
@@ -14,9 +14,8 @@
 #    array.
 #
 # locations: Each item contains a long and short description.  Some
-#    short descriptions are empty.  Order of these locations is significant;
-#    see the macros OUTSID and INDEEP.  Location conditions can be read
-#    as follows:
+#    short descriptions are empty.  Order of these locations is not significant.
+#    Location conditions can be read as follows:
 #        LIT           Light
 #        OILY          If FLUID flag is on: true for oil, false for water
 #        FLUID         Liquid asset
@@ -222,7 +221,7 @@ locations: !!omap
     description:
       long: 'You are at one end of a vast hall stretching forward out of sight to\nthe west.  There are openings to either side.  Nearby, a wide stone\nstaircase leads downward.  The hall is filled with wisps of white mist\nswaying to and fro almost as if alive.  A cold wind blows up the\nstaircase.  There is a passage at the top of a dome behind you.'
       short: 'You''re in Hall of Mists.'
-    conditions: {}
+    conditions: {DEEP: true}
     hints: [*jade]
 - LOC_CRACK:
     description:
@@ -902,7 +901,7 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
-    conditions: {FOREST: true, NOBACK: true, LIT: true, DEEP: true}
+    conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
 - LOC_FOREST2:
     description:
@@ -914,19 +913,19 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
-    conditions: {FOREST: true, NOBACK: true, LIT: true, DEEP: true}
+    conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
 - LOC_FOREST4:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
-    conditions: { FOREST: true, NOBACK: true, LIT: true, DEEP: true}
+    conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
 - LOC_FOREST5:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
-    conditions: {FOREST: true, NOBACK: true, LIT: true, DEEP: true}
+    conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
 - LOC_FOREST6:
     description:
@@ -938,19 +937,19 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
-    conditions: {FOREST: true, NOBACK: true, LIT: true, DEEP: true}
+    conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
 - LOC_FOREST8:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
-    conditions: {FOREST: true, NOBACK: true, LIT: true, DEEP: true}
+    conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
 - LOC_FOREST9:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
-    conditions: {FOREST: true, NOBACK: true, LIT: true, DEEP: true}
+    conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
 - LOC_FOREST10:
     description:
@@ -962,19 +961,19 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
-    conditions: {FOREST: true, NOBACK: true, LIT: true, DEEP: true}
+    conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
 - LOC_FOREST12:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
-    conditions: {FOREST: true, NOBACK: true, LIT: true, DEEP: true}
+    conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
 - LOC_FOREST13:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
-    conditions: {FOREST: true, NOBACK: true, LIT: true, DEEP: true}
+    conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
 - LOC_FOREST14:
     description:
@@ -986,19 +985,19 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
-    conditions: {FOREST: true, NOBACK: true, LIT: true, DEEP: true}
+    conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
 - LOC_FOREST16:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
-    conditions: {FOREST: true, NOBACK: true, LIT: true, DEEP: true}
+    conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
 - LOC_FOREST17:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
-    conditions: {FOREST: true, NOBACK: true, LIT: true, DEEP: true}
+    conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
 - LOC_FOREST18:
     description:
@@ -1010,19 +1009,19 @@ locations: !!omap
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
-    conditions: {FOREST: true, NOBACK: true, LIT: true, DEEP: true}
+    conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
 - LOC_FOREST20:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
-    conditions: {FOREST: true, NOBACK: true, LIT: true, DEEP: true}
+    conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
 - LOC_FOREST21:
     description:
       long: 'You are wandering aimlessly through the forest.'
       short: !!null
-    conditions: {FOREST: true, NOBACK: true, LIT: true, DEEP: true}
+    conditions: {FOREST: true, NOBACK: true, LIT: true}
     hints: [*forest]
 - LOC_FOREST22:
     description:
@@ -1034,7 +1033,7 @@ locations: !!omap
     description:
       long: 'You are on a small ledge on one face of a sheer cliff.  There are no\npaths away from the ledge.  Across the chasm is a small clearing\nsurrounded by forest.'
       short: 'You''re on ledge.'
-    conditions: {DEEP: true, LIT: true}
+    conditions: {ABOVE: true, LIT: true}
 - LOC_RESBOTTOM:
     description:
       long: 'You are walking across the bottom of the reservoir.  Walls of water\nrear up on either side.  The roar of the water cascading past is\nnearly deafening, and the mist is so thick you can barely see.'
@@ -1094,12 +1093,12 @@ locations: !!omap
     description:
       long: '>>Foof!<<'
       short: !!null
-    conditions: {DEEP: true}
+    conditions: {}
 - LOC_FOOF2:
     description:
       long: '>>Foof!<<'
       short: !!null
-    conditions: {DEEP: true}
+    conditions: {ABOVE: true}
 - LOC_FOOF3:
     description:
       long: '>>Foof!<<'
@@ -1109,7 +1108,7 @@ locations: !!omap
     description:
       long: '>>Foof!<<'
       short: !!null
-    conditions: {DEEP: true}
+    conditions: {ABOVE: true}
 - LOC_FOOF5:
     description:
       long: '>>Foof!<<'
diff --git a/init.c b/init.c
index 1ed9df6c4561f3700f3abc2ad2c5e68b0ec4310d..03c93f12a2a0c68eb5f2ca05a6eecfe8287b6f2b 100644 (file)
--- a/init.c
+++ b/init.c
@@ -377,17 +377,4 @@ void initialise(void)
     game.clshnt = false;
     game.novice = false;
     game.blklin = true;
-
-#ifdef ODEBUG
-# define NEWFLAGS      ((1<<COND_ABOVE)|(1<<COND_FOREST)|(1<<COND_DEEP));
-    int mismatches = 0;
-    for (int i = 0; i < LOCSIZ; i++) {
-       long condbits = conditions[i] & ~NEWFLAGS;
-       if (condbits == COND[i] || COND[i] == 2 && condbits == 0)
-           continue;
-       ++mismatches;
-       printf("Mismatch at %ld: COND=%x consitions=%x\n", COND[i], condbits);
-    }
-    printf("%d condbit mismatches\n", mismatches);
-#endif
 }