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