X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=make_dungeon.py;h=7a16970df83ea3b369c920f880d1661172fa03ef;hb=551838cea217e3d9df11dcaea52c42b02449de91;hp=9f0193ef00c057822070e64c6aa8e0df4cadea07;hpb=ad24add3c0ccbb807b4d4a86fe7e3ae68492c62c;p=open-adventure.git diff --git a/make_dungeon.py b/make_dungeon.py index 9f0193e..7a16970 100755 --- a/make_dungeon.py +++ b/make_dungeon.py @@ -355,7 +355,7 @@ def get_turn_thresholds(trn): return trn_str def get_locations(loc): - template = """ {{ // {} + template = """ {{ // {}: {} .description = {{ .small = {}, .big = {}, @@ -370,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 = {}, @@ -444,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 @@ -675,7 +673,7 @@ def buildtravel(locs, objs): tt = [i] dest = dencode(rule["action"], name) + 1000 * cencode(rule.get("cond"), name) tt.append(dest) - tt += [verbmap[e] for e in rule["verbs"]] + tt += [motionnames[verbmap[e]].upper() for e in rule["verbs"]] if not rule["verbs"]: tt.append(1) ltravel.append(tuple(tt)) @@ -704,7 +702,7 @@ def buildtravel(locs, objs): # # In order to de-crypticize the runtime code, we're going to break these # magic numbers up into a struct. - travel = [[0, 0, 0, False, False]] + travel = [[0, "LOC_NOWHERE", 0, 0, 0, "false", "false"]] tkey = [0] oldloc = 0 while ltravel: @@ -715,19 +713,22 @@ def buildtravel(locs, objs): tkey.append(len(travel)) oldloc = loc elif travel: - travel[-1][-1] = not travel[-1][-1] + travel[-1][-1] = "false" if travel[-1][-1] == "true" else "true" while rule: cond = newloc // 1000 - travel.append([rule.pop(0), + dest = newloc % 1000 + travel.append([len(tkey)-1, + locnames[len(tkey)-1], + rule.pop(0), cond, - newloc % 1000, - cond==100, - False]) - travel[-1][-1] = True + locnames[dest] if dest <= 300 else dest, + "true" if cond==100 else "false", + "false"]) + travel[-1][-1] = "true" return (travel, tkey) def get_travel(travel): - template = """ {{ + template = """ {{ // from {}: {} .motion = {}, .cond = {}, .dest = {}, @@ -737,7 +738,7 @@ def get_travel(travel): """ out = "" for entry in travel: - out += template.format(*entry).lower() + out += template.format(*entry) out = out[:-1] # trim trailing newline return out @@ -748,6 +749,7 @@ if __name__ == "__main__": locnames = [x[0] for x in db["locations"]] msgnames = [el[0] for el in db["arbitrary_messages"]] objnames = [el[0] for el in db["objects"]] + motionnames = [el[0] for el in db["motions"]] (travel, tkey) = buildtravel(db["locations"], db["objects"])