X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=main.c;h=84eca5758177d5d262d015186fb02bb5e3aeb80b;hb=45820bc8cd6e01279d94703fd18b73f6848f09aa;hp=39050542c091a62927399a0d2a166a08bce353f8;hpb=7f2c118e56a761debfb0559462a8914f582fcb82;p=open-adventure.git diff --git a/main.c b/main.c index 3905054..84eca57 100644 --- a/main.c +++ b/main.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include "advent.h" #include "linenoise/linenoise.h" @@ -27,21 +26,6 @@ #define DIM(a) (sizeof(a)/sizeof(a[0])) -struct game_t game = { - .chloc = LOC_DEADEND12, - .chloc2 = LOC_DEADEND13, - .dloc[1] = LOC_KINGHALL, - .dloc[2] = LOC_WESTBANK, - .dloc[3] = LOC_Y2, - .dloc[4] = LOC_ALIKE3, - .dloc[5] = LOC_COMPLEX, - .dloc[6] = LOC_DEADEND12, - .abbnum = 5, - .clock1 = WARNTIME, - .clock2 = FLASHTIME, - .blklin = true -}; - FILE *logfp = NULL, *rfp = NULL; bool oldstyle = false; bool editline = true; @@ -133,23 +117,13 @@ int main(int argc, char *argv[]) linenoiseHistorySetMaxLen(350); - /* Initialize our LCG PRNG with parameters tested against - * Knuth vol. 2. by the original authors */ - game.lcg_a = 1093; - game.lcg_c = 221587; - game.lcg_m = 1048576; - srand(time(NULL)); - long seedval = (long)rand(); - set_seed(seedval); - /* Initialize game variables */ - initialise(); + long seedval = initialise(); /* Start-up, dwarf stuff */ make_zzword(game.zzword); - game.newloc = LOC_START; - game.loc = LOC_START; - game.limit = GAMELIMIT; + +#ifndef ADVENT_NOSAVE if (!rfp) { game.novice = yes(arbitrary_messages[WELCOME_YOU], arbitrary_messages[CAVE_NEARBY], arbitrary_messages[NO_MESSAGE]); if (game.novice) @@ -157,6 +131,7 @@ int main(int argc, char *argv[]) } else { restore(rfp); } +#endif if (logfp) fprintf(logfp, "seed %ld\n", seedval); @@ -384,9 +359,12 @@ static bool dwarfmove(void) if (PCT(50)) game.dloc[j] = 0; } + + /* Alternate initial loc for dwarf, in case one of them + * starts out on top of the adventurer. */ for (int i = 1; i <= NDWARVES - 1; i++) { if (game.dloc[i] == game.loc) - game.dloc[i] = DALTLC; + game.dloc[i] = DALTLC; // game.odloc[i] = game.dloc[i]; } rspeak(DWARF_RAN); @@ -1115,12 +1093,12 @@ L2607: wordclear(&command.wd2); } else { /* FIXME: Magic numbers related to vocabulary */ - if (!((V1 != 1000 + WATER && V1 != 1000 + OIL) || - (V2 != 1000 + PLANT && V2 != 1000 + DOOR))) { - if (AT(V2 - 1000)) + if (!((V1 != PROMOTE_WORD(WATER) && V1 != PROMOTE_WORD(OIL)) || + (V2 != PROMOTE_WORD(PLANT) && V2 != PROMOTE_WORD(DOOR)))) { + if (AT(DEMOTE_WORD(V2))) command.wd2 = token_to_packed("POUR"); } - if (V1 == 1000 + CAGE && V2 == 1000 + BIRD && HERE(CAGE) && HERE(BIRD)) + if (V1 == PROMOTE_WORD(CAGE) && V2 == PROMOTE_WORD(BIRD) && HERE(CAGE) && HERE(BIRD)) command.wd1 = token_to_packed("CATCH"); } L2620: @@ -1143,7 +1121,7 @@ Lookup: rspeak(DONT_KNOW, command.wd1, command.wd1x); goto L2600; } - /* FIXME: magic numbers related to vocabulary */ + /* FIXME: magic numbers related to vocabulary */ kmod = MOD(defn, 1000); switch (defn / 1000) { case 0: