Abolish a silly layer of macros.
[open-adventure.git] / actions.c
index ea8f1d1184351be1f9d72182f0df6fbc647fd2e4..8ddd369d285918268561bf6d68f9c06de3339ef3 100644 (file)
--- a/actions.c
+++ b/actions.c
@@ -3,6 +3,8 @@
 #include "advent.h"
 #include "database.h"
 
+#define VRSION 25      /* bump on save format change */
+
 /*
  * Action handlers.  Eventually we'll do lookup through a method table
  * that calls these.  Absolutely nothing like the original FORTRAN.
@@ -79,23 +81,24 @@ static int attack(FILE *input, long verb, long obj)
      *  fixed), move rug there (not fixed), and move him there,
      *  too.  Then do a null motion to get new description. */
     RSPEAK(49);
-    GETIN(input,WD1,WD1X,WD2,WD2X);
-    if (WD1 != MAKEWD(25) && WD1 != MAKEWD(250519)) return(2607);
+    GETIN(input,&WD1,&WD1X,&WD2,&WD2X);
+    if (WD1 != MAKEWD(25) && WD1 != MAKEWD(250519))
+       return(2607);
     PSPEAK(DRAGON,3);
     game.prop[DRAGON]=1;
     game.prop[RUG]=0;
-    K=(PLAC[DRAGON]+FIXD[DRAGON])/2;
+    int k=(PLAC[DRAGON]+FIXD[DRAGON])/2;
     MOVE(DRAGON+NOBJECTS,-1);
     MOVE(RUG+NOBJECTS,0);
-    MOVE(DRAGON,K);
-    MOVE(RUG,K);
-    DROP(BLOOD,K);
+    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);
-       /*etc*/ ;
-    } /* end loop */
-    game.loc=K;
-    K=NUL;
+       if (game.place[obj] == PLAC[DRAGON] || game.place[obj] == FIXD[DRAGON])
+           MOVE(obj,k);
+    }
+    game.loc=k;
+    K=NUL;     /* FIXME: error if removed */
     return(8);
 }
 
@@ -110,7 +113,6 @@ static int bigwords(long foo)
        if (game.foobar != 0)SPK=151;
        return(2011);
     } else {
-
        game.foobar=k;
        if (k != 4) return(2009);
        game.foobar=0;
@@ -524,7 +526,7 @@ static int find(token_t obj)
 {
     if (AT(obj) ||
        (LIQ(0) == obj && AT(BOTTLE)) ||
-       K == LIQLOC(game.loc) ||
+       obj == LIQLOC(game.loc) ||
        (obj == DWARF && ATDWRF(game.loc) > 0))
        SPK=94;
     if (game.closed)SPK=138;
@@ -1079,40 +1081,55 @@ L4090:  switch (verb-1) {
  *  they are never actually dropped at any location, but might be here inside
  *  the bottle or urn or as a feature of the location. */
 
-L5000: obj=K;
-    if (!HERE(K)) goto L5100;
-L5010: if (WD2 > 0) return(2800);
-    if (verb != 0) goto L4090;
+L5000:
+    if (!HERE(obj))
+       goto L5100;
+L5010:
+    if (WD2 > 0)
+       return(2800);
+    if (verb != 0)
+       goto L4090;
     SETPRM(1,WD1,WD1X);
     RSPEAK(255);
     return(2600);
 
 L5100:
-    if (K != GRATE) goto L5110;
-    if (game.loc == 1 || game.loc == 4 || game.loc == 7)K=DPRSSN;
-    if (game.loc > 9 && game.loc < 15)K=ENTRNC;
-    if (K != GRATE) return(8);
-L5110:
-    if (K == DWARF && ATDWRF(game.loc) > 0) goto L5010;
-    if ((LIQ(0) == K && HERE(BOTTLE)) || K == LIQLOC(game.loc)) goto L5010;
-    if (obj != OIL || !HERE(URN) || game.prop[URN] == 0) goto L5120;
+    if (obj == GRATE) {
+       if (game.loc == 1 || game.loc == 4 || game.loc == 7)
+           obj=DPRSSN;
+       if (game.loc > 9 && game.loc < 15)
+           obj=ENTRNC;
+       if (obj != GRATE)
+           return(8);
+    }
+
+    if (obj == DWARF && ATDWRF(game.loc) > 0)
+       goto L5010;
+    if ((LIQ(0) == obj && HERE(BOTTLE)) || obj == LIQLOC(game.loc))
+       goto L5010;
+    if (obj != OIL || !HERE(URN) || game.prop[URN] == 0)
+       goto L5120;
     obj=URN;
     goto L5010;
 L5120:
-    if (obj != PLANT || !AT(PLANT2) || game.prop[PLANT2] == 0) goto L5130;
+    if (obj != PLANT || !AT(PLANT2) || game.prop[PLANT2] == 0)
+       goto L5130;
     obj=PLANT2;
     goto L5010;
 L5130:
-    if (obj != KNIFE || game.knfloc != game.loc) goto L5140;
+    if (obj != KNIFE || game.knfloc != game.loc)
+       goto L5140;
     game.knfloc= -1;
     SPK=116;
     return(2011);
 L5140:
-    if (obj != ROD || !HERE(ROD2)) goto L5190;
+    if (obj != ROD || !HERE(ROD2))
+       goto L5190;
     obj=ROD2;
     goto L5010;
 L5190:
-    if ((verb == FIND || verb == INVENT) && WD2 <= 0) goto L5010;
+    if ((verb == FIND || verb == INVENT) && WD2 <= 0)
+       goto L5010;
     SETPRM(1,WD1,WD1X);
     RSPEAK(256);
     return(2012);