X-Git-Url: https://jxself.org/git/?p=open-adventure.git;a=blobdiff_plain;f=advent.h;h=ae9ecbae3fecfd641ca8453a18084c1b1690c5e6;hp=6e3c56b2649e56116499195569e656f123380e89;hb=c5d2d9ddb54647bdb3ca03a0163a5da103dc8946;hpb=a02b3879998e78555852f4a81a19e80694e38cdc diff --git a/advent.h b/advent.h index 6e3c56b..ae9ecba 100644 --- a/advent.h +++ b/advent.h @@ -52,7 +52,6 @@ struct game_t { long oldobj; long panic; long saved; - long setup; long tally; long thresh; long trndex; @@ -80,13 +79,13 @@ extern char rawbuf[LINESIZE], INLINE[LINESIZE+1]; extern const char ascii_to_advent[]; extern const char advent_to_ascii[]; extern FILE *logfp; -extern bool oldstyle; +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 void* xmalloc(size_t); +extern char* xstrdup(const char*); extern void packed_to_token(long, char token[6]); extern void newspeak(char*); extern void PSPEAK(vocab_t,int); @@ -96,8 +95,6 @@ extern bool GETIN(FILE *,token_t*,token_t*,token_t*,token_t*); extern long YES(FILE *,vocab_t,vocab_t,vocab_t); extern long GETTXT(bool,bool,bool); extern token_t MAKEWD(long); -extern void PUTTXT(token_t,long*,long); -extern void SHFTXT(long,long); extern void TYPE0(void); extern long VOCAB(long,long); extern void DSTROY(long); @@ -114,7 +111,6 @@ extern void BUG(long) __attribute__((noreturn)); extern bool MAPLIN(FILE *); extern void TYPE(void); extern void DATIME(long*, long*); -extern long MOD(long,long); extern void set_seed(long); extern unsigned long get_next_lcg_value(void); @@ -122,8 +118,8 @@ extern long randrange(long); extern void score(long); extern int saveresume(FILE *, bool); -/* Statement functions - * +/* + * MOD(N,M) = Arithmetic modulus * AT(OBJ) = true if on either side of two-placed object * CNDBIT(L,N) = true if COND(L) has bit n set (bit 0 is units bit) * DARK(LOC) = true if location "LOC" is dark @@ -136,6 +132,7 @@ extern int saveresume(FILE *, bool); * PCT(N) = true N% of the time (N integer from 0 to 100) * TOTING(OBJ) = true if the OBJ is being carried */ +#define MOD(N,M) ((N) % (M)) #define TOTING(OBJ) (game.place[OBJ] == -1) #define AT(OBJ) (game.place[OBJ] == game.loc || game.fixed[OBJ] == game.loc) #define HERE(OBJ) (AT(OBJ) || TOTING(OBJ)) @@ -174,6 +171,7 @@ enum speechpart {unknown, intransitive, transitive}; /* Phase codes for action returns. * These were at one time FORTRAN line numbers. + * The values don't matter, but perturb their order at your peril. */ #define GO_TERMINATE 2 #define GO_MOVE 8 @@ -181,12 +179,14 @@ enum speechpart {unknown, intransitive, transitive}; #define GO_CLEAROBJ 2012 #define GO_CHECKHINT 2600 #define GO_CHECKFOO 2607 +#define GO_CLOSEJUMP 2610 #define GO_DIRECTION 2620 #define GO_LOOKUP 2630 #define GO_WORD2 2800 +#define GO_SPECIALS 1900 #define GO_UNKNOWN 8000 -#define GO_DWARFWAKE 19000 #define GO_ACTION 40000 +#define GO_DWARFWAKE 19000 /* hack to ignore GCC Unused Result */ #define IGNORE(r) do{if (r){}}while(0)