1
2
3
4
5 JIGSUP(DESC)
6 IMPLICIT INTEGER (A-Z)
7 %include dparam
8 LOGICAL MOVETO,QHERE,F
9 INTEGER RLIST(8)
10
11
12
13 DATA RLIST/KITCH,CLEAR,FORE3,FORE2,SHOUS,FORE2,KITCH,EHOUS/
14
15 CALL RSPEAK(DESC)
16 PRSCON=0
17 IF(DBGFLG.NE.0) RETURN
18 AVEHIC(WINNER)=0
19 IF(WINNER.EQ.PLAYER) GO TO 10
20 CALL RSPSUB(432,ODESC2(AOBJ(WINNER)))
21 CALL NEWSTA(AOBJ(WINNER),0,0,0,0)
22 AROOM(WINNER)=0
23 RETURN
24
25 10 CALL SCRUPD(-10)
26 IF(ENDGMF) GO TO 900
27 IF(DEATHS.GE.2) GO TO 1000
28 DEATHS=DEATHS+1
29 DEADF=.TRUE.
30 I=8
31 IF(LLDF) I=1074
32 CALL RSPEAK(I)
33 AACTIO(PLAYER)=PLAYER
34
35 DO 50 J=1,OLNT
36
37 IF(QHERE(J,HERE)) OFLAG2(J)=AND(OFLAG2(J), COMPL(FITEBT))
38 50 CONTINUE
39
40 F=MOVETO(LLD1,WINNER)
41 EGYPTF=.TRUE.
42 IF(OADV(COFFI).EQ.WINNER) CALL NEWSTA(COFFI,0,EGYPT,0,0)
43
44 OFLAG2(DOOR)=AND(OFLAG2(DOOR), COMPL(TCHBT))
45
46 OFLAG1(ROBOT)=AND(OR(OFLAG1(ROBOT),VISIBT), COMPL(NDSCBT))
47 CALL NEWSTA(LAMP,0,LROOM,0,0)
48
49 OFLAG1(LAMP)=OR(OFLAG1(LAMP),VISIBT)
50 DO 100 I=1,CLNT
51 IF(CCNCEL(I)) CFLAG(I)=.FALSE.
52 100 CONTINUE
53
54
55
56
57
58
59
60
61
62
63 I=0
64 DO 200 J=1,OLNT
65 IF((OADV(J).NE.WINNER).OR.(OTVAL(J).NE.0))
66 & GO TO 200
67 I=I+1
68 IF(I.GT.8) GO TO 400
69 CALL NEWSTA(J,0,RLIST(I),0,0)
70 200 CONTINUE
71
72 400 I=MTROL
73 NONOFL=RAIR+RWATER+REND
74 DO 300 J=1,OLNT
75 IF((OADV(J).NE.WINNER).OR.(OTVAL(J).EQ.0))
76 & GO TO 300
77 250 I=I+1
78
79 IF((AND(RFLAG(I),NONOFL)).NE.0) GO TO 250
80 CALL NEWSTA(J,0,I,0,0)
81 300 CONTINUE
82
83 DO 500 J=1,OLNT
84 IF(OADV(J).NE.WINNER) GO TO 500
85 450 I=I+1
86
87 IF((AND(RFLAG(I),NONOFL)).NE.0) GO TO 450
88 CALL NEWSTA(J,0,I,0,0)
89 500 CONTINUE
90 RETURN
91
92
93
94 900 CALL RSPEAK(625)
95 GO TO 1100
96
97 1000 CALL RSPEAK(7)
98 1100 CALL SCORE(.FALSE.)
99 CALL EXIT
100
101
102
103
104
105
106
107 INTEGER OACTOR(OBJ)
108 IMPLICIT INTEGER (A-Z)
109 %include dparam
110
111 DO 100 OACTOR=1,ALNT
112 IF(AOBJ(OACTOR).EQ.OBJ) RETURN
113 100 CONTINUE
114 CALL BUG(40,OBJ)
115 RETURN
116
117
118
119
120
121
122
123 LOGICAL PROB(G,B)
124 IMPLICIT INTEGER (A-Z)
125 %include dparam
126
127 I=G
128 IF(BADLKF) I=B
129 PROB=RND(100).LT.I
130 RETURN
131
132
133
134
135
136
137
138
139
140 LOGICAL RMDESC(FULL)
141
142
143
144
145
146 IMPLICIT INTEGER (A-Z)
147 LOGICAL PROB,LIT
148 %include dparam
149
150 RMDESC=.TRUE.
151 RA=RACTIO(HERE)
152 IF(PRSO.LT.XMIN) GO TO 50
153 FROMDR=PRSO
154 PRSO=0
155 50 IF(FULL.EQ.1) GO TO 600
156 IF(HERE.EQ.AROOM(PLAYER)) GO TO 100
157 CALL RSPEAK(2)
158 PRSA=WALKIW
159 RETURN
160
161 100 IF(LIT(HERE)) GO TO 300
162 CALL RSPEAK(430)
163 RMDESC=.FALSE.
164 RETURN
165
166 300 I=RDESC2-HERE
167
168
169
170 IF((FULL.EQ.0)
171 & .AND. (SUPERF.OR.(((AND(RFLAG(HERE),RSEEN)).NE.0)
172 & .AND. (BRIEFF.OR.PROB(80,80))))) GO TO 400
173 I=RDESC1(HERE)
174 IF((I.NE.0).OR.(RA.EQ.0)) GO TO 400
175 PRSA=LOOKW
176 PRSO=0
177 CALL RAPPLI(RA)
178 PRSA=FOOW
179 GO TO 500
180
181 400 CALL RSPEAK(I)
182 500 IF(AVEHIC(WINNER).NE.0) CALL RSPSUB(431,ODESC2(AVEHIC(WINNER)))
183
184 RFLAG(HERE)=OR(RFLAG(HERE),RSEEN)
185
186 600 IF(LIT(HERE)) GO TO 700
187 CALL RSPEAK(1036)
188 RETURN
189
190 700 IF(FULL.NE.2) CALL PRINCR(FULL,HERE)
191 IF((FULL.NE.0).OR.(RA.EQ.0)) RETURN
192 PRSA=WALKIW
193 CALL RAPPLI(RA)
194 PRSA=FOOW
195 RETURN
196
197
198
199
200
201
202
203 PRINCR(FULL,RM)
204 IMPLICIT INTEGER (A-Z)
205 %include dparam
206 LOGICAL QEMPTY,QHERE
207
208 J=329
209 DO 500 I=1,OLNT
210
211
212
213 IF(.NOT.QHERE(I,RM).OR.((AND(OFLAG1(I),VISIBT)).EQ.0).OR.
214 & (((AND(OFLAG1(I),NDSCBT)).NE.0).AND.(FULL.NE.1)).OR.
215 & (I.EQ.AVEHIC(WINNER))) GO TO 500
216
217
218 IF((FULL.EQ.0).AND.(SUPERF.OR.(BRIEFF.AND.
219 & ((AND(RFLAG(HERE),RSEEN)).NE.0)))) GO TO 200
220
221
222
223 K=ODESCO(I)
224
225 IF((K.EQ.0).OR.((AND(OFLAG2(I),TCHBT)).NE.0)) K=ODESC1(I)
226 IF((K.EQ.0).AND.(FULL.EQ.1)) CALL RSPSUB(936,ODESC2(I))
227 CALL RSPEAK(K)
228 GO TO 500
229
230
231
232 200 CALL RSPSUB(J,ODESC2(I))
233 J=502
234
235 500 CONTINUE
236
237
238
239 DO 1000 I=1,OLNT
240
241
242
243 IF(.NOT.QHERE(I,RM).OR.((AND(OFLAG1(I),VISIBT)).EQ.0).OR.
244 & (((AND(OFLAG1(I),NDSCBT)).NE.0).AND.(FULL.NE.1)))
245 & GO TO 1000
246
247 IF((AND(OFLAG2(I),ACTRBT)).NE.0) CALL INVENT(OACTOR(I))
248
249
250 IF((((AND(OFLAG1(I),TRANBT)).EQ.0).AND.((AND(OFLAG2(I),OPENBT))
251 & .EQ.0)).OR.QEMPTY(I)) GO TO 1000
252
253
254
255 IF(I.NE.TCASE) GO TO 600
256 IF((.NOT.(BRIEFF.OR.SUPERF)).OR.(FULL.EQ.1))
257 & CALL PRINCO(I,1053,.FALSE.)
258 GO TO 1000
259 600 CALL PRINCO(I,573,.TRUE.)
260 1000 CONTINUE
261 RETURN
262
263
264
265
266
267
268
269 INVENT(ADV)
270 IMPLICIT INTEGER (A-Z)
271 %include dparam
272 LOGICAL QEMPTY
273
274 I=575
275 IF(ADV.NE.PLAYER) I=576
276 DO 10 J=1,OLNT
277
278
279 IF((OADV(J).NE.ADV).OR.((AND(OFLAG1(J),VISIBT)).EQ.0))
280 & GO TO 10
281 CALL RSPSUB(I,ODESC2(AOBJ(ADV)))
282 I=0
283 CALL RSPSUB(502,ODESC2(J))
284 10 CONTINUE
285
286 IF(I.EQ.0) GO TO 25
287 IF(ADV.EQ.PLAYER) CALL RSPEAK(578)
288 RETURN
289
290 25 DO 100 J=1,OLNT
291
292
293
294 IF((OADV(J).NE.ADV).OR.((AND(OFLAG1(J),VISIBT)).EQ.0).OR.
295 & (((AND(OFLAG1(J),TRANBT)).EQ.0).AND.
296 & ((AND(OFLAG2(J),OPENBT)).EQ.0))) GO TO 100
297 IF(.NOT.QEMPTY(J)) CALL PRINCO(J,573,.TRUE.)
298 100 CONTINUE
299 RETURN
300
301