Specials excised from adventure.yaml
authorAaron Traas <aaron@traas.org>
Fri, 21 Jul 2017 21:15:23 +0000 (17:15 -0400)
committerAaron Traas <aaron@traas.org>
Fri, 21 Jul 2017 21:15:23 +0000 (17:15 -0400)
advent.h
adventure.yaml
main.c
make_dungeon.py
misc.c
tests/coverage_dungeon.py

index 09ec71b7d16f9a82c1d9bf241687b4a58ab33950..ff6224087d86e8103db3afa8a3eead4b6fc37ed6 100644 (file)
--- a/advent.h
+++ b/advent.h
@@ -87,7 +87,7 @@ enum termination {endgame, quitgame, scoregame};
 
 enum speechpart {unknown, intransitive, transitive};
 
-enum wordtype {NO_WORD_TYPE, MOTION, OBJECT, ACTION, SPECIAL, NUMERIC};
+enum wordtype {NO_WORD_TYPE, MOTION, OBJECT, ACTION, NUMERIC};
 
 typedef enum scorebonus {none, splatter, defeat, victory} score_t;
 
index 75bd76cee71e4271588bed8472ff0d78c06d37e5..625e18d2daa7abd9690cb93405668588a266a6e1 100644 (file)
 # actions: Action words, grouped into synonyms, and their corresponding
 #    default messages. The 'oldstyle' attribute is as for motions.
 #
-# specials: Special action words, grouped into synonyms, and their
-#    messages. These differ from the regular action words above in that
-#    they only display their corresponding message; no other logic is
-#    invoked. In the future, these will be merged into the regular actions.
-#
 # hints: Each item contains a hint number, a hint label (used to
 #    generate the value macro for the hint) the number of turns he
 #    must be at the right loc(s) before triggering the hint, the
@@ -4027,10 +4022,4 @@ actions: !!omap
     words: ['versi']
     noaction: true
 
-# Specials no longer used, but this is still needed for now
-specials: !!omap
-- SPC_DELETEME:
-    message: 'Please delete this item'
-    words: ['null']
-
 # end
diff --git a/main.c b/main.c
index c837fe69bf0a3f9a58f14c1e6515e83bb06f11b2..efaeedc22a0a58c2ec09342394281dd62d823bdc 100644 (file)
--- a/main.c
+++ b/main.c
@@ -1134,9 +1134,6 @@ Lookup:
                 command.part = intransitive;
             command.verb = command.id1;
             break;
-        case SPECIAL:
-            speak(specials[command.id1].message);
-            goto Lclearobj;
         case NUMERIC:
         default: // LCOV_EXCL_LINE
             BUG(VOCABULARY_TYPE_N_OVER_1000_NOT_BETWEEN_0_AND_3); // LCOV_EXCL_LINE
index de7251cd4bd5fbacb30458810104e9b06466bfdb..03b5b04229fc60023a378208cc8525fb8873bb97 100755 (executable)
@@ -108,12 +108,6 @@ typedef struct {{
   const bool noaction;
 }} action_t;
 
-typedef struct {{
-  const string_group_t words;
-  const char* message;
-  const bool noaction;
-}} special_t;
-
 enum condtype_t {{cond_goto, cond_pct, cond_carry, cond_with, cond_not}};
 enum desttype_t {{dest_goto, dest_special, dest_speak}};
 
@@ -145,7 +139,6 @@ extern const hint_t hints[];
 extern long conditions[];
 extern const motion_t motions[];
 extern const action_t actions[];
-extern const special_t specials[];
 extern const travelop_t travel[];
 extern const long tkey[];
 extern const char *ignore;
@@ -156,9 +149,8 @@ extern const char *ignore;
 #define NCLASSES       {}
 #define NDEATHS                {}
 #define NTHRESHOLDS    {}
-#define NMOTIONS        {}
+#define NMOTIONS    {}
 #define NACTIONS       {}
-#define NSPECIALS       {}
 #define NTRAVEL                {}
 #define NKEYS          {}
 
@@ -184,10 +176,6 @@ enum action_refs {{
 {}
 }};
 
-enum special_refs {{
-{}
-}};
-
 /* State definitions */
 
 {}
@@ -238,10 +226,6 @@ const action_t actions[] = {{
 {}
 }};
 
