Cleared up lock/unlock logic
[open-adventure.git] / make_dungeon.py
index 576601d675f3ee4142ef37962082e306e1d40c11..836d1483a8480d08616df65323613c61d965fb59 100755 (executable)
@@ -141,7 +141,7 @@ typedef struct {{
 
 typedef struct {{
   const string_group_t words;
-  const long message;
+  const char* message;
 }} action_t;
 
 typedef struct {{
@@ -192,6 +192,8 @@ extern const char *ignore;
 #define NTRAVEL                {}
 #define NKEYS          {}
 
+#define BIRD_ENDSTATE  {}
+
 enum arbitrary_messages_refs {{
 {}
 }};
@@ -442,9 +444,7 @@ def get_objects(obj):
         immovable = attr.get("immovable", False)
         try:
             if type(locs) == str:
-                locs = [locnames.index(locs), -1 if immovable else 0]
-            else:
-                locs = [locnames.index(x) for x in locs]
+                locs = [locs, -1 if immovable else 0]
         except IndexError:
             sys.stderr.write("dungeon: unknown object location in %s\n" % locs)
             sys.exit(1)
@@ -761,13 +761,17 @@ if __name__ == "__main__":
         get_hints(db["hints"], db["arbitrary_messages"]),
         get_condbits(db["locations"]),
         get_motions(db["motions"]),
-        get_actions(db["actions"]),
+        get_specials(db["actions"]),
         get_specials(db["specials"]),
         bigdump(tkey),
         get_travel(travel), 
         ignore,
     )
 
+    # 0-origin index of birds's last song.  Bird should
+    # die after player hears this.
+    deathbird = len(dict(db["objects"])["BIRD"]["sounds"]) - 1
+
     h = h_template.format(
         len(db["locations"])-1,
         len(db["objects"])-1,
@@ -780,6 +784,7 @@ if __name__ == "__main__":
         len(db["specials"]),
         len(travel),
         len(tkey),
+        deathbird,
         get_refs(db["arbitrary_messages"]),
         get_refs(db["locations"]),
         get_refs(db["objects"]),