Eliminate some uses of wd2 - tests can be done on raw2 buffer instead.
[open-adventure.git] / actions.c
index 802c1f3303b6c233d8b648985b04d28fc7369b2c..83177d4ad666cdec551f77021c5792811bda8098 100644 (file)
--- a/actions.c
+++ b/actions.c
@@ -101,11 +101,10 @@ static int attack(struct command_t *command)
          *  fixed), move rug there (not fixed), and move him there,
          *  too.  Then do a null motion to get new description. */
         rspeak(BARE_HANDS_QUERY);
-       if (!silent_yes())
-         {
-           speak(arbitrary_messages[NASTY_DRAGON]);
-           return GO_MOVE;
-         }
+        if (!silent_yes()) {
+            speak(arbitrary_messages[NASTY_DRAGON]);
+            return GO_MOVE;
+        }
         state_change(DRAGON, DRAGON_DEAD);
         game.prop[RUG] = RUG_FLOOR;
         /* Hardcoding LOC_SECRET5 as the dragon's death location is ugly.
@@ -202,15 +201,14 @@ static int bigwords(long id)
              *  crossing. */
             if (game.place[EGGS] == LOC_NOWHERE && game.place[TROLL] == LOC_NOWHERE && game.prop[TROLL] == TROLL_UNPAID)
                 game.prop[TROLL] = TROLL_PAIDONCE;
-            int k;
             if (HERE(EGGS))
-                k = EGGS_VANISHED;
+                pspeak(EGGS, look, EGGS_VANISHED, true);
             else if (game.loc == objects[EGGS].plac)
-                k = EGGS_HERE;
+                pspeak(EGGS, look, EGGS_HERE, true);
             else
-                k = EGGS_DONE;
+                pspeak(EGGS, look, EGGS_DONE, true);
             move(EGGS, objects[EGGS].plac);
-            pspeak(EGGS, look, k, true);
+
             return GO_CLEAROBJ;
         }
     } else {
@@ -253,7 +251,7 @@ static int vbreak(verb_t verb, obj_t obj)
     switch (obj) {
     case MIRROR:
         if (game.closed) {
-            rspeak(BREAK_MIRROR);
+            state_change(MIRROR, MIRROR_BROKEN);
             return GO_DWARFWAKE;
         } else {
             rspeak(TOO_FAR);
@@ -267,6 +265,7 @@ static int vbreak(verb_t verb, obj_t obj)
             game.fixed[VASE] = IS_FIXED;
             break;
         }
+       /* FALLTHRU */
     default:
         speak(actions[verb].message);
     }
@@ -417,8 +416,8 @@ static int chain(verb_t verb)
             game.prop[BEAR] = CONTENTED_BEAR;
 
         switch (game.prop[BEAR]) {
+        // LCOV_EXCL_START
         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. */
@@ -545,9 +544,7 @@ static int discard(verb_t verb, obj_t obj)
         } else
             rspeak(OK_MAN);
 
-        game.prop[BIRD] = BIRD_UNCAGED;
-        if (FOREST(game.loc))
-            game.prop[BIRD] = BIRD_FOREST_UNCAGED;
+        game.prop[BIRD] = FOREST(game.loc) ? BIRD_FOREST_UNCAGED : BIRD_UNCAGED;
         drop(obj, game.loc);
         return GO_CLEAROBJ;
     }
@@ -595,6 +592,7 @@ static int eat(verb_t verb, obj_t obj)
     case INTRANSITIVE:
         if (!HERE(FOOD))
             return GO_UNKNOWN;
+       /* FALLTHRU */
     case FOOD:
         DESTROY(FOOD);
         rspeak(THANKS_DELICIOUS);
@@ -1003,12 +1001,12 @@ static int lock(verb_t verb, obj_t obj)
     case OYSTER:
         if (verb == LOCK)
             rspeak(HUH_MAN);
