X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=init.c;h=2a714649e50026f6e2dcf276692cc98af7ba5328;hb=07c0020a7aaa0ab34ee0e4f6e3a9ae0e1fe06c25;hp=c5486cfcfa92b28bd2be7f5a96b7cbb04b1de12a;hpb=d402e0941196131533b92b51243fda9268fa6069;p=open-adventure.git diff --git a/init.c b/init.c index c5486cf..2a71464 100644 --- a/init.c +++ b/init.c @@ -12,7 +12,7 @@ */ /* 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). @@ -30,6 +30,10 @@ * 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 * @@ -87,7 +91,8 @@ * 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). @@ -177,14 +182,14 @@ static int finish_init(void) { 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 */ @@ -195,16 +200,16 @@ L1102: ATLOC[I]=0; * "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 */ @@ -309,10 +314,10 @@ L1106: /*etc*/ ; 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 @@ -325,16 +330,16 @@ L1106: /*etc*/ ; 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: