Move a few prototypes and static'ed a few functions
[open-adventure.git] / actions.c
index 29369de08c1ad87498b1b1a64dbca2b3f81ddbab..aa63f6c83bfe09eafe2c61704fcfb151fd999e45 100644 (file)
--- a/actions.c
+++ b/actions.c
@@ -38,7 +38,8 @@ static int attack(FILE *input, long verb, token_t obj)
            /* Clam and oyster both treated as clam for intransitive case;
             * no harm done. */
            if (HERE(CLAM) || HERE(OYSTER))obj=NOBJECTS*obj+CLAM;
-           if (obj > NOBJECTS) return GO_UNKNOWN;
+           if (obj > NOBJECTS)
+               return GO_UNKNOWN;
        }
     }
     if (obj == BIRD) {
@@ -52,7 +53,7 @@ static int attack(FILE *input, long verb, token_t obj)
        game.prop[BIRD]=0;
        spk=BIRD_DEAD;
     }
-    if (obj == VEND) {
+    else if (obj == VEND) {
        PSPEAK(VEND,game.prop[VEND]+2);
        game.prop[VEND]=3-game.prop[VEND];
        return GO_CLEAROBJ;
@@ -78,7 +79,7 @@ static int attack(FILE *input, long verb, token_t obj)
                game.dseen[i]=false;
            }
        }
-       spk=spk+1+1/dwarves;    /* FIXME: Arithmetic on message numbers */
+       spk = (dwarves > 1) ? OGRE_PANIC1 : OGRE_PANIC2;
     }
     else if (obj == BEAR)
        /* FIXME: Arithmetic on message numbers */
@@ -167,22 +168,20 @@ static int bivalve(token_t verb, token_t obj)
     return GO_CLEAROBJ;
 }
 
-static int blast(void)
+static void blast(void)
 /*  Blast.  No effect unless you've got dynamite, which is a neat trick! */
 {
     if (game.prop[ROD2] < 0 || !game.closed)
-    {
        RSPEAK(REQUIRES_DYNAMITE);
-       return GO_CLEAROBJ;
+    else {
+       game.bonus=133;
+       if (game.loc == LOC_NE)
+           game.bonus=134;
+       if (HERE(ROD2))
+           game.bonus=135;
+       RSPEAK(game.bonus);
+       score(endgame);
     }
-    game.bonus=133;
-    if (game.loc == LOC_NE)
-       game.bonus=134;
-    if (HERE(ROD2))
-       game.bonus=135;
-    RSPEAK(game.bonus);
-    score(endgame);
-    return GO_CLEAROBJ;        /* pacify compiler - we never get here */
 }
 
 static int vbreak(token_t verb, token_t obj)
@@ -252,10 +251,12 @@ static int carry(token_t verb, token_t obj)
        if (!HERE(BOTTLE) || LIQUID() != obj) {
            if (TOTING(BOTTLE) && game.prop[BOTTLE] == 1)
                return(fill(verb, BOTTLE));
-           if (game.prop[BOTTLE] != 1)spk=BOTTLE_FULL;
-           if (!TOTING(BOTTLE))spk=NO_CONTAINER;
-           RSPEAK(spk);
-           return GO_CLEAROBJ;
+           else {
+               if (game.prop[BOTTLE] != 1)spk=BOTTLE_FULL;
+               if (!TOTING(BOTTLE))spk=NO_CONTAINER;
+               RSPEAK(spk);
+               return GO_CLEAROBJ;
+           }
        }
        obj = BOTTLE;
     }
@@ -457,7 +458,7 @@ static int extinguish(token_t verb, int obj)
     else if (obj == LAMP) {
        game.prop[LAMP]=0;
        RSPEAK(LAMP_OFF);
-       spk = DARK(game.loc) ? PITCH_DARK : ARB_0;
+       spk = DARK(game.loc) ? PITCH_DARK : NO_MESSAGE;
     }
     else if (obj == DRAGON || obj == VOLCAN)
        spk=BEYOND_POWER;
@@ -624,7 +625,7 @@ static int inven(void)
        game.blklin=false;
        PSPEAK(i,-1);
        game.blklin=true;
-       spk=ARB_0;
+       spk=NO_MESSAGE;
     }
     if (TOTING(BEAR))
        spk=TAME_BEAR;
@@ -632,7 +633,7 @@ static int inven(void)
     return GO_CLEAROBJ;
 }
 
