Pull more globals into the game state block.
[open-adventure.git] / main.c
diff --git a/main.c b/main.c
index 3239fc32d6f05ab4dd088aaee269bf53e6f194f0..8a58c5770035dfa8815d1c28ccb41c26a198f260 100644 (file)
--- a/main.c
+++ b/main.c
@@ -14,8 +14,7 @@
 
 struct game_t game;
 
 
 struct game_t game;
 
-long ABB[186], ATLOC[186],
-               FIXED[NOBJECTS+1],
+long ATLOC[186], FIXED[NOBJECTS+1],
                LINK[NOBJECTS*2 + 1], LNLENG, LNPOSN,
                PARMS[26], PLACE[NOBJECTS+1],
                SETUP = 0;
                LINK[NOBJECTS*2 + 1], LNLENG, LNPOSN,
                PARMS[26], PLACE[NOBJECTS+1],
                SETUP = 0;
@@ -23,21 +22,18 @@ char rawbuf[LINESIZE], INLINE[LINESIZE+1], MAP1[129], MAP2[129];
 
 long AMBER, ATTACK, AXE, BACK, BATTER, BEAR, BIRD, BLOOD,
                BOTTLE, CAGE, CAVE, CAVITY, CHAIN, CHASM, CHEST,
 
 long AMBER, ATTACK, AXE, BACK, BATTER, BEAR, BIRD, BLOOD,
                BOTTLE, CAGE, CAVE, CAVITY, CHAIN, CHASM, CHEST,
-               CLAM, CLSHNT, COINS, DALTLC,
-               DOOR, DPRSSN, DRAGON, DWARF, EGGS,
+               CLAM, COINS, DALTLC, DOOR, DPRSSN, DRAGON, DWARF, EGGS,
                EMRALD, ENTER, ENTRNC, FIND, FISSUR, FOOD,
                GRATE, HINT, HINTED[21], HINTLC[21],
                I, INVENT, IGO, J, JADE, K, K2, KEYS, KK,
                KNIFE, KQ, L, LAMP, LL, LOC, LOCK, LOOK,
                MAGZIN, MAXDIE, MAXTRS, MESSAG, MIRROR, MXSCOR,
                EMRALD, ENTER, ENTRNC, FIND, FISSUR, FOOD,
                GRATE, HINT, HINTED[21], HINTLC[21],
                I, INVENT, IGO, J, JADE, K, K2, KEYS, KK,
                KNIFE, KQ, L, LAMP, LL, LOC, LOCK, LOOK,
                MAGZIN, MAXDIE, MAXTRS, MESSAG, MIRROR, MXSCOR,
-               NEWLOC, NOVICE, NUGGET, NUL, NUMDIE, OBJ,
-               OGRE, OIL, OLDOBJ, OYSTER,
-               PANIC, PEARL, PILLOW, PLANT, PLANT2, PROP[NOBJECTS+1], PYRAM,
-               RESER, ROD, ROD2, RUBY, RUG, SAPPH, SAVED, SAY,
+               NUGGET, NUL, OBJ, OGRE, OIL, OYSTER, PEARL, PILLOW,
+               PLANT, PLANT2, PROP[NOBJECTS+1], PYRAM,
+               RESER, ROD, ROD2, RUBY, RUG, SAPPH, SAY,
                SCORE, SECT, SIGN, SNAKE, SPK, STEPS, STICK,
                SCORE, SECT, SIGN, SNAKE, SPK, STEPS, STICK,
-               STREAM, TALLY, THRESH, THROW, TK[21], TRIDNT,
-               TRNDEX, TRNLUZ, TROLL, TROLL2,
-               TURNS, URN, V1, V2, VASE, VEND, VERB,
+               STREAM, THROW, TK[21], TRIDNT, TROLL, TROLL2,
+               URN, V1, V2, VASE, VEND, VERB,
                VOLCAN, VRSION = 25, WATER, WD1, WD1X, WD2, WD2X;
 FILE  *logfp;
 bool oldstyle = false;
                VOLCAN, VRSION = 25, WATER, WD1, WD1X, WD2, WD2X;
 FILE  *logfp;
 bool oldstyle = false;
