Pull more globals into the game state block.
authorEric S. Raymond <esr@thyrsus.com>
Wed, 7 Jun 2017 09:10:20 +0000 (05:10 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Wed, 7 Jun 2017 09:10:20 +0000 (05:10 -0400)
actions1.c
advent.h
compile.c
init.c
main.c
score.c

index fb2882722b761842275d54defb6aee143f2dddc0..3fabfbdefd91b792c222e91cb633ca7e2f581de6 100644 (file)
@@ -201,8 +201,8 @@ L9040:      if(OBJ == CLAM || OBJ == OYSTER) goto L9046;
        if(OBJ == CHAIN) goto L9048;
        if(!game.closng) goto L9043;
        K=130;
        if(OBJ == CHAIN) goto L9048;
        if(!game.closng) goto L9043;
        K=130;
-       if(!PANIC)game.clock2=15;
-       PANIC=true;
+       if(!game.panic)game.clock2=15;
+       game.panic=true;
         return(2010);
 
 L9043: K=34+PROP[GRATE];
         return(2010);
 
 L9043: K=34+PROP[GRATE];
@@ -302,7 +302,7 @@ L9090:      if((!TOTING(OBJ)) && (OBJ != ROD || !TOTING(ROD2)))SPK=29;
 
 L9094: DROP(JADE,LOC);
        PROP[JADE]=0;
 
 L9094: DROP(JADE,LOC);
        PROP[JADE]=0;
-       TALLY=TALLY-1;
+       game.tally=game.tally-1;
        SPK=208;
         return(2011);
 
        SPK=208;
         return(2011);
 
@@ -381,7 +381,7 @@ L9160:      if(OBJ != LAMP)SPK=76;
        DSTROY(URN);
        DROP(AMBER,LOC);
        PROP[AMBER]=1;
        DSTROY(URN);
        DROP(AMBER,LOC);
        PROP[AMBER]=1;
-       TALLY=TALLY-1;
+       game.tally=game.tally-1;
        DROP(CAVITY,LOC);
        SPK=216;
         return(2011);
        DROP(CAVITY,LOC);
        SPK=216;
         return(2011);
@@ -436,7 +436,7 @@ L9230:      if(PROP[ROD2] < 0 || !game.closed) return(2011);
 
 L8240: score(-1);
        SETPRM(1,SCORE,MXSCOR);
 
 L8240: score(-1);
        SETPRM(1,SCORE,MXSCOR);
-       SETPRM(3,TURNS,TURNS);
+       SETPRM(3,game.turns,game.turns);
        RSPEAK(259);
         return(2012);
 
        RSPEAK(259);
         return(2012);
 
@@ -481,11 +481,11 @@ L8270:    for (I=1; I<=NOBJECTS; I++) {
 
 L9270: if(DARK(0)) goto L5190;
        if(OBJTXT[OBJ] == 0 || PROP[OBJ] < 0) return(2011);
 
 L9270: if(DARK(0)) goto L5190;
        if(OBJTXT[OBJ] == 0 || PROP[OBJ] < 0) return(2011);
-       if(OBJ == OYSTER && !CLSHNT) goto L9275;
+       if(OBJ == OYSTER && !game.clshnt) goto L9275;
        PSPEAK(OBJ,OBJTXT[OBJ]+PROP[OBJ]);
         return(2012);
 
        PSPEAK(OBJ,OBJTXT[OBJ]+PROP[OBJ]);
         return(2012);
 
-L9275: CLSHNT=YES(input,192,193,54);
+L9275: game.clshnt=YES(input,192,193,54);
         return(2012);
 
 /*  Break.  Only works for mirror in repository and, of course, the vase. */
         return(2012);
 
 /*  Break.  Only works for mirror in repository and, of course, the vase. */
@@ -515,7 +515,7 @@ L9290:      if(OBJ != DWARF || !game.closed) return(2011);
 L8300: SPK=201;
        RSPEAK(260);
        if(!YES(input,200,54,54)) return(2012);
 L8300: SPK=201;
        RSPEAK(260);
        if(!YES(input,200,54,54)) return(2012);
-       SAVED=SAVED+5;
+       game.saved=game.saved+5;
        KK= -1;
 
 /*  This next part is shared with the "resume" code.  The two cases are
        KK= -1;
 
 /*  This next part is shared with the "resume" code.  The two cases are
@@ -535,12 +535,12 @@ L8305:    DATIME(&I,&K);
  *  with junk variables to bring it up to 7 values. */
        SAVWDS(game.abbnum,game.blklin,game.bonus,game.clock1,game.clock2,game.closed,game.closng);
        SAVWDS(game.detail,game.dflag,game.dkill,game.dtotal,game.foobar,game.holdng,game.iwest);
  *  with junk variables to bring it up to 7 values. */
        SAVWDS(game.abbnum,game.blklin,game.bonus,game.clock1,game.clock2,game.closed,game.closng);
        SAVWDS(game.detail,game.dflag,game.dkill,game.dtotal,game.foobar,game.holdng,game.iwest);
-       SAVWDS(game.knfloc,game.limit,LL,game.lmwarn,LOC,NEWLOC,NUMDIE);
-       SAVWDS(OBJ,game.oldlc2,game.oldloc,OLDOBJ,PANIC,SAVED,SETUP);
-       SAVWDS(SPK,TALLY,THRESH,TRNDEX,TRNLUZ,TURNS,OBJTXT[OYSTER]);
+       SAVWDS(game.knfloc,game.limit,LL,game.lmwarn,LOC,game.newloc,game.numdie);
+       SAVWDS(OBJ,game.oldlc2,game.oldloc,game.oldobj,game.panic,game.saved,SETUP);
+       SAVWDS(SPK,game.tally,game.thresh,game.trndex,game.trnluz,game.turns,OBJTXT[OYSTER]);
        SAVWDS(VERB,WD1,WD1X,WD2,game.wzdark,game.zzword,OBJSND[BIRD]);
        SAVWDS(VERB,WD1,WD1X,WD2,game.wzdark,game.zzword,OBJSND[BIRD]);
-       SAVWDS(OBJTXT[SIGN],CLSHNT,NOVICE,K,K,K,K);
-       SAVARR(ABB,LOCSIZ);
+       SAVWDS(OBJTXT[SIGN],game.clshnt,game.novice,K,K,K,K);
+       SAVARR(game.abbrev,LOCSIZ);
        SAVARR(ATLOC,LOCSIZ);
        SAVARR(game.dloc,NDWARVES);
        SAVARR(game.dseen,NDWARVES);
        SAVARR(ATLOC,LOCSIZ);
        SAVARR(game.dloc,NDWARVES);
        SAVARR(game.dseen,NDWARVES);
@@ -562,7 +562,7 @@ L8305:      DATIME(&I,&K);
 /*  Resume.  Read a suspended game back from a file. */
 
 L8310: KK=1;
 /*  Resume.  Read a suspended game back from a file. */
 
 L8310: KK=1;
-       if(LOC == 1 && ABB[1] == 1) goto L8305;
+       if(LOC == 1 && game.abbrev[1] == 1) goto L8305;
        RSPEAK(268);
        if(!YES(input,200,54,54)) return(2012);
         goto L8305;
        RSPEAK(268);
        if(!YES(input,200,54,54)) return(2012);
         goto L8305;
@@ -587,7 +587,7 @@ L9320:      if(OBJ != RUG) return(2011);
        if(PROP[RUG] != 2) return(2011);
        game.oldlc2=game.oldloc;
        game.oldloc=LOC;
        if(PROP[RUG] != 2) return(2011);
        game.oldlc2=game.oldloc;
        game.oldloc=LOC;
-       NEWLOC=PLACE[RUG]+FIXED[RUG]-LOC;
+       game.newloc=PLACE[RUG]+FIXED[RUG]-LOC;
        SPK=226;
        if(PROP[SAPPH] >= 0)SPK=227;
        RSPEAK(SPK);
        SPK=226;
        if(PROP[SAPPH] >= 0)SPK=227;
        RSPEAK(SPK);
@@ -618,7 +618,7 @@ L8340:      if(!AT(RESER) && LOC != FIXED[RESER]-1) return(2011);
        PROP[RESER]=1-PROP[RESER];
        if(AT(RESER)) return(2012);
        game.oldlc2=LOC;
        PROP[RESER]=1-PROP[RESER];
        if(AT(RESER)) return(2012);
        game.oldlc2=LOC;
-       NEWLOC=0;
+       game.newloc=0;
        RSPEAK(241);
         return(2);
 
        RSPEAK(241);
         return(2);
 
index 6f1c086d32957575b1cecc753bf794681474a7c8..85d9026881e6cfc9d7d80f65dfd7b8885582f77a 100644 (file)
--- a/advent.h
+++ b/advent.h
@@ -21,6 +21,7 @@ struct game_t {
     long chloc2;
     long clock1;
     long clock2;
     long chloc2;
     long clock1;
     long clock2;
+    long clshnt;
     long closed;
     long closng;
     long conds;
     long closed;
     long closng;
     long conds;
@@ -34,10 +35,22 @@ struct game_t {
     long knfloc;
     long limit;
     long lmwarn;
     long knfloc;
     long limit;
     long lmwarn;
+    long newloc;
+    long novice;
+    long numdie;
     long oldloc;
     long oldlc2;
     long oldloc;
     long oldlc2;
+    long oldobj;
+    long panic;
+    long saved;
+    long tally;
+    long thresh;
+    long trndex;
+    long trnluz;
+    long turns;
     long wzdark;
     long zzword;
     long wzdark;
     long zzword;
+    long abbrev[185+1];                /* FIXME: LOCSIZE in the compiler */
     long dseen[NDWARVES+1];
     long dloc[NDWARVES+1];
     long odloc[NDWARVES+1];
     long dseen[NDWARVES+1];
     long dloc[NDWARVES+1];
     long odloc[NDWARVES+1];
@@ -45,7 +58,7 @@ struct game_t {
 
 extern struct game_t game;
 
 
 extern struct game_t game;
 
-extern long ABB[], ATLOC[], FIXED[],
+extern long ATLOC[], FIXED[],
                LINK[], LNLENG, LNPOSN,
                PARMS[], PLACE[];
 extern char rawbuf[LINESIZE], INLINE[LINESIZE+1], MAP1[], MAP2[];
                LINK[], LNLENG, LNPOSN,
                PARMS[], PLACE[];
 extern char rawbuf[LINESIZE], INLINE[LINESIZE+1], MAP1[], MAP2[];
@@ -111,19 +124,17 @@ extern long randrange(long);
 extern void score(long);
 extern long AMBER, ATTACK, AXE, BACK, BATTER, BEAR,
    BIRD, BLOOD, BOTTLE, CAGE, CAVE, CAVITY, CHAIN, CHASM, CHEST,
 extern void score(long);
 extern 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[], HINTLC[],
    I, INVENT, IGO, J, JADE, K, K2, KEYS, KK,
    KNIFE, KQ, L, LAMP, LL, LOC, LOCK, LOOK,
    EMRALD, ENTER, ENTRNC, FIND, FISSUR, FOOD,
    GRATE, HINT, HINTED[], HINTLC[],
    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,
+   MAGZIN, MAXDIE, MAXTRS, MESSAG, MIRROR, MXSCOR, NUGGET, NUL, OBJ,
    OGRE, OIL, OLDOBJ, OYSTER,
    PANIC, PEARL, PILLOW, PLANT, PLANT2, PROP[], PYRAM,
    OGRE, OIL, OLDOBJ, OYSTER,
    PANIC, PEARL, PILLOW, PLANT, PLANT2, PROP[], PYRAM,
-   RESER, ROD, ROD2, RUBY, RUG, SAPPH, SAVED, SAY,
+   RESER, ROD, ROD2, RUBY, RUG, SAPPH, SAY,
    SCORE, SECT, SETUP, SIGN, SNAKE, SPK, STEPS, STICK,
    SCORE, SECT, SETUP, SIGN, SNAKE, SPK, STEPS, STICK,
-   STREAM, TALLY, THRESH, THROW, TK[], TRIDNT,
-   TRNDEX, TRNLUZ, TROLL, TROLL2,
-   TURNS, URN, V1, V2, VASE, VEND, VERB,
+   STREAM, THROW, TK[], TRIDNT, TROLL, TROLL2,
+   URN, V1, V2, VASE, VEND, VERB,
    VOLCAN, VRSION, WATER, WD1, WD1X, WD2, WD2X;
 
    VOLCAN, VRSION, WATER, WD1, WD1X, WD2, WD2X;
 
index b6b038e69be4949f484f620bb230370294e44147..c04806519eea0e714322fff2c8838fa812161c2c 100644 (file)
--- a/compile.c
+++ b/compile.c
@@ -502,7 +502,7 @@ void read_sound_text(FILE* database)
  *  to set up ATLOC(N) as the first object at location N, and
  *  LINK(OBJ) as the next object at the same location as OBJ.
  *  (OBJ>NOBJECTS indicates that FIXED(OBJ-NOBJECTS)=LOC; LINK(OBJ) is
  *  to set up ATLOC(N) as the first object at location N, and
  *  LINK(OBJ) as the next object at the same location as OBJ.
  *  (OBJ>NOBJECTS indicates that FIXED(OBJ-NOBJECTS)=LOC; LINK(OBJ) is
- *  still the correct link to use.)  ABB is zeroed; it controls
+ *  still the correct link to use.)  game.abbrev is zeroed; it controls
  *  whether the abbreviated description is printed.  Counts modulo 5
  *  unless "LOOK" is used. */
 
  *  whether the abbreviated description is printed.  Counts modulo 5
  *  unless "LOOK" is used. */
 
diff --git a/init.c b/init.c
index 4bb7cc2b5a19f6c7d569503c418f33b2dda208ac..12d3ad1a71986be32b16f486ef66465334db75ec 100644 (file)
--- a/init.c
+++ b/init.c
@@ -15,7 +15,7 @@
  *     12600 words of message text (LINES, LINSIZ).
  *     885 travel options (TRAVEL, TRVSIZ).
  *     330 vocabulary words (KTAB, ATAB, TABSIZ).
  *     12600 words of message text (LINES, LINSIZ).
  *     885 travel options (TRAVEL, TRVSIZ).
  *     330 vocabulary words (KTAB, ATAB, TABSIZ).
- *     185 locations (LTEXT, STEXT, KEY, COND, ABB, ATLOC, LOCSND, LOCSIZ).
+ *     185 locations (LTEXT, STEXT, KEY, COND, abbrev, ATLOC, LOCSND, LOCSIZ).
  *     100 objects (PLAC, PLACE, FIXD, FIXED, LINK (TWICE), PTEXT, PROP,
  *                    OBJSND, OBJTXT).
  *      35 "action" verbs (ACTSPK, VRBSIZ).
  *     100 objects (PLAC, PLACE, FIXD, FIXED, LINK (TWICE), PTEXT, PROP,
  *                    OBJSND, OBJTXT).
  *      35 "action" verbs (ACTSPK, VRBSIZ).
@@ -186,7 +186,7 @@ static int finish_init(void) {
        } /* end loop */
 
        /* 1102 */ for (I=1; I<=LOCSIZ; I++) {
        } /* end loop */
 
        /* 1102 */ for (I=1; I<=LOCSIZ; I++) {
-       ABB[I]=0;
+       game.abbrev[I]=0;
        if(LTEXT[I] == 0 || KEY[I] == 0) goto L1102;
        K=KEY[I];
        if(MOD(labs(TRAVEL[K]),1000) == 1)COND[I]=2;
        if(LTEXT[I] == 0 || KEY[I] == 0) goto L1102;
        K=KEY[I];
        if(MOD(labs(TRAVEL[K]),1000) == 1)COND[I]=2;
@@ -216,14 +216,14 @@ L1106:    /*etc*/ ;
 
 /*  Treasures, as noted earlier, are objects 50 through MAXTRS (CURRENTLY 79).
  *  Their props are initially -1, and are set to 0 the first time they are
 
 /*  Treasures, as noted earlier, are objects 50 through MAXTRS (CURRENTLY 79).
  *  Their props are initially -1, and are set to 0 the first time they are
- *  described.  TALLY keeps track of how many are not yet found, so we know
+ *  described.  game.tally keeps track of how many are not yet found, so we know
  *  when to close the cave. */
 
        MAXTRS=79;
  *  when to close the cave. */
 
        MAXTRS=79;
-       TALLY=0;
+       game.tally=0;
        for (I=50; I<=MAXTRS; I++) {
        if(PTEXT[I] != 0)PROP[I]= -1;
        for (I=50; I<=MAXTRS; I++) {
        if(PTEXT[I] != 0)PROP[I]= -1;
-       TALLY=TALLY-PROP[I];
+       game.tally=game.tally-PROP[I];
        } /* end loop */
 
 /*  Clear the hint stuff.  HINTLC(I) is how long he's been at LOC with cond bit
        } /* end loop */
 
 /*  Clear the hint stuff.  HINTLC(I) is how long he's been at LOC with cond bit
@@ -357,18 +357,18 @@ L1106:    /*etc*/ ;
  *     game.knfloc     0 if no knife here, loc if knife here, -1 after caveat
  *     game.limit      Lifetime of lamp (not set here)
  *     MAXDIE  Number of reincarnation messages available (up to 5)
  *     game.knfloc     0 if no knife here, loc if knife here, -1 after caveat
  *     game.limit      Lifetime of lamp (not set here)
  *     MAXDIE  Number of reincarnation messages available (up to 5)
- *     NUMDIE  Number of times killed so far
- *     THRESH  Next #turns threshhold (-1 if none)
- *     TRNDEX  Index in TRNVAL of next threshhold (section 14 of database)
- *     TRNLUZ  # points lost so far due to number of turns used
- *     TURNS   Tallies how many commands he's given (ignores yes/no)
+ *     game.numdie     Number of times killed so far
+ *     game.thresh     Next #turns threshhold (-1 if none)
+ *     game.trndex     Index in TRNVAL of next threshhold (section 14 of database)
+ *     game.trnluz     # points lost so far due to number of turns used
+ *     game.turns      Tallies how many commands he's given (ignores yes/no)
  *     Logicals were explained earlier */
 
  *     Logicals were explained earlier */
 
-       TURNS=0;
-       TRNDEX=1;
-       THRESH= -1;
-       if(TRNVLS > 0)THRESH=MOD(TRNVAL[1],100000)+1;
-       TRNLUZ=0;
+       game.turns=0;
+       game.trndex=1;
+       game.thresh= -1;
+       if(TRNVLS > 0)game.thresh=MOD(TRNVAL[1],100000)+1;
+       game.trnluz=0;
        game.lmwarn=false;
        IGO=0;
        game.iwest=0;
        game.lmwarn=false;
        IGO=0;
        game.iwest=0;
@@ -378,7 +378,7 @@ L1106:      /*etc*/ ;
        for (I=0; I<=4; I++) {
        {long x = 2*I+81; if(RTEXT[x] != 0)MAXDIE=I+1;}
        } /* end loop */
        for (I=0; I<=4; I++) {
        {long x = 2*I+81; if(RTEXT[x] != 0)MAXDIE=I+1;}
        } /* end loop */
-       NUMDIE=0;
+       game.numdie=0;
        game.holdng=0;
        game.dkill=0;
        game.foobar=0;
        game.holdng=0;
        game.dkill=0;
        game.foobar=0;
@@ -386,12 +386,12 @@ L1106:    /*etc*/ ;
        game.clock1=30;
        game.clock2=50;
        game.conds=SETBIT(11);
        game.clock1=30;
        game.clock2=50;
        game.conds=SETBIT(11);
-       SAVED=0;
+       game.saved=0;
        game.closng=false;
        game.closng=false;
-       PANIC=false;
+       game.panic=false;
        game.closed=false;
        game.closed=false;
-       CLSHNT=false;
-       NOVICE=false;
+       game.clshnt=false;
+       game.novice=false;
        SETUP=1;
        game.blklin=true;
 
        SETUP=1;
        game.blklin=true;
 
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. */
 
diff --git a/score.c b/score.c
index bee722d504f4e3052c72c2825e233da35b639eb1..c8428d78ba5c5044be0dd10ed22f3940d5a438bb 100644 (file)
--- a/score.c
+++ b/score.c
@@ -45,14 +45,14 @@ void score(long MODE) {
 L20010: /*etc*/ ;
        } /* end loop */
 
 L20010: /*etc*/ ;
        } /* end loop */
 
-/*  Now look at how he finished and how far he got.  MAXDIE and NUMDIE tell us
+/*  Now look at how he finished and how far he got.  MAXDIE and game.numdie tell us
  *  how well he survived.  game.dflag will
  *  tell us if he ever got suitably deep into the cave.  game.closng still indicates
  *  whether he reached the endgame.  And if he got as far as "cave closed"
  *  (indicated by "game.closed"), then bonus is zero for mundane exits or 133, 134,
  *  135 if he blew it (so to speak). */
 
  *  how well he survived.  game.dflag will
  *  tell us if he ever got suitably deep into the cave.  game.closng still indicates
  *  whether he reached the endgame.  And if he got as far as "cave closed"
  *  (indicated by "game.closed"), then bonus is zero for mundane exits or 133, 134,
  *  135 if he blew it (so to speak). */
 
-       SCORE=SCORE+(MAXDIE-NUMDIE)*10;
+       SCORE=SCORE+(MAXDIE-game.numdie)*10;
        MXSCOR=MXSCOR+MAXDIE*10;
        if(MODE == 0)SCORE=SCORE+4;
        MXSCOR=MXSCOR+4;
        MXSCOR=MXSCOR+MAXDIE*10;
        if(MODE == 0)SCORE=SCORE+4;
        MXSCOR=MXSCOR+4;
@@ -82,9 +82,9 @@ L20020: MXSCOR=MXSCOR+45;
        for (I=1; I<=HNTMAX; I++) {
        if(HINTED[I])SCORE=SCORE-HINTS[I][2];
        } /* end loop */
        for (I=1; I<=HNTMAX; I++) {
        if(HINTED[I])SCORE=SCORE-HINTS[I][2];
        } /* end loop */
-       if(NOVICE)SCORE=SCORE-5;
-       if(CLSHNT)SCORE=SCORE-10;
-       SCORE=SCORE-TRNLUZ-SAVED;
+       if(game.novice)SCORE=SCORE-5;
+       if(game.clshnt)SCORE=SCORE-10;
+       SCORE=SCORE-game.trnluz-game.saved;
 
 /*  Return to score command if that's where we came from. */
 
 
 /*  Return to score command if that's where we came from. */
 
@@ -92,10 +92,10 @@ L20020: MXSCOR=MXSCOR+45;
 
 /*  that should be good enough.  Let's tell him all about it. */
 
 
 /*  that should be good enough.  Let's tell him all about it. */
 
-       if(SCORE+TRNLUZ+1 >= MXSCOR && TRNLUZ != 0)RSPEAK(242);
-       if(SCORE+SAVED+1 >= MXSCOR && SAVED != 0)RSPEAK(143);
+       if(SCORE+game.trnluz+1 >= MXSCOR && game.trnluz != 0)RSPEAK(242);
+       if(SCORE+game.saved+1 >= MXSCOR && game.saved != 0)RSPEAK(143);
        SETPRM(1,SCORE,MXSCOR);
        SETPRM(1,SCORE,MXSCOR);
-       SETPRM(3,TURNS,TURNS);
+       SETPRM(3,game.turns,game.turns);
        RSPEAK(262);
        for (I=1; I<=CLSSES; I++) {
        if(CVAL[I] >= SCORE) goto L20210;
        RSPEAK(262);
        for (I=1; I<=CLSSES; I++) {
        if(CVAL[I] >= SCORE) goto L20210;