No spk remains in the code base
[open-adventure.git] / actions.c
index 2d02595cf305c3e83e39066f4688c332e7e8f6eb..40a1928f62d99299970e9a07fef2775cd59196f1 100644 (file)
--- a/actions.c
+++ b/actions.c
@@ -185,13 +185,13 @@ static int bigwords(long id)
  *  Look up foo in special section of vocab to determine which word we've got.
  *  Last word zips the eggs back to the giant room (unless already there). */
 {
-    if ((game.foobar == WORD_EMPTY && id == ACTION_WORD(FEE)) ||
-        (game.foobar == ACTION_WORD(FEE) && id == ACTION_WORD(FIE)) ||
-        (game.foobar == ACTION_WORD(FIE) && id == ACTION_WORD(FOE)) ||
-        (game.foobar == ACTION_WORD(FOE) && id == ACTION_WORD(FOO)) ||
-        (game.foobar == ACTION_WORD(FOE) && id == ACTION_WORD(FUM))) {
+    if ((game.foobar == WORD_EMPTY && id == FEE) ||
+        (game.foobar == FEE && id == FIE) ||
+        (game.foobar == FIE && id == FOE) ||
+        (game.foobar == FOE && id == FOO) ||
+        (game.foobar == FOE && id == FUM)) {
         game.foobar = id;
-        if ((id != ACTION_WORD(FOO)) && (id != ACTION_WORD(FUM))) {
+        if ((id != FOO) && (id != FUM)) {
             rspeak(OK_MAN);
             return GO_CLEAROBJ;
         }
@@ -420,12 +420,12 @@ static int chain(verb_t verb)
         switch (game.prop[BEAR]) {
         case BEAR_DEAD:
             // LCOV_EXCL_START
-           /* Can't be reached as long as the only way for the bear to die
-            * is from a bridge collapse. Leave in in case this changes, but 
-            * exclude from coverage testing. */
+            /* Can't be reached as long as the only way for the bear to die
+             * is from a bridge collapse. Leave in in case this changes, but
+             * exclude from coverage testing. */
             game.fixed[BEAR] = IS_FIXED;
             break;
-            // LCOV_EXCL_END
+        // LCOV_EXCL_STOP
         default:
             game.fixed[BEAR] = IS_FREE;
         }
@@ -477,15 +477,13 @@ static int discard(verb_t verb, obj_t obj)
         game.prop[CAVITY] = CAVITY_FULL;
         if (HERE(RUG) && ((obj == EMERALD && game.prop[RUG] != RUG_HOVER) ||
                           (obj == RUBY && game.prop[RUG] == RUG_HOVER))) {
-            int spk;
             if (obj == RUBY)
-                spk = RUG_SETTLES;
+                rspeak(RUG_SETTLES);
             else if (TOTING(RUG))
-                spk = RUG_WIGGLES;
+                rspeak(RUG_WIGGLES);
             else
-                spk = RUG_RISES;
-            rspeak(spk);
-            if (spk != RUG_WIGGLES) {
+                rspeak(RUG_RISES);
+            if (!TOTING(RUG) || obj == RUBY) {
                 int k = (game.prop[RUG] == RUG_HOVER) ? RUG_FLOOR : RUG_HOVER;
                 game.prop[RUG] = k;
                 if (k == RUG_HOVER)
@@ -903,7 +901,11 @@ static int listen(void)
             game.prop[i] < 0)
             continue;
         int mi =  game.prop[i];
-        /* FIXME: Weird magic on object states */
+        /* (ESR) Some unpleasant magic on object states here. Ideally
+         * we'd have liked the bird to be a normal object that we can
+         * use state_change() on; can't do it, because there are
+         * actually two different series of per-state birdsounds
+         * depending on whether player has drunk dragon's blood. */
         if (i == BIRD)
             mi += 3 * game.blooded;
         long packed_zzword = token_to_packed(game.zzword);
@@ -1123,16 +1125,18 @@ static int say(struct command_t *command)
     }
     char word1[TOKLEN + 1];
     packed_to_token(command->wd1, word1);
-    int wd = (int) get_vocab_id(word1);
-    if (wd == MOTION_WORD(XYZZY) ||
-        wd == MOTION_WORD(PLUGH) ||
-        wd == MOTION_WORD(PLOVER) ||
-        wd == ACTION_WORD(FEE) ||
-        wd == ACTION_WORD(FIE) ||
-        wd == ACTION_WORD(FOE) ||
-        wd == ACTION_WORD(FOO) ||
-        wd == ACTION_WORD(FUM) ||
-        wd == ACTION_WORD(PART)) {
+    long wd;
+    enum wordtype type;
+    get_vocab_metadata(word1, &wd, &type);
+    if (wd == XYZZY ||
+        wd == PLUGH ||
+        wd == PLOVER ||
+        wd == FEE ||
+        wd == FIE ||
+        wd == FOE ||
+        wd == FOO ||
+        wd == FUM ||
+        wd == PART) {
         /* FIXME: scribbles on the interpreter's command block */
         wordclear(&command->wd2);
         return GO_LOOKUP;