xref: /original-bsd/contrib/dungeon/dmain.F (revision 4926c96d)
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