* 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).
* 300 locations
* 100 objects */
-/* Note: the object count limit has been abstracted as NOBJECTS */
+/* Note:
+ * - the object count limit has been abstracted as NOBJECTS
+ * - the random message limit has been abstracted as RTXSIZE
+ * - maximum locations limit has been abstracted as LOCSIZ
+ */
/* Description of the database format
*
} /* 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;
/* 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;
- TALLY=0;
+ game.tally=0;
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
SAY=VOCWRD(190125,2);
THROW=VOCWRD(2008181523,2);
-/* Initialise the dwarves. DLOC is loc of dwarves, hard-wired in. ODLOC is
+/* Initialise the dwarves. game.dloc is loc of dwarves, hard-wired in. game.odloc is
* prior loc of each dwarf, initially garbage. DALTLC is alternate initial loc
* for dwarf, in case one of them starts out on top of the adventurer. (No 2
- * of the 5 initial locs are adjacent.) DSEEN is true if dwarf has seen him.
- * DFLAG controls the level of activation of all this:
+ * of the 5 initial locs are adjacent.) game.dseen is true if dwarf has seen him.
+ * game.dflag controls the level of activation of all this:
* 0 No dwarf stuff yet (wait until reaches Hall Of Mists)
* 1 Reached Hall Of Mists, but hasn't met first dwarf
* 2 Met first dwarf, others start moving, no knives thrown yet
* 3 A knife has been thrown (first set always misses)
* 3+ Dwarves are mad (increases their accuracy)
* Sixth dwarf is special (the pirate). He always starts at his chest's
- * eventual location inside the maze. This loc is saved in CHLOC for ref.
- * the dead end in the other maze has its loc stored in CHLOC2. */
+ * eventual location inside the maze. This loc is saved in game.chloc for ref.
+ * the dead end in the other maze has its loc stored in game.chloc2. */
- CHLOC=114;
- CHLOC2=140;
- for (I=1; I<=6; I++) {
- DSEEN[I]=false;
+ game.chloc=114;
+ game.chloc2=140;
+ for (I=1; I<=NDWARVES; I++) {
+ game.dseen[I]=false;
} /* end loop */
- DFLAG=0;
- DLOC[1]=19;
- DLOC[2]=27;
- DLOC[3]=33;
- DLOC[4]=44;
- DLOC[5]=64;
- DLOC[6]=CHLOC;
+ game.dflag=0;
+ game.dloc[1]=19;
+ game.dloc[2]=27;
+ game.dloc[3]=33;
+ game.dloc[4]=44;
+ game.dloc[5]=64;
+ game.dloc[6]=game.chloc;
DALTLC=18;
/* Other random flags and counters, as follows:
- * ABBNUM How often we should print non-abbreviated descriptions
- * BONUS Used to determine amount of bonus if he reaches closing
- * CLOCK1 Number of turns from finding last treasure till closing
- * CLOCK2 Number of turns from first warning till blinding flash
- * CONDS Min value for cond(loc) if loc has any hints
- * DETAIL How often we've said "not allowed to give more detail"
- * DKILL Number of dwarves killed (unused in scoring, needed for msg)
- * FOOBAR Current progress in saying "FEE FIE FOE FOO".
- * HOLDNG Number of objects being carried
+ * game.abbnum How often we should print non-abbreviated descriptions
+ * game.bonus Used to determine amount of bonus if he reaches closing
+ * game.clock1 Number of turns from finding last treasure till closing
+ * game.clock2 Number of turns from first warning till blinding flash
+ * game.conds Min value for cond(loc) if loc has any hints
+ * game.detail How often we've said "not allowed to give more detail"
+ * game.dkill # of dwarves killed (unused in scoring, needed for msg)
+ * game.foobar Current progress in saying "FEE FIE FOE FOO".
+ * game.holdng Number of objects being carried
* IGO How many times he's said "go XXX" instead of "XXX"
- * IWEST How many times he's said "west" instead of "w"
- * KNFLOC 0 if no knife here, loc if knife here, -1 after caveat
- * LIMIT Lifetime of lamp (not set here)
+ * game.iwest How many times he's said "west" instead of "w"
+ * 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 */
- TURNS=0;
- TRNDEX=1;
- THRESH= -1;
- if(TRNVLS > 0)THRESH=MOD(TRNVAL[1],100000)+1;
- TRNLUZ=0;
- LMWARN=false;
+ 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;
- IWEST=0;
- KNFLOC=0;
- DETAIL=0;
- ABBNUM=5;
+ game.iwest=0;
+ game.knfloc=0;
+ game.detail=0;
+ game.abbnum=5;
for (I=0; I<=4; I++) {
{long x = 2*I+81; if(RTEXT[x] != 0)MAXDIE=I+1;}
} /* end loop */
- NUMDIE=0;
- HOLDNG=0;
- DKILL=0;
- FOOBAR=0;
- BONUS=0;
- CLOCK1=30;
- CLOCK2=50;
- CONDS=SETBIT(11);
- SAVED=0;
- CLOSNG=false;
- PANIC=false;
- CLOSED=false;
- CLSHNT=false;
- NOVICE=false;
- SETUP=1;
+ game.numdie=0;
+ game.holdng=0;
+ game.dkill=0;
+ game.foobar=0;
+ game.bonus=0;
+ game.clock1=30;
+ game.clock2=50;
+ game.conds=SETBIT(11);
+ game.saved=0;
+ game.closng=false;
+ game.panic=false;
+ game.closed=false;
+ game.clshnt=false;
+ game.novice=false;
+ game.setup=1;
+ game.blklin=true;
/* if we can ever think of how, we should save it at this point */