@@ -94,10 +90,10 @@ int main(int argc, char *argv[]) {
  *
  *  game.closed says whether we're all the way closed
  *  game.closng says whether it's closing time yet
  *
  *  game.closed says whether we're all the way closed
  *  game.closng says whether it's closing time yet
- *  CLSHNT says whether he's read the clue in the endgame
+ *  game.clshnt says whether he's read the clue in the endgame
  *  game.lmwarn says whether he's been warned about lamp going dim
  *  game.lmwarn says whether he's been warned about lamp going dim
- *  NOVICE says whether he asked for instructions at start-up
- *  PANIC says whether he's found out he's trapped in the cave
+ *  game.novice says whether he asked for instructions at start-up
+ *  game.panic says whether he's found out he's trapped in the cave
  *  game.wzdark says whether the loc he's leaving was dark */
 
 #include "funcs.h"
  *  game.wzdark says whether the loc he's leaving was dark */
 
 #include "funcs.h"
@@ -130,11 +126,11 @@ int main(int argc, char *argv[]) {
 L1:    SETUP= -1;
        I=0;
        game.zzword=RNDVOC(3,0);
 L1:    SETUP= -1;
        I=0;
        game.zzword=RNDVOC(3,0);
-       NOVICE=YES(stdin, 65,1,0);
-       NEWLOC=1;
+       game.novice=YES(stdin, 65,1,0);
+       game.newloc=1;
        LOC=1;
        game.limit=330;
        LOC=1;
        game.limit=330;
-       if(NOVICE)game.limit=1000;
+       if(game.novice)game.limit=1000;
 
        if (logfp)
            fprintf(logfp, "seed %ld\n", seedval);
 
        if (logfp)
            fprintf(logfp, "seed %ld\n", seedval);
@@ -154,7 +150,7 @@ static bool fallback_handler(char *buf)
        set_seed(sv);
        printf("Seed set to %ld\n", sv);
        // autogenerated, so don't charge user time for it.
        set_seed(sv);
        printf("Seed set to %ld\n", sv);
        // autogenerated, so don't charge user time for it.
-       --TURNS;
+       --game.turns;
        // here we reconfigure any global game state that uses random numbers
        game.zzword=RNDVOC(3,0);
        return true;
        // here we reconfigure any global game state that uses random numbers
        game.zzword=RNDVOC(3,0);
        return true;
@@ -166,37 +162,37 @@ static bool do_command(FILE *cmdin) {
 
 /*  Can't leave cave once it's closing (except by main office). */
 
 
 /*  Can't leave cave once it's closing (except by main office). */
 
-       if(!OUTSID(NEWLOC) || NEWLOC == 0 || !game.closng) goto L71;
+       if(!OUTSID(game.newloc) || game.newloc == 0 || !game.closng) goto L71;
        RSPEAK(130);
        RSPEAK(130);
-       NEWLOC=LOC;
-       if(!PANIC)game.clock2=15;
-       PANIC=true;
+       game.newloc=LOC;
+       if(!game.panic)game.clock2=15;
+       game.panic=true;
 
 /*  See if a dwarf has seen him and has come from where he wants to go.  If so,
  *  the dwarf's blocking his way.  If coming from place forbidden to pirate
  *  (dwarves rooted in place) let him get out (and attacked). */
 
 
 /*  See if a dwarf has seen him and has come from where he wants to go.  If so,
  *  the dwarf's blocking his way.  If coming from place forbidden to pirate
  *  (dwarves rooted in place) let him get out (and attacked). */
 
-L71:   if(NEWLOC == LOC || FORCED(LOC) || CNDBIT(LOC,3)) goto L74;
+L71:   if(game.newloc == LOC || FORCED(LOC) || CNDBIT(LOC,3)) goto L74;
        /* 73 */ for (I=1; I<=NDWARVES-1; I++) {
        /* 73 */ for (I=1; I<=NDWARVES-1; I++) {
-       if(game.odloc[I] != NEWLOC || !game.dseen[I]) goto L73;
-       NEWLOC=LOC;
+       if(game.odloc[I] != game.newloc || !game.dseen[I]) goto L73;
+       game.newloc=LOC;
        RSPEAK(2);
         goto L74;
 L73:   /*etc*/ ;
        } /* end loop */
        RSPEAK(2);
         goto L74;
 L73:   /*etc*/ ;
        } /* end loop */
-L74:   LOC=NEWLOC;
+L74:   LOC=game.newloc;
 
 /*  Dwarf stuff.  See earlier comments for description of variables.  Remember
  *  sixth dwarf is pirate and is thus very different except for motion rules. */
 
 /*  First off, don't let the dwarves follow him into a pit or a wall.  Activate
  *  the whole mess the first time he gets as far as the hall of mists (loc 15).
 
 /*  Dwarf stuff.  See earlier comments for description of variables.  Remember
  *  sixth dwarf is pirate and is thus very different except for motion rules. */
 
 /*  First off, don't let the dwarves follow him into a pit or a wall.  Activate
  *  the whole mess the first time he gets as far as the hall of mists (loc 15).
- *  If NEWLOC is forbidden to pirate (in particular, if it's beyond the troll
+ *  If game.newloc is forbidden to pirate (in particular, if it's beyond the troll
  *  bridge), bypass dwarf stuff.  That way pirate can't steal return toll, and
  *  dwarves can't meet the bear.  Also means dwarves won't follow him into dead
  *  end in maze, but c'est la vie.  They'll wait for him outside the dead end. */
 
  *  bridge), bypass dwarf stuff.  That way pirate can't steal return toll, and
  *  dwarves can't meet the bear.  Also means dwarves won't follow him into dead
  *  end in maze, but c'est la vie.  They'll wait for him outside the dead end. */
 
-       if(LOC == 0 || FORCED(LOC) || CNDBIT(NEWLOC,3)) goto L2000;
+       if(LOC == 0 || FORCED(LOC) || CNDBIT(game.newloc,3)) goto L2000;
        if(game.dflag != 0) goto L6000;
        if(INDEEP(LOC))game.dflag=1;
         goto L2000;
        if(game.dflag != 0) goto L6000;
        if(INDEEP(LOC))game.dflag=1;
         goto L2000;
@@ -234,13 +230,13 @@ L6010:    game.dtotal=0;
        KK=game.dloc[I];
        KK=KEY[KK];
        if(KK == 0) goto L6016;
        KK=game.dloc[I];
        KK=KEY[KK];
        if(KK == 0) goto L6016;
-L6012: NEWLOC=MOD(labs(TRAVEL[KK])/1000,1000);
+L6012: game.newloc=MOD(labs(TRAVEL[KK])/1000,1000);
        {long x = J-1;
        {long x = J-1;
-       if(NEWLOC > 300 || !INDEEP(NEWLOC) || NEWLOC == game.odloc[I] || (J > 1 &&
-               NEWLOC == TK[x]) || J >= 20 || NEWLOC == game.dloc[I] ||
-               FORCED(NEWLOC) || (I == 6 && CNDBIT(NEWLOC,3)) ||
+       if(game.newloc > 300 || !INDEEP(game.newloc) || game.newloc == game.odloc[I] || (J > 1 &&
+               game.newloc == TK[x]) || J >= 20 || game.newloc == game.dloc[I] ||
+               FORCED(game.newloc) || (I == 6 && CNDBIT(game.newloc,3)) ||
                labs(TRAVEL[KK])/1000000 == 100) goto L6014;}
                labs(TRAVEL[KK])/1000000 == 100) goto L6014;}
-       TK[J]=NEWLOC;
+       TK[J]=game.newloc;
        J=J+1;
 L6014: KK=KK+1;
        {long x = KK-1; if(TRAVEL[x] >= 0) goto L6012;}
        J=J+1;
 L6014: KK=KK+1;
        {long x = KK-1; if(TRAVEL[x] >= 0) goto L6012;}
@@ -267,7 +263,7 @@ L6016:      TK[J]=game.odloc[I];
        if(TOTING(J)) goto L6021;
 L6020: if(HERE(J))K=1;
        } /* end loop */
        if(TOTING(J)) goto L6021;
 L6020: if(HERE(J))K=1;
        } /* end loop */
