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[], LINK[], LNLENG, LNPOSN, PARMS[], PLACE[];
65 extern char rawbuf[LINESIZE], INLINE[LINESIZE+1], MAP1[], MAP2[];
68 extern lcg_state lcgstate;
70 /* b is not needed for POSIX but harmless */
71 #define READ_MODE "rb"
72 #define WRITE_MODE "wb"
74 extern void SPEAK(vocab_t);
75 extern void PSPEAK(vocab_t,int);
76 extern void RSPEAK(vocab_t);
77 extern void SETPRM(long,long,long);
79 extern bool fGETIN(FILE *,token_t*,token_t*,token_t*,token_t*);
80 #define GETIN(input,WORD1,WORD1X,WORD2,WORD2X) fGETIN(input,&WORD1,&WORD1X,&WORD2,&WORD2X)
82 extern long YES(FILE *,vocab_t,vocab_t,vocab_t);
83 extern long GETTXT(bool,bool,bool);
84 extern token_t MAKEWD(long);
86 extern void fPUTTXT(token_t,long*,long);
87 #define PUTTXT(WORD,STATE,CASE) fPUTTXT(WORD,&STATE,CASE)
89 extern void SHFTXT(long,long);
90 extern void TYPE0(void);
92 extern void fSAVWDS(long*,long*,long*,long*,long*,long*,long*);
93 #define SAVWDS(W1,W2,W3,W4,W5,W6,W7) fSAVWDS(&W1,&W2,&W3,&W4,&W5,&W6,&W7)
94 extern void fSAVARR(long*,long);
95 #define SAVARR(ARR,N) fSAVARR(ARR,N)
96 extern void fSAVWRD(long,long*);
97 #define SAVWRD(OP,WORD) fSAVWRD(OP,&WORD)
99 extern long VOCAB(long,long);
100 extern void DSTROY(long);
101 extern void JUGGLE(long);
102 extern void MOVE(long,long);
103 extern long PUT(long,long,long);
104 extern void CARRY(long,long);
105 extern void DROP(long,long);
106 extern long ATDWRF(long);
107 extern long SETBIT(long);
108 extern bool TSTBIT(long,int);
109 extern long RNDVOC(long,long);
110 extern void BUG(long);
111 extern void MAPLIN(FILE *);
112 extern void TYPE(void);
113 extern void MPINIT(void);
115 extern void fSAVEIO(long,long,long*);
116 #define SAVEIO(OP,IN,ARR) fSAVEIO(OP,IN,ARR)
117 extern void DATIME(long*, long*);
119 extern long MOD(long,long);
121 extern void set_seed(long);
122 extern unsigned long get_next_lcg_value(void);
123 extern long randrange(long);
125 extern void score(long);
126 extern long AMBER, ATTACK, AXE, BACK, BATTER, BEAR,
127 BIRD, BLOOD, BOTTLE, CAGE, CAVE, CAVITY, CHAIN, CHASM, CHEST,
128 CLAM, COINS, DALTLC, DOOR, DPRSSN, DRAGON, DWARF, EGGS,
129 EMRALD, ENTER, ENTRNC, FIND, FISSUR, FOOD,
130 GRATE, HINT, HINTED[], HINTLC[],
131 I, INVENT, IGO, J, JADE, K, K2, KEYS, KK,
132 KNIFE, KQ, L, LAMP, LL, LOC, LOCK, LOOK,
133 MAGZIN, MAXDIE, MAXTRS, MESSAG, MIRROR, MXSCOR, NUGGET, NUL, OBJ,
134 OGRE, OIL, OLDOBJ, OYSTER,
135 PANIC, PEARL, PILLOW, PLANT, PLANT2, PROP[], PYRAM,
136 RESER, ROD, ROD2, RUBY, RUG, SAPPH, SAY,
137 SCORE, SECT, SIGN, SNAKE, SPK, STEPS, STICK,
138 STREAM, THROW, TK[], TRIDNT, TROLL, TROLL2,
139 URN, V1, V2, VASE, VEND, VERB,
140 VOLCAN, VRSION, WATER, WD1, WD1X, WD2, WD2X;