-int light(token_t verb, token_t obj)
+static int light(token_t verb, token_t obj)
 /*  Light.  Applicable only to lamp and urn. */
 {
     int spk = ACTSPK[verb];
@@ -643,12 +644,12 @@ int light(token_t verb, token_t obj)
     }
 
     if (obj == URN) {
-       spk=URN_EMPTY;
-       if (game.prop[URN] == 0)
-           {RSPEAK(spk); return GO_CLEAROBJ;}
-       spk=URN_LIT;
-       game.prop[URN]=2;
-       RSPEAK(spk);
+       if (game.prop[URN] == 0) {
+           RSPEAK(URN_EMPTY);
+       } else {
+           game.prop[URN] = 2;
+           RSPEAK(URN_LIT);
+       }
        return GO_CLEAROBJ;
     } else {
        if (obj != LAMP)
@@ -679,14 +680,14 @@ static int listen(void)
     if (k != 0) {
        RSPEAK(labs(k));
        if (k < 0) return GO_CLEAROBJ;
-       spk=ARB_0;
+       spk=NO_MESSAGE;
     }
     SETPRM(1,game.zzword,0);
     for (int i=1; i<=NOBJECTS; i++) {
        if (!HERE(i) || OBJSND[i] == 0 || game.prop[i] < 0)
            continue;
        PSPEAK(i,OBJSND[i]+game.prop[i]);
-       spk=ARB_0;
+       spk=NO_MESSAGE;
        if (i == BIRD && OBJSND[i]+game.prop[i] == 8)
            DESTROY(BIRD);
     }
@@ -813,7 +814,7 @@ static int reservoir(void)
 /*  Z'ZZZ (word gets recomputed at startup; different each game). */
 {
     if (!AT(RESER) && game.loc != game.fixed[RESER]-1) {
-       RSPEAK(RUB_NOGO);
+       RSPEAK(NOTHING_HAPPENS);
        return GO_CLEAROBJ;
     } else {
        PSPEAK(RESER,game.prop[RESER]+1);
@@ -864,7 +865,6 @@ static int say(void)
     }
     RSPEAK(OKEY_DOKEY);
     return GO_CLEAROBJ;
-
 }
 
 static int throw_support(long spk)
@@ -921,27 +921,22 @@ static int throw(FILE *cmdin, long verb, token_t obj)
         }
         if (HERE(BEAR) && game.prop[BEAR] == 0) {
             /* This'll teach him to throw the axe at the bear! */
-            spk=AXE_LOST;
             DROP(AXE,game.loc);
-            game.fixed[AXE]= -1;
-            game.prop[AXE]=1;
+            game.fixed[AXE] = -1;
+            game.prop[AXE] = 1;
             JUGGLE(BEAR);
-            {RSPEAK(spk); return GO_CLEAROBJ;}
+            RSPEAK(AXE_LOST);
+           return GO_CLEAROBJ;
         }
         return(attack(cmdin, verb, 0));
     }
 
     if (randrange(NDWARVES+1) < game.dflag) {
-        spk=DWARF_DODGES;
-        return throw_support(spk);
+        return throw_support(DWARF_DODGES);
     }
     game.dseen[i]=false;
     game.dloc[i]=0;
-    spk=KILLED_DWARF;
-    ++game.dkill;
-    if (game.dkill == 1)spk=DWARF_SMOKE;
-
-    return throw_support(spk);
+    return throw_support((++game.dkill == 1) ? DWARF_SMOKE : KILLED_DWARF);
 }
 
 static int vscore(void)
@@ -954,13 +949,13 @@ static int vscore(void)
 static int wake(token_t verb, token_t obj)
 /* Wake.  Only use is to disturb the dwarves. */
 {
-    if (obj != DWARF || !game.closed)
-    {
+    if (obj != DWARF || !game.closed) {
        RSPEAK(ACTSPK[verb]);
        return GO_CLEAROBJ;
+    } else {
+       RSPEAK(PROD_DWARF);
+       return GO_DWARFWAKE;
     }
-    RSPEAK(PROD_DWARF);
-    return GO_DWARFWAKE;
 }
 
 static int wave(token_t verb, token_t obj)
@@ -1016,8 +1011,8 @@ int action(FILE *input, enum speechpart part, long verb, token_t obj)
        else if (obj == GRATE) {
            if (game.loc == LOC_START || game.loc == LOC_VALLEY || game.loc == LOC_SLIT)
                obj=DPRSSN;
-           /* FIXME: Arithmetic on location numbers */
-           if (game.loc > LOC_BELOWGRATE && game.loc < LOC_MISTHALL)
+           if (game.loc == LOC_COBBLE || game.loc == LOC_DEBRIS || game.loc == LOC_AWKWARD ||
+               game.loc == LOC_BIRD || game.loc == LOC_PITTOP)
                obj=ENTRNC;
            if (obj != GRATE)
                return GO_MOVE;
@@ -1088,15 +1083,15 @@ int action(FILE *input, enum speechpart part, long verb, token_t obj)
                    case 19: /* INVEN */ return inven();
                    case 20: /* FEED  */ return GO_UNKNOWN; 
                    case 21: /* FILL  */ return fill(verb, obj);   
-                   case 22: /* BLAST */ return blast();   
+                   case 22: /* BLAST */ blast(); return GO_CLEAROBJ;
                    case 23: /* SCOR  */ return vscore();   
                    case 24: /* FOO   */ return bigwords(WD1);   
                    case 25: /* BRIEF */ return brief();   
                    case 26: /* READ  */ return read(input, verb, INTRANSITIVE);
                    case 27: /* BREAK */ return GO_UNKNOWN; 
                    case 28: /* WAKE  */ return GO_UNKNOWN; 
-                   case 29: /* SUSP  */ return saveresume(input, false);   
-                   case 30: /* RESU  */ return saveresume(input, true);   
+                   case 29: /* SUSP  */ return suspend(input);
+                   case 30: /* RESU  */ return resume(input);
                    case 31: /* FLY   */ return fly(verb, INTRANSITIVE);   
                    case 32: /* LISTE */ return listen();   
                    case 33: /* ZZZZ  */ return reservoir();   
@@ -1129,7 +1124,7 @@ int action(FILE *input, enum speechpart part, long verb, token_t obj)
                case 19: /* INVEN */ return find(verb, obj);   
                case 20: /* FEED  */ return feed(verb, obj);   
                case 21: /* FILL  */ return fill(verb, obj);   
-               case 22: /* BLAST */ return blast();   
+               case 22: /* BLAST */ blast(); return GO_CLEAROBJ;
                case 23: /* SCOR  */ {RSPEAK(spk); return GO_CLEAROBJ;} 
                case 24: /* FOO   */ {RSPEAK(spk); return GO_CLEAROBJ;} 
                case 25: /* BRIEF */ {RSPEAK(spk); return GO_CLEAROBJ;}