*/
/* Current limits:
- * 12500 words of message text (LINES, LINSIZ).
+ * 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).
* 300 locations
* 100 objects */
+/* Note:
+ * - the object count limit has been abstracted as NOBJECTS
+ * - the random message limit has been abstracted as RTXSIZE
+ */
/* Description of the database format
*
* prop value is N/100. The N/100 is used only to distinguish multiple
* messages from multi-line messages; the prop info actually requires all
* messages for an object to be present and consecutive. Properties which
- * produce no message should be given the message ">$<".
+ * produce no message should be given the message ">$<". (The magic value
+ * 100 is now mostly abstracted out as NOBJECTS.)
* Section 6: Arbitrary messages. Same format as sections 1, 2, and 5, except
* the numbers bear no relation to anything (except for special verbs
* in section 4).
PLACE[I]=0;
PROP[I]=0;
LINK[I]=0;
- {long x = I+100; LINK[x]=0;}
+ {long x = I+NOBJECTS; LINK[x]=0;}
} /* end loop */
/* 1102 */ for (I=1; I<=LOCSIZ; I++) {
ABB[I]=0;
if(LTEXT[I] == 0 || KEY[I] == 0) goto L1102;
K=KEY[I];
- if(MOD(IABS(TRAVEL[K]),1000) == 1)COND[I]=2;
+ if(MOD(labs(TRAVEL[K]),1000) == 1)COND[I]=2;
L1102: ATLOC[I]=0;
} /* end loop */
* "PLAC" and "FIXD". Also, since two-placed objects are typically best
* described last, we'll drop them first. */
- /* 1106 */ for (I=1; I<=100; I++) {
- K=101-I;
+ /* 1106 */ for (I=1; I<=NOBJECTS; I++) {
+ K=NOBJECTS + 1 - I;
if(FIXD[K] <= 0) goto L1106;
- DROP(K+100,FIXD[K]);
+ DROP(K+NOBJECTS,FIXD[K]);
DROP(K,PLAC[K]);
L1106: /*etc*/ ;
} /* end loop */
- for (I=1; I<=100; I++) {
- K=101-I;
+ for (I=1; I<=NOBJECTS; I++) {
+ K=NOBJECTS + 1 - I;
FIXED[K]=FIXD[K];
if(PLAC[K] != 0 && FIXD[K] <= 0)DROP(K,PLAC[K]);
} /* end loop */
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.
+ * of the 5 initial locs are adjacent.) game.dseen is true if dwarf has seen him.
* 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
CHLOC=114;
CHLOC2=140;
- for (I=1; I<=6; I++) {
- DSEEN[I]=false;
+ 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.dloc[1]=19;
+ game.dloc[2]=27;
+ game.dloc[3]=33;
+ game.dloc[4]=44;
+ game.dloc[5]=64;
+ game.dloc[6]=CHLOC;
DALTLC=18;
/* Other random flags and counters, as follows: