More collecting of globals.
[open-adventure.git] / main.c
diff --git a/main.c b/main.c
index 988fcc10726f4119e495bff4ce45c0d95a7ee197..18beb85ffdf0b4c846171ce2350b9cc94b88c0cf 100644 (file)
--- a/main.c
+++ b/main.c
 
 struct game_t game;
 
 
 struct game_t game;
 
-long ATLOC[LOCSIZ+1], FIXED[NOBJECTS+1],
-               LINK[NOBJECTS*2 + 1], LNLENG, LNPOSN,
-               PARMS[26], PLACE[NOBJECTS+1];
+long LNLENG, LNPOSN, PARMS[26];
 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,
                CLAM, COINS, DALTLC, DOOR, DPRSSN, DRAGON, DWARF, EGGS,
                EMRALD, ENTER, ENTRNC, FIND, FISSUR, FOOD,
 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,
                CLAM, COINS, DALTLC, DOOR, DPRSSN, DRAGON, DWARF, EGGS,
                EMRALD, ENTER, ENTRNC, FIND, FISSUR, FOOD,
-               GRATE, HINT, HINTED[21], HINTLC[21],
+               GRATE, HINT, 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,
                I, INVENT, IGO, J, JADE, K, K2, KEYS, KK,
                KNIFE, KQ, L, LAMP, LL, LOC, LOCK, LOOK,
                MAGZIN, MAXDIE, MAXTRS, MESSAG, MIRROR, MXSCOR,
@@ -251,7 +249,7 @@ L6016:      TK[J]=game.odloc[I];
 
 /*  The pirate's spotted him.  He leaves him alone once we've found chest.  K
  *  counts if a treasure is here.  If not, and tally=1 for an unseen chest, let
 
 /*  The pirate's spotted him.  He leaves him alone once we've found chest.  K
  *  counts if a treasure is here.  If not, and tally=1 for an unseen chest, let
- *  the pirate be spotted.  Note that PLACE(CHEST)=0 might mean that he's
+ *  the pirate be spotted.  Note that game.place(CHEST)=0 might mean that he's
  *  thrown it to the troll, but in that case he's seen the chest (PROP=0). */
 
        if(LOC == game.chloc || PROP[CHEST] >= 0) goto L6030;
  *  thrown it to the troll, but in that case he's seen the chest (PROP=0). */
 
        if(LOC == game.chloc || PROP[CHEST] >= 0) goto L6030;
