Coverage -- giant words
[open-adventure.git] / actions.c
index 51ad0ef5d432d9d020c6279df161179e9f32e775..13fc8c5dfdf7bee165612b5c0e3b5af818b84231 100644 (file)
--- a/actions.c
+++ b/actions.c
@@ -1086,19 +1086,26 @@ static int wake(token_t verb, token_t obj)
     }
 }
 
+static token_t birdspeak(void)
+{
+    switch (game.prop[BIRD]) {
+    case BIRD_CAGED:
+        return CAGE_FLY;
+    default:
+        return FREE_FLY;
+    }
+}
+
 static int wave(token_t verb, token_t obj)
 /* Wave.  No effect unless waving rod at fissure or at bird. */
 {
-    if ((!TOTING(obj)) && (obj != ROD || !TOTING(ROD2))) {
-        rspeak(ARENT_CARRYING);
-        return GO_CLEAROBJ;
-    }
     if (obj != ROD ||
         !TOTING(obj) ||
         (!HERE(BIRD) && (game.closng || !AT(FISSURE)))) {
-        rspeak(actions[verb].message);
+        rspeak(((!TOTING(obj)) && (obj != ROD || !TOTING(ROD2))) ? ARENT_CARRYING : actions[verb].message);
         return GO_CLEAROBJ;
     }
+
     if (game.prop[BIRD] == BIRD_UNCAGED && game.loc == game.place[STEPS] && game.prop[JADE] < 0) {
         drop(JADE, game.loc);
         game.prop[JADE] = 0;
@@ -1107,24 +1114,16 @@ static int wave(token_t verb, token_t obj)
         return GO_CLEAROBJ;
     } else {
         if (game.closed) {
-            rspeak(actions[verb].message);
+            rspeak(birdspeak());
             return GO_DWARFWAKE;
         }
         if (game.closng || !AT(FISSURE)) {
-            rspeak(actions[verb].message);
+            rspeak(birdspeak());
             return GO_CLEAROBJ;
         }
-        if (HERE(BIRD)) {
-            switch (game.prop[BIRD]) {
-            case BIRD_UNCAGED:
-            case BIRD_FOREST_UNCAGED:
-                rspeak(FREE_FLY);
-                break;
-            case BIRD_CAGED:
-                rspeak(CAGE_FLY);
-                break;
-            }
-        }
+        if (HERE(BIRD))
+            rspeak(birdspeak());
+
         /* FIXME: Arithemetic on property values */
         game.prop[FISSURE] = 1 - game.prop[FISSURE];
         pspeak(FISSURE, look, 2 - game.prop[FISSURE], true);