X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=advent.h;h=0193f68fce9e192374d56ddfdcf13b35081e298b;hb=6af7db8cd9bbac9b238897a03fe1e6a04b26b944;hp=45b1c0c034256834de840433552860e28d1940e9;hpb=8613f0b3d941cacbcfde9a0a02f1bcd8f8d4e7b8;p=open-adventure.git diff --git a/advent.h b/advent.h index 45b1c0c..0193f68 100644 --- a/advent.h +++ b/advent.h @@ -12,7 +12,6 @@ #define DALTLC LOC_NUGGET // alternate dwarf location #define INVLIMIT 7 // inverntory limit (# of objects) #define INTRANSITIVE -1 // illegal object number -#define SPECIALBASE 300 // base number of special rooms #define GAMELIMIT 330 // base limit of turns #define NOVICELIMIT 1000 // limit of turns for novice #define WARNTIME 30 // late game starts at game.limit-this @@ -65,7 +64,6 @@ #define PCT(N) (randrange(100) < (N)) #define GSTONE(OBJ) ((OBJ) == EMERALD || (OBJ) == RUBY || (OBJ) == AMBER || (OBJ) == SAPPH) #define FOREST(LOC) CNDBIT(LOC, COND_FOREST) -#define SPECIAL(LOC) ((LOC) > SPECIALBASE) #define OUTSID(LOC) (CNDBIT(LOC, COND_ABOVE) || FOREST(LOC)) #define INDEEP(LOC) ((LOC) >= LOC_MISTHALL && !OUTSID(LOC)) #define BUG(x) bug(x, #x) @@ -114,8 +112,11 @@ enum phase_codes { GO_DWARFWAKE, }; -typedef long token_t; // word token - someday this will be char[TOKLEN+1] +typedef long token_t; // word token - someday this will be char[TOKLEN+1] */ typedef long vocab_t; // index into a vocabulary array */ +typedef long verb_t; // index into an actions array */ +typedef long obj_t; // index into the object array */ +typedef long loc_t; // index into the locations array */ struct game_t { unsigned long lcg_a, lcg_c, lcg_m, lcg_x; @@ -167,11 +168,11 @@ struct game_t { long abbrev[NLOCATIONS + 1]; long atloc[NLOCATIONS + 1]; long dseen[NDWARVES + 1]; // true if dwarf has seen him - long dloc[NDWARVES + 1]; // location of dwarves, initially hard-wired in - long odloc[NDWARVES + 1]; // prior loc of each dwarf, initially garbage - long fixed[NOBJECTS + 1]; + loc_t dloc[NDWARVES + 1]; // location of dwarves, initially hard-wired in + loc_t odloc[NDWARVES + 1]; // prior loc of each dwarf, initially garbage + loc_t fixed[NOBJECTS + 1]; long link[NOBJECTS * 2 + 1]; - long place[NOBJECTS + 1]; + loc_t place[NOBJECTS + 1]; long hinted[NHINTS]; // hintlc[i] is how long he's been at LOC with cond bit i long hintlc[NHINTS]; // hinted[i] is true iff hint i has been used. long prop[NOBJECTS + 1]; @@ -189,8 +190,8 @@ struct settings_t { struct command_t { enum speechpart part; - vocab_t verb; - vocab_t obj; + verb_t verb; + obj_t obj; token_t wd1; token_t wd2; long id1; @@ -222,12 +223,12 @@ extern int get_object_vocab_id(const char*); extern int get_action_vocab_id(const char*); extern int get_special_vocab_id(const char*); extern long get_vocab_id(const char*); -extern void juggle(long); -extern void move(long, long); -extern long put(long, long, long); -extern void carry(long, long); -extern void drop(long, long); -extern long atdwrf(long); +extern void juggle(obj_t); +extern void move(obj_t, loc_t); +extern long put(obj_t, long, long); +extern void carry(obj_t, loc_t); +extern void drop(obj_t, loc_t); +extern long atdwrf(loc_t); extern long setbit(long); extern bool tstbit(long, int); extern void make_zzword(char*); @@ -242,6 +243,8 @@ extern int resume(void); extern int restore(FILE *); extern long initialise(void); extern int action(struct command_t *command); +extern void state_change(obj_t, long); + void bug(enum bugtype, const char *) __attribute__((__noreturn__));