-       if(TALLY == 1 && K == 0 && PLACE[CHEST] == 0 && HERE(LAMP) && PROP[LAMP]
+       if(game.tally == 1 && K == 0 && PLACE[CHEST] == 0 && HERE(LAMP) && PROP[LAMP]
                == 1) goto L6025;
        if(game.odloc[6] != game.dloc[6] && PCT(20))RSPEAK(127);
         goto L6030;
                == 1) goto L6025;
        if(game.odloc[6] != game.dloc[6] && PCT(20))RSPEAK(127);
         goto L6030;
@@ -333,7 +329,7 @@ L6030:      /*etc*/ ;
 
 L2000: if(LOC == 0) goto L99;
        KK=STEXT[LOC];
 
 L2000: if(LOC == 0) goto L99;
        KK=STEXT[LOC];
-       if(MOD(ABB[LOC],game.abbnum) == 0 || KK == 0)KK=LTEXT[LOC];
+       if(MOD(game.abbrev[LOC],game.abbnum) == 0 || KK == 0)KK=LTEXT[LOC];
        if(FORCED(LOC) || !DARK(0)) goto L2001;
        if(game.wzdark && PCT(35)) goto L90;
        KK=RTEXT[16];
        if(FORCED(LOC) || !DARK(0)) goto L2001;
        if(game.wzdark && PCT(35)) goto L90;
        KK=RTEXT[16];
