X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=make_dungeon.py;h=45b9334c09e5427de996dfb76233e0849a6c4516;hb=004693c261b775ca0652734fecea41afc9e076ef;hp=576601d675f3ee4142ef37962082e306e1d40c11;hpb=659f797d8adb0b3894f042ca11372196bff84e9d;p=open-adventure.git diff --git a/make_dungeon.py b/make_dungeon.py index 576601d..45b9334 100755 --- a/make_dungeon.py +++ b/make_dungeon.py @@ -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 {{ {} }}; @@ -353,7 +355,7 @@ def get_turn_thresholds(trn): return trn_str def get_locations(loc): - template = """ {{ // {} + template = """ {{ // {}: {} .description = {{ .small = {}, .big = {}, @@ -368,12 +370,12 @@ def get_locations(loc): long_d = make_c_string(item[1]["description"]["long"]) sound = item[1].get("sound", "SILENT") loud = "true" if item[1].get("loud") else "false" - loc_str += template.format(i, short_d, long_d, sound, loud) + loc_str += template.format(i, item[0], short_d, long_d, sound, loud) loc_str = loc_str[:-1] # trim trailing newline return loc_str def get_objects(obj): - template = """ {{ // {} + template = """ {{ // {}: {} .words = {}, .inventory = {}, .plac = {}, @@ -442,14 +444,12 @@ 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) treasure = "true" if attr.get("treasure") else "false" - obj_str += template.format(i, words_str, i_msg, locs[0], locs[1], treasure, descriptions_str, sounds_str, texts_str, changes_str) + obj_str += template.format(i, item[0], words_str, i_msg, locs[0], locs[1], treasure, descriptions_str, sounds_str, texts_str, changes_str) obj_str = obj_str[:-1] # trim trailing newline return obj_str @@ -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"]),