From: Jason S. Ninneman Date: Mon, 19 Jun 2017 02:44:15 +0000 (-0700) Subject: Give obituary messages their own data structure. X-Git-Tag: 1.1~234 X-Git-Url: https://jxself.org/git/?a=commitdiff_plain;h=9229fdf2a3c286bc46de00a298ab6ca0a4f44962;p=open-adventure.git Give obituary messages their own data structure. --- diff --git a/adventure.yaml b/adventure.yaml index 8d9de05..73a2f16 100644 --- a/adventure.yaml +++ b/adventure.yaml @@ -1492,3 +1492,10 @@ object_descriptions: !!omap inventory: !!null longs: !!null +obituaries: + - query: 'Oh dear, you seem to have gotten yourself killed. I might be able to\nhelp you out, but I''ve never really done this before. Do you want me\nto try to reincarnate you?' + yes_response: 'All right. But don''t blame me if something goes wr......\n --- POOF!! ---\nYou are engulfed in a cloud of orange smoke. Coughing and gasping,\nyou emerge from the smoke and find....' + - query: 'You clumsy oaf, you''ve done it again! I don''t know how long I can\nkeep this up. Do you want me to try reincarnating you again?' + yes_response: 'Okay, now where did I put my orange smoke?.... >POOF!<\nEverything disappears in a dense cloud of orange smoke.' + - query: 'Now you''ve really done it! I''m out of orange smoke! You don''t expect\nme to do a decent reincarnation without any orange smoke, do you?' + yes_response: 'Okay, if you''re so smart, do it yourself! I''m leaving!' diff --git a/newdungeon.py b/newdungeon.py index 2bd2a5a..5888f83 100755 --- a/newdungeon.py +++ b/newdungeon.py @@ -60,14 +60,20 @@ typedef struct { descriptions_t description; } location_t; +typedef struct { + const char* query; + const char* yes_response; +} obituary_t; + extern location_t locations[]; extern object_description_t object_descriptions[]; extern const char* arbitrary_messages[]; extern const char* class_messages[]; extern const char* turn_threshold_messages[]; +extern obituary_t obituaries[]; extern size_t CLSSES; - +extern int maximum_deaths; """ c = """#include "{}" @@ -126,13 +132,32 @@ for key, data in dungeon["object_descriptions"]: except (TypeError, IndexError): c += " .longs = NULL,\n" c += " },\n" -h += "};" -c += "};" +h += "};\n\n" +c += "};\n\n" + +c += "obituary_t obituaries[] = {\n" +for obit in dungeon["obituaries"]: + + query = quotewrap(c_escape(obit["query"])) + yes_response = quotewrap(c_escape(obit["yes_response"])) + + c += """ {{ + .query = {}, + .yes_response = {}, + }}, +""".format(query, yes_response) + +c += "};\n" c += """ size_t CLSSES = {}; """.format(len(dungeon["class_messages"])) +c += """ +int maximum_deaths = {}; +""".format(len(dungeon["obituaries"])) + + # finally, write out the files d = { h_name: h,