1
2
3
4
5 LOGICAL NOBJS(RI,ARG)
6 IMPLICIT INTEGER (A-Z)
7 %include dparam
8 LOGICAL QOPEN,MOVETO,F,RMDESC
9 LOGICAL QHERE,OPNCLS,MIRPAN
10 LOGICAL LIT,WASLIT,QEMPTY
11
12
13
14
15 QOPEN(R)=(AND(OFLAG2(R),OPENBT)).NE.0
16
17 ODO2=0
18 ODI2=0
19 IF((PRSO.NE.0).AND.(PRSO.LE.OMAX)) ODO2=ODESC2(PRSO)
20 IF(PRSI.NE.0) ODI2=ODESC2(PRSI)
21 AV=AVEHIC(WINNER)
22 NOBJS=.TRUE.
23 WASLIT=LIT(HERE)
24
25 GO TO (1000,2000,3000,4000,5000,6000,7000,8000,9000,
26 & 10000,11000,12000,13000,14000,15000,16000,17000,
27 & 18000,19000,20000,21000,22000,23000,24000,25000,
28 & 26000,27000,28000,29000,30000,31000,32000,33000,
29 & 34000,35000,36000,37000,38000,39000,40000,41000,
30 & 42000,43000,44000,45000,46000),
31 & (RI-31)
32 CALL BUG(6,RI)
33
34
35
36 10 NOBJS=.FALSE.
37 RETURN
38
39
40
41 50 IF(WASLIT.AND..NOT.LIT(HERE)) CALL RSPEAK(406)
42 RETURN
43
44
45
46
47
48 1000 IF(PRSA.NE.EATW) GO TO 1100
49 CALL RSPEAK(639)
50 RETURN
51
52 1100 IF(PRSA.EQ.BURNW) CALL RSPEAK(640)
53 GO TO 10
54
55
56
57 2000 TARGET=SCOL
58 2100 IF(PRSO.NE.TARGET) GO TO 2400
59 IF((PRSA.NE.PUSHW).AND.(PRSA.NE.MOVEW).AND.
60 & (PRSA.NE.TAKEW).AND.(PRSA.NE.RUBW)) GO TO 2200
61 CALL RSPEAK(673)
62 RETURN
63
64 2200 IF((PRSA.NE.KILLW).AND.(PRSA.NE.ATTACW).AND.
65 & (PRSA.NE.MUNGW)) GO TO 2400
66 CALL RSPSUB(674,ODI2)
67 RETURN
68
69 2400 IF((PRSA.NE.THROWW).OR.(PRSI.NE.TARGET)) GO TO 10
70 IF(HERE.EQ.BKBOX) GO TO 2600
71 CALL NEWSTA(PRSO,0,BKBOX,0,0)
72 CALL RSPSUB(675,ODO2)
73 CTICK(CEVSCL)=0
74 SCOLRM=0
75 GO TO 50
76
77 2600 IF(SCOLRM.EQ.0) GO TO 2900
78 CALL NEWSTA(PRSO,0,SCOLRM,0,0)
79 CALL RSPSUB(676,ODO2)
80 CTICK(CEVSCL)=0
81 SCOLRM=0
82 GO TO 50
83
84 2900 CALL RSPEAK(213)
85 RETURN
86
87
88
89
90
91 3000 IF((PRSA.NE.GIVEW).AND.(PRSA.NE.THROWW)) GO TO 3200
92 IF(OTVAL(PRSO).NE.0) GO TO 3100
93 IF((PRSO.NE.BRICK).OR.(OCAN(FUSE).NE.BRICK).OR.
94 & (CTICK(CEVFUS).EQ.0)) GO TO 3050
95 CALL NEWSTA(ZGNOM,931,0,0,0)
96 CALL NEWSTA(BRICK,0,HERE,0,0)
97 CFLAG(CEVZGO)=.FALSE.
98 CFLAG(CEVZGI)=.FALSE.
99 RETURN
100
101 3050 CALL NEWSTA(PRSO,641,0,0,0)
102 RETURN
103
104 3100 CALL NEWSTA(PRSO,0,0,0,0)
105 CALL RSPSUB(642,ODO2)
106 CALL NEWSTA(ZGNOM,0,0,0,0)
107 CFLAG(CEVZGO)=.FALSE.
108 F=MOVETO(BKENT,WINNER)
109 RETURN
110
111 3200 IF((PRSA.NE.ATTACW).AND.(PRSA.NE.KILLW).AND.
112 & (PRSA.NE.MUNGW)) GO TO 3300
113 CALL NEWSTA(ZGNOM,643,0,0,0)
114 CFLAG(CEVZGO)=.FALSE.
115 RETURN
116
117 3300 CALL RSPEAK(644)
118 RETURN
119
120
121
122 4000 IF((PRSA.NE.OPENW).OR.(PRSO.NE.EGG)) GO TO 4500
123 IF(.NOT.QOPEN(EGG)) GO TO 4100
124 CALL RSPEAK(649)
125 RETURN
126
127 4100 IF(PRSI.NE.0) GO TO 4200
128 CALL RSPEAK(650)
129 RETURN
130
131 4200 IF(PRSI.NE.HANDS) GO TO 4300
132 CALL RSPEAK(651)
133 RETURN
134
135 4300 I=652
136
137
138 IF(((AND(OFLAG1(PRSI),TOOLBT)).NE.0).OR.
139 & ((AND(OFLAG2(PRSI),WEAPBT)).NE.0)) GO TO 4600
140 I=653
141
142 IF((AND(OFLAG2(PRSO),FITEBT)).NE.0) I=654
143
144 OFLAG2(PRSO)=OR(OFLAG2(PRSO),FITEBT)
145 CALL RSPSUB(I,ODI2)
146 RETURN
147
148 4500 IF(PRSA.NE.MUNGW) GO TO 10
149 I=655
150 4600 CALL NEWSTA(BEGG,I,OROOM(EGG),OCAN(EGG),OADV(EGG))
151 CALL NEWSTA(EGG,0,0,0,0)
152 IF(LASTIT.EQ.EGG) LASTIT=BEGG
153 OTVAL(BEGG)=2
154 IF(OCAN(CANAR).NE.EGG) GO TO 4700
155 CALL RSPEAK(ODESCO(BCANA))
156 OTVAL(BCANA)=1
157 RETURN
158
159 4700 CALL NEWSTA(BCANA,0,0,0,0)
160 RETURN
161
162
163
164
165
166 5000 IF(PRSA.NE.WINDW) GO TO 10
167 IF(PRSO.EQ.CANAR) GO TO 5100
168 CALL RSPEAK(645)
169 RETURN
170
171 5100 IF(.NOT.SINGSF.AND.((HERE.EQ.MTREE).OR.
172 & ((HERE.GE.FORE1).AND.(HERE.LT.CLEAR))))
173 & GO TO 5200
174 CALL RSPEAK(646)
175 RETURN
176
177 5200 SINGSF=.TRUE.
178 CALL NEWSTA(BAUBL,647,HERE,0,0)
179 IF(HERE.EQ.MTREE) CALL NEWSTA(BAUBL,0,FORE3,0,0)
180 RETURN
181
182
183
184 6000 IF((PRSA.NE.CLMBW).AND.(PRSA.NE.CLMBUW).AND.
185 & (PRSA.NE.CLMBDW)) GO TO 10
186 CALL RSPEAK(648)
187 RETURN
188
189
190
191 7000 IF((IABS(HERE-MLOC).NE.1).OR.(MRHERE(HERE).NE.0).OR.
192 & .NOT.ENDGMF) GO TO 7100
193 IF(PRSA.NE.PUSHW) GO TO 10
194 CALL RSPEAK(860)
195 RETURN
196
197
198 7100 IF((AND(RFLAG(HERE),RNWALL)).EQ.0) GO TO 10
199 CALL RSPEAK(662)
200 RETURN
201
202
203
204
205
206 8000 IF(PRSA.NE.FINDW) GO TO 8100
207 CALL RSPEAK(666)
208 RETURN
209
210 8100 IF(PRSA.NE.EXAMIW) GO TO 10
211 CALL RSPEAK(667)
212 RETURN
213
214
215
216 9000 IF(HERE.NE.CPUZZ) GO TO 9500
217 IF(PRSA.NE.PUSHW) GO TO 10
218 DO 9100 I=1,8,2
219 IF(PRSO.EQ.CPWL(I)) GO TO 9200
220 9100 CONTINUE
221 CALL BUG(80,PRSO)
222
223 9200 J=CPWL(I+1)
224 NXT=CPHERE+J
225 WL=CPVEC(NXT)
226 GO TO (9300,9300,9300,9250,9350),(WL+4)
227
228 9250 CALL RSPEAK(876)
229 RETURN
230
231 9300 IF(CPVEC(NXT+J).EQ.0) GO TO 9400
232 9350 CALL RSPEAK(877)
233 RETURN
234
235 9400 I=878
236 IF(CPUSHF) I=879
237 CPUSHF=.TRUE.
238 CPVEC(NXT+J)=WL
239 CPVEC(NXT)=0
240 CALL CPGOTO(NXT)
241 CALL CPINFO(I,NXT)
242 CALL PRINCR(.TRUE.,HERE)
243 RETURN
244
245 9500 IF(HERE.NE.SCOLAC) GO TO 9700
246 DO 9600 I=1,12,3
247 TARGET=SCOLWL(I+1)
248 IF(SCOLWL(I).EQ.HERE) GO TO 2100
249 9600 CONTINUE
250
251 9700 IF(HERE.NE.BKBOX) GO TO 10
252 TARGET=WNORT
253 GO TO 2100
254
255
256
257
258
259 10000 IF(PRSA.NE.RAISEW) GO TO 10100
260 I=749
261 IF(POLEUF.EQ.2) I=750
262 CALL RSPEAK(I)
263 POLEUF=2
264 RETURN
265
266 10100 IF((PRSA.NE.LOWERW).AND.(PRSA.NE.PUSHW)) GO TO 10
267 IF(POLEUF.NE.0) GO TO 10200
268 CALL RSPEAK(751)
269 RETURN
270
271 10200 IF(MOD(MDIR,180).NE.0) GO TO 10300
272 POLEUF=0
273 CALL RSPEAK(752)
274 RETURN
275
276 10300 IF((MDIR.NE.270).OR.(MLOC.NE.MRB)) GO TO 10400
277 POLEUF=0
278 CALL RSPEAK(753)
279 RETURN
280
281 10400 CALL RSPEAK(753+POLEUF)
282 POLEUF=1
283 RETURN
284
285
286
287 11000 IF(PRSA.NE.PUSHW) GO TO 10
288 IF(MRPSHF) GO TO 11300
289 CALL RSPEAK(756)
290 DO 11100 I=1,OLNT
291 IF(QHERE(I,MREYE).AND.(I.NE.RBEAM)) GO TO 11200
292 11100 CONTINUE
293 CALL RSPEAK(757)
294 RETURN
295
296 11200 CFLAG(CEVMRS)=.TRUE.
297 CTICK(CEVMRS)=7
298 MRPSHF=.TRUE.
299 MROPNF=.TRUE.
300 RETURN
301
302 11300 CALL RSPEAK(758)
303 RETURN
304
305
306
307
308
309 12000 IF((PRSA.NE.TAKEW).OR.(PRSO.NE.RBEAM)) GO TO 12100
310 CALL RSPEAK(759)
311 RETURN
312
313 12100 I=PRSO
314 IF((PRSA.EQ.PUTW).AND.(PRSI.EQ.RBEAM)) GO TO 12200
315 IF((PRSA.NE.MUNGW).OR.(PRSO.NE.RBEAM).OR.
316 & (PRSI.EQ.0)) GO TO 10
317 I=PRSI
318 12200 IF(OADV(I).NE.WINNER) GO TO 12300
319 CALL NEWSTA(I,0,HERE,0,0)
320 CALL RSPSUB(760,ODESC2(I))
321 RETURN
322
323 12300 J=761
324 IF(QHERE(I,HERE)) J=762
325 CALL RSPSUB(J,ODESC2(I))
326 RETURN
327
328
329
330 13000 IF((HERE.EQ.NCELL).OR.((LCELL.EQ.4).AND.
331 & ((HERE.EQ.CELL).OR.(HERE.EQ.SCORR))))
332 & GO TO 13100
333 CALL RSPEAK(763)
334 RETURN
335
336 13100 IF(.NOT.OPNCLS(ODOOR,764,765)) GO TO 10
337 IF((HERE.EQ.NCELL).AND.QOPEN(ODOOR))
338 & CALL RSPEAK(766)
339 RETURN
340
341
342
343 14000 IF((PRSA.NE.OPENW).AND.(PRSA.NE.CLOSEW)) GO TO 14100
344 CALL RSPEAK(767)
345 RETURN
346
347 14100 IF(PRSA.NE.KNOCKW) GO TO 10
348 IF(INQSTF) GO TO 14200
349 INQSTF=.TRUE.
350 CFLAG(CEVINQ)=.TRUE.
351 CTICK(CEVINQ)=2
352 QUESNO=RND(8)
353 NQATT=0
354 CORRCT=0
355 CALL RSPEAK(768)
356 CALL RSPEAK(769)
357 CALL RSPEAK(770+QUESNO)
358 RETURN
359
360 14200 CALL RSPEAK(798)
361 RETURN
362
363
364
365 15000 IF(PRSA.NE.OPENW) GO TO 10
366 CALL RSPEAK(778)
367 RETURN
368
369
370
371 16000 NOBJS=OPNCLS(CDOOR,779,780)
372 RETURN
373
374
375
376
377
378 17000 IF(PRSA.NE.PUSHW) GO TO 10
379 CALL RSPEAK(809)
380 IF(QOPEN(CDOOR)) CALL RSPEAK(810)
381
382 OFLAG2(CDOOR)=AND(OFLAG2(CDOOR), COMPL(OPENBT))
383
384 OFLAG2(ODOOR)=AND(OFLAG2(ODOOR), COMPL(OPENBT))
385 IF(LCELL.EQ.PNUMB) RETURN
386
387 DO 17100 I=1,OLNT
388
389
390 IF((OROOM(I).EQ.CELL).AND.((AND(OFLAG1(I),DOORBT)).EQ.0))
391 & CALL NEWSTA(I,0,LCELL*HFACTR,0,0)
392 IF(OROOM(I).EQ.(PNUMB*HFACTR))
393 & CALL NEWSTA(I,0,CELL,0,0)
394 17100 CONTINUE
395
396
397 OFLAG1(ODOOR)=AND(OFLAG1(ODOOR), COMPL(VISIBT))
398
399 IF(PNUMB.EQ.4) OFLAG1(ODOOR)=OR(OFLAG1(ODOOR),VISIBT)
400
401 IF(AROOM(PLAYER).NE.CELL) GO TO 17400
402 IF(LCELL.NE.4) GO TO 17200
403
404 OFLAG1(ODOOR)=OR(OFLAG1(ODOOR), VISIBT)
405 F=MOVETO(NCELL,PLAYER)
406 GO TO 17400
407 17200 F=MOVETO(PCELL,PLAYER)
408
409 17400 LCELL=PNUMB
410 RETURN
411
412
413
414
415
416 18000 IF((PRSA.NE.OPENW).OR.(PRSO.NE.BOOK)) GO TO 18100
417 PNUMB=RND(8)+1
418 CALL RSPSUB(797,712+PNUMB)
419 RETURN
420
421 18100 IF((PRSA.NE.MOVEW).AND.(PRSA.NE.PUTW).AND.
422 & (PRSA.NE.TRNTOW)) GO TO 10
423 IF(PRSI.NE.0) GO TO 18200
424 CALL RSPEAK(806)
425 RETURN
426
427 18200 IF((PRSI.GE.NUM1).AND.(PRSI.LE.NUM8)) GO TO 18300
428 CALL RSPEAK(807)
429 RETURN
430
431 18300 PNUMB=PRSI-NUM1+1
432 CALL RSPSUB(808,712+PNUMB)
433 RETURN
434
435
436
437 19000 NOBJS=MIRPAN(832,.FALSE.)
438 RETURN
439
440
441
442 20000 IF(HERE.NE.FDOOR) GO TO 20100
443 IF((PRSA.NE.OPENW).AND.(PRSA.NE.CLOSEW)) GO TO 10
444 CALL RSPEAK(843)
445 RETURN
446
447 20100 NOBJS=MIRPAN(838,.TRUE.)
448 RETURN
449
450
451
452 21000 IF((PRSA.NE.PUTW).OR.(PRSI.NE.CSLIT)) GO TO 10
453 IF(PRSO.NE.GCARD) GO TO 21100
454 CALL NEWSTA(PRSO,863,0,0,0)
455 CPOUTF=.TRUE.
456 RETURN
457
458
459
460 21100 IF(((AND (OFLAG1(PRSO),VICTBT)).EQ.0).AND.
461 & ((AND (OFLAG2(PRSO),VILLBT)).EQ.0)) GO TO 21200
462 CALL RSPEAK(552+RND(6))
463 RETURN
464
465 21200 CALL NEWSTA(PRSO,0,0,0,0)
466 CALL RSPSUB(864,ODO2)
467 RETURN
468
469
470
471
472
473 22000 IF(PRSO.NE.STAMP) GO TO 22100
474
475 IF(PRSA.EQ.TAKEW) OFLAG1(BROCH)=AND(OFLAG1(BROCH),COMPL(CONTBT))
476 GO TO 10
477
478 22100 IF((PRSO.NE.BROCH).OR.
479 & ((PRSA.NE.EXAMIW).AND.(PRSA.NE.READW)))
480 & GO TO 22200
481 CALL RSPEAK(942)
482 IF(OCAN(STAMP).EQ.BROCH) CALL RSPEAK(943)
483 RETURN
484
485 22200 IF((PRSA.NE.FINDW).OR..NOT.BROC1F) GO TO 22300
486 CALL RSPEAK(944)
487 RETURN
488
489 22300 IF(PRSA.NE.SENDW) GO TO 22400
490 IF(BROC2F) CALL RSPEAK(945)
491 IF(BROC1F.AND..NOT.BROC2F) CALL RSPEAK(944)
492 IF(.NOT.BROC1F) CALL RSPEAK(947)
493 BROC1F=.TRUE.
494 RETURN
495
496 22400 IF(PRSO.NE.GBROCH) GO TO 10
497 CALL RSPEAK(1071)
498 RETURN
499
500
501
502 23000 IF(HERE.EQ.SBEACH) GO TO 36000
503 IF(PRSA.NE.DIGW) GO TO 10
504 CALL RSPEAK(924)
505 RETURN
506
507
508
509 24000 I=916
510 IF(PRSA.EQ.TAKEW) GO TO 24100
511 I=918
512 IF(HERE.EQ.SLIDE) I=917
513 IF(PRSA.NE.FINDW) GO TO 10
514 24100 CALL RSPEAK(I)
515 RETURN
516
517
518
519
520
521 25000 IF((HERE.GE.WHOUS).AND.(HERE.LE.EHOUS)) GO TO 25200
522 IF(PRSA.NE.FINDW) GO TO 25100
523 I=892
524 IF(HERE.EQ.CLEAR) I=893
525 CALL RSPEAK(I)
526 RETURN
527
528 25100 CALL RSPEAK(894)
529 RETURN
530
531 25200 IF(PRSA.NE.FINDW) GO TO 25300
532 CALL RSPEAK(895)
533 RETURN
534
535 25300 IF(PRSA.NE.EXAMIW) GO TO 25400
536 CALL RSPEAK(896)
537 RETURN
538
539 25400 IF(PRSA.NE.BURNW) GO TO 25500
540 CALL RSPEAK(897)
541 RETURN
542
543 25500 IF(PRSA.NE.GTHROW) GO TO 10
544 IF(HERE.EQ.EHOUS) GO TO 25600
545 CALL RSPEAK(898)
546 RETURN
547
548 25600 IF(QOPEN(WINDO)) GO TO 25700
549 CALL RSPEAK(899)
550 RETURN
551
552 25700 F=MOVETO(KITCH,WINNER)
553 F=RMDESC(0)
554 RETURN
555
556
557
558 26000 IF((PRSA.NE.OPENW).AND.(PRSA.NE.LOOKIW).AND.
559 & (PRSA.NE.GTHROW)) GO TO 26100
560 CALL RSPEAK(1039)
561 RETURN
562
563 26100 IF(PRSA.NE.CLOSEW) GO TO 10
564 CALL RSPEAK(1040)
565 RETURN
566
567
568
569
570
571
572
573
574 27000 IF(((AND(OFLAG1(PRSO),TAKEBT)).EQ.0).OR.(PRSO.EQ.WATER).OR.
575 & ((PRSA.NE.THROWW).AND.(PRSA.NE.PUTW).AND.(PRSA.NE.DROPW)))
576 & GO TO 10
577 CALL RSPSUB(939,ODO2)
578 CALL NEWSTA(PRSO,0,BWELL,0,0)
579 GO TO 50
580
581
582
583 28000 IF(PRSA.NE.TAKEW) GO TO 28100
584 CALL RSPEAK(1006)
585 RETURN
586
587 28100 IF(PRSA.NE.DROPW) GO TO 28300
588 CALL RSPEAK(1007)
589 28200 F=MOVETO(CELLA,WINNER)
590 F=RMDESC(3)
591 RETURN
592
593 28300 IF((PRSA.EQ.CLMBW).OR.(PRSA.EQ.CLMBUW).OR.
594 & (PRSA.EQ.CLMBDW)) GO TO 10
595 CALL RSPEAK(1008)
596 RETURN
597
598
599
600 29000 IF((PRSA.NE.GTHROW).AND.
601 & ((PRSA.NE.PUTW).OR.(PRSO.NE.AOBJ(PLAYER)))) GO TO 29100
602 CALL RSPEAK(1010)
603 GO TO 28200
604
605 29100 IF(PRSA.NE.PUTW) GO TO 10
606
607 IF((AND(OFLAG1(PRSO),TAKEBT)).NE.0) GO TO 29200
608 CALL RSPEAK(552+RND(6))
609 RETURN
610
611 29200 IF(PRSO.NE.TTIE) GO TO 29300
612
613 OFLAG1(TTIE)=AND(OFLAG1(TTIE),COMPL(NDSCBT))
614 OFLAG1(ROPE)=AND(OFLAG1(ROPE),COMPL(NDSCBT))
615
616 OFLAG2(ROPE)=AND(OFLAG2(ROPE),COMPL(CLMBBT))
617 ODESC1(TIMBE)=1032
618 ODESC1(COFFI)=1033
619 TTIE=0
620 CALL NEWSTA(ROPE,0,CELLA,0,0)
621 29300 CALL RSPSUB(1011,ODO2)
622 CALL NEWSTA(PRSO,0,CELLA,0,0)
623 IF(PRSO.EQ.WATER) CALL NEWSTA(PRSO,0,0,0,0)
624 GO TO 50
625
626
627
628
629
630 30000 IF(ARG.NE.1) GO TO 10
631 I=0
632 IF(PRSA.EQ.WALKW) I=920
633 IF(PRSA.EQ.LOOKW) I=921
634 IF(PRSA.EQ.BURNW) I=922
635 IF(PRSA.EQ.TAKEW) I=552+RND(6)
636 CALL RSPEAK(I)
637 NOBJS=I.NE.0
638 RETURN
639
640
641
642 31000 IF(PRSA.NE.TAKEW) GO TO 31100
643 CALL RSPEAK(972)
644 RETURN
645
646 31100 IF(PRSA.NE.RINGW) GO TO 31400
647 IF(PRSI.NE.0) GO TO 31200
648 CALL RSPEAK(973)
649 RETURN
650
651
652 31200 IF((AND (OFLAG1(PRSI),BURNBT)).EQ.0) GO TO 31300
653 CALL RSPSUB(974,ODI2)
654 CALL NEWSTA(PRSI,0,0,0,0)
655 RETURN
656
657 31300 I=975
658 IF(PRSI.EQ.HANDS) I=973
659 CALL RSPEAK(I)
660 RETURN
661
662 31400 IF(PRSA.NE.PORONW) GO TO 10
663 CALL NEWSTA(HBELL,0,0,0,0)
664 CALL NEWSTA(BELL,976,LLD1,0,0)
665 IF(LASTIT.EQ.HBELL) LASTIT=BELL
666 CALL NEWSTA(PRSO,0,0,0,0)
667 CTICK(CEVXBH)=0
668 RETURN
669
670
671
672 32000 IF(PRSA.NE.TAKEW) GO TO 10
673 CALL RSPEAK(891)
674 RETURN
675
676
677
678
679
680 33000 IF((PRSA.NE.TAKEW).OR.(PRSO.NE.TTIE)) GO TO 10
681 CALL RSPSUB(1009,ODO2)
682
683 OFLAG1(TTIE)=AND(OFLAG1(TTIE),COMPL(NDSCBT))
684
685 OFLAG1(ROPE)=AND(OFLAG1(ROPE),COMPL(NDSCBT))
686
687 OFLAG2(ROPE)=AND(OFLAG2(ROPE),COMPL(CLMBBT))
688 ODESC1(TIMBE)=1032
689 ODESC1(COFFI)=1033
690 TTIE=0
691 CALL NEWSTA(ROPE,0,HERE,0,0)
692 GO TO 10
693
694
695
696 34000 IF(PRSA.NE.DIGW) GO TO 10
697 RVGUA=MIN0(4,RVGUA+1)
698 CALL RSPEAK(91+RVGUA)
699 RETURN
700
701
702
703 35000 IF(PRSA.NE.TAKEW) GO TO 35100
704 CALL RSPEAK(552+RND(6))
705 RETURN
706
707 35100 IF((PRSA.NE.PLUGW).OR.(PRSO.NE.PLEAK)) GO TO 10
708 CALL RSPEAK(929)
709 RETURN
710
711
712
713
714
715 36000 IF(PRSA.NE.DIGW) GO TO 10
716 RVSND=RVSND+1
717 GO TO (36100,36100,36100,36400,36500),RVSND
718 CALL BUG(2,RVSND)
719
720 36100 CALL RSPEAK(85+RVSND)
721 RETURN
722
723
724 36400 IF((AND(OFLAG1(STATU),VISIBT)).EQ.0) CALL RSPEAK(89)
725
726 OFLAG1(STATU)=OR(OFLAG1(STATU),VISIBT)
727 RETURN
728
729 36500 RVSND=0
730
731
732 IF(OROOM(STATU).EQ.HERE)
733 & OFLAG1(STATU)=AND(OFLAG1(STATU),COMPL(VISIBT))
734 CALL JIGSUP(90)
735 RETURN
736
737
738
739 37000 IF(PRSA.NE.TRNOFW) GO TO 10
740 CALL RSPEAK(900)
741 RETURN
742
743
744
745 38000 IF(PRSA.NE.EXAMIW) GO TO 38100
746 CALL RSPEAK(907)
747 RETURN
748
749 38100 IF(PRSA.NE.TAKEW) GO TO 10
750 CALL RSPEAK(908)
751 RETURN
752
753
754
755
756
757 39000 IF((PRSA.NE.LOOKUW).OR..NOT.MATF) GO TO 39100
758 CALL RSPEAK(995)
759 RETURN
760
761 39100 IF(PRSA.NE.UNLOKW) GO TO 39500
762 IF(PRSI.NE.PKEY) GO TO 39400
763 39200 IF((OCAN(PKEY).EQ.(HERE-PRM+PKH1)).OR.
764 & QEMPTY(HERE-PRM+PKH1)) GO TO 39300
765 39250 CALL RSPEAK(991)
766 RETURN
767
768 39300 CALL RSPEAK(996)
769 PUNLKF=.TRUE.
770 RETURN
771
772 39400 I=997
773 IF(PRSI.EQ.KEYS) I=998
774 CALL RSPEAK(I)
775 RETURN
776
777 39500 IF(PRSA.NE.LOCKW) GO TO 39700
778 IF(PRSI.EQ.PKEY) GO TO 39600
779 CALL RSPEAK(999)
780 RETURN
781
782 39600 IF((OCAN(PKEY).NE.(HERE-PRM+PKH1)).AND.
783 & .NOT.QEMPTY(HERE-PRM+PKH1)) GO TO 39250
784 CALL RSPEAK(1000)
785 PUNLKF=.FALSE.
786 RETURN
787
788 39700 IF((PRSA.NE.PUTUNW).OR.((PRSO.NE.BLABE).AND.
789 & (PRSO.NE.LABEL).AND.(PRSO.NE.CARD).AND.
790 & (PRSO.NE.WARNI).AND.(PRSO.NE.RBTLB).AND.
791 & (PRSO.NE.GUIDE))) GO TO 39800
792
793 CALL NEWSTA(PRSO,1001,INT(XOR(HERE,1)),0,0)
794 RETURN
795
796 39800 IF((PRSA.NE.OPENW).AND.(PRSA.NE.CLOSEW)) GO TO 10
797 IF(.NOT.PUNLKF) GO TO 39900
798 NOBJS=OPNCLS(PRSO,1002,1003)
799 RETURN
800
801 39900 CALL RSPEAK(1000)
802 RETURN
803
804
805
806 40000 IF(PRSA.NE.GTHROW) GO TO 40100
807 CALL RSPEAK(1004)
808 RETURN
809
810 40100 IF(PRSA.NE.LOOKIW) GO TO 10
811 IF(QOPEN(PDOOR)) GO TO 40200
812 PLOOKF=.TRUE.
813
814 SVFLAG=RFLAG(INT(XOR(HERE,1)))
815
816 F=MOVETO(INT(XOR(HERE,1)),WINNER)
817 F=RMDESC(3)
818
819 F=MOVETO(INT(XOR(HERE,1)),WINNER)
820
821 RFLAG(INT(XOR(HERE,1)))=SVFLAG
822 RETURN
823
824 40200 CALL RSPEAK(1005)
825 RETURN
826
827
828
829
830
831 41000 IF((PRSA.NE.OPENW).AND.(PRSA.NE.RAISEW)) GO TO 41100
832 CALL RSPEAK(985)
833
834 OFLAG2(PRSO)=OR(OFLAG2(PRSO),OPENBT)
835 RETURN
836
837 41100 IF((PRSA.NE.CLOSEW).AND.(PRSA.NE.LOWERW)) GO TO 10
838 IF(QEMPTY(PRSO-PLID1+PKH1)) GO TO 41200
839 CALL RSPEAK(986)
840 RETURN
841
842 41200 CALL RSPEAK(987)
843
844 OFLAG2(PRSO)=AND(OFLAG2(PRSO),COMPL(OPENBT))
845 RETURN
846
847
848
849 42000 IF(PRSA.NE.LOOKIW) GO TO 42200
850 I=988
851
852
853
854 IF(QOPEN(PLID1).AND.QOPEN(PLID2).AND.
855 & QEMPTY(PKH1).AND.QEMPTY(PKH2).AND.
856 & LIT(INT(XOR(HERE,1)))) I=989
857 CALL RSPEAK(I)
858 RETURN
859
860 42200 IF(PRSA.NE.PUTW) GO TO 10
861 IF(QOPEN(PRSI-PKH1+PLID1)) GO TO 42300
862 CALL RSPEAK(990)
863 RETURN
864
865 42300 IF(QEMPTY(PRSI)) GO TO 42400
866 CALL RSPEAK(991)
867 RETURN
868
869 42400 IF((PRSO.NE.SCREW).AND.(PRSO.NE.KEYS).AND.
870 & (PRSO.NE.STICK).AND.(PRSO.NE.PKEY)) GO TO 42700
871
872 IF(QEMPTY(INT(XOR(PRSI,1)))) GO TO 10
873 DO 42500 I=1,OLNT
874
875 IF(OCAN(I).EQ.(XOR(PRSI,1))) GO TO 42600
876 42500 CONTINUE
877 BUG
878 CALL BUG(67,INT(XOR(PRSI,1)))
879
880
881 42600 CALL NEWSTA(I,992,INT(XOR(HERE,1)),0,0)
882 IF(MATF) MATOBJ=I
883 GO TO 10
884
885 42700 CALL RSPSUB(993,ODO2)
886 RETURN
887
888
889
890
891
892 43000 IF(PRSA.NE.TURNW) GO TO 10
893 IF(PUNLKF) GO TO 39600
894 GO TO 39200
895
896
897
898 44000 IF(PRSA.NE.LOOKIW) GO TO 10
899 OBJ=PALAN
900 IF(PRSO.EQ.PALAN) OBJ=PAL3
901 IF(PRSO.EQ.PAL3) OBJ=SPHER
902 J=HERE
903 K=OCAN(OBJ)
904 IF(OROOM(OBJ).NE.0) J=OROOM(OBJ)
905 IF(K.NE.0) J=OROOM(K)
906 IF((J.EQ.0).OR.(OADV(OBJ).EQ.-THIEF)) GO TO 44200
907 IF(.NOT.LIT(J)) GO TO 44200
908 IF(K.EQ.0) GO TO 44100
909
910
911 IF(((AND(OFLAG1(K),TRANBT)).EQ.0).AND..NOT.QOPEN(K))
912 & GO TO 44200
913 44100 CALL RSPEAK(1024)
914
915 OFLAG1(OBJ)=AND(OFLAG1(OBJ),COMPL(VISIBT))
916 SVHERE=HERE
917 SVFLAG=RFLAG(J)
918 F=MOVETO(J,WINNER)
919 F=RMDESC(3)
920 IF(J.EQ.SVHERE) CALL RSPEAK(1026)
921 F=MOVETO(SVHERE,WINNER)
922 RFLAG(J)=SVFLAG
923
924 OFLAG1(OBJ)=OR(OFLAG1(OBJ),VISIBT)
925 RETURN
926
927 44200 CALL RSPEAK(1023)
928 RETURN
929
930
931
932 45000 IF((PRSA.NE.PUTUNW).OR.(PRSI.NE.PDOOR)) GO TO 45100
933 MATF=.TRUE.
934 CALL NEWSTA(PRSO,983,HERE,0,0)
935 RETURN
936
937 45100 IF(((PRSA.NE.TAKEW).AND.(PRSA.NE.MOVEW)).OR.(MATOBJ.EQ.0))
938 & GO TO 10
939 CALL NEWSTA(MATOBJ,0,HERE,0,0)
940 CALL RSPSUB(984,ODESC2(MATOBJ))
941 MATOBJ=0
942 MATF=.FALSE.
943 IF(PRSA.EQ.TAKEW) GO TO 10
944 RETURN
945
946
947
948 46000 IF((PRSA.NE.TAKEW).AND.(PRSA.NE.RUBW).AND.
949 & (PRSA.NE.ATTACW).AND.(PRSA.NE.MUNGW))
950 & GO TO 46100
951 CALL RSPEAK(994)
952 RETURN
953
954 46100 IF(PRSA.NE.THROWW) GO TO 10
955 IF(PRSO.NE.WATER) GO TO 46200
956 CALL NEWSTA(WATER,978,0,0,0)
957 RETURN
958
959
960 46200 IF((AND(OFLAG1(PRSO),BURNBT)).EQ.0) GO TO 10
961 CALL RSPSUB(974,ODO2)
962 CALL NEWSTA(PRSO,0,0,0,0)
963 RETURN
964
965
966
967
968
969
970
971 LOGICAL MIRPAN(ST,PNF)
972 IMPLICIT INTEGER (A-Z)
973 %include dparam
974 LOGICAL PNF
975
976 MIRPAN=.TRUE.
977 NUM=MRHERE(HERE)
978 IF(NUM.NE.0) GO TO 100
979 CALL RSPEAK(ST)
980 RETURN
981
982 100 IF((PRSA.NE.MOVEW).AND.(PRSA.NE.OPENW)) GO TO 200
983 CALL RSPEAK(ST+1)
984 RETURN
985
986 200 MRBF=0
987 IF(((NUM.EQ.1).AND..NOT.MR1F).OR.
988 & ((NUM.EQ.2).AND..NOT.MR2F)) MRBF=1
989 IF(PNF.OR.((PRSA.NE.LOOKIW).AND.(PRSA.NE.EXAMIW).AND.
990 & (PRSA.NE.LOOKW))) GO TO 300
991 CALL RSPEAK(844+MRBF)
992 RETURN
993
994 300 IF(PRSA.NE.MUNGW) GO TO 400
995 CALL RSPEAK(ST+2+MRBF)
996 IF((NUM.EQ.1).AND..NOT.PNF) MR1F=.FALSE.
997 IF((NUM.EQ.2).AND..NOT.PNF) MR2F=.FALSE.
998 RETURN
999
1000 400 IF(PNF.OR.(MRBF.EQ.0)) GO TO 500
1001 CALL RSPEAK(846)
1002 RETURN
1003
1004 500 IF(PRSA.NE.PUSHW) GO TO 600
1005 CALL RSPEAK(ST+3+NUM)
1006 RETURN
1007
1008 600 MIRPAN=.FALSE.
1009 RETURN
1010
1011
1012
1013
1014
1015
1016
1017 LOGICAL BALLOP(ARG)
1018 IMPLICIT INTEGER (A-Z)
1019 %include dparam
1020 LOGICAL FINDXT,QEMPTY
1021
1022 BALLOP=.TRUE.
1023 IF(ARG.NE.2) GO TO 200
1024 IF(PRSA.NE.LOOKW) GO TO 10
1025 IF(BINFF.NE.0) GO TO 50
1026 CALL RSPEAK(543)
1027 GO TO 100
1028 50 CALL RSPSUB(544,ODESC2(BINFF))
1029 100 IF(BTIEF.NE.0) CALL RSPEAK(545)
1030 GO TO 10
1031
1032 200 IF(ARG.NE.1) GO TO 500
1033 IF(PRSA.NE.WALKW) GO TO 300
1034 IF(FINDXT(PRSO,HERE)) GO TO 250
1035 CALL RSPEAK(546)
1036 RETURN
1037
1038 250 IF(BTIEF.EQ.0) GO TO 275
1039 CALL RSPEAK(547)
1040 RETURN
1041
1042 275 IF(XTYPE.NE.XNORM) GO TO 10
1043
1044 IF((AND(RFLAG(XROOM1),RMUNG)).NE.0) GO TO 10
1045 BLOC=XROOM1
1046 CFLAG(CEVBAL)=.TRUE.
1047 CTICK(CEVBAL)=3
1048 10 BALLOP=.FALSE.
1049 RETURN
1050
1051 300 IF((PRSA.NE.TAKEW).OR.(PRSO.NE.BINFF)) GO TO 350
1052 CALL RSPSUB(548,ODESC2(BINFF))
1053 RETURN
1054
1055 350 IF((PRSA.NE.PUTW).OR.(PRSI.NE.RECEP).OR.QEMPTY(RECEP))
1056 & GO TO 10
1057 CALL RSPEAK(549)
1058 RETURN
1059
1060 500 IF((PRSA.NE.BURNW).OR.(OCAN(PRSO).NE.RECEP)) GO TO 10
1061 CALL RSPSUB(550,ODESC2(PRSO))
1062 CFLAG(CEVBRN)=.TRUE.
1063 CTICK(CEVBRN)=OSIZE(PRSO)*20
1064
1065
1066 OFLAG1(PRSO)=AND(OR(OFLAG1(PRSO),ONBT+FLAMBT+LITEBT),
1067 & COMPL(TAKEBT+READBT))
1068 IF(BINFF.NE.0) RETURN
1069 IF(.NOT.BLABF) CALL NEWSTA(BLABE,0,0,BALLO,0)
1070 BLABF=.TRUE.
1071 BINFF=PRSO
1072 CFLAG(CEVBAL)=.TRUE.
1073 CTICK(CEVBAL)=3
1074 CALL RSPEAK(551)
1075 RETURN
1076
1077
1078
1079
1080
1081
1082
1083 LOGICAL TROLLP(ARG)
1084 IMPLICIT INTEGER (A-Z)
1085 %include dparam
1086 LOGICAL QHERE,PROB
1087
1088 TROLLP=.TRUE.
1089 IF(PRSA.NE.FIGHTW) GO TO 1100
1090 IF(OCAN(AXE).EQ.TROLL) GO TO 10
1091 I=433
1092 IF(.NOT.QHERE(AXE,HERE).OR.PROB(25,10)) GO TO 1050
1093 I=434
1094 CALL NEWSTA(AXE,0,0,TROLL,0)
1095 1050 IF(QHERE(TROLL,HERE)) CALL RSPEAK(I)
1096 RETURN
1097
1098 1100 IF(PRSA.NE.DEADXW) GO TO 1200
1099 TROLLF=.TRUE.
1100 RETURN
1101
1102 1200 IF(PRSA.NE.OUTXW) GO TO 1300
1103 TROLLF=.TRUE.
1104
1105 OFLAG1(AXE)=AND(OFLAG1(AXE), COMPL(VISIBT))
1106 ODESC1(TROLL)=435
1107 RETURN
1108
1109 1300 IF((PRSA.NE.INXW).AND.
1110 & (((PRSA.NE.ALARMW).AND.(PRSA.NE.KICKW)).OR.
1111 & (OCAPAC(TROLL).GE.0))) GO TO 1400
1112 OCAPAC(TROLL)=IABS(OCAPAC(TROLL))
1113
1114 OFLAG1(AXE)=OR (OFLAG1(AXE),VISIBT)
1115 TROLLF=.FALSE.
1116 ODESC1(TROLL)=436
1117 IF(QHERE(TROLL,HERE)) CALL RSPEAK(437)
1118 RETURN
1119
1120 1400 IF(PRSA.NE.FRSTQW) GO TO 1500
1121 TROLLP=PROB(33,66)
1122 RETURN
1123
1124 1500 IF((PRSA.NE.MOVEW).AND.(PRSA.NE.TAKEW).AND.(PRSA.NE.MUNGW)
1125 & .AND.(PRSA.NE.THROWW).AND.(PRSA.NE.GIVEW)) GO TO 2000
1126 IF(OCAPAC(TROLL).GE.0) GO TO 1550
1127 OCAPAC(TROLL)=IABS(OCAPAC(TROLL))
1128
1129 OFLAG1(AXE)=OR(OFLAG1(AXE),VISIBT)
1130 TROLLF=.FALSE.
1131 ODESC1(TROLL)=436
1132 CALL RSPEAK(437)
1133
1134 1550 IF((PRSA.NE.TAKEW).AND.(PRSA.NE.MOVEW)) GO TO 1600
1135 CALL RSPEAK(438)
1136 RETURN
1137
1138 1600 IF(PRSA.NE.MUNGW) GO TO 1700
1139 CALL RSPEAK(439)
1140 RETURN
1141
1142 1700 IF(PRSO.EQ.0) GO TO 10
1143 I=440
1144 IF(PRSA.EQ.GIVEW) I=441
1145 CALL RSPSUB(I,ODESC2(PRSO))
1146 IF(PRSO.EQ.KNIFE) GO TO 1900
1147 CALL NEWSTA(PRSO,442,0,0,0)
1148 RETURN
1149
1150 1900 CALL RSPEAK(443)
1151
1152 OFLAG2(TROLL)=OR(OFLAG2(TROLL),FITEBT)
1153 RETURN
1154
1155 2000 IF(.NOT.TROLLF.OR.(PRSA.NE.HELLOW)) GO TO 10
1156 CALL RSPEAK(366)
1157 RETURN
1158
1159 10 TROLLP=.FALSE.
1160 RETURN
1161
1162