-const special_t specials[] = {{
-{}
-}};
-
 const long tkey[] = {{{}}};
 
 const travelop_t travel[] = {{
@@ -499,16 +483,16 @@ def get_motions(motions):
                     ignore += word.upper()
     return mot_str
 
-def get_specials(specials):
+def get_actions(actions):
     template = """    {{
         .words = {},
         .message = {},
         .noaction = {},
     }},
 """
-    spc_str = ""
-    for special in specials:
-        contents = special[1]
+    act_str = ""
+    for action in actions:
+        contents = action[1]
 
         if contents["words"] == None:
             words_str = get_string_group([])
@@ -525,14 +509,14 @@ def get_specials(specials):
         else:
             noaction = "true"
 
-        spc_str += template.format(words_str, message, noaction)
+        act_str += template.format(words_str, message, noaction)
         global ignore
         if contents.get("oldstyle", True) == False:
             for word in contents["words"]:
                 if len(word) == 1:
                     ignore += word.upper()
-    spc_str = spc_str[:-1] # trim trailing newline
-    return spc_str
+    act_str = act_str[:-1] # trim trailing newline
+    return act_str
 
 def bigdump(arr):
     out = ""
@@ -776,8 +760,7 @@ if __name__ == "__main__":
         get_hints(db["hints"], db["arbitrary_messages"]),
         get_condbits(db["locations"]),
         get_motions(db["motions"]),
-        get_specials(db["actions"]),
-        get_specials(db["specials"]),
+        get_actions(db["actions"]),
         bigdump(tkey),
         get_travel(travel), 
         ignore,
@@ -796,7 +779,6 @@ if __name__ == "__main__":
         len(db["turn_thresholds"]),
         len(db["motions"]),
         len(db["actions"]),
-        len(db["specials"]),
         len(travel),
         len(tkey),
         deathbird,
@@ -805,7 +787,6 @@ if __name__ == "__main__":
         get_refs(db["objects"]),
         get_refs(db["motions"]),
         get_refs(db["actions"]),
-        get_refs(db["specials"]),
         statedefines,
     )
 
diff --git a/misc.c b/misc.c
index 2fe1363826eef89a4b85a76c0667a210cb6d936e..e64cad077d8d94c454bdf07db19b6e4fb99cad2b 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -386,19 +386,6 @@ static int get_action_vocab_id(const char* word)
     return (WORD_NOT_FOUND);
 }
 
-static int get_special_vocab_id(const char* word)
-// Return the first special number that has 'word' as one of its words.
-{
-    for (int i = 0; i < NSPECIALS; ++i) {
-        for (int j = 0; j < specials[i].words.n; ++j) {
-            if (strncasecmp(word, specials[i].words.strs[j], TOKLEN) == 0)
-                return (i);
-        }
-    }
-    // If execution reaches here, we didn't find the word.
-    return (WORD_NOT_FOUND);
-}
-
 static bool is_valid_int(const char *str) 
 /* Returns true if the string passed in is represents a valid integer, 
  * that could then be parsed by atoi() */
@@ -455,13 +442,6 @@ static void get_vocab_metadata(const char* word, vocab_t* id, enum wordtype* typ
         return;
     }
 
-    ref_num = get_special_vocab_id(word);
-    if (ref_num != WORD_NOT_FOUND) {
-        *id = ref_num;
-        *type = SPECIAL;
-        return;
-    }
-
     // Check for the reservoir magic word.
     if (strcasecmp(word, game.zzword) == 0) {
         *id = PART;
index 57180b5b4459d8d82eb960da27487ae4bdc02a9d..0a24865c7abbe7e41a7b66a42d4d863e7169d232 100755 (executable)
@@ -152,8 +152,8 @@ def arb_coverage(arb_msgs, text, report):
             report["messages"][name]["covered"] = True
             report["covered"] += 1
 
-def specials_actions_coverage(items, text, report):
-    # works for actions or specials
+def actions_coverage(items, text, report):
+    # works for actions
     for name, item in items:
         if name not in report["messages"]:
             report["messages"][name] = {"covered" : False}
@@ -182,8 +182,7 @@ def coverage_report(db, check_file_contents):
         loc_coverage(db["locations"], chk, report["locations"])
         obit_coverage(db["obituaries"], chk, report["obituaries"])
         obj_coverage(db["objects"], chk, report["objects"])
-        specials_actions_coverage(db["actions"], chk, report["actions"])
-        specials_actions_coverage(db["specials"], chk, report["specials"])
+        actions_coverage(db["actions"], chk, report["actions"])
         threshold_coverage(db["classes"], chk, report["classes"])
         threshold_coverage(db["turn_thresholds"], chk, report["turn_thresholds"])