In the grapher,add some room condition bits to clean up code.
authorEric S. Raymond <esr@thyrsus.com>
Wed, 20 Apr 2022 12:27:30 +0000 (08:27 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Wed, 20 Apr 2022 15:09:08 +0000 (11:09 -0400)
adventure.yaml
make_graph.py
templates/dungeon.h.tpl

index 4410767388bdf48395c2a35a1d4b33e96f3fd4b3..ae064e420bd64a778fd91d714bc46898b9155a41 100644 (file)
@@ -31,6 +31,8 @@
 #        FLUID         Liquid asset
 #        NOARRR                Pirate doesn't go here unless following player
 #        NOBACK                Cannot use "back" to move away
+#        ALLDIFFERENT   Part of the maze all different (used in grapher only)
+#        ALLALIKE       Part of the maze all alike (used in grapher only)
 #        HCAVE         Trying to get into cave
 #        HBIRD         Trying to catch bird
 #        HSNAKE                Trying to deal with snake
@@ -959,7 +961,7 @@ locations: !!omap
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [UPWAR], action: [goto, LOC_MISTWEST]},
@@ -973,7 +975,7 @@ locations: !!omap
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE1]},
@@ -985,7 +987,7 @@ locations: !!omap
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [EAST], action: [goto, LOC_ALIKE2]},
@@ -998,7 +1000,7 @@ locations: !!omap
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE1]},
@@ -1012,7 +1014,7 @@ locations: !!omap
       long: 'Dead end'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOARRR: true}
+    conditions: {DEEP: true, NOARRR: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST, OUT], action: [goto, LOC_ALIKE4]},
@@ -1022,7 +1024,7 @@ locations: !!omap
       long: 'Dead end'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOARRR: true}
+    conditions: {DEEP: true, NOARRR: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [EAST, OUT], action: [goto, LOC_ALIKE4]},
@@ -1032,7 +1034,7 @@ locations: !!omap
       long: 'Dead end'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOARRR: true}
+    conditions: {DEEP: true, NOARRR: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_ALIKE3]},
@@ -1042,7 +1044,7 @@ locations: !!omap
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [EAST], action: [goto, LOC_ALIKE6]},
@@ -1053,7 +1055,7 @@ locations: !!omap
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [EAST], action: [goto, LOC_ALIKE3]},
@@ -1066,7 +1068,7 @@ locations: !!omap
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE5]},
@@ -1079,7 +1081,7 @@ locations: !!omap
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE6]},
@@ -1094,7 +1096,7 @@ locations: !!omap
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE7]},
@@ -1106,7 +1108,7 @@ locations: !!omap
       long: 'Dead end'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOARRR: true}
+    conditions: {DEEP: true, NOARRR: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST, OUT], action: [goto, LOC_ALIKE9]},
@@ -1116,7 +1118,7 @@ locations: !!omap
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST], action: [goto, LOC_ALIKE8]},
@@ -1129,7 +1131,7 @@ locations: !!omap
       long: 'Dead end'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOARRR: true}
+    conditions: {DEEP: true, NOARRR: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_ALIKE10]},
@@ -1142,7 +1144,7 @@ locations: !!omap
           up.  The maze continues at this level.
       short: 'You''re at brink of pit.'
       maptag: !!null
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     travel: [
       {verbs: [DOWN, CLIMB], action: [goto, LOC_BIRDCHAMBER]},
       {verbs: [WEST], action: [goto, LOC_ALIKE10]},
@@ -1155,7 +1157,7 @@ locations: !!omap
       long: 'Dead end'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {NOARRR: true, DEEP: true}
+    conditions: {NOARRR: true, DEEP: true, ALLALIKE: true}
     travel: [
       {verbs: [EAST, OUT], action: [goto, LOC_PITBRINK]},
     ]
@@ -1439,7 +1441,7 @@ locations: !!omap
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [NORTH], action: [goto, LOC_ALIKE1]},
@@ -1452,7 +1454,7 @@ locations: !!omap
       long: 'Dead end'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true}
+    conditions: {DEEP: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [WEST, OUT], action: [goto, LOC_ALIKE11]},
@@ -1462,7 +1464,7 @@ locations: !!omap
       long: 'Dead end'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOARRR: true}
