X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=init.c;h=8b2b1b07dc2607a67515eaa233eafac56471af84;hb=bb78ca96ce24d30df54f3f8319d9d43129979c59;hp=69901c1c8b91d39e16b25d553ae7d02035b700a9;hpb=5ae76995d2e8d412f565481505e4c7bc37260bb1;p=open-adventure.git diff --git a/init.c b/init.c index 69901c1..8b2b1b0 100644 --- a/init.c +++ b/init.c @@ -3,9 +3,7 @@ #include #include -#include "misc.h" -#include "main.h" -#include "share.h" +#include "advent.h" #include "funcs.h" #include "database.h" @@ -14,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). @@ -32,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 * @@ -89,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). @@ -179,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 */ @@ -197,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 */ @@ -311,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 @@ -327,23 +330,23 @@ 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: * 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 + * game.clock1 Number of turns from finding last treasure till closing + * game.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) @@ -380,8 +383,8 @@ L1106: /*etc*/ ; DKILL=0; FOOBAR=0; BONUS=0; - CLOCK1=30; - CLOCK2=50; + game.clock1=30; + game.clock2=50; CONDS=SETBIT(11); SAVED=0; CLOSNG=false;