1 /* vars.h -- variables for dungeon */
2 
3 /* These variable definitions are really ugly because they are actually
4  * translations of FORTRAN common blocks.  In the original FORTRAN source
5  * the common blocks were included many times by each function that
6  * needed them; I have changed this to define them all in this one file,
7  * and include this in every source file.  It's less modular, and it
8  * makes everything slower to compile, but it's easier on me.
9  * A few structures used only by the parsing routines are in parse.h.
10  */
11 
12 #ifndef VARS_H
13 #define VARS_H
14 
15 #ifndef EXTERN
16 #define EXTERN extern
17 #endif
18 
19 EXTERN struct {
20     integer prsa, prsi, prso;
21     logical prswon;
22     integer prscon;
23 } prsvec_;
24 
25 #define prsvec_1 prsvec_
26 
27 EXTERN struct {
28     integer oflag, oact, oslot, oprep, oname;
29 } orphs_;
30 
31 #define orphs_1 orphs_
32 #define orp ((integer *)&orphs_1)
33 
34 EXTERN struct {
35     integer lastit;
36 } last_;
37 
38 #define last_1 last_
39 
40 EXTERN struct {
41     integer winner, here;
42     logical telflg;
43 } play_;
44 
45 #define play_1 play_
46 
47 EXTERN struct {
48     integer rlnt, rdesc1[200], rdesc2[200], rexit[200], ractio[200],
49 	    rval[200], rflag[200];
50 } rooms_;
51 
52 #define rooms_1 rooms_
53 #define eqr ((integer *)&rooms_1 + 1)
54 #define rrand ((integer *)&rooms_1 + 601)
55 
56 /* Room flags */
57 
58 #define RSEEN (32768)
59 #define RLIGHT (16384)
60 #define RLAND (8192)
61 #define RWATER (4096)
62 #define RAIR (2048)
63 #define RSACRD (1024)
64 #define RFILL (512)
65 #define RMUNG (256)
66 #define RBUCK (128)
67 #define RHOUSE (64)
68 #define RNWALL (32)
69 #define REND (16)
70 
71 EXTERN const struct {
72     integer whous, lroom, cella, mtrol, maze1, mgrat, maz15, fore1, fore3,
73 	    clear, reser, strea, egypt, echor, tshaf, bshaf, mmach, dome,
74 	    mtorc, carou, riddl, lld2, temp1, temp2, maint, blroo, treas,
75 	    rivr1, rivr2, rivr3, mcycl, rivr4, rivr5, fchmp, falls, mbarr,
76 	    mrain, pog, vlbot, vair1, vair2, vair3, vair4, ledg2, ledg3,
77 	    ledg4, msafe, cager, caged, twell, bwell, alice, alism, alitr,
78 	    mtree, bkent, bkvw, bktwi, bkvau, bkbox, crypt, tstrs, mrant,
79 	    mreye, mra, mrb, mrc, mrg, mrd, fdoor, mrae, mrce, mrcw, mrge,
80 	    mrgw, mrdw, inmir, scorr, ncorr, parap, cell, pcell, ncell, cpant,
81 	    cpout, cpuzz;
82 } rindex_
83 #ifdef INIT
84 	= { 2, 8, 9, 10, 11, 25, 30, 31, 33, 36, 40, 42, 44, 49, 61, 76,
85 	    77, 79, 80, 83, 91, 94, 96, 97, 100, 102, 103, 107, 108, 109,
86 	    101, 112, 113, 114, 120, 119, 121, 122, 126, 127, 128, 129, 130,
87 	    131, 132, 133, 135, 140, 141, 142, 143, 144, 145, 146, 147, 148,
88 	    151, 153, 154, 155, 157, 158, 159, 160, 161, 162, 163, 164, 165,
89 	    166, 167, 171, 172, 173, 174, 176, 177, 179, 182, 183, 184, 185,
90 	    186, 188, 189, 190 }
91 #endif
92 	;
93 
94 #define rindex_1 rindex_
95 
96 EXTERN const struct {
97     integer xmin, xmax, xdown, xup, xnorth, xsouth, xenter, xexit, xeast,
98 	    xwest;
99 } xsrch_
100 #ifdef INIT
101 	= { 1024, 16384, 10240, 9216, 1024, 5120, 13312, 14336, 3072,
102 	    7168 }
103 #endif
104 	;
105 
106 #define xsrch_1 xsrch_
107 
108 EXTERN struct {
109     integer olnt, odesc1[220], odesc2[220], odesco[220], oactio[220], oflag1[
110 	    220], oflag2[220], ofval[220], otval[220], osize[220], ocapac[220]
111 	    , oroom[220], oadv[220], ocan[220], oread[220];
112 } objcts_;
113 
114 #define objcts_1 objcts_
115 #define eqo ((integer *)&objcts_1 + 1)
116 
117 EXTERN struct {
118     integer r2lnt, oroom2[20], rroom2[20];
119 } oroom2_;
120 
121 #define oroom2_1 oroom2_
122 
123 /* Object flags (oflags) */
124 
125 #define VISIBT (32768)
126 #define READBT (16384)
127 #define TAKEBT (8192)
128 #define DOORBT (4096)
129 #define TRANBT (2048)
130 #define FOODBT (1024)
131 #define NDSCBT (512)
132 #define DRNKBT (256)
133 #define CONTBT (128)
134 #define LITEBT (64)
135 #define VICTBT (32)
136 #define BURNBT (16)
137 #define FLAMBT (8)
138 #define TOOLBT (4)
139 #define TURNBT (2)
140 #define ONBT (1)
141 #define FINDBT (32768)
142 #define SLEPBT (16384)
143 #define SCRDBT (8192)
144 #define TIEBT (4096)
145 #define CLMBBT (2048)
146 #define ACTRBT (1024)
147 #define WEAPBT (512)
148 #define FITEBT (256)
149 #define VILLBT (128)
150 #define STAGBT (64)
151 #define TRYBT (32)
152 #define NOCHBT (16)
153 #define OPENBT (8)
154 #define TCHBT (4)
155 #define VEHBT (2)
156 #define SCHBT (1)
157 
158 EXTERN const struct {
159     integer garli, food, gunk, coal, machi, diamo, tcase, bottl, water, rope,
160 	    knife, sword, lamp, blamp, rug, leave, troll, axe, rknif, keys,
161 	    ice, bar, coffi, torch, tbask, fbask, irbox, ghost, trunk, bell,
162 	    book, candl, match, tube, putty, wrenc, screw, cyclo, chali,
163 	    thief, still, windo, grate, door, hpole, leak, rbutt, raili, pot,
164 	    statu, iboat, dboat, pump, rboat, stick, buoy, shove, ballo,
165 	    recep, guano, brope, hook1, hook2, safe, sslot, brick, fuse,
166 	    gnome, blabe, dball, tomb, lcase, cage, rcage, spher, sqbut,
167 	    flask, pool, saffr, bucke, ecake, orice, rdice, blice, robot,
168 	    ftree, bills, portr, scol, zgnom, egg, begg, baubl, canar, bcana,
169 	    ylwal, rdwal, pindr, rbeam, odoor, qdoor, cdoor, num1, num8,
170 	    warni, cslit, gcard, stldr, hands, wall, lungs, sailo, aviat,
171 	    teeth, itobj, every, valua, oplay, wnort, gwate, master;
172 } oindex_
173 #ifdef INIT
174 	= { 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
175 	    20, 21, 23, 30, 26, 33, 34, 35, 36, 39, 42, 45, 46, 47, 48, 51,
176 	    54, 55, 56, 57, 58, 59, 61, 62, 63, 65, 66, 71, 78, 79, 75, 85,
177 	    86, 87, 88, 89, 90, 92, 94, 96, 98, 99, 97, 101, 102, 103, 105,
178 	    107, 109, 110, 111, 112, 113, 119, 123, 124, 125, 126, 127, 132,
179 	    133, 134, 137, 138, 139, 140, 141, 142, 145, 148, 149, 151, 152,
180 	    154, 155, 156, 157, 158, 159, 161, 164, 171, 172, 173, 175, 178,
181 	    185, 186, 187, 188, 189, 200, 198, 201, 196, 202, 197, 192, 194,
182 	    195, 193, 205, 209, 215 }
183 #endif
184 	;
185 
186 #define oindex_1 oindex_
187 
188 EXTERN struct {
189     integer clnt, ctick[25], cactio[25];
190     logical cflag[25];
191 } cevent_;
192 
193 #define cevent_1 cevent_
194 #define eqc ((integer *)&cevent_1 + 1)
195 
196 EXTERN const struct {
197     integer cevcur, cevmnt, cevlnt, cevmat, cevcnd, cevbal, cevbrn, cevfus,
198 	    cevled, cevsaf, cevvlg, cevgno, cevbuc, cevsph, cevegh, cevfor,
199 	    cevscl, cevzgi, cevzgo, cevste, cevmrs, cevpin, cevinq, cevfol;
200 } cindex_
201 #ifdef INIT
202 	= { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
203 	    18, 19, 20, 21, 22, 23, 24 }
204 #endif
205 	;
206 
207 #define cindex_1 cindex_
208 
209 EXTERN struct {
210     integer alnt, aroom[4], ascore[4], avehic[4], aobj[4], aactio[4], astren[
211 	    4], aflag[4];
212 } advs_;
213 
214 #define advs_1 advs_
215 #define eqa ((integer *)&advs_1 + 1)
216 
217 EXTERN const struct {
218     integer astag;
219 } aflags_
220 #ifdef INIT
221 	= { 32768 }
222 #endif
223 	;
224 
225 #define aflags_1 aflags_
226 
227 EXTERN const struct {
228     integer player, arobot, amastr;
229 } aindex_
230 #ifdef INIT
231 	= { 1, 2, 3 }
232 #endif
233 	;
234 
235 #define aindex_1 aindex_
236 
237 EXTERN const struct {
238     integer cintw, deadxw, frstqw, inxw, outxw, walkiw, fightw, foow, meltw,
239 	    readw, inflaw, deflaw, alarmw, exorcw, plugw, kickw, wavew,
240 	    raisew, lowerw, rubw, pushw, untiew, tiew, tieupw, turnw, breatw,
241 	    knockw, lookw, examiw, shakew, movew, trnonw, trnofw, openw,
242 	    closew, findw, waitw, spinw, boardw, unboaw, takew, invenw, fillw,
243 	     eatw, drinkw, burnw, mungw, killw, attacw, swingw, walkw, tellw,
244 	    putw, dropw, givew, pourw, throww, digw, leapw, stayw, follow,
245 	    hellow, lookiw, lookuw, pumpw, windw, clmbw, clmbuw, clmbdw,
246 	    trntow;
247 } vindex_
248 #ifdef INIT
249 	= { 1, 2, 3, 4, 5, 6, 7, 8, 101, 100, 102, 103, 104, 105, 106,
250 	    107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
251 	    120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
252 	    133, 134, 135, 136, 137, 138, 139, 141, 140, 142, 143, 144, 145,
253 	    146, 147, 148, 89, 91, 73, 85, 151, 152, 153, 154, 155, 156, 157,
254 	    158, 159 }
255 #endif
256 	;
257 
258 #define vindex_1 vindex_
259 
260 EXTERN struct {
261     logical trollf, cagesf, bucktf, caroff, carozf, lwtidf, domef, glacrf,
262 	    echof, riddlf, lldf, cyclof, magicf, litldf, safef, gnomef,
263 	    gnodrf, mirrmf, egyptf, onpolf, blabf, brieff, superf, buoyf,
264 	    grunlf, gatef, rainbf, cagetf, empthf, deflaf, glacmf, frobzf,
265 	    endgmf, badlkf, thfenf, singsf, mrpshf, mropnf, wdopnf, mr1f,
266 	    mr2f, inqstf, follwf, spellf, cpoutf, cpushf;
267     integer btief, binff, rvmnt, rvclr, rvcyc, rvsnd, rvgua, orrug, orcand,
268 	    ormtch, orlamp, mdir, mloc, poleuf, quesno, nqatt, corrct, lcell,
269 	    pnumb, acell, dcell, cphere;
270 } findex_;
271 
272 #define findex_1 findex_
273 #define flags ((logical *)&findex_1)
274 #define switch_ ((integer *)&findex_1 + 46)
275 
276 EXTERN struct {
277     integer dbgflg, prsflg, gdtflg;
278 } debug_;
279 
280 #define debug_1 debug_
281 
282 EXTERN struct {
283     integer thfpos;
284     logical thfflg, thfact, swdact;
285     integer swdsta;
286 } hack_;
287 
288 #define hack_1 hack_
289 
290 EXTERN struct {
291     integer vlnt, villns[4], vprob[4], vopps[4], vbest[4], vmelee[4];
292 } vill_;
293 
294 #define vill_1 vill_
295 #define eqv ((integer *)&vill_1 + 1)
296 
297 EXTERN struct {
298     integer moves, deaths, rwscor, mxscor, mxload, ltshft, bloc, mungrm, hs,
299 	    egscor, egmxsc;
300 } state_;
301 
302 #define state_1 state_
303 
304 EXTERN struct {
305     integer xtype, xroom1, xstrng, xactio, xobj;
306 } curxt_;
307 
308 #define curxt_1 curxt_
309 #define xflag ((integer *)&curxt_1 + 4)
310 
311 EXTERN const struct {
312     integer xrmask, xdmask, xfmask, xfshft, xashft, xelnt[4], xnorm, xno,
313 	    xcond, xdoor, xlflag;
314 } xpars_
315 #ifdef INIT
316 	= { 255, 31744, 3, 256, 256, { 1, 2, 3, 3 }, 1, 2, 3, 4, 32768 }
317 #endif
318 	;
319 
320 #define xpars_1 xpars_
321 
322 EXTERN struct {
323     integer mbase, strbit;
324 } star_;
325 
326 #define star_1 star_
327 
328 EXTERN struct {
329     integer inlnt;
330     char inbuf[78];
331 } input_;
332 
333 #define input_1 input_
334 
335 EXTERN struct {
336     integer fromdr, scolrm, scolac;
337     const integer scoldr[8], scolwl[12];
338 } screen_
339 #ifdef INIT
340 	= { 0, 0, 0, { 1024, 153, 5120, 154, 3072, 152, 7168, 151 },
341 	    { 151, 207, 3072, 152, 208, 7168, 153, 206, 5120, 154, 205,
342 	      1024 } }
343 #endif
344 	;
345 
346 #define screen_1 screen_
347 
348 EXTERN struct {
349     integer mlnt, mrloc, rtext[1050];
350 } rmsg_;
351 
352 #define rmsg_1 rmsg_
353 
354 EXTERN const struct {
355     integer vmaj, vmin, vedit;
356 } vers_
357 #ifdef INIT
358 	= { 2, 7, 'A' }
359 #endif
360 	;
361 
362 #define vers_1 vers_
363 
364 EXTERN struct {
365     integer pltime, shour, smin, ssec;
366 } time_;
367 
368 #define time_1 time_
369 
370 EXTERN const struct {
371     integer hfactr;
372 } hyper_
373 #ifdef INIT
374 	= { 500 }
375 #endif
376 	;
377 
378 #define hyper_1 hyper_
379 
380 EXTERN struct {
381     integer xlnt, travel[900];
382 } exits_;
383 
384 #define exits_1 exits_
385 
386 EXTERN struct {
387     const integer cpdr[16], cpwl[8];
388     integer cpvec[64];
389 } puzzle_
390 #ifdef INIT
391 	= { { 1024, -8, 2048, -7, 3072, 1, 4096, 9, 5120, 8, 6144, 7,
392 	      7168, -1, 8192, -9 },
393 	    { 205, -8, 206, 8, 207, 1, 208, -1 },
394             { 1,  1,  1,  1,  1,  1, 1, 1,
395               1,  0, -1,  0,  0, -1, 0, 1,
396               1, -1,  0,  1,  0, -2, 0, 1,
397 	      1,  0,  0,  0,  0,  1, 0, 1,
398 	      1, -3,  0,  0, -1, -1, 0, 1,
399 	      1,  0,  0, -1,  0,  0, 0, 1,
400 	      1,  1,  1,  0,  0,  0, 1, 1,
401 	      1,  1,  1,  1,  1,  1, 1, 1 } }
402 #endif
403 	;
404 
405 #define puzzle_1 puzzle_
406 
407 EXTERN const struct {
408     const integer batdrp[9];
409 } bats_
410 #ifdef INIT
411 	= { 66, 67, 68, 69, 70, 71, 72, 65, 73 }
412 #endif
413 	;
414 
415 #define bats_1 bats_
416 
417 #endif
418