X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=blobdiff_plain;f=init.c;h=b19e422fd5a9dc7dd5033ba985ec8048d32b957f;hp=4511aca099fdd24c46d26b14c3a47e18d34d6987;hb=c3a2816821512b59a09866a594a9bec699193271;hpb=f47dc9f44798e3d03e4760c8b53b44c7de4c92f9 diff --git a/init.c b/init.c index 4511aca..b19e422 100644 --- a/init.c +++ b/init.c @@ -14,23 +14,13 @@ * 12600 words of message text (LINES, LINSIZ). * 885 travel options (TRAVEL, TRVSIZ). * 330 vocabulary words (KTAB, ATAB, TABSIZ). - * 185 locations (KEY, COND, game.abbrev, game.atloc, LOCSIZ). - * 100 objects (PLAC, game.place, FIXD, game.fixed, game.link (twice), - * ogame.prop, OBJSND, OBJTXT). * 35 "action" verbs (ACTSPK, VRBSIZ). - * 12 different player classifications (CTEXT, CVAL, CLSMAX). - * 20 hints (game.hintlc, game.hinted, HINTS, HNTSIZ). - * 5 "# of turns" threshholds (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 @@ -177,7 +167,7 @@ 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]; @@ -209,21 +199,22 @@ void initialise(void) DROP(k, PLAC[k]); } - /* Treasures, as noted earlier, are objects MINTRS through MAXTRS - * Their props are initially -1, and are set to 0 the first time + /* Treasure props are initially -1, and are set to 0 the first time * they are described. game.tally keeps track of how many are * not yet found, so we know when to close the cave. */ game.tally = 0; - for (int treasure = MINTRS; treasure <= MAXTRS; treasure++) { - if (object_descriptions[treasure].inventory != 0) - game.prop[treasure] = -1; - game.tally = game.tally - game.prop[treasure]; + for (int treasure = 1; treasure <= NOBJECTS; treasure++) { + if (object_descriptions[treasure].is_treasure) { + if (object_descriptions[treasure].inventory != 0) + game.prop[treasure] = -1; + game.tally = game.tally - game.prop[treasure]; + } } /* 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 = 0; i < HINT_COUNT; i++) { + for (int i = 0; i < NHINTS; i++) { game.hinted[i] = false; game.hintlc[i] = 0; } @@ -270,7 +261,7 @@ void initialise(void) VOLCANO = VOCWRD(WORD_VOLCANO, 1); WATER = VOCWRD(WORD_WATER, 1); - /* Objects from MINTRS through MAXTRS are treasures. Here are a few. */ + /* Vocabulary for treasures */ AMBER = VOCWRD(WORD_AMBER, 1); CHAIN = VOCWRD(WORD_CHAIN, 1); CHEST = VOCWRD(WORD_CHEST, 1); @@ -347,11 +338,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;