Add test for urn actions.
[open-adventure.git] / actions.c
index eb7e13cc0c22d3827723cdc214953668fadddc50..6936fa279035c61437b6a74fea6b2515d60da047 100644 (file)
--- a/actions.c
+++ b/actions.c
@@ -129,17 +129,18 @@ static int bigwords(long foo)
        if (game.place[EGGS]==PLAC[EGGS] || (TOTING(EGGS) && game.loc==PLAC[EGGS])) {
            RSPEAK(spk);
            return GO_CLEAROBJ;
+       } else {
+           /*  Bring back troll if we steal the eggs back from him before
+            *  crossing. */
+           if (game.place[EGGS]==0 && game.place[TROLL]==0 && game.prop[TROLL]==0)
+               game.prop[TROLL]=1;
+           k=2;
+           if (HERE(EGGS))k=1;
+           if (game.loc == PLAC[EGGS])k=0;
+           MOVE(EGGS,PLAC[EGGS]);
+           PSPEAK(EGGS,k);
+           return GO_CLEAROBJ;
        }
-       /*  Bring back troll if we steal the eggs back from him before
-        *  crossing. */
-       if (game.place[EGGS]==0 && game.place[TROLL]==0 && game.prop[TROLL]==0)
-           game.prop[TROLL]=1;
-       k=2;
-       if (HERE(EGGS))k=1;
-       if (game.loc == PLAC[EGGS])k=0;
-       MOVE(EGGS,PLAC[EGGS]);
-       PSPEAK(EGGS,k);
-       return GO_CLEAROBJ;
     }
 }
 
@@ -176,6 +177,7 @@ static int blast(void)
        game.bonus=135;
     RSPEAK(game.bonus);
     score(0);
+    return GO_CLEAROBJ;        /* pacify compiler - we never get here */
 }
 
 static int vbreak(token_t verb, token_t obj)
@@ -233,9 +235,9 @@ static int carry(token_t verb, token_t obj)
     if (obj == RUG && game.prop[RUG] == 2)spk=222;
     if (obj == SIGN)spk=196;
     if (obj == MESSAG) {
-       spk=190;
-       return GO_CLEAROBJ;
+       RSPEAK(190);
        DSTROY(MESSAG);
+       return GO_CLEAROBJ;
     }
     if (game.fixed[obj] != 0) {
        RSPEAK(spk);
@@ -392,13 +394,11 @@ static int drink(token_t verb, token_t obj)
        return(8000);
     if (obj != BLOOD) {
        if (obj != 0 && obj != WATER)spk=110;
-       if (spk == 110 || LIQUID() != WATER || !HERE(BOTTLE)) {
-           RSPEAK(spk);
-           return GO_CLEAROBJ;
+       if (spk != 110 && LIQUID() == WATER && HERE(BOTTLE)) {
+           game.prop[BOTTLE]=1;
+           game.place[WATER]=0;
+           spk=74;
        }
-       game.prop[BOTTLE]=1;
-       game.place[WATER]=0;
-       spk=74;
     } else {
        DSTROY(BLOOD);
        game.prop[DRAGON]=2;
@@ -471,7 +471,7 @@ static int feed(token_t verb, token_t obj)
        return GO_CLEAROBJ;
     }
     else if (obj == SNAKE || obj == DRAGON || obj == TROLL) {
-       int spk=102;
+       spk=102;
        if (obj == DRAGON && game.prop[DRAGON] != 0)spk=110;
        if (obj == TROLL)spk=182;
        if (obj == SNAKE && !game.closed && HERE(BIRD)) {
@@ -695,7 +695,6 @@ static int listen(void)
 static int lock(token_t verb, token_t obj)
 /* Lock, unlock, no object given.  Assume various things if present. */
 {
-    int k;
     int spk = ACTSPK[verb];
     if (obj == INTRANSITIVE) {
        spk=28;
@@ -990,7 +989,6 @@ int action(FILE *input, enum speechpart part, long verb, token_t obj)
  *  unless verb is "say", which snarfs arbitrary second word.
  */
 {
-    int kk;
     token_t spk=ACTSPK[verb];
 
     if (part == unknown)