X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=blobdiff_plain;f=init.c;h=3d77a9cfb515804ed7ceb6ae82d2bb78caf7ced1;hp=d7789ad7ce85aa17a9f23bb4b0d9165107a26e7e;hb=25077d0b4eb1d6a85140c01092be7203ca64a49c;hpb=1e59d6b476a7f7f7b169a99e4918a4a2a1afb9cb diff --git a/init.c b/init.c index d7789ad..3d77a9c 100644 --- a/init.c +++ b/init.c @@ -5,7 +5,6 @@ #include "advent.h" #include "database.h" -#include "newdb.h" /* * Initialisation @@ -15,25 +14,13 @@ * 12600 words of message text (LINES, LINSIZ). * 885 travel options (TRAVEL, TRVSIZ). * 330 vocabulary words (KTAB, ATAB, TABSIZ). - * 185 locations (LTEXT, STEXT, KEY, COND, game.abbrev, game.atloc, - * LOCSND, LOCSIZ). - * 100 objects (PLAC, game.place, FIXD, game.fixed, game.link (twice), - * PTEXT, game.prop, OBJSND, OBJTXT). * 35 "action" verbs (ACTSPK, VRBSIZ). - * 277 random messages (RTEXT, RTXSIZ). - * 12 different player classifications (CTEXT, CVAL, CLSMAX). - * 20 hints (game.hintlc, game.hinted, HINTS, HNTSIZ). - * 5 "# of turns" threshholds (TTEXT, TRNVAL, TRNSIZ). * There are also limits which cannot be exceeded due to the structure of * the database. (E.G., The vocabulary uses n/1000 to determine word type, * so there can't be more than 1000 words.) These upper limits are: * 1000 non-synonymous vocabulary words * 300 locations * 100 objects - * Note: - * - the object count limit has been abstracted as NOBJECTS - * - the random message limit has been abstracted as RTXSIZ - * - maximum locations limit has been abstracted as LOCSIZ */ /* Description of the database format @@ -135,8 +122,7 @@ * bit; see section 9), the number of turns he must be at the right loc(s) * before triggering the hint, the points deducted for taking the hint, * the message number (section 6) of the question, and the message number - * of the hint. These values are stashed in the "hints" array. HNTMAX is - * set to the max hint number (<= HNTSIZ). + * of the hint. These values are stashed in the "hints" array. * Section 12: Unused in this version. * Section 13: Sounds and text. Each line contains either 2 or 3 numbers. If * 2 (call them N and S), N is a location and message ABS(S) from section @@ -181,11 +167,12 @@ void initialise(void) game.link[i + NOBJECTS] = game.link[i] = 0; } - for (int i = 1; i <= LOCSIZ; i++) { + for (int i = 1; i <= NLOCATIONS; i++) { game.abbrev[i] = 0; if (!(locations[i].description.big == 0 || KEY[i] == 0)) { int k = KEY[i]; - if (MOD(labs(TRAVEL[k]), 1000) == 1)COND[i] = 2; + if (MOD(labs(TRAVEL[k]), 1000) == 1) + conditions[i] |= (1 << COND_FORCED); } game.atloc[i] = 0; } @@ -226,7 +213,7 @@ void initialise(void) /* Clear the hint stuff. game.hintlc[i] is how long he's been at LOC * with cond bit i. game.hinted[i] is true iff hint i has been * used. */ - for (int i = 1; i <= HNTMAX; i++) { + for (int i = 0; i < NHINTS; i++) { game.hinted[i] = false; game.hintlc[i] = 0; } @@ -350,11 +337,10 @@ void initialise(void) * 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) - * maximum_deaths Number of reincarnation messages available (up to 5) * game.numdie Number of times killed so far * 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 */ + */ game.turns = 0; game.trnluz = 0; game.lmwarn = false;