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