8 #define PIRATE NDWARVES /* must be NDWARVES-1 when zero-origin */
10 typedef struct lcg_state
12 unsigned long a, c, m, x;
15 typedef long token_t; /* word token - someday this will be char[TOKLEN+1] */
16 typedef long vocab_t; /* index into a vocabulary array */
56 long abbrev[LOCSIZ+1];
57 long dseen[NDWARVES+1];
58 long dloc[NDWARVES+1];
59 long odloc[NDWARVES+1];
62 extern struct game_t game;
64 extern long ATLOC[], FIXED[],
65 LINK[], LNLENG, LNPOSN,
67 extern char rawbuf[LINESIZE], INLINE[LINESIZE+1], MAP1[], MAP2[];
70 extern lcg_state lcgstate;
72 /* b is not needed for POSIX but harmless */
73 #define READ_MODE "rb"
74 #define WRITE_MODE "wb"
76 extern void SPEAK(vocab_t);
77 extern void PSPEAK(vocab_t,int);
78 extern void RSPEAK(vocab_t);
79 extern void SETPRM(long,long,long);
81 extern bool fGETIN(FILE *,token_t*,token_t*,token_t*,token_t*);
82 #define GETIN(input,WORD1,WORD1X,WORD2,WORD2X) fGETIN(input,&WORD1,&WORD1X,&WORD2,&WORD2X)
84 extern long YES(FILE *,vocab_t,vocab_t,vocab_t);
85 extern long GETTXT(bool,bool,bool);
86 extern token_t MAKEWD(long);
88 extern void fPUTTXT(token_t,long*,long);
89 #define PUTTXT(WORD,STATE,CASE) fPUTTXT(WORD,&STATE,CASE)
91 extern void SHFTXT(long,long);
92 extern void TYPE0(void);
94 extern void fSAVWDS(long*,long*,long*,long*,long*,long*,long*);
95 #define SAVWDS(W1,W2,W3,W4,W5,W6,W7) fSAVWDS(&W1,&W2,&W3,&W4,&W5,&W6,&W7)
96 extern void fSAVARR(long*,long);
97 #define SAVARR(ARR,N) fSAVARR(ARR,N)
98 extern void fSAVWRD(long,long*);
99 #define SAVWRD(OP,WORD) fSAVWRD(OP,&WORD)
101 extern long VOCAB(long,long);
102 extern void DSTROY(long);
103 extern void JUGGLE(long);
104 extern void MOVE(long,long);
105 extern long PUT(long,long,long);
106 extern void CARRY(long,long);
107 extern void DROP(long,long);
108 extern long ATDWRF(long);
109 extern long SETBIT(long);
110 extern bool TSTBIT(long,int);
111 extern long RNDVOC(long,long);
112 extern void BUG(long);
113 extern void MAPLIN(FILE *);
114 extern void TYPE(void);
115 extern void MPINIT(void);
117 extern void fSAVEIO(long,long,long*);
118 #define SAVEIO(OP,IN,ARR) fSAVEIO(OP,IN,ARR)
119 extern void DATIME(long*, long*);
121 extern long MOD(long,long);
123 extern void set_seed(long);
124 extern unsigned long get_next_lcg_value(void);
125 extern long randrange(long);
127 extern void score(long);
128 extern long AMBER, ATTACK, AXE, BACK, BATTER, BEAR,
129 BIRD, BLOOD, BOTTLE, CAGE, CAVE, CAVITY, CHAIN, CHASM, CHEST,
130 CLAM, COINS, DALTLC, DOOR, DPRSSN, DRAGON, DWARF, EGGS,
131 EMRALD, ENTER, ENTRNC, FIND, FISSUR, FOOD,
132 GRATE, HINT, HINTED[], HINTLC[],
133 I, INVENT, IGO, J, JADE, K, K2, KEYS, KK,
134 KNIFE, KQ, L, LAMP, LL, LOC, LOCK, LOOK,
135 MAGZIN, MAXDIE, MAXTRS, MESSAG, MIRROR, MXSCOR, NUGGET, NUL, OBJ,
136 OGRE, OIL, OLDOBJ, OYSTER,
137 PANIC, PEARL, PILLOW, PLANT, PLANT2, PROP[], PYRAM,
138 RESER, ROD, ROD2, RUBY, RUG, SAPPH, SAY,
139 SCORE, SECT, SIGN, SNAKE, SPK, STEPS, STICK,
140 STREAM, THROW, TK[], TRIDNT, TROLL, TROLL2,
141 URN, V1, V2, VASE, VEND, VERB,
142 VOLCAN, VRSION, WATER, WD1, WD1X, WD2, WD2X;