1*4926c96dSbosticC DUNGEON-- MAIN PROGRAM 2*4926c96dSbosticC 3*4926c96dSbosticC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142 4*4926c96dSbosticC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED 5*4926c96dSbosticC WRITTEN BY R. M. SUPNIK 6*4926c96dSbosticC 7*4926c96dSbostic PROGRAM DUNGEO 8*4926c96dSbosticC 9*4926c96dSbosticC DECLARATIONS 10*4926c96dSbosticC 11*4926c96dSbostic IMPLICIT INTEGER (A-Z) 12*4926c96dSbostic LOGICAL INIT 13*4926c96dSbostic#include "parser.h" 14*4926c96dSbostic#include "gamestate.h" 15*4926c96dSbostic#include "state.h" 16*4926c96dSbostic#include "screen.h" 17*4926c96dSbostic#include "puzzle.h" 18*4926c96dSbosticC 19*4926c96dSbosticC MISCELLANEOUS VARIABLES 20*4926c96dSbosticC 21*4926c96dSbostic CHARACTER VEDIT 22*4926c96dSbostic COMMON /STAR/ MBASE,STRBIT 23*4926c96dSbostic COMMON /VERS/ VMAJ,VMIN,VEDIT 24*4926c96dSbostic COMMON /BATS/ BATDRP(9) 25*4926c96dSbostic#include "io.h" 26*4926c96dSbostic#include "debug.h" 27*4926c96dSbostic COMMON /HYPER/ HFACTR 28*4926c96dSbostic#include "rooms.h" 29*4926c96dSbostic#include "rflag.h" 30*4926c96dSbostic#include "rindex.h" 31*4926c96dSbostic#include "exits.h" 32*4926c96dSbostic#include "curxt.h" 33*4926c96dSbostic#include "xpars.h" 34*4926c96dSbostic#include "xsrch.h" 35*4926c96dSbostic#include "objects.h" 36*4926c96dSbostic#include "oflags.h" 37*4926c96dSbostic#include "oindex.h" 38*4926c96dSbostic#include "clock.h" 39*4926c96dSbostic 40*4926c96dSbostic#include "villians.h" 41*4926c96dSbostic#include "advers.h" 42*4926c96dSbostic#include "verbs.h" 43*4926c96dSbostic#include "flags.h" 44*4926c96dSbosticC DUNGEON, PAGE 2 45*4926c96dSbosticC 46*4926c96dSbosticC DATA STATEMENTS FOR CONSTANT ARRAYS 47*4926c96dSbosticC 48*4926c96dSbostic DATA VMAJ/2/,VMIN/6/,VEDIT/'C'/ 49*4926c96dSbosticC 50*4926c96dSbostic DATA SDIR/o'40000'/,SIND/o'20000'/,SSTD/o'10000'/, 51*4926c96dSbostic& SFLIP/o'4000'/,SDRIV/o'2000'/,SVMASK/o'777'/ 52*4926c96dSbostic DATA VABIT/o'40000'/,VRBIT/o'20000'/,VTBIT/o'10000'/, 53*4926c96dSbostic& VCBIT/o'4000'/,VEBIT/o'2000'/,VFBIT/o'1000'/, 54*4926c96dSbostic& VPMASK/o'777'/ 55*4926c96dSbosticC 56*4926c96dSbostic DATA BATDRP/66,67,68,69,70,71,72,65,73/ 57*4926c96dSbosticC 58*4926c96dSbostic DATA SCOLDR/o'2000',153,o'12000',154,o'6000',152,o'16000',151/ 59*4926c96dSbostic DATA SCOLWL/151,207,o'6000',152,208,o'16000', 60*4926c96dSbostic& 153,206,o'12000',154,205,o'2000'/ 61*4926c96dSbosticC 62*4926c96dSbostic DATA HFACTR/500/ 63*4926c96dSbosticC 64*4926c96dSbostic DATA CPDR/o'2000',-8,o'4000',-7,o'6000',1,o'10000',9, 65*4926c96dSbostic& o'12000',8,o'14000',7,o'16000',-1,o'20000',-9/ 66*4926c96dSbostic DATA CPWL/205,-8,206,8,207,1,208,-1/ 67*4926c96dSbostic DATA CPVEC/1,1,1,1,1,1,1,1, 68*4926c96dSbostic& 1,0,-1,0,0,-1,0,1, 69*4926c96dSbostic& 1,-1,0,1,0,-2,0,1, 70*4926c96dSbostic& 1,0,0,0,0,1,0,1, 71*4926c96dSbostic& 1,-3,0,0,-1,-1,0,1, 72*4926c96dSbostic& 1,0,0,-1,0,0,0,1, 73*4926c96dSbostic& 1,1,1,0,0,0,1,1, 74*4926c96dSbostic& 1,1,1,1,1,1,1,1/ 75*4926c96dSbosticC 76*4926c96dSbostic DATA CEVCUR/1/,CEVMNT/2/,CEVLNT/3/,CEVMAT/4/, 77*4926c96dSbostic& CEVCND/5/,CEVBAL/6/,CEVBRN/7/,CEVFUS/8/, 78*4926c96dSbostic& CEVLED/9/,CEVSAF/10/,CEVVLG/11/,CEVGNO/12/, 79*4926c96dSbostic& CEVBUC/13/,CEVSPH/14/,CEVEGH/15/, 80*4926c96dSbostic& CEVFOR/16/,CEVSCL/17/,CEVZGI/18/,CEVZGO/19/, 81*4926c96dSbostic& CEVSTE/20/,CEVMRS/21/,CEVPIN/22/,CEVINQ/23/, 82*4926c96dSbostic& CEVFOL/24/ 83*4926c96dSbosticC 84*4926c96dSbostic DATA XRMASK/o'377'/,XDMASK/o'76000'/,XFMASK/3/ 85*4926c96dSbostic DATA XFSHFT/256/,XASHFT/256/ 86*4926c96dSbostic DATA XNORM/1/,XNO/2/,XCOND/3/,XDOOR/4/ 87*4926c96dSbostic DATA XELNT/1,2,3,3/,XLFLAG/o'100000'/ 88*4926c96dSbostic DATA XMIN/o'2000'/,XMAX/o'40000'/,XUP/o'22000'/,XDOWN/o'24000'/ 89*4926c96dSbostic DATA XNORTH/o'2000'/,XSOUTH/o'12000'/,XENTER/o'32000'/, 90*4926c96dSbostic& XEXIT/o'34000'/ 91*4926c96dSbostic DATA XEAST/o'6000'/,XWEST/o'16000'/ 92*4926c96dSbosticC 93*4926c96dSbostic DATA PLAYER/1/,AROBOT/2/,AMASTR/3/ 94*4926c96dSbostic DATA ASTAG/o'100000'/ 95*4926c96dSbosticC 96*4926c96dSbostic DATA RSEEN/o'100000'/,RLIGHT/o'40000'/,RLAND/o'20000'/ 97*4926c96dSbostic DATA RWATER/o'10000'/,RAIR/o'4000'/,RSACRD/o'2000'/, 98*4926c96dSbostic& RFILL/o'1000'/ 99*4926c96dSbostic DATA RMUNG/o'400'/,RBUCK/o'200'/,RHOUSE/o'100'/, 100*4926c96dSbostic& RNWALL/o'40'/,REND/o'20'/ 101*4926c96dSbosticC 102*4926c96dSbostic DATA WHOUS/2/,LROOM/8/,CELLA/9/ 103*4926c96dSbostic DATA MTROL/10/,MAZE1/11/ 104*4926c96dSbostic DATA MGRAT/25/,MAZ15/30/ 105*4926c96dSbostic DATA FORE1/31/,FORE3/33/,CLEAR/36/,RESER/40/ 106*4926c96dSbostic DATA STREA/42/,EGYPT/44/,ECHOR/49/ 107*4926c96dSbostic DATA TSHAF/61/ 108*4926c96dSbostic DATA BSHAF/76/,MMACH/77/,DOME/79/,MTORC/80/ 109*4926c96dSbostic DATA CAROU/83/ 110*4926c96dSbostic DATA RIDDL/91/,LLD2/94/,TEMP1/96/,TEMP2/97/,MAINT/100/ 111*4926c96dSbostic DATA MCYCL/101/,BLROO/102/,TREAS/103/,RIVR1/107/,RIVR2/108/ 112*4926c96dSbostic DATA RIVR3/109/ 113*4926c96dSbostic DATA RIVR4/112/,RIVR5/113/,FCHMP/114/,MBARR/119/,FALLS/120/ 114*4926c96dSbostic DATA MRAIN/121/,POG/122/,VLBOT/126/,VAIR1/127/,VAIR2/128/ 115*4926c96dSbostic DATA VAIR3/129/,VAIR4/130/ 116*4926c96dSbostic DATA LEDG2/131/,LEDG3/132/,LEDG4/133/,MSAFE/135/,CAGER/140/ 117*4926c96dSbostic DATA CAGED/141/,TWELL/142/,BWELL/143/,ALICE/144/,ALISM/145/ 118*4926c96dSbostic DATA ALITR/146/,MTREE/147/,BKENT/148/ 119*4926c96dSbostic DATA BKVW/151/,BKTWI/153/,BKVAU/154/,BKBOX/155/ 120*4926c96dSbostic DATA CRYPT/157/,TSTRS/158/,MRANT/159/ 121*4926c96dSbostic DATA MREYE/160/,MRA/161/,MRB/162/,MRC/163/,MRG/164/ 122*4926c96dSbostic DATA MRD/165/,FDOOR/166/,MRAE/167/ 123*4926c96dSbostic DATA MRCE/171/,MRCW/172/,MRGE/173/,MRGW/174/,MRDW/176/ 124*4926c96dSbostic DATA INMIR/177/,SCORR/179/ 125*4926c96dSbostic DATA NCORR/182/,PARAP/183/,CELL/184/,PCELL/185/,NCELL/186/ 126*4926c96dSbostic DATA CPANT/188/,CPOUT/189/ 127*4926c96dSbostic DATA CPUZZ/190/ 128*4926c96dSbosticC 129*4926c96dSbostic DATA CINTW/1/,DEADXW/2/,FRSTQW/3/,INXW/4/ 130*4926c96dSbostic DATA OUTXW/5/,WALKIW/6/,FIGHTW/7/,FOOW/8/ 131*4926c96dSbosticC 132*4926c96dSbostic DATA READW/100/,MELTW/101/ 133*4926c96dSbostic DATA INFLAW/102/,DEFLAW/103/,ALARMW/104/,EXORCW/105/ 134*4926c96dSbostic DATA PLUGW/106/,KICKW/107/,WAVEW/108/,RAISEW/109/,LOWERW/110/ 135*4926c96dSbostic DATA RUBW/111/,PUSHW/112/,UNTIEW/113/,TIEW/114/,TIEUPW/115/ 136*4926c96dSbostic DATA TURNW/116/,BREATW/117/,KNOCKW/118/,LOOKW/119/ 137*4926c96dSbostic DATA EXAMIW/120/,SHAKEW/121/,MOVEW/122/,TRNONW/123/,TRNOFW/124/ 138*4926c96dSbostic DATA OPENW/125/,CLOSEW/126/,FINDW/127/,WAITW/128/,SPINW/129/ 139*4926c96dSbostic DATA BOARDW/130/,UNBOAW/131/,TAKEW/132/,INVENW/133/ 140*4926c96dSbostic DATA FILLW/134/,EATW/135/,DRINKW/136/,BURNW/137/ 141*4926c96dSbostic DATA MUNGW/138/,KILLW/139/,ATTACW/141/ 142*4926c96dSbostic DATA SWINGW/140/,WALKW/142/,TELLW/143/,PUTW/144/ 143*4926c96dSbostic DATA DROPW/145/,GIVEW/146/,POURW/147/,THROWW/148/ 144*4926c96dSbosticC 145*4926c96dSbostic DATA DIGW/89/,LEAPW/91/,STAYW/73/,FOLLOW/85/ 146*4926c96dSbostic DATA HELLOW/151/,LOOKIW/152/,LOOKUW/153/,PUMPW/154/ 147*4926c96dSbostic DATA WINDW/155/,CLMBW/156/,CLMBUW/157/,CLMBDW/158/,TRNTOW/159/ 148*4926c96dSbosticC 149*4926c96dSbostic DATA VISIBT/o'100000'/,READBT/o'40000'/,TAKEBT/o'20000'/, 150*4926c96dSbostic& DOORBT/o'10000'/,TRANBT/o'4000'/,FOODBT/o'2000'/, 151*4926c96dSbostic& NDSCBT/o'1000'/,DRNKBT/o'400'/, CONTBT/o'200'/, 152*4926c96dSbostic& LITEBT/o'100'/,VICTBT/o'40'/,BURNBT/o'20'/, 153*4926c96dSbostic& FLAMBT/o'10'/,TOOLBT/o'4'/,TURNBT/o'2'/,ONBT/o'1'/ 154*4926c96dSbosticC 155*4926c96dSbostic DATA FINDBT/o'100000'/,SLEPBT/o'40000'/,SCRDBT/o'20000'/, 156*4926c96dSbostic& TIEBT/o'10000'/, CLMBBT/o'4000'/,ACTRBT/o'2000'/, 157*4926c96dSbostic& WEAPBT/o'1000'/,FITEBT/o'400'/, VILLBT/o'200'/, 158*4926c96dSbostic& STAGBT/o'100'/,TRYBT/o'40'/,NOCHBT/o'20'/, 159*4926c96dSbostic& OPENBT/o'10'/,TCHBT/o'4'/,VEHBT/o'2'/,SCHBT/o'1'/ 160*4926c96dSbosticC 161*4926c96dSbostic DATA GARLI/2/,FOOD/3/,GUNK/4/,COAL/5/,MACHI/7/,DIAMO/8/ 162*4926c96dSbostic DATA TCASE/9/,BOTTL/10/ 163*4926c96dSbostic DATA WATER/11/,ROPE/12/,KNIFE/13/,SWORD/14/,LAMP/15/,BLAMP/16/ 164*4926c96dSbostic DATA RUG/17/,LEAVE/18/,TROLL/19/,AXE/20/ 165*4926c96dSbostic DATA RKNIF/21/,KEYS/23/,BAR/26/,ICE/30/ 166*4926c96dSbostic DATA COFFI/33/,TORCH/34/,TBASK/35/,FBASK/36/,IRBOX/39/ 167*4926c96dSbostic DATA GHOST/42/,TRUNK/45/,BELL/46/,BOOK/47/,CANDL/48/ 168*4926c96dSbostic DATA MATCH/51/,TUBE/54/,PUTTY/55/,WRENC/56/,SCREW/57/ 169*4926c96dSbostic DATA CYCLO/58/,CHALI/59/ 170*4926c96dSbostic DATA THIEF/61/,STILL/62/,WINDO/63/,GRATE/65/,DOOR/66/ 171*4926c96dSbostic DATA HPOLE/71/,RBUTT/79/,LEAK/78/,RAILI/75/ 172*4926c96dSbostic DATA POT/85/,STATU/86/,IBOAT/87/,DBOAT/88/,PUMP/89/,RBOAT/90/ 173*4926c96dSbostic DATA STICK/92/,BUOY/94/,SHOVE/96/,GUANO/97/,BALLO/98/,RECEP/99/ 174*4926c96dSbostic DATA BROPE/101/,HOOK1/102/,HOOK2/103/,SAFE/105/,SSLOT/107/ 175*4926c96dSbostic DATA BRICK/109/,FUSE/110/ 176*4926c96dSbostic DATA GNOME/111/,BLABE/112/,DBALL/113/,TOMB/119/ 177*4926c96dSbostic DATA LCASE/123/,CAGE/124/,RCAGE/125/,SPHER/126/,SQBUT/127/ 178*4926c96dSbostic DATA FLASK/132/,POOL/133/,SAFFR/134/,BUCKE/137/,ORICE/139/ 179*4926c96dSbostic DATA ECAKE/138/,RDICE/140/ 180*4926c96dSbostic DATA BLICE/141/,ROBOT/142/,FTREE/145/,BILLS/148/,PORTR/149/ 181*4926c96dSbostic DATA SCOL/151/,ZGNOM/152/,EGG/154/,BEGG/155/,BAUBL/156/ 182*4926c96dSbostic DATA CANAR/157/,BCANA/158/,YLWAL/159/ 183*4926c96dSbostic DATA RDWAL/161/,PINDR/164/ 184*4926c96dSbostic DATA RBEAM/171/,ODOOR/172/,QDOOR/173/,CDOOR/175/ 185*4926c96dSbostic DATA NUM1/178/ 186*4926c96dSbostic DATA NUM8/185/,WARNI/186/,CSLIT/187/,GCARD/188/,STLDR/189/ 187*4926c96dSbostic DATA ITOBJ/192/,OPLAY/193/,EVERY/194/ 188*4926c96dSbostic DATA VALUA/195/,SAILO/196/,TEETH/197/,WALL/198/ 189*4926c96dSbostic DATA HANDS/200/,LUNGS/201/,AVIAT/202/ 190*4926c96dSbostic DATA WNORT/205/,GWATE/209/,MASTER/215/ 191*4926c96dSbosticC DUNGEON, PAGE 3 192*4926c96dSbosticC 193*4926c96dSbosticC 1) INITIALIZE DATA STRUCTURES 194*4926c96dSbosticC 2) PLAY GAME 195*4926c96dSbosticC 196*4926c96dSbostic IF(INIT(X)) CALL GAME 197*4926c96dSbosticC !IF INIT, PLAY GAME. 198*4926c96dSbostic CALL EXIT 199*4926c96dSbosticC !DONE 200*4926c96dSbostic END 201