@@ -350,7 +346,7 @@ L2001:      if(TOTING(BEAR))RSPEAK(141);
  *  are because PROP=0 is needed to get full score. */
 
        if(DARK(0)) goto L2012;
  *  are because PROP=0 is needed to get full score. */
 
        if(DARK(0)) goto L2012;
-       ABB[LOC]=ABB[LOC]+1;
+       game.abbrev[LOC]=game.abbrev[LOC]+1;
        I=ATLOC[LOC];
 L2004: if(I == 0) goto L2012;
        OBJ=I;
        I=ATLOC[LOC];
 L2004: if(I == 0) goto L2012;
        OBJ=I;
@@ -360,7 +356,7 @@ L2004:      if(I == 0) goto L2012;
        if(game.closed) goto L2008;
        PROP[OBJ]=0;
        if(OBJ == RUG || OBJ == CHAIN)PROP[OBJ]=1;
        if(game.closed) goto L2008;
        PROP[OBJ]=0;
        if(OBJ == RUG || OBJ == CHAIN)PROP[OBJ]=1;
-       TALLY=TALLY-1;
+       game.tally=game.tally-1;
 /*  Note: There used to be a test here to see whether the player had blown it
  *  so badly that he could never ever see the remaining treasures, and if so
  *  the lamp was zapped to 35 turns.  But the tests were too simple-minded;
 /*  Note: There used to be a test here to see whether the player had blown it
  *  so badly that he could never ever see the remaining treasures, and if so
  *  the lamp was zapped to 35 turns.  But the tests were too simple-minded;
@@ -383,7 +379,7 @@ L2010:      SPK=K;
 L2011: RSPEAK(SPK);
 
 L2012: VERB=0;
 L2011: RSPEAK(SPK);
 
 L2012: VERB=0;
-       OLDOBJ=OBJ;
+       game.oldobj=OBJ;
        OBJ=0;
 
 /*  Check if this loc is eligible for any hints.  If been here long enough,
        OBJ=0;
 
 /*  Check if this loc is eligible for any hints.  If been here long enough,
@@ -420,18 +416,18 @@ L2605:    game.wzdark=DARK(0);
  *  make neg.  If neg, he skipped a word, so make it zero. */
 
 L2607: game.foobar=(game.foobar>0 ? -game.foobar : 0);
  *  make neg.  If neg, he skipped a word, so make it zero. */
 
 L2607: game.foobar=(game.foobar>0 ? -game.foobar : 0);
