#include <stdbool.h>
#include <getopt.h>
#include <signal.h>
-#include <time.h>
#include <string.h>
#include "advent.h"
#include "linenoise/linenoise.h"
#define DIM(a) (sizeof(a)/sizeof(a[0]))
-struct game_t game = {
- .dloc[1] = LOC_KINGHALL,
- .dloc[2] = LOC_WESTBANK,
- .dloc[3] = LOC_Y2,
- .dloc[4] = LOC_ALIKE3,
- .dloc[5] = LOC_COMPLEX,
-
- /* Sixth dwarf is special (the pirate). He always starts at his
- * chest's eventual location inside the maze. This loc is saved
- * in chloc for ref. The dead end in the other maze has its
- * loc stored in chloc2. */
- .dloc[6] = LOC_DEADEND12,
- .chloc = LOC_DEADEND12,
- .chloc2 = LOC_DEADEND13,
- .abbnum = 5,
- .clock1 = WARNTIME,
- .clock2 = FLASHTIME,
- .blklin = true
-};
-
FILE *logfp = NULL, *rfp = NULL;
bool oldstyle = false;
bool editline = true;
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;
if (!rfp) {
game.novice = yes(arbitrary_messages[WELCOME_YOU], arbitrary_messages[CAVE_NEARBY], arbitrary_messages[NO_MESSAGE]);
if (game.novice)
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: