Code simplification.
[open-adventure.git] / actions.c
index 6cd73b562d218bf489abc5269d0e7bd54332ffea..fdb5f85bfae1b49a71f2b31620b2f484266157ec 100644 (file)
--- a/actions.c
+++ b/actions.c
@@ -70,49 +70,47 @@ static int attack(FILE *input, long verb, token_t obj)
        RSPEAK(spk);
        RSPEAK(KNIFE_THROWN);
        DSTROY(OGRE);
-       int k=0;
+       int dwarves=0;
        for (int i=1; i < PIRATE; i++) {
            if (game.dloc[i] == game.loc) {
-               ++k;
+               ++dwarves;
                game.dloc[i] = LOC_LONGWEST;
                game.dseen[i]=false;
            }
        }
-       spk=spk+1+1/k;  /* FIXME: Arithmetic on message numbers */
-       RSPEAK(spk);
-       return GO_CLEAROBJ;
+       spk=spk+1+1/dwarves;    /* FIXME: Arithmetic on message numbers */
     }
-
-    if (obj == BEAR)
+    else if (obj == BEAR)
        /* FIXME: Arithmetic on message numbers */
        spk = BEAR_HANDS+(game.prop[BEAR]+1)/2;
-    if (obj != DRAGON || game.prop[DRAGON] != 0) {
-       RSPEAK(spk);
-       return GO_CLEAROBJ;
-    }
-    /*  Fun stuff for dragon.  If he insists on attacking it, win!
-     *  Set game.prop to dead, move dragon to central loc (still
-     *  fixed), move rug there (not fixed), and move him there,
-     *  too.  Then do a null motion to get new description. */
-    RSPEAK(BARE_HANDS_QUERY);
-    GETIN(input,&WD1,&WD1X,&WD2,&WD2X);
-    if (WD1 != MAKEWD(25) && WD1 != MAKEWD(250519))
-       return GO_CHECKFOO;
-    PSPEAK(DRAGON,3);
-    game.prop[DRAGON]=1;
-    game.prop[RUG]=0;
-    int k=(PLAC[DRAGON]+FIXD[DRAGON])/2;
-    MOVE(DRAGON+NOBJECTS,-1);
-    MOVE(RUG+NOBJECTS,0);
-    MOVE(DRAGON,k);
-    MOVE(RUG,k);
-    DROP(BLOOD,k);
-    for (obj=1; obj<=NOBJECTS; obj++) {
-       if (game.place[obj] == PLAC[DRAGON] || game.place[obj] == FIXD[DRAGON])
-           MOVE(obj,k);
+    else if (obj == DRAGON && game.prop[DRAGON] == 0) {
+       /*  Fun stuff for dragon.  If he insists on attacking it, win!
+        *  Set game.prop to dead, move dragon to central loc (still
+        *  fixed), move rug there (not fixed), and move him there,
+        *  too.  Then do a null motion to get new description. */
+       RSPEAK(BARE_HANDS_QUERY);
+       GETIN(input,&WD1,&WD1X,&WD2,&WD2X);
+       if (WD1 != MAKEWD(25) && WD1 != MAKEWD(250519))
+           return GO_CHECKFOO;
+       PSPEAK(DRAGON,3);
+       game.prop[DRAGON]=1;
+       game.prop[RUG]=0;
+       int k=(PLAC[DRAGON]+FIXD[DRAGON])/2;
+       MOVE(DRAGON+NOBJECTS,-1);
+       MOVE(RUG+NOBJECTS,0);
+       MOVE(DRAGON,k);
+       MOVE(RUG,k);
+       DROP(BLOOD,k);
+       for (obj=1; obj<=NOBJECTS; obj++) {
+           if (game.place[obj] == PLAC[DRAGON] || game.place[obj] == FIXD[DRAGON])
+               MOVE(obj,k);
+       }
+       game.loc=k;
+       return GO_MOVE;
     }
-    game.loc=k;
-    return GO_MOVE;
+
+    RSPEAK(spk);
+    return GO_CLEAROBJ;
 }
 
 static int bigwords(long foo)
@@ -183,7 +181,7 @@ static int blast(void)
     if (HERE(ROD2))
        game.bonus=135;
     RSPEAK(game.bonus);
-    score(0);
+    score(endgame);
     return GO_CLEAROBJ;        /* pacify compiler - we never get here */
 }
 
@@ -614,7 +612,7 @@ static int fly(token_t verb, token_t obj)
     return GO_TERMINATE;
 }
 
-static int inven(token_t obj)
+static int inven(void)
 /* Inventory. If object, treat same as find.  Else report on current burden. */
 {
     int spk=NO_CARRY;
@@ -777,7 +775,7 @@ static int quit(FILE *input)
 /*  Quit.  Intransitive only.  Verify intent and exit if that's what he wants. */
 {
     if (YES(input,REALLY_QUIT,OK_MAN,OK_MAN))
-       score(1);
+       score(quitgame);
     return GO_CLEAROBJ;
 }
 
@@ -949,7 +947,7 @@ static int throw(FILE *cmdin, long verb, token_t obj)
 static int vscore(void)
 /* Score.  Call scoring routine but tell it to return. */
 {
-    score(-1);
+    score(scoregame);
     return GO_CLEAROBJ;
 }
 
@@ -1087,7 +1085,7 @@ int action(FILE *input, enum speechpart part, long verb, token_t obj)
                    case 16: /* TOSS  */ return GO_UNKNOWN; 
                    case 17: /* QUIT  */ return quit(input);   
                    case 18: /* FIND  */ return GO_UNKNOWN; 
-                   case 19: /* INVEN */ return inven(obj);   
+                   case 19: /* INVEN */ return inven();
                    case 20: /* FEED  */ return GO_UNKNOWN; 
                    case 21: /* FILL  */ return fill(verb, obj);   
                    case 22: /* BLAST */ return blast();