-       TURNS=TURNS+1;
-       if(TURNS == THRESH) {
-       SPEAK(TTEXT[TRNDEX]);
-       TRNLUZ=TRNLUZ+TRNVAL[TRNDEX]/100000;
-       TRNDEX=TRNDEX+1;
-       THRESH= -1;
-       if(TRNDEX <= TRNVLS)
-           THRESH=MOD(TRNVAL[TRNDEX],100000)+1;
+       game.turns=game.turns+1;
+       if(game.turns == game.thresh) {
+       SPEAK(TTEXT[game.trndex]);
+       game.trnluz=game.trnluz+TRNVAL[game.trndex]/100000;
+       game.trndex=game.trndex+1;
+       game.thresh= -1;
+       if(game.trndex <= TRNVLS)
+           game.thresh=MOD(TRNVAL[game.trndex],100000)+1;
        }
        if(VERB == SAY && WD2 > 0)VERB=0;
        if(VERB == SAY) goto L4090;
        }
        if(VERB == SAY && WD2 > 0)VERB=0;
        if(VERB == SAY) goto L4090;
-       if(TALLY == 0 && INDEEP(LOC) && LOC != 33)game.clock1=game.clock1-1;
+       if(game.tally == 0 && INDEEP(LOC) && LOC != 33)game.clock1=game.clock1-1;
        if(game.clock1 == 0) goto L10000;
        if(game.clock1 < 0)game.clock2=game.clock2-1;
        if(game.clock2 == 0) goto L11000;
        if(game.clock1 == 0) goto L10000;
        if(game.clock1 < 0)game.clock2=game.clock2-1;
        if(game.clock2 == 0) goto L11000;
@@ -516,15 +512,15 @@ L8000:    SETPRM(1,WD1,WD1X);
 /*  Figure out the new location
  *
  *  Given the current location in "LOC", and a motion verb number in
 /*  Figure out the new location
  *
  *  Given the current location in "LOC", and a motion verb number in
- *  "K", put the new location in "NEWLOC".  The current loc is saved
+ *  "K", put the new location in "game.newloc".  The current loc is saved
  *  in "game.olddloc" in case he wants to retreat.  The current
  *  game.oldloc is saved in game.oldlc2, in case he dies.  (if he
  *  in "game.olddloc" in case he wants to retreat.  The current
  *  game.oldloc is saved in game.oldlc2, in case he dies.  (if he
- *  does, NEWLOC will be limbo, and OLgame.dloc will be what killed
+ *  does, game.newloc will be limbo, and OLgame.dloc will be what killed
  *  him, so we need game.oldlc2, which is the last place he was
  *  safe.) */
 
 L8:    KK=KEY[LOC];
  *  him, so we need game.oldlc2, which is the last place he was
  *  safe.) */
 
 L8:    KK=KEY[LOC];
-       NEWLOC=LOC;
+       game.newloc=LOC;
        if(KK == 0)BUG(26);
        if(K == NUL) return true;
        if(K == BACK) goto L20;
        if(KK == 0)BUG(26);
        if(K == NUL) return true;
        if(K == BACK) goto L20;
@@ -540,34 +536,34 @@ L9:       LL=labs(TRAVEL[KK]);
         goto L9;
 
 L10:   LL=LL/1000;
         goto L9;
 
 L10:   LL=LL/1000;
-L11:   NEWLOC=LL/1000;
-        K=MOD(NEWLOC,100);     /* ESR: an instance of NOBJECTS? */
-       if(NEWLOC <= 300) goto L13;
-       if(PROP[K] != NEWLOC/100-3) goto L16;
+L11:   game.newloc=LL/1000;
+        K=MOD(game.newloc,100);        /* ESR: an instance of NOBJECTS? */
+       if(game.newloc <= 300) goto L13;
+       if(PROP[K] != game.newloc/100-3) goto L16;
 L12:   if(TRAVEL[KK] < 0)BUG(25);
        KK=KK+1;
 L12:   if(TRAVEL[KK] < 0)BUG(25);
        KK=KK+1;
-       NEWLOC=labs(TRAVEL[KK])/1000;
-       if(NEWLOC == LL) goto L12;
-       LL=NEWLOC;
+       game.newloc=labs(TRAVEL[KK])/1000;
+       if(game.newloc == LL) goto L12;
+       LL=game.newloc;
         goto L11;
 
         goto L11;
 
