#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.
* 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);
}
if (game.foobar != 0)SPK=151;
return(2011);
} else {
-
game.foobar=k;
if (k != 4) return(2009);
game.foobar=0;
{
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;
* 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);