#!/usr/bin/env python3 # # Enhance adventure.yaml entries with explicit object-sound properties # based on Section 13 of adventure.text. # # When in doubt, make the code dumber and the data smarter. # import sys, yaml # This is the original sound-attribute data from section 13 of adventure.text section13 = ( (8, 3, -1), (11, 2, -1), (13, -1, 1), (14, 1, -1), (15, 2, -1), (16, -1, 1), (24, 6, -1), (31, 4, -1), (33, 3, -1), (36, -1, 1), (38, -1, 1), (41, 1, -1), (47, -1, 1), (48, -1, 1), (49, -1, 1), ) def genline(ml): attrs = {} appendme = "" return out if __name__ == "__main__": with open("adventure.yaml", "r") as fp: db = yaml.load(fp) fp.seek(0) objnames = [el[0] for el in db["object_descriptions"]] objnum = 0 counter = -99 soundtrap = texttrap = None while True: line = fp.readline() if not line: break if line.startswith("- OBJ"): counter = -99; soundtrap = texttrap = None for (obj, sound, text) in section13: if obj == objnum: counter = -2 # Skip inventory and longs markup line soundtrap = None if (sound == -1) else sound texttrap = None if (text == -1) else text break objnum += 1 sys.stdout.write(line) if soundtrap is not None and counter == soundtrap: sys.stdout.write(" sounds:\n") if texttrap is not None and counter == texttrap: sys.stdout.write(" texts:\n") counter += 1 # end