-L13:   if(NEWLOC <= 100) goto L14;     /* ESR: an instance of NOBJECTS? */
-       if(TOTING(K) || (NEWLOC > 200 && AT(K))) goto L16;
+L13:   if(game.newloc <= 100) goto L14;        /* ESR: an instance of NOBJECTS? */
+       if(TOTING(K) || (game.newloc > 200 && AT(K))) goto L16;
         goto L12;
 
         goto L12;
 
-L14:   if(NEWLOC != 0 && !PCT(NEWLOC)) goto L12;
-L16:   NEWLOC=MOD(LL,1000);
-       if(NEWLOC <= 300) return true;
-       if(NEWLOC <= 500) goto L30000;
-       RSPEAK(NEWLOC-500);
-       NEWLOC=LOC;
+L14:   if(game.newloc != 0 && !PCT(game.newloc)) goto L12;
+L16:   game.newloc=MOD(LL,1000);
+       if(game.newloc <= 300) return true;
+       if(game.newloc <= 500) goto L30000;
+       RSPEAK(game.newloc-500);
+       game.newloc=LOC;
         return true;
 
 /*  Special motions come here.  Labelling convention: statement numbers NNNXX
  *  (XX=00-99) are used for special case number NNN (NNN=301-500). */
 
         return true;
 
 /*  Special motions come here.  Labelling convention: statement numbers NNNXX
  *  (XX=00-99) are used for special case number NNN (NNN=301-500). */
 
-L30000: NEWLOC=NEWLOC-300;
-        switch (NEWLOC) { case 1: goto L30100; case 2: goto L30200; case 3: goto
+L30000: game.newloc=game.newloc-300;
+        switch (game.newloc) { case 1: goto L30100; case 2: goto L30200; case 3: goto
                L30300; }
        BUG(20);
 
                L30300; }
        BUG(20);
 
@@ -575,9 +571,9 @@ L30000: NEWLOC=NEWLOC-300;
  *  table must include "useless" entries going through passage, which can never
  *  be used for actual motion, but can be spotted by "go back". */
 
  *  table must include "useless" entries going through passage, which can never
  *  be used for actual motion, but can be spotted by "go back". */
 
-L30100: NEWLOC=99+100-LOC;     /* ESR: an instance of NOBJECTS? */
+L30100: game.newloc=99+100-LOC;        /* ESR: an instance of NOBJECTS? */
        if(game.holdng == 0 || (game.holdng == 1 && TOTING(EMRALD))) return true;
        if(game.holdng == 0 || (game.holdng == 1 && TOTING(EMRALD))) return true;
-       NEWLOC=LOC;
+       game.newloc=LOC;
        RSPEAK(117);
        return true;
 
        RSPEAK(117);
        return true;
 
@@ -602,19 +598,19 @@ L30300: if(PROP[TROLL] != 1) goto L30310;
        MOVE(TROLL,PLAC[TROLL]);
        MOVE(TROLL+NOBJECTS,FIXD[TROLL]);
        JUGGLE(CHASM);
        MOVE(TROLL,PLAC[TROLL]);
        MOVE(TROLL+NOBJECTS,FIXD[TROLL]);
        JUGGLE(CHASM);
-       NEWLOC=LOC;
+       game.newloc=LOC;
        return true;
 
        return true;
 
-L30310: NEWLOC=PLAC[TROLL]+FIXD[TROLL]-LOC;
+L30310: game.newloc=PLAC[TROLL]+FIXD[TROLL]-LOC;
        if(PROP[TROLL] == 0)PROP[TROLL]=1;
        if(!TOTING(BEAR)) return true;
        RSPEAK(162);
        PROP[CHASM]=1;
        PROP[TROLL]=2;
        if(PROP[TROLL] == 0)PROP[TROLL]=1;
        if(!TOTING(BEAR)) return true;
        RSPEAK(162);
        PROP[CHASM]=1;
        PROP[TROLL]=2;
-       DROP(BEAR,NEWLOC);
+       DROP(BEAR,game.newloc);
        FIXED[BEAR]= -1;
        PROP[BEAR]=3;
        FIXED[BEAR]= -1;
        PROP[BEAR]=3;
