Give obituary messages their own data structure.
authorJason S. Ninneman <jsn@mbar.us>
Mon, 19 Jun 2017 02:44:15 +0000 (19:44 -0700)
committerJason S. Ninneman <jsn@mbar.us>
Mon, 19 Jun 2017 02:44:35 +0000 (19:44 -0700)
adventure.yaml
newdungeon.py

index 8d9de05d277f24b1032d1867924c0b5dcfdf8a2d..73a2f16b98eea24c3caccc6b7313f00279c3f430 100644 (file)
@@ -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!'
index 2bd2a5a6f8b191cd4efb943b7e6a2cc98cc4c2a5..5888f83f64c8e100e63eec5df0c07a288b2a5e92 100755 (executable)
@@ -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,