X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=advent.h;h=6ddbbbe37879fbffda30561eb8421ca6b4622395;hb=fc7f52f83f1ad266e09f2e6883573876bad5f6ca;hp=ee8e3faa9808e33b831669291ddd986fcfb65147;hpb=dc6a5751ed04ff15103c9852c8dc7427298b6945;p=open-adventure.git diff --git a/advent.h b/advent.h index ee8e3fa..6ddbbbe 100644 --- a/advent.h +++ b/advent.h @@ -6,7 +6,7 @@ #define LINESIZE 100 #define NDWARVES 6 #define PIRATE NDWARVES /* must be NDWARVES-1 when zero-origin */ -#define DALTLC 18 /* alternate dwarf location; low room */ +#define DALTLC LOC_NUGGET /* alternate dwarf location */ #define MINTRS 50 #define MAXTRS 79 #define MAXPARMS 25 @@ -14,15 +14,11 @@ #define INTRANSITIVE -1 /* illegal object number */ #define SPECIALBASE 300 /* base umber of special rooms */ -typedef struct lcg_state -{ - unsigned long a, c, m, x; -} lcg_state; - typedef long token_t; /* word token - someday this will be char[TOKLEN+1] */ typedef long vocab_t; /* index into a vocabulary array */ struct game_t { + unsigned long lcg_a, lcg_c, lcg_m, lcg_x; long abbnum; long blklin; long bonus; @@ -81,13 +77,12 @@ extern const char ascii_to_advent[]; extern const char advent_to_ascii[]; extern FILE *logfp; extern bool oldstyle, editline, prompt; -extern lcg_state lcgstate; /* b is not needed for POSIX but harmless */ #define READ_MODE "rb" #define WRITE_MODE "wb" extern char* xstrdup(const char*); -extern void packed_to_token(long, char token[6]); +extern void packed_to_token(long, char token[]); extern void newspeak(char*); extern void PSPEAK(vocab_t,int); extern void RSPEAK(vocab_t); @@ -113,10 +108,12 @@ extern bool MAPLIN(FILE *); extern void TYPE(void); extern void DATIME(long*, long*); +enum termination {endgame, quitgame, scoregame}; + extern void set_seed(long); extern unsigned long get_next_lcg_value(void); extern long randrange(long); -extern void score(long); +extern void score(enum termination); extern int saveresume(FILE *, bool); /* @@ -145,7 +142,7 @@ extern int saveresume(FILE *, bool); #define DARK(DUMMY) ((!CNDBIT(game.loc,LIGHT)) && (game.prop[LAMP] == 0 || !HERE(LAMP))) #define PCT(N) (randrange(100) < (N)) #define GSTONE(OBJ) ((OBJ) == EMRALD || (OBJ) == RUBY || (OBJ) == AMBER || (OBJ) == SAPPH) -#define FOREST(LOC) ((LOC) >= 145 && (LOC) <= 166) +#define FOREST(LOC) ((LOC) >= LOC_FOREST1 && (LOC) <= LOC_FOREST22) #define VOCWRD(LETTRS,SECT) (VOCAB(MAKEWD(LETTRS),SECT)) #define SPECIAL(LOC) ((LOC) > SPECIALBASE) @@ -155,8 +152,8 @@ extern int saveresume(FILE *, bool); * LOC is outside, INDEEP(LOC) is true if LOC is "deep" in the cave (hall * of mists or deeper). Note special kludges for "Foof!" locs. */ -#define OUTSID(LOC) ((LOC) <= 8 || FOREST(LOC) || (LOC) == PLAC[SAPPH] || (LOC) == 180 || (LOC) == 182) -#define INDEEP(LOC) ((LOC) >= 15 && !OUTSID(LOC) && (LOC) != 179) +#define OUTSID(LOC) ((LOC) <= LOC_GRATE || FOREST(LOC) || (LOC) == PLAC[SAPPH] || (LOC) == LOC_FOOF2 || (LOC) == LOC_FOOF4) +#define INDEEP(LOC) ((LOC) >= LOC_MISTHALL && !OUTSID(LOC) && (LOC) != LOC_FOOF1) /* vocabulary items */ extern long AMBER, ATTACK, AXE, BACK, BATTER, BEAR,