+    conditions: {DEEP: true, NOARRR: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [SOUTH, OUT], action: [goto, LOC_ALIKE3]},
@@ -1472,7 +1474,7 @@ locations: !!omap
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     travel: [
       {verbs: [SOUTH], action: [goto, LOC_PITBRINK]},
       {verbs: [EAST], action: [goto, LOC_ALIKE13]},
@@ -1483,7 +1485,7 @@ locations: !!omap
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     travel: [
       {verbs: [NORTH], action: [goto, LOC_PITBRINK]},
       {verbs: [WEST], action: [goto, LOC_ALIKE12]},
@@ -1494,7 +1496,7 @@ locations: !!omap
       long: 'Dead end'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {NOARRR: true, DEEP: true}
+    conditions: {NOARRR: true, DEEP: true, ALLALIKE: true}
     travel: [
       {verbs: [EAST, OUT], action: [goto, LOC_ALIKE12]},
     ]
@@ -1503,7 +1505,7 @@ locations: !!omap
       long: 'Dead end'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOARRR: true}
+    conditions: {DEEP: true, NOARRR: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [UPWAR, OUT], action: [goto, LOC_ALIKE8]},
@@ -1513,7 +1515,7 @@ locations: !!omap
       long: 'You are in a maze of twisty little passages, all alike.'
       short: !!null
       maptag: 'Maze all alike.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLALIKE: true}
     hints: [*maze]
     travel: [
       {verbs: [UPWAR, DOWN], action: [goto, LOC_ALIKE4]},
@@ -1765,7 +1767,7 @@ locations: !!omap
       long: 'You are in a maze of twisty little passages, all different.'
       short: !!null
       maptag: 'Maze all different'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [SOUTH], action: [goto, LOC_DIFFERENT3]},
       {verbs: [SW], action: [goto, LOC_DIFFERENT4]},
@@ -1835,7 +1837,7 @@ locations: !!omap
           having done so you would be unable to reach it to climb back up.
       short: 'You''re at top of stalactite.'
       maptag: !!null
-    conditions: {DEEP: true}
+    conditions: {DEEP: true, ALLALIKE: true}
     travel: [
       {verbs: [NORTH], action: [goto, LOC_SECRET2]},
       {verbs: [DOWN, JUMP, CLIMB], cond: [pct, 40],
@@ -1848,7 +1850,7 @@ locations: !!omap
       long: 'You are in a little maze of twisting passages, all different.'
       short: !!null
       maptag: 'Maze all different'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [SW], action: [goto, LOC_DIFFERENT3]},
       {verbs: [NORTH], action: [goto, LOC_DIFFERENT4]},
@@ -1883,7 +1885,7 @@ locations: !!omap
       long: 'Dead end'
       short: !!null
       maptag: !!null
-    conditions: {DEEP: true}
+    conditions: {DEEP: true, ALLALIKE: true}
     travel: [
       {verbs: [SE], action: [goto, LOC_ALIKE13]},
     ]
@@ -2151,7 +2153,7 @@ locations: !!omap
       long: 'You are in a maze of twisting little passages, all different.'
       short: !!null
       maptag: 'Maze all different.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [WEST], action: [goto, LOC_DIFFERENT1]},
       {verbs: [SE], action: [goto, LOC_DIFFERENT4]},
@@ -2169,7 +2171,7 @@ locations: !!omap
       long: 'You are in a little maze of twisty passages, all different.'
       short: !!null
       maptag: 'Maze all different.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [NW], action: [goto, LOC_DIFFERENT1]},
       {verbs: [UPWAR], action: [goto, LOC_DIFFERENT3]},
@@ -2187,7 +2189,7 @@ locations: !!omap
       long: 'You are in a twisting maze of little passages, all different.'
       short: !!null
       maptag: 'Maze all different.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [UPWAR], action: [goto, LOC_DIFFERENT1]},
       {verbs: [DOWN], action: [goto, LOC_DIFFERENT3]},
@@ -2205,7 +2207,7 @@ locations: !!omap
       long: 'You are in a twisting little maze of passages, all different.'
       short: !!null
       maptag: 'Maze all different.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [NE], action: [goto, LOC_DIFFERENT1]},
       {verbs: [NORTH], action: [goto, LOC_DIFFERENT3]},
@@ -2223,7 +2225,7 @@ locations: !!omap
       long: 'You are in a twisty little maze of passages, all different.'
       short: !!null
       maptag: 'Maze all different.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [NORTH], action: [goto, LOC_DIFFERENT1]},
       {verbs: [SE], action: [goto, LOC_DIFFERENT3]},
@@ -2241,7 +2243,7 @@ locations: !!omap
       long: 'You are in a twisty maze of little passages, all different.'
       short: !!null
       maptag: 'Maze all different.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [EAST], action: [goto, LOC_DIFFERENT1]},
       {verbs: [WEST], action: [goto, LOC_DIFFERENT3]},
@@ -2259,7 +2261,7 @@ locations: !!omap
       long: 'You are in a little twisty maze of passages, all different.'
       short: !!null
       maptag: 'Maze all different.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [SE], action: [goto, LOC_DIFFERENT1]},
       {verbs: [NE], action: [goto, LOC_DIFFERENT3]},
@@ -2277,7 +2279,7 @@ locations: !!omap
       long: 'You are in a maze of little twisting passages, all different.'
       short: !!null
       maptag: 'Maze all different.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [DOWN], action: [goto, LOC_DIFFERENT1]},
       {verbs: [EAST], action: [goto, LOC_DIFFERENT3]},
@@ -2295,7 +2297,7 @@ locations: !!omap
       long: 'You are in a maze of little twisty passages, all different.'
       short: !!null
       maptag: 'Maze all different.'
-    conditions: {DEEP: true, NOBACK: true}
+    conditions: {DEEP: true, NOBACK: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [SW], action: [goto, LOC_DIFFERENT1]},
       {verbs: [NW], action: [goto, LOC_DIFFERENT3]},
@@ -2313,7 +2315,7 @@ locations: !!omap
       long: 'Dead end'
       short: !!null
       maptag: !!null
-    conditions: {DEEP: true}
+    conditions: {DEEP: true, ALLDIFFERENT: true}
     travel: [
       {verbs: [NORTH, OUT], action: [goto, LOC_DIFFERENT2]},
       {verbs: [SOUTH], cond: [not, VEND, VEND_BLOCKS], action: [goto, LOC_ROUGHHEWN]},
index f29c3e183b5a1b1ef1057e01a1aa7c849ef870fc..92655e5e354d4060a9f5982dfd28be3014d27804 100755 (executable)
@@ -18,11 +18,11 @@ import sys, getopt, yaml
 
 def allalike(loc):
     "Select out loci related to the Maze All Alike"
-    return ("ALIKE" in loc) or (loc == "LOC_PITBRINK") or ("MAZEEND" in loc) or ("STALACTITE" in loc)
+    return location_lookup[loc]["conditions"].get("ALLALIKE")
 
 def alldifferent(loc):
     "Select out loci related to the Maze All Alike"
-    return ("DIFFERENT" in loc) or (loc == "LOC_DEADEND13")
+    return location_lookup[loc]["conditions"].get("ALLDIFFERENT")
 
 def surface(loc):
     "Select out surface locations"
index 66d65ab41aedab0ca77338fc579b201fe1e08857..e42ab072e66500d6fb1586794f79d6fcc7ecd785 100644 (file)
 #define COND_DEEP      6       /* Deep - e.g where dwarves are active */
 #define COND_FOREST    7       /* In the forest */
 #define COND_FORCED    8       /* Only one way in or out of here */
-/* Bits past 10 indicate areas of interest to "hint" routines */
-#define COND_HBASE     10      /* Base for location hint bits */
-#define COND_HCAVE     11      /* Trying to get into cave */
-#define COND_HBIRD     12      /* Trying to catch bird */
-#define COND_HSNAKE    13      /* Trying to deal with snake */
-#define COND_HMAZE     14      /* Lost in maze */
-#define COND_HDARK     15      /* Pondering dark room */
-#define COND_HWITT     16      /* At Witt's End */
-#define COND_HCLIFF    17      /* Cliff with urn */
-#define COND_HWOODS    18      /* Lost in forest */
-#define COND_HOGRE     19      /* Trying to deal with ogre */
-#define COND_HJADE     20      /* Found all treasures except jade */
+#define COND_ALLDIFFERENT      9       /* Room is in maze all different */
+#define COND_ALLALIKE  10      /* Room is in maze all alike */
+/* Bits past 11 indicate areas of interest to "hint" routines */
+#define COND_HBASE     11      /* Base for location hint bits */
+#define COND_HCAVE     12      /* Trying to get into cave */
+#define COND_HBIRD     13      /* Trying to catch bird */
+#define COND_HSNAKE    14      /* Trying to deal with snake */
+#define COND_HMAZE     15      /* Lost in maze */
+#define COND_HDARK     16      /* Pondering dark room */
+#define COND_HWITT     17      /* At Witt's End */
+#define COND_HCLIFF    18      /* Cliff with urn */
+#define COND_HWOODS    19      /* Lost in forest */
+#define COND_HOGRE     20      /* Trying to deal with ogre */
+#define COND_HJADE     21      /* Found all treasures except jade */
 
 typedef struct {{
   const char** strs;