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