if (game.fixed[obj] != 0)
return(2011);
if (obj == WATER || obj == OIL) {
- if (!HERE(BOTTLE) || LIQ(0) != obj) {
+ if (!HERE(BOTTLE) || LIQUID() != obj) {
if (TOTING(BOTTLE) && game.prop[BOTTLE] == 1)
return(fill(BOTTLE));
if (game.prop[BOTTLE] != 1)SPK=105;
if ((obj==BIRD || obj==CAGE) && (game.prop[BIRD]==1 || -1-game.prop[BIRD]==1))
CARRY(BIRD+CAGE-obj,game.loc);
CARRY(obj,game.loc);
- if (obj == BOTTLE && LIQ(0) != 0)
- game.place[LIQ(0)] = -1;
+ if (obj == BOTTLE && LIQUID() != 0)
+ game.place[LIQUID()] = -1;
if (!GSTONE(obj) || game.prop[obj] == 0)
return(2009);
game.prop[obj]=0;
if (game.prop[VASE] != 0)game.fixed[VASE]= -1;
}
}
- K=LIQ(0);
+ K=LIQUID();
if (K == obj)obj=BOTTLE;
if (obj == BOTTLE && K != 0)game.place[K]=0;
if (obj == CAGE && game.prop[BIRD] == 1)DROP(BIRD,game.loc);
/* Drink. If no object, assume water and look for it here. If water is in
* the bottle, drink that, else must be at a water loc, so drink stream. */
{
- if (obj == 0 && LIQLOC(game.loc) != WATER && (LIQ(0) != WATER || !HERE(BOTTLE)))
+ if (obj == 0 && LIQLOC(game.loc) != WATER && (LIQUID() != WATER || !HERE(BOTTLE)))
return(8000);
if (obj != BLOOD) {
if (obj != 0 && obj != WATER)SPK=110;
- if (SPK == 110 || LIQ(0) != WATER || !HERE(BOTTLE)) return(2011);
+ if (SPK == 110 || LIQUID() != WATER || !HERE(BOTTLE)) return(2011);
game.prop[BOTTLE]=1;
game.place[WATER]=0;
SPK=74;
if (obj == LAMP) {
game.prop[LAMP]=0;
RSPEAK(40);
- if (DARK(0))
+ if (DARK(game.loc))
RSPEAK(16);
return(2012);
}
SPK=213;
if (game.prop[URN] != 0) return(2011);
SPK=144;
- k=LIQ(0);
+ k=LIQUID();
if (k == 0 || !HERE(BOTTLE)) return(2011);
game.place[k]=0;
game.prop[BOTTLE]=1;
SPK=106;
if (HERE(URN) && game.prop[URN] != 0)
SPK=214;
- if (LIQ(0) != 0)
+ if (LIQUID() != 0)
SPK=105;
if (SPK != 107)
return(2011);
game.prop[BOTTLE]=MOD(COND[game.loc],4)/2*2;
- k=LIQ(0);
+ k=LIQUID();
if (TOTING(BOTTLE))
game.place[k]= -1;
if (k == OIL)
/* Find. Might be carrying it, or it might be here. Else give caveat. */
{
if (AT(obj) ||
- (LIQ(0) == obj && AT(BOTTLE)) ||
+ (LIQUID() == obj && AT(BOTTLE)) ||
obj == LIQLOC(game.loc) ||
(obj == DWARF && ATDWRF(game.loc) > 0))
SPK=94;
/* Pour. If no object, or object is bottle, assume contents of bottle.
* special tests for pouring water or oil on plant or rusty door. */
{
- if (obj == BOTTLE || obj == 0)obj=LIQ(0);
+ if (obj == BOTTLE || obj == 0)obj=LIQUID();
if (obj == 0) return(8000);
if (!TOTING(obj)) return(2011);
SPK=78;
if (HERE(i) && OBJTXT[i] != 0 && game.prop[i] >= 0)
obj = obj * NOBJECTS + i;
}
- if (obj > NOBJECTS || obj == 0 || DARK(0)) return(8000);
+ if (obj > NOBJECTS || obj == 0 || DARK(game.loc)) return(8000);
}
- if (DARK(0)) {
+ if (DARK(game.loc)) {
SETPRM(1,WD1,WD1X);
RSPEAK(256);
return(2012);
}
else if (obj == DWARF && ATDWRF(game.loc) > 0)
/* FALL THROUGH */;
- else if ((LIQ(0) == obj && HERE(BOTTLE)) || obj == LIQLOC(game.loc))
+ else if ((LIQUID() == obj && HERE(BOTTLE)) || obj == LIQLOC(game.loc))
/* FALL THROUGH */;
else if (obj == OIL && HERE(URN) && game.prop[URN] != 0) {
obj=URN;
*
* AT(OBJ) = true if on either side of two-placed object
* CNDBIT(L,N) = true if COND(L) has bit n set (bit 0 is units bit)
- * DARK(DUMMY) = true if location "LOC" is dark
+ * DARK(LOC) = true if location "LOC" is dark
* FORCED(LOC) = true if LOC moves without asking for input (COND=2)
- * FOREST(LOC) = true if LOC is part of the forest
- * GSTONE(OBJ) = true if OBJ is a gemstone
+ * FOREST(LOC) = true if LOC is part of the forest
+ * GSTONE(OBJ) = true if OBJ is a gemstone
* HERE(OBJ) = true if the OBJ is at "LOC" (or is being carried)
- * LIQ(DUMMY) = object number of liquid in bottle
+ * LIQUID() = object number of liquid in bottle
* LIQLOC(LOC) = object number of liquid (if any) at LOC
- * PCT(N) = true N% of the time (N integer from 0 to 100)
+ * PCT(N) = true N% of the time (N integer from 0 to 100)
* TOTING(OBJ) = true if the OBJ is being carried */
#define TOTING(OBJ) (game.place[OBJ] == -1)
#define AT(OBJ) (game.place[OBJ] == game.loc || game.fixed[OBJ] == game.loc)
#define HERE(OBJ) (AT(OBJ) || TOTING(OBJ))
#define LIQ2(PBOTL) ((1-(PBOTL))*WATER+((PBOTL)/2)*(WATER+OIL))
-#define LIQ(DUMMY) (LIQ2(game.prop[BOTTLE]<0 ? -1-game.prop[BOTTLE] : game.prop[BOTTLE]))
+#define LIQUID() (LIQ2(game.prop[BOTTLE]<0 ? -1-game.prop[BOTTLE] : game.prop[BOTTLE]))
#define LIQLOC(LOC) (LIQ2((MOD(COND[LOC]/2*2,8)-5)*MOD(COND[LOC]/4,2)+1))
#define CNDBIT(L,N) (TSTBIT(COND[L],N))
#define FORCED(LOC) (COND[LOC] == 2)
KK=STEXT[game.loc];
if (MOD(game.abbrev[game.loc],game.abbnum) == 0 || KK == 0)
KK=LTEXT[game.loc];
- if (!FORCED(game.loc) && DARK(0)) {
+ if (!FORCED(game.loc) && DARK(game.loc)) {
/* The easiest way to get killed is to fall into a pit in
* pitch darkness. */
if (game.wzdark && PCT(35)) {
* bear). These hacks are because game.prop=0 is needed to
* get full score. */
- if (DARK(0)) goto L2012;
+ if (DARK(game.loc)) goto L2012;
++game.abbrev[game.loc];
i=game.atloc[game.loc];
L2004: if (i == 0) goto L2012;
game.prop[i] = -1-game.prop[i];
}
}
- game.wzdark=DARK(0);
+ game.wzdark=DARK(game.loc);
if (game.knfloc > 0 && game.knfloc != game.loc)
game.knfloc=0;