-       else if (TOTING(OYSTER))
-           rspeak(DROP_OYSTER);
+        else if (TOTING(OYSTER))
+            rspeak(DROP_OYSTER);
         else if (!TOTING(TRIDENT))
             rspeak(OYSTER_OPENER);
-       else
-           rspeak(OYSTER_OPENS);
+        else
+            rspeak(OYSTER_OPENS);
         break;
     case DOOR:
         rspeak((game.prop[DOOR] == DOOR_UNRUSTED) ? OK_MAN : RUSTY_DOOR);
@@ -1147,7 +1145,7 @@ static int rub(verb_t verb, obj_t obj)
 static int say(struct command_t *command)
 /* Say.  Echo WD2 (or WD1 if no WD2 (SAY WHAT?, etc.).)  Magic words override. */
 {
-    if (command->wd2 > 0) {
+    if (command->raw2 != '\0') {
         command->wd1 = command->wd2;
         strncpy(command->raw1, command->raw2, LINESIZE - 1);
     }
@@ -1319,14 +1317,14 @@ int action(struct command_t *command)
             if (game.loc == LOC_START ||
                 game.loc == LOC_VALLEY ||
                 game.loc == LOC_SLIT) {
-                command->obj = DPRSSN;
+                command->obj = DEPRESSION;
             }
             if (game.loc == LOC_COBBLE ||
                 game.loc == LOC_DEBRIS ||
                 game.loc == LOC_AWKWARD ||
                 game.loc == LOC_BIRD ||
                 game.loc == LOC_PITTOP) {
-                command->obj = ENTRNC;
+                command->obj = ENTRANCE;
             }
         } else if (command->obj == DWARF && atdwrf(game.loc) > 0)
             /* FALL THROUGH */;
@@ -1347,14 +1345,14 @@ int action(struct command_t *command)
             command->obj = ROD2;
             /* FALL THROUGH */;
         } else if ((command->verb == FIND ||
-                    command->verb == INVENTORY) && command->wd2 <= 0)
+                    command->verb == INVENTORY) && (command->id2 == WORD_EMPTY || command->id2 == WORD_NOT_FOUND))
             /* FALL THROUGH */;
         else {
             sspeak(NO_SEE, command->raw1);
             return GO_CLEAROBJ;
         }
 
-        if (command->wd2 > 0)
+        if (command->id2 != WORD_EMPTY && command->id2 != WORD_NOT_FOUND)
             return GO_WORD2;
         if (command->verb != 0)
             command->part = transitive;
@@ -1362,7 +1360,7 @@ int action(struct command_t *command)
 
     switch (command->part) {
     case intransitive:
-        if (command->wd2 > 0 && command->verb != SAY)
+        if (command->raw2[0] != '\0' && command->verb != SAY)
             return GO_WORD2;
         if (command->verb == SAY)
             command->obj = command->wd2;
@@ -1450,7 +1448,7 @@ int action(struct command_t *command)
                 return listen();
             case PART:
                 return reservoir();
-            default:
+            default: // LCOV_EXCL_LINE
                 BUG(INTRANSITIVE_ACTION_VERB_EXCEEDS_GOTO_LIST); // LCOV_EXCL_LINE
             }
         }
@@ -1551,14 +1549,14 @@ int action(struct command_t *command)
         }
         case PART:
             return reservoir();
-        default:
+        default: // LCOV_EXCL_LINE
             BUG(TRANSITIVE_ACTION_VERB_EXCEEDS_GOTO_LIST); // LCOV_EXCL_LINE
         }
     case unknown:
         /* Unknown verb, couldn't deduce object - might need hint */
         sspeak(WHAT_DO, command->raw1);
         return GO_CHECKHINT;
-    default:
+    default: // LCOV_EXCL_LINE
         BUG(SPEECHPART_NOT_TRANSITIVE_OR_INTRANSITIVE_OR_UNKNOWN); // LCOV_EXCL_LINE
     }
 }