@@ -262,19 +260,19 @@ 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(game.tally == 1 && K == 0 && PLACE[CHEST] == 0 && HERE(LAMP) && PROP[LAMP]
+       if(game.tally == 1 && K == 0 && game.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;
 
-L6021: if(PLACE[CHEST] != 0) goto L6022;
+L6021: if(game.place[CHEST] != 0) goto L6022;
 /*  Install chest only once, to insure it is the last treasure in the list. */
        MOVE(CHEST,game.chloc);
        MOVE(MESSAG,game.chloc2);
 L6022: RSPEAK(128);
        /* 6023 */ for (J=50; J<=MAXTRS; J++) {
        if(J == PYRAM && (LOC == PLAC[PYRAM] || LOC == PLAC[EMRALD])) goto L6023;
 /*  Install chest only once, to insure it is the last treasure in the list. */
        MOVE(CHEST,game.chloc);
        MOVE(MESSAG,game.chloc2);
 L6022: RSPEAK(128);
        /* 6023 */ for (J=50; J<=MAXTRS; J++) {
        if(J == PYRAM && (LOC == PLAC[PYRAM] || LOC == PLAC[EMRALD])) goto L6023;
-       if(AT(J) && FIXED[J] == 0)CARRY(J,LOC);
+       if(AT(J) && game.fixed[J] == 0)CARRY(J,LOC);
        if(TOTING(J))DROP(J,game.chloc);
 L6023: /*etc*/ ;
        } /* end loop */
        if(TOTING(J))DROP(J,game.chloc);
 L6023: /*etc*/ ;
        } /* end loop */
@@ -346,7 +344,7 @@ L2001:      if(TOTING(BEAR))RSPEAK(141);
 
        if(DARK(0)) goto L2012;
        game.abbrev[LOC]=game.abbrev[LOC]+1;
 
        if(DARK(0)) goto L2012;
        game.abbrev[LOC]=game.abbrev[LOC]+1;
-       I=ATLOC[LOC];
+       I=game.atloc[LOC];
 L2004: if(I == 0) goto L2012;
        OBJ=I;
        if(OBJ > NOBJECTS)OBJ=OBJ-NOBJECTS;
 L2004: if(I == 0) goto L2012;
        OBJ=I;
        if(OBJ > NOBJECTS)OBJ=OBJ-NOBJECTS;
@@ -368,9 +366,9 @@ L2004:      if(I == 0) goto L2012;
  *  anyone who makes such a gross blunder isn't likely to find everything
  *  else anyway (so goes the rationalisation). */
 L2006: KK=PROP[OBJ];
  *  anyone who makes such a gross blunder isn't likely to find everything
  *  else anyway (so goes the rationalisation). */
 L2006: KK=PROP[OBJ];
-       if(OBJ == STEPS && LOC == FIXED[STEPS])KK=1;
+       if(OBJ == STEPS && LOC == game.fixed[STEPS])KK=1;
        PSPEAK(OBJ,KK);
        PSPEAK(OBJ,KK);
-L2008: I=LINK[I];
+L2008: I=game.link[I];
         goto L2004;
 
 L2009: K=54;
         goto L2004;
 
 L2009: K=54;
@@ -388,7 +386,7 @@ L2012:      VERB=0;
 
 L2600: if(COND[LOC] < game.conds) goto L2603;
        /* 2602 */ for (HINT=1; HINT<=HNTMAX; HINT++) {
 
 L2600: if(COND[LOC] < game.conds) goto L2603;
        /* 2602 */ for (HINT=1; HINT<=HNTMAX; HINT++) {
-       if(HINTED[HINT]) goto L2602;
+       if(game.hinted[HINT]) goto L2602;
        if(!CNDBIT(LOC,HINT+10))HINTLC[HINT]= -1;
        HINTLC[HINT]=HINTLC[HINT]+1;
        if(HINTLC[HINT] >= HINTS[HINT][1]) goto L40000;
        if(!CNDBIT(LOC,HINT+10))HINTLC[HINT]= -1;
        HINTLC[HINT]=HINTLC[HINT]+1;
        if(HINTLC[HINT] >= HINTS[HINT][1]) goto L40000;
@@ -607,7 +605,7 @@ L30310: game.newloc=PLAC[TROLL]+FIXD[TROLL]-LOC;
        PROP[CHASM]=1;
        PROP[TROLL]=2;
        DROP(BEAR,game.newloc);
        PROP[CHASM]=1;
        PROP[TROLL]=2;
        DROP(BEAR,game.newloc);
-       FIXED[BEAR]= -1;
+       game.fixed[BEAR]= -1;
        PROP[BEAR]=3;
        game.oldlc2=game.newloc;
         goto L99;
        PROP[BEAR]=3;
        game.oldlc2=game.newloc;
         goto L99;
@@ -707,8 +705,8 @@ L99:        if(game.closng) goto L95;
        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);
        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;
+       game.place[WATER]=0;
+       game.place[OIL]=0;
        if(TOTING(LAMP))PROP[LAMP]=0;
        /* 98 */ for (J=1; J<=NOBJECTS; J++) {
        I=NOBJECTS + 1 - J;
        if(TOTING(LAMP))PROP[LAMP]=0;
        /* 98 */ for (J=1; J<=NOBJECTS; J++) {
        I=NOBJECTS + 1 - J;
@@ -751,8 +749,8 @@ L40010: HINTLC[HINT]=0;
        if(!YES(cmdin,HINTS[HINT][3],0,54)) goto L2602;
        SETPRM(1,HINTS[HINT][2],HINTS[HINT][2]);
        RSPEAK(261);
        if(!YES(cmdin,HINTS[HINT][3],0,54)) goto L2602;
        SETPRM(1,HINTS[HINT][2],HINTS[HINT][2]);
        RSPEAK(261);
-       HINTED[HINT]=YES(cmdin,175,HINTS[HINT][4],54);
-       if(HINTED[HINT] && game.limit > 30)game.limit=game.limit+30*HINTS[HINT][2];
+       game.hinted[HINT]=YES(cmdin,175,HINTS[HINT][4],54);
+       if(game.hinted[HINT] && game.limit > 30)game.limit=game.limit+30*HINTS[HINT][2];
 L40020: HINTLC[HINT]=0;
 L40030:  goto L2602;
 
 L40020: HINTLC[HINT]=0;
 L40030:  goto L2602;
 
@@ -761,13 +759,13 @@ 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) && game.oldobj == BIRD) goto L40010;
+L40200: if(game.place[BIRD] == LOC && TOTING(ROD) && game.oldobj == BIRD) goto L40010;
         goto L40030;
 
 L40300: if(HERE(SNAKE) && !HERE(BIRD)) goto L40010;
         goto L40020;
 
         goto L40030;
 
 L40300: if(HERE(SNAKE) && !HERE(BIRD)) goto L40010;
         goto L40020;
 
-L40400: if(ATLOC[LOC] == 0 && ATLOC[game.oldloc] == 0 && ATLOC[game.oldlc2] == 0 && game.holdng >
+L40400: if(game.atloc[LOC] == 0 && game.atloc[game.oldloc] == 0 && game.atloc[game.oldlc2] == 0 && game.holdng >
                1) goto L40010;
         goto L40020;
 
                1) goto L40010;
         goto L40020;
 
@@ -779,7 +777,7 @@ L40600:  goto L40010;
 L40700: if(game.dflag == 0) goto L40010;
         goto L40020;
 
 L40700: if(game.dflag == 0) goto L40010;
         goto L40020;
 
-L40800: if(ATLOC[LOC] == 0 && ATLOC[game.oldloc] == 0 && ATLOC[game.oldlc2] == 0) goto
+L40800: if(game.atloc[LOC] == 0 && game.atloc[game.oldloc] == 0 && game.atloc[game.oldlc2] == 0) goto
                L40010;
         goto L40030;
 
                L40010;
         goto L40030;
 
@@ -840,9 +838,9 @@ L10000: PROP[GRATE]=0;
        JUGGLE(CHASM);
        if(PROP[BEAR] != 3)DSTROY(BEAR);
        PROP[CHAIN]=0;
        JUGGLE(CHASM);
        if(PROP[BEAR] != 3)DSTROY(BEAR);
        PROP[CHAIN]=0;
-       FIXED[CHAIN]=0;
+       game.fixed[CHAIN]=0;
        PROP[AXE]=0;
        PROP[AXE]=0;
-       FIXED[AXE]=0;
+       game.fixed[AXE]=0;
        RSPEAK(129);
        game.clock1= -1;
        game.closng=true;
        RSPEAK(129);
        game.clock1= -1;
        game.closng=true;
@@ -883,7 +881,7 @@ L11000: PROP[BOTTLE]=PUT(BOTTLE,115,1);
        PROP[PILLOW]=PUT(PILLOW,116,0);
 
        PROP[MIRROR]=PUT(MIRROR,115,0);
        PROP[PILLOW]=PUT(PILLOW,116,0);
 
        PROP[MIRROR]=PUT(MIRROR,115,0);
-       FIXED[MIRROR]=116;
+       game.fixed[MIRROR]=116;
 
        for (I=1; I<=NOBJECTS; I++) {
                if(TOTING(I))
 
        for (I=1; I<=NOBJECTS; I++) {
                if(TOTING(I))
@@ -910,7 +908,7 @@ L12000: RSPEAK(188);
 L12200: if(game.lmwarn || !HERE(LAMP)) goto L19999;
        game.lmwarn=true;
        SPK=187;
 L12200: if(game.lmwarn || !HERE(LAMP)) goto L19999;
        game.lmwarn=true;
        SPK=187;
-       if(PLACE[BATTER] == 0)SPK=183;
+       if(game.place[BATTER] == 0)SPK=183;
        if(PROP[BATTER] == 1)SPK=189;
        RSPEAK(SPK);
         goto L19999;
        if(PROP[BATTER] == 1)SPK=189;
        RSPEAK(SPK);
         goto L19999;