|
|
1.1 root 1: C RAPPL1- SPECIAL PURPOSE ROOM ROUTINES, PART 1
2: C
3: C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
4: C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
5: C WRITTEN BY R. M. SUPNIK
6: C
7: C DECLARATIONS
8: C
9: LOGICAL FUNCTION RAPPL1(RI)
10: IMPLICIT INTEGER (A-Z)
11: LOGICAL QOPEN,QON,QHERE,PROB,F
12: LOGICAL MOVETO,LIT
13: #include "parser.h"
14: #include "gamestate.h"
15: #include "state.h"
16: C
17: C SCREEN OF LIGHT
18: C
19: COMMON /SCREEN/ FROMDR,SCOLRM,SCOLAC
20: COMMON /SCREEN/ SCOLDR(8),SCOLWL(12)
21: C
22: C MISCELLANEOUS VARIABLES
23: C
24: COMMON /BATS/ BATDRP(9)
25: #include "rooms.h"
26: #include "rflag.h"
27: #include "rindex.h"
28: #include "objects.h"
29: #include "oflags.h"
30: #include "oindex.h"
31: #include "clock.h"
32: #include "villians.h"
33: #include "advers.h"
34: #include "verbs.h"
35: #include "flags.h"
36: C
37: C FUNCTIONS AND DATA
38: C
39: QOPEN(R)=and(OFLAG2(R),OPENBT).NE.0
40: QON(R)=and(OFLAG1(R),ONBT).NE.0
41: C RAPPL1, PAGE 2
42: C
43: RAPPL1=.TRUE.
44: C !USUALLY IGNORED.
45: IF(RI.EQ.0) RETURN
46: C !RETURN IF NAUGHT.
47: C
48: C !SET TO FALSE FOR
49: C
50: C !NEW DESC NEEDED.
51: GO TO (1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,
52: & 11000,12000,13000,14000,15000,16000,17000,18000,19000,20000,
53: & 21000,22000,23000,24000,25000,26000,27000,28000,29000,30000,
54: & 31000,32000,33000,34000,35000,36000,37000),RI
55: CALL BUG(1,RI)
56: C
57: C R1-- EAST OF HOUSE. DESCRIPTION DEPENDS ON STATE OF WINDOW
58: C
59: 1000 IF(PRSA.NE.LOOKW) RETURN
60: C !LOOK?
61: I=13
62: C !ASSUME CLOSED.
63: IF(QOPEN(WINDO)) I=12
64: C !IF OPEN, AJAR.
65: CALL RSPSUB(11,I)
66: C !DESCRIBE.
67: RETURN
68: C
69: C R2-- KITCHEN. SAME VIEW FROM INSIDE.
70: C
71: 2000 IF(PRSA.NE.LOOKW) RETURN
72: C !LOOK?
73: I=13
74: C !ASSUME CLOSED.
75: IF(QOPEN(WINDO)) I=12
76: C !IF OPEN, AJAR.
77: CALL RSPSUB(14,I)
78: C !DESCRIBE.
79: RETURN
80: C
81: C R3-- LIVING ROOM. DESCRIPTION DEPENDS ON MAGICF (STATE OF
82: C DOOR TO CYCLOPS ROOM), RUG (MOVED OR NOT), DOOR (OPEN OR CLOSED)
83: C
84: 3000 IF(PRSA.NE.LOOKW) GO TO 3500
85: C !LOOK?
86: I=15
87: C !ASSUME NO HOLE.
88: IF(MAGICF) I=16
89: C !IF MAGICF, CYCLOPS HOLE.
90: CALL RSPEAK(I)
91: C !DESCRIBE.
92: I=17+ORRUG
93: C !ASSUME INITIAL STATE.
94: IF(QOPEN(DOOR)) I=I+2
95: C !DOOR OPEN?
96: CALL RSPEAK(I)
97: C !DESCRIBE.
98: RETURN
99: C
100: C NOT A LOOK WORD. REEVALUATE TROPHY CASE.
101: C
102: 3500 IF((PRSA.NE.TAKEW).AND.((PRSA.NE.PUTW).OR.(PRSI.NE.TCASE)))
103: & RETURN
104: ASCORE(WINNER)=RWSCOR
105: C !SCORE TROPHY CASE.
106: DO 3600 I=1,OLNT
107: C !RETAIN RAW SCORE AS WELL.
108: J=I
109: C !FIND OUT IF IN CASE.
110: 3550 J=OCAN(J)
111: C !TRACE OWNERSHIP.
112: IF(J.EQ.0) GO TO 3600
113: IF(J.NE.TCASE) GO TO 3550
114: C !DO ALL LEVELS.
115: ASCORE(WINNER)=ASCORE(WINNER)+OTVAL(I)
116: 3600 CONTINUE
117: CALL SCRUPD(0)
118: C !SEE IF ENDGAME TRIG.
119: RETURN
120: C RAPPL1, PAGE 3
121: C
122: C R4-- CELLAR. SHUT DOOR AND BAR IT IF HE JUST WALKED IN.
123: C
124: 4000 IF(PRSA.NE.LOOKW) GO TO 4500
125: C !LOOK?
126: CALL RSPEAK(21)
127: C !DESCRIBE CELLAR.
128: RETURN
129: C
130: 4500 IF(PRSA.NE.WALKIW) RETURN
131: C !WALKIN?
132: IF(and(OFLAG2(DOOR),(OPENBT+TCHBT)).NE.OPENBT) RETURN
133: OFLAG2(DOOR)=and( or(OFLAG2(DOOR),TCHBT), not(OPENBT))
134: CALL RSPEAK(22)
135: C !SLAM AND BOLT DOOR.
136: RETURN
137: C
138: C R5-- MAZE11. DESCRIBE STATE OF GRATING.
139: C
140: 5000 IF(PRSA.NE.LOOKW) RETURN
141: C !LOOK?
142: CALL RSPEAK(23)
143: C !DESCRIBE.
144: I=24
145: C !ASSUME LOCKED.
146: IF(GRUNLF) I=26
147: C !UNLOCKED?
148: IF(QOPEN(GRATE)) I=25
149: C !OPEN?
150: CALL RSPEAK(I)
151: C !DESCRIBE GRATE.
152: RETURN
153: C
154: C R6-- CLEARING. DESCRIBE CLEARING, MOVE LEAVES.
155: C
156: 6000 IF(PRSA.NE.LOOKW) GO TO 6500
157: C !LOOK?
158: CALL RSPEAK(27)
159: C !DESCRIBE.
160: IF(RVCLR.EQ.0) RETURN
161: C !LEAVES MOVED?
162: I=28
163: C !YES, ASSUME GRATE CLOSED.
164: IF(QOPEN(GRATE)) I=29
165: C !OPEN?
166: CALL RSPEAK(I)
167: C !DESCRIBE GRATE.
168: RETURN
169: C
170: 6500 IF((RVCLR.NE.0).OR.(QHERE(LEAVE,CLEAR).AND.
171: & ((PRSA.NE.MOVEW).OR.(PRSO.NE.LEAVE)))) RETURN
172: CALL RSPEAK(30)
173: C !MOVE LEAVES, REVEAL GRATE.
174: RVCLR=1
175: C !INDICATE LEAVES MOVED.
176: RETURN
177: C RAPPL1, PAGE 4
178: C
179: C R7-- RESERVOIR SOUTH. DESCRIPTION DEPENDS ON LOW TIDE FLAG.
180: C
181: 7000 IF(PRSA.NE.LOOKW) RETURN
182: C !LOOK?
183: I=31
184: C !ASSUME FULL.
185: IF(LWTIDF) I=32
186: C !IF LOW TIDE, EMPTY.
187: CALL RSPEAK(I)
188: C !DESCRIBE.
189: CALL RSPEAK(33)
190: C !DESCRIBE EXITS.
191: RETURN
192: C
193: C R8-- RESERVOIR. STATE DEPENDS ON LOW TIDE FLAG.
194: C
195: 8000 IF(PRSA.NE.LOOKW) RETURN
196: C !LOOK?
197: I=34
198: C !ASSUME FULL.
199: IF(LWTIDF) I=35
200: C !IF LOW TIDE, EMTPY.
201: CALL RSPEAK(I)
202: C !DESCRIBE.
203: RETURN
204: C
205: C R9-- RESERVOIR NORTH. ALSO DEPENDS ON LOW TIDE FLAG.
206: C
207: 9000 IF(PRSA.NE.LOOKW) RETURN
208: C !LOOK?
209: I=36
210: C !YOU GET THE IDEA.
211: IF(LWTIDF) I=37
212: CALL RSPEAK(I)
213: CALL RSPEAK(38)
214: RETURN
215: C
216: C R10-- GLACIER ROOM. STATE DEPENDS ON MELTED, VANISHED FLAGS.
217: C
218: 10000 IF(PRSA.NE.LOOKW) RETURN
219: C !LOOK?
220: CALL RSPEAK(39)
221: C !BASIC DESCRIPTION.
222: I=0
223: C !ASSUME NO CHANGES.
224: IF(GLACMF) I=40
225: C !PARTIAL MELT?
226: IF(GLACRF) I=41
227: C !COMPLETE MELT?
228: CALL RSPEAK(I)
229: C !DESCRIBE.
230: RETURN
231: C
232: C R11-- FOREST ROOM
233: C
234: 11000 IF(PRSA.EQ.WALKIW) CFLAG(CEVFOR)=.TRUE.
235: C !IF WALK IN, BIRDIE.
236: RETURN
237: C
238: C R12-- MIRROR ROOM. STATE DEPENDS ON MIRROR INTACT.
239: C
240: 12000 IF(PRSA.NE.LOOKW) RETURN
241: C !LOOK?
242: CALL RSPEAK(42)
243: C !DESCRIBE.
244: IF(MIRRMF) CALL RSPEAK(43)
245: C !IF BROKEN, NASTY REMARK.
246: RETURN
247: C RAPPL1, PAGE 5
248: C
249: C R13-- CAVE2 ROOM. BLOW OUT CANDLES WITH 50% PROBABILITY.
250: C
251: 13000 IF(PRSA.NE.WALKIW) RETURN
252: C !WALKIN?
253: IF(PROB(50,50).OR.(OADV(CANDL).NE.WINNER).OR.
254: & .NOT.QON(CANDL)) RETURN
255: OFLAG1(CANDL)=and(OFLAG1(CANDL), not(ONBT))
256: CALL RSPEAK(47)
257: C !TELL OF WINDS.
258: CFLAG(CEVCND)=.FALSE.
259: C !HALT CANDLE COUNTDOWN.
260: RETURN
261: C
262: C R14-- BOOM ROOM. BLOW HIM UP IF CARRYING FLAMING OBJECT.
263: C
264: 14000 J=ODESC2(CANDL)
265: C !ASSUME CANDLE.
266: IF((OADV(CANDL).EQ.WINNER).AND.QON(CANDL)) GO TO 14100
267: J=ODESC2(TORCH)
268: C !ASSUME TORCH.
269: IF((OADV(TORCH).EQ.WINNER).AND.QON(TORCH)) GO TO 14100
270: J=ODESC2(MATCH)
271: IF((OADV(MATCH).EQ.WINNER).AND.QON(MATCH)) GO TO 14100
272: RETURN
273: C !SAFE
274: C
275: 14100 IF(PRSA.NE.TRNONW) GO TO 14200
276: C !TURN ON?
277: CALL RSPSUB(294,J)
278: C !BOOM
279: C !
280: CALL JIGSUP(44)
281: RETURN
282: C
283: 14200 IF(PRSA.NE.WALKIW) RETURN
284: C !WALKIN?
285: CALL RSPSUB(295,J)
286: C !BOOM
287: C !
288: CALL JIGSUP(44)
289: RETURN
290: C
291: C R15-- NO-OBJS. SEE IF EMPTY HANDED, SCORE LIGHT SHAFT.
292: C
293: 15000 EMPTHF=.TRUE.
294: C !ASSUME TRUE.
295: DO 15100 I=1,OLNT
296: C !SEE IF CARRYING.
297: IF(OADV(I).EQ.WINNER) EMPTHF=.FALSE.
298: 15100 CONTINUE
299: C
300: IF((HERE.NE.BSHAF).OR.(.NOT.LIT(HERE))) RETURN
301: CALL SCRUPD(LTSHFT)
302: C !SCORE LIGHT SHAFT.
303: LTSHFT=0
304: C !NEVER AGAIN.
305: RETURN
306: C RAPPL1, PAGE 6
307: C
308: C R16-- MACHINE ROOM. DESCRIBE MACHINE.
309: C
310: 16000 IF(PRSA.NE.LOOKW) RETURN
311: C !LOOK?
312: I=46
313: C !ASSUME LID CLOSED.
314: IF(QOPEN(MACHI)) I=12
315: C !IF OPEN, OPEN.
316: CALL RSPSUB(45,I)
317: C !DESCRIBE.
318: RETURN
319: C
320: C R17-- BAT ROOM. UNLESS CARRYING GARLIC, FLY AWAY WITH ME...
321: C
322: 17000 IF(PRSA.NE.LOOKW) GO TO 17500
323: C !LOOK?
324: CALL RSPEAK(48)
325: C !DESCRIBE ROOM.
326: IF(OADV(GARLI).EQ.WINNER) CALL RSPEAK(49)
327: C !BAT HOLDS NOSE.
328: RETURN
329: C
330: 17500 IF((PRSA.NE.WALKIW).OR.(OADV(GARLI).EQ.WINNER)) RETURN
331: CALL RSPEAK(50)
332: C !TIME TO FLY, JACK.
333: F=MOVETO(BATDRP(RND(9)+1),WINNER)
334: C !SELECT RANDOM DEST.
335: RAPPL1=.FALSE.
336: C !INDICATE NEW DESC NEEDED.
337: RETURN
338: C
339: C R18-- DOME ROOM. STATE DEPENDS ON WHETHER ROPE TIED TO RAILING.
340: C
341: 18000 IF(PRSA.NE.LOOKW) GO TO 18500
342: C !LOOK?
343: CALL RSPEAK(51)
344: C !DESCRIBE.
345: IF(DOMEF) CALL RSPEAK(52)
346: C !IF ROPE, DESCRIBE.
347: RETURN
348: C
349: 18500 IF(PRSA.EQ.LEAPW) CALL JIGSUP(53)
350: C !DID HE JUMP???
351: RETURN
352: C
353: C R19-- TORCH ROOM. ALSO DEPENDS ON WHETHER ROPE TIED TO RAILING.
354: C
355: 19000 IF(PRSA.NE.LOOKW) RETURN
356: C !LOOK?
357: CALL RSPEAK(54)
358: C !DESCRIBE.
359: IF(DOMEF) CALL RSPEAK(55)
360: C !IF ROPE, DESCRIBE.
361: RETURN
362: C
363: C R20-- CAROUSEL ROOM. SPIN HIM OR KILL HIM.
364: C
365: 20000 IF(PRSA.NE.LOOKW) GO TO 20500
366: C !LOOK?
367: CALL RSPEAK(56)
368: C !DESCRIBE.
369: IF(.NOT.CAROFF) CALL RSPEAK(57)
370: C !IF NOT FLIPPED, SPIN.
371: RETURN
372: C
373: 20500 IF((PRSA.EQ.WALKIW).AND.CAROZF) CALL JIGSUP(58)
374: C !WALKED IN.
375: RETURN
376: C RAPPL1, PAGE 7
377: C
378: C R21-- LLD ROOM. HANDLE EXORCISE, DESCRIPTIONS.
379: C
380: 21000 IF(PRSA.NE.LOOKW) GO TO 21500
381: C !LOOK?
382: CALL RSPEAK(59)
383: C !DESCRIBE.
384: IF(.NOT.LLDF) CALL RSPEAK(60)
385: C !IF NOT VANISHED, GHOSTS.
386: RETURN
387: C
388: 21500 IF(PRSA.NE.EXORCW) RETURN
389: C !EXORCISE?
390: IF((OADV(BELL).EQ.WINNER).AND.(OADV(BOOK).EQ.WINNER).AND.
391: & (OADV(CANDL).EQ.WINNER).AND.QON(CANDL)) GO TO 21600
392: CALL RSPEAK(62)
393: C !NOT EQUIPPED.
394: RETURN
395: C
396: 21600 IF(QHERE(GHOST,HERE)) GO TO 21700
397: C !GHOST HERE?
398: CALL JIGSUP(61)
399: C !NOPE, EXORCISE YOU.
400: RETURN
401: C
402: 21700 CALL NEWSTA(GHOST,63,0,0,0)
403: C !VANISH GHOST.
404: LLDF=.TRUE.
405: C !OPEN GATE.
406: RETURN
407: C
408: C R22-- LLD2-ROOM. IS HIS HEAD ON A POLE?
409: C
410: 22000 IF(PRSA.NE.LOOKW) RETURN
411: C !LOOK?
412: CALL RSPEAK(64)
413: C !DESCRIBE.
414: IF(ONPOLF) CALL RSPEAK(65)
415: C !ON POLE?
416: RETURN
417: C
418: C R23-- DAM ROOM. DESCRIBE RESERVOIR, PANEL.
419: C
420: 23000 IF(PRSA.NE.LOOKW) RETURN
421: C !LOOK?
422: CALL RSPEAK(66)
423: C !DESCRIBE.
424: I=67
425: IF(LWTIDF) I=68
426: CALL RSPEAK(I)
427: C !DESCRIBE RESERVOIR.
428: CALL RSPEAK(69)
429: C !DESCRIBE PANEL.
430: IF(GATEF) CALL RSPEAK(70)
431: C !BUBBLE IS GLOWING.
432: RETURN
433: C
434: C R24-- TREE ROOM
435: C
436: 24000 IF(PRSA.NE.LOOKW) RETURN
437: C !LOOK?
438: CALL RSPEAK(660)
439: C !DESCRIBE.
440: I=661
441: C !SET FLAG FOR BELOW.
442: DO 24200 J=1,OLNT
443: C !DESCRIBE OBJ IN FORE3.
444: IF(.NOT.QHERE(J,FORE3).OR.(J.EQ.FTREE)) GO TO 24200
445: CALL RSPEAK(I)
446: C !SET STAGE,
447: I=0
448: CALL RSPSUB(502,ODESC2(J))
449: C !DESCRIBE.
450: 24200 CONTINUE
451: RETURN
452: C RAPPL1, PAGE 8
453: C
454: C R25-- CYCLOPS-ROOM. DEPENDS ON CYCLOPS STATE, ASLEEP FLAG, MAGIC FLAG.
455: C
456: 25000 IF(PRSA.NE.LOOKW) RETURN
457: C !LOOK?
458: CALL RSPEAK(606)
459: C !DESCRIBE.
460: I=607
461: C !ASSUME BASIC STATE.
462: IF(RVCYC.GT.0) I=608
463: C !>0? HUNGRY.
464: IF(RVCYC.LT.0) I=609
465: C !<0? THIRSTY.
466: IF(CYCLOF) I=610
467: C !ASLEEP?
468: IF(MAGICF) I=611
469: C !GONE?
470: CALL RSPEAK(I)
471: C !DESCRIBE.
472: IF(.NOT.CYCLOF .AND.(RVCYC.NE.0))
473: & CALL RSPEAK(193+IABS(RVCYC))
474: RETURN
475: C
476: C R26-- BANK BOX ROOM.
477: C
478: 26000 IF(PRSA.NE.WALKIW) RETURN
479: C !SURPRISE HIM.
480: DO 26100 I=1,8,2
481: C !SCOLRM DEPENDS ON
482: IF(FROMDR.EQ.SCOLDR(I)) SCOLRM=SCOLDR(I+1)
483: 26100 CONTINUE
484: C !ENTRY DIRECTION.
485: RETURN
486: C
487: C R27-- TREASURE ROOM.
488: C
489: 27000 IF((PRSA.NE.WALKIW).OR. .NOT.THFACT)
490: & RETURN
491: IF(OROOM(THIEF).NE.HERE)
492: & CALL NEWSTA(THIEF,82,HERE,0,0)
493: THFPOS=HERE
494: C !RESET SEARCH PATTERN.
495: OFLAG2(THIEF)=or(OFLAG2(THIEF),FITEBT)
496: IF(OROOM(CHALI).EQ.HERE)
497: & OFLAG1(CHALI)=and(OFLAG1(CHALI),not(TAKEBT))
498: C
499: C VANISH EVERYTHING IN ROOM
500: C
501: J=0
502: C !ASSUME NOTHING TO VANISH.
503: DO 27200 I=1,OLNT
504: IF((I.EQ.CHALI).OR.(I.EQ.THIEF).OR..NOT.QHERE(I,HERE))
505: & GO TO 27200
506: J=83
507: C !FLAG BYEBYE.
508: OFLAG1(I)=and(OFLAG1(I),not(VISIBT))
509: 27200 CONTINUE
510: CALL RSPEAK(J)
511: C !DESCRIBE.
512: RETURN
513: C
514: C R28-- CLIFF FUNCTION. SEE IF CARRYING INFLATED BOAT.
515: C
516: 28000 DEFLAF=OADV(RBOAT).NE.WINNER
517: C !TRUE IF NOT CARRYING.
518: RETURN
519: C RAPPL1, PAGE 9
520: C
521: C R29-- RIVR4 ROOM. PLAY WITH BUOY.
522: C
523: 29000 IF(.NOT.BUOYF.OR.(OADV(BUOY).NE.WINNER)) RETURN
524: CALL RSPEAK(84)
525: C !GIVE HINT,
526: BUOYF=.FALSE.
527: C !THEN DISABLE.
528: RETURN
529: C
530: C R30-- OVERFALLS. DOOM.
531: C
532: 30000 IF(PRSA.NE.LOOKW) CALL JIGSUP(85)
533: C !OVER YOU GO.
534: RETURN
535: C
536: C R31-- BEACH ROOM. DIG A HOLE.
537: C
538: 31000 IF((PRSA.NE.DIGW).OR.(PRSO.NE.SHOVE)) RETURN
539: RVSND=RVSND+1
540: C !INCREMENT DIG STATE.
541: GO TO (31100,31100,31100,31400,31500),RVSND
542: C !PROCESS STATE.
543: CALL BUG(2,RVSND)
544: C
545: 31100 CALL RSPEAK(85+RVSND)
546: C !1-3... DISCOURAGE HIM.
547: RETURN
548: C
549: 31400 I=89
550: C !ASSUME DISCOVERY.
551: IF(and(OFLAG1(STATU),VISIBT).NE.0) I=88
552: CALL RSPEAK(I)
553: OFLAG1(STATU)=or(OFLAG1(STATU),VISIBT)
554: RETURN
555: C
556: 31500 RVSND=0
557: C !5... SAND COLLAPSES
558: CALL JIGSUP(90)
559: C !AND SO DOES HE.
560: RETURN
561: C
562: C R32-- TCAVE ROOM. DIG A HOLE IN GUANO.
563: C
564: 32000 IF((PRSA.NE.DIGW).OR.(PRSO.NE.SHOVE)) RETURN
565: I=91
566: C !ASSUME NO GUANO.
567: IF(.NOT. QHERE(GUANO,HERE)) GO TO 32100
568: C !IS IT HERE?
569: RVGUA=MIN0(4,RVGUA+1)
570: C !YES, SET NEW STATE.
571: I=91+RVGUA
572: C !GET NASTY REMARK.
573: 32100 CALL RSPEAK(I)
574: C !DESCRIBE.
575: RETURN
576: C
577: C R33-- FALLS ROOM
578: C
579: 33000 IF(PRSA.NE.LOOKW) RETURN
580: C !LOOK?
581: CALL RSPEAK(96)
582: C !DESCRIBE.
583: I=97
584: C !ASSUME NO RAINBOW.
585: IF(RAINBF) I=98
586: C !GOT ONE?
587: CALL RSPEAK(I)
588: C !DESCRIBE.
589: RETURN
590: C RAPPL1, PAGE 10
591: C
592: C R34-- LEDGE FUNCTION. LEDGE CAN COLLAPSE.
593: C
594: 34000 IF(PRSA.NE.LOOKW) RETURN
595: C !LOOK?
596: CALL RSPEAK(100)
597: C !DESCRIBE.
598: I=102
599: C !ASSUME SAFE ROOM OK.
600: IF(and(RFLAG(MSAFE),RMUNG).NE.0) I=101
601: CALL RSPEAK(I)
602: C !DESCRIBE.
603: RETURN
604: C
605: C R35-- SAFE ROOM. STATE DEPENDS ON WHETHER SAFE BLOWN.
606: C
607: 35000 IF(PRSA.NE.LOOKW) RETURN
608: C !LOOK?
609: CALL RSPEAK(104)
610: C !DESCRIBE.
611: I=105
612: C !ASSUME OK.
613: IF(SAFEF) I=106
614: C !BLOWN?
615: CALL RSPEAK(I)
616: C !DESCRIBE.
617: RETURN
618: C
619: C R36-- MAGNET ROOM. DESCRIBE, CHECK FOR SPINDIZZY DOOM.
620: C
621: 36000 IF(PRSA.NE.LOOKW) GO TO 36500
622: C !LOOK?
623: CALL RSPEAK(107)
624: C !DESCRIBE.
625: RETURN
626: C
627: 36500 IF((PRSA.NE.WALKIW).OR. .NOT.CAROFF) RETURN
628: C !WALKIN ON FLIPPED?
629: IF(CAROZF) GO TO 36600
630: C !ZOOM?
631: CALL RSPEAK(108)
632: C !NO, SPIN HIS COMPASS.
633: RETURN
634: C
635: 36600 I=58
636: C !SPIN HIS INSIDES.
637: IF(WINNER.NE.PLAYER) I=99
638: C !SPIN ROBOT.
639: CALL JIGSUP(I)
640: C !DEAD.
641: RETURN
642: C
643: C R37-- CAGE ROOM. IF SOLVED CAGE, MOVE TO OTHER CAGE ROOM.
644: C
645: 37000 IF(CAGESF) F=MOVETO(CAGER,WINNER)
646: C !IF SOLVED, MOVE.
647: RETURN
648: C
649: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.