-       game.oldlc2=NEWLOC;
+       game.oldlc2=game.newloc;
         goto L99;
 
 /*  End of specials. */
         goto L99;
 
 /*  End of specials. */
@@ -661,7 +657,7 @@ L23:                KK=K2;
 L30:   if(game.detail < 3)RSPEAK(15);
        game.detail=game.detail+1;
        game.wzdark=false;
 L30:   if(game.detail < 3)RSPEAK(15);
        game.detail=game.detail+1;
        game.wzdark=false;
-       ABB[LOC]=0;
+       game.abbrev[LOC]=0;
        return true;
 
 /*  Cave.  Different messages depending on whether above ground. */
        return true;
 
 /*  Cave.  Different messages depending on whether above ground. */
@@ -709,9 +705,9 @@ L90:        RSPEAK(23);
 /*  Okay, he's dead.  Let's get on with it. */
 
 L99:   if(game.closng) goto L95;
 /*  Okay, he's dead.  Let's get on with it. */
 
 L99:   if(game.closng) goto L95;
-       NUMDIE=NUMDIE+1;
-       if(!YES(cmdin,79+NUMDIE*2,80+NUMDIE*2,54)) score(0);
-       if(NUMDIE == MAXDIE) score(0);
+       game.numdie=game.numdie+1;
+       if(!YES(cmdin,79+game.numdie*2,80+game.numdie*2,54)) score(0);
+       if(game.numdie == MAXDIE) score(0);
        PLACE[WATER]=0;
        PLACE[OIL]=0;
        if(TOTING(LAMP))PROP[LAMP]=0;
        PLACE[WATER]=0;
        PLACE[OIL]=0;
        if(TOTING(LAMP))PROP[LAMP]=0;
@@ -730,7 +726,7 @@ L98:        /*etc*/ ;
 /*  He died during closing time.  No resurrection.  Tally up a death and exit. */
 
 L95:   RSPEAK(131);
 /*  He died during closing time.  No resurrection.  Tally up a death and exit. */
 
 L95:   RSPEAK(131);
-       NUMDIE=NUMDIE+1;
+       game.numdie=game.numdie+1;
         score(0);
 
 
         score(0);
 
 
@@ -766,7 +762,7 @@ L40030:  goto L2602;
 L40100: if(PROP[GRATE] == 0 && !HERE(KEYS)) goto L40010;
         goto L40020;
 
 L40100: if(PROP[GRATE] == 0 && !HERE(KEYS)) goto L40010;
         goto L40020;
 
-L40200: if(PLACE[BIRD] == LOC && TOTING(ROD) && OLDOBJ == BIRD) goto L40010;
+L40200: if(PLACE[BIRD] == LOC && TOTING(ROD) && game.oldobj == BIRD) goto L40010;
         goto L40030;
 
 L40300: if(HERE(SNAKE) && !HERE(BIRD)) goto L40010;
         goto L40030;
 
 L40300: if(HERE(SNAKE) && !HERE(BIRD)) goto L40010;
@@ -793,7 +789,7 @@ L40900: I=ATDWRF(LOC);
        if(HERE(OGRE) && I == 0) goto L40010;
         goto L40030;
 
        if(HERE(OGRE) && I == 0) goto L40010;
         goto L40030;
 
-L41000: if(TALLY == 1 && PROP[JADE] < 0) goto L40010;
+L41000: if(game.tally == 1 && PROP[JADE] < 0) goto L40010;
         goto L40020;
 
 
         goto L40020;
 
 
@@ -874,7 +870,7 @@ L11000: PROP[BOTTLE]=PUT(BOTTLE,115,1);
        PROP[DWARF]=PUT(DWARF,115,0);
        LOC=115;
        game.oldloc=115;
        PROP[DWARF]=PUT(DWARF,115,0);
        LOC=115;
        game.oldloc=115;
-       NEWLOC=115;
+       game.newloc=115;
 
 /*  Leave the grate with normal (non-negative) property.  Reuse sign. */
 
 
 /*  Leave the grate with normal (non-negative) property.  Reuse sign. */