reorganization to move ufsmount ops to be vnode ops; blkatoff
[unix-history] / usr / src / contrib / dungeon / sobjs.F
CommitLineData
8b22683c
KB
1C SOBJS- SIMPLE OBJECTS PROCESSOR
2C OBJECTS IN THIS MODULE CANNOT CALL RMINFO, JIGSUP,
3C MAJOR VERBS, OR OTHER NON-RESIDENT SUBROUTINES
4C
5C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
6C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
7C WRITTEN BY R. M. SUPNIK
8C
9C DECLARATIONS
10C
11 LOGICAL FUNCTION SOBJS(RI,ARG)
12 IMPLICIT INTEGER (A-Z)
13 LOGICAL QOPEN
14 LOGICAL MOVETO,OPNCLS,LIT
15 LOGICAL QHERE,F
16#include "parser.h"
17#include "gamestate.h"
18#include "state.h"
19#include "rooms.h"
20#include "rflag.h"
21#include "rindex.h"
22#include "objects.h"
23#include "oflags.h"
24#include "oindex.h"
25#include "clock.h"
26
27#include "villians.h"
28#include "advers.h"
29#include "verbs.h"
30#include "flags.h"
31C
32C FUNCTIONS AND DATA
33C
34 QOPEN(R)=and(OFLAG2(R),OPENBT).NE.0
35C SOBJS, PAGE 2
36C
37 IF(PRSO.GT.220) GO TO 5
38 IF(PRSO.NE.0) ODO2=ODESC2(PRSO)
395 IF(PRSI.NE.0) ODI2=ODESC2(PRSI)
40 AV=AVEHIC(WINNER)
41 SOBJS=.TRUE.
42C
43 GO TO (1000,3000,4000,6000,7000,8000,9000,
44& 13000,14000,16000,17000,
45& 21000,23000,24000,27000,28000,29000,30000,
46& 31000,33000,34000,36000,37000,38000,
47& 41000,42000,43000,44000,46000,
48& 53000,56000)
49& RI
50 CALL BUG(6,RI)
51C
52C RETURN HERE TO DECLARE FALSE RESULT
53C
5410 SOBJS=.FALSE.
55 RETURN
56C SOBJS, PAGE 3
57C
58C O1-- GUNK FUNCTION
59C
601000 IF(OCAN(GUNK).EQ.0) GO TO 10
61C !NOT INSIDE? F
62 CALL NEWSTA(GUNK,122,0,0,0)
63C !FALLS APART.
64 RETURN
65C
66C O2-- TROPHY CASE
67C
683000 IF(PRSA.NE.TAKEW) GO TO 10
69C !TAKE?
70 CALL RSPEAK(128)
71C !CANT.
72 RETURN
73C
74C O3-- BOTTLE FUNCTION
75C
764000 IF(PRSA.NE.THROWW) GO TO 4100
77C !THROW?
78 CALL NEWSTA(PRSO,129,0,0,0)
79C !BREAKS.
80 RETURN
81C
824100 IF(PRSA.NE.MUNGW) GO TO 10
83C !MUNG?
84 CALL NEWSTA(PRSO,131,0,0,0)
85C !BREAKS.
86 RETURN
87C SOBJS, PAGE 4
88C
89C O4-- ROPE FUNCTION
90C
916000 IF(HERE.EQ.DOME) GO TO 6100
92C !IN DOME?
93 DOMEF=.FALSE.
94C !NO,
95 IF(PRSA.NE.UNTIEW) GO TO 6050
96C !UNTIE?
97 CALL RSPEAK(134)
98C !CANT
99 RETURN
100C
1016050 IF(PRSA.NE.TIEW) GO TO 10
102C !TIE?
103 CALL RSPEAK(135)
104C !CANT TIE
105 RETURN
106C
1076100 IF((PRSA.NE.TIEW).OR.(PRSI.NE.RAILI)) GO TO 6200
108 IF(DOMEF) GO TO 6150
109C !ALREADY TIED?
110 DOMEF=.TRUE.
111C !NO, TIE IT.
112 OFLAG1(ROPE)=or(OFLAG1(ROPE),NDSCBT)
113 OFLAG2(ROPE)=or(OFLAG2(ROPE),CLMBBT)
114 CALL NEWSTA(ROPE,137,DOME,0,0)
115 RETURN
116C
1176150 CALL RSPEAK(136)
118C !DUMMY.
119 RETURN
120C
1216200 IF(PRSA.NE.UNTIEW) GO TO 6300
122C !UNTIE?
123 IF(DOMEF) GO TO 6250
124C !TIED?
125 CALL RSPEAK(134)
126C !NO, DUMMY.
127 RETURN
128C
1296250 DOMEF=.FALSE.
130C !YES, UNTIE IT.
131 OFLAG1(ROPE)=and(OFLAG1(ROPE), not(NDSCBT))
132 OFLAG2(ROPE)=and(OFLAG2(ROPE), not(CLMBBT))
133 CALL RSPEAK(139)
134 RETURN
135C
1366300 IF(DOMEF.OR.(PRSA.NE.DROPW)) GO TO 6400
137C !DROP & UNTIED?
138 CALL NEWSTA(ROPE,140,MTORC,0,0)
139C !YES, DROP.
140 RETURN
141C
1426400 IF((PRSA.NE.TAKEW).OR. .NOT.DOMEF) GO TO 10
143 CALL RSPEAK(141)
144C !TAKE & TIED.
145 RETURN
146C
147C O5-- SWORD FUNCTION
148C
1497000 IF((PRSA.EQ.TAKEW).AND.(WINNER.EQ.PLAYER))
150& SWDACT=.TRUE.
151 GO TO 10
152C
153C O6-- LANTERN
154C
1558000 IF(PRSA.NE.THROWW) GO TO 8100
156C !THROW?
157 CALL NEWSTA(LAMP,0,0,0,0)
158C !KILL LAMP,
159 CALL NEWSTA(BLAMP,142,HERE,0,0)
160C !REPLACE WITH BROKEN.
161 RETURN
162C
1638100 IF(PRSA.EQ.TRNONW) CFLAG(CEVLNT)=.TRUE.
164 IF(PRSA.EQ.TRNOFW) CFLAG(CEVLNT)=.FALSE.
165 GO TO 10
166C
167C O7-- RUG FUNCTION
168C
1699000 IF(PRSA.NE.RAISEW) GO TO 9100
170C !RAISE?
171 CALL RSPEAK(143)
172C !CANT
173 RETURN
174C
1759100 IF(PRSA.NE.TAKEW) GO TO 9200
176C !TAKE?
177 CALL RSPEAK(144)
178C !CANT
179 RETURN
180C
1819200 IF(PRSA.NE.MOVEW) GO TO 9300
182C !MOVE?
183 CALL RSPEAK(145+ORRUG)
184 ORRUG=1
185 OFLAG1(DOOR)=or(OFLAG1(DOOR),VISIBT)
186 RETURN
187C
1889300 IF((PRSA.NE.LOOKUW).OR.(ORRUG.NE.0).OR.
189& QOPEN(DOOR)) GO TO 10
190 CALL RSPEAK(345)
191 RETURN
192C SOBJS, PAGE 5
193C
194C O8-- SKELETON
195C
19613000 I=ROBRM(HERE,100,LLD2,0,0)+ROBADV(WINNER,LLD2,0,0)
197 IF(I.NE.0) CALL RSPEAK(162)
198C !IF ROBBED, SAY SO.
199 RETURN
200C
201C O9-- MIRROR
202C
20314000 IF(MIRRMF.OR.(PRSA.NE.RUBW)) GO TO 14500
204 MROOM=xor(HERE,1)
205 DO 14100 I=1,OLNT
206C !INTERCHANGE OBJS.
207 IF(OROOM(I).EQ.HERE) OROOM(I)=-1
208 IF(OROOM(I).EQ.MROOM) OROOM(I)=HERE
209 IF(OROOM(I).EQ.-1) OROOM(I)=MROOM
21014100 CONTINUE
211 F=MOVETO(MROOM,WINNER)
212 CALL RSPEAK(163)
213C !SHAKE WORLD.
214 RETURN
215C
21614500 IF((PRSA.NE.LOOKW).AND.(PRSA.NE.LOOKIW).AND.
217& (PRSA.NE.EXAMIW)) GO TO 14600
218 I=164
219C !MIRROR OK.
220 IF(MIRRMF) I=165
221C !MIRROR DEAD.
222 CALL RSPEAK(I)
223 RETURN
224C
22514600 IF(PRSA.NE.TAKEW) GO TO 14700
226C !TAKE?
227 CALL RSPEAK(166)
228C !JOKE.
229 RETURN
230C
23114700 IF((PRSA.NE.MUNGW).AND.(PRSA.NE.THROWW)) GO TO 10
232 I=167
233C !MIRROR BREAKS.
234 IF(MIRRMF) I=168
235C !MIRROR ALREADY BROKEN.
236 MIRRMF=.TRUE.
237 BADLKF=.TRUE.
238 CALL RSPEAK(I)
239 RETURN
240C SOBJS, PAGE 6
241C
242C O10-- DUMBWAITER
243C
24416000 IF(PRSA.NE.RAISEW) GO TO 16100
245C !RAISE?
246 IF(CAGETF) GO TO 16400
247C !ALREADY AT TOP?
248 CALL NEWSTA(TBASK,175,TSHAF,0,0)
249C !NO, RAISE BASKET.
250 CALL NEWSTA(FBASK,0,BSHAF,0,0)
251 CAGETF=.TRUE.
252C !AT TOP.
253 RETURN
254C
25516100 IF(PRSA.NE.LOWERW) GO TO 16200
256C !LOWER?
257 IF(.NOT.CAGETF) GO TO 16400
258C !ALREADY AT BOTTOM?
259 CALL NEWSTA(TBASK,176,BSHAF,0,0)
260C !NO, LOWER BASKET.
261 CALL NEWSTA(FBASK,0,TSHAF,0,0)
262 CAGETF=.FALSE.
263 IF(.NOT.LIT(HERE)) CALL RSPEAK(406)
264C !IF DARK, DIE.
265 RETURN
266C
26716200 IF((PRSO.NE.FBASK).AND.(PRSI.NE.FBASK)) GO TO 16300
268 CALL RSPEAK(130)
269C !WRONG BASKET.
270 RETURN
271C
27216300 IF(PRSA.NE.TAKEW) GO TO 10
273C !TAKE?
274 CALL RSPEAK(177)
275C !JOKE.
276 RETURN
277C
27816400 CALL RSPEAK(125+RND(3))
279C !DUMMY.
280 RETURN
281C
282C O11-- GHOST FUNCTION
283C
28417000 I=178
285C !ASSUME DIRECT.
286 IF(PRSO.NE.GHOST) I=179
287C !IF NOT, INDIRECT.
288 CALL RSPEAK(I)
289 RETURN
290C !SPEAK AND EXIT.
291C SOBJS, PAGE 7
292C
293C O12-- TUBE
294C
29521000 IF((PRSA.NE.PUTW).OR.(PRSI.NE.TUBE)) GO TO 10
296 CALL RSPEAK(186)
297C !CANT PUT BACK IN.
298 RETURN
299C
300C O13-- CHALICE
301C
30223000 IF((PRSA.NE.TAKEW).OR.(OCAN(PRSO).NE.0).OR.
303& (OROOM(PRSO).NE.TREAS).OR.(OROOM(THIEF).NE.TREAS).OR.
304& (and(OFLAG2(THIEF),FITEBT).EQ.0).OR.
305& .NOT. THFACT) GO TO 10
306 CALL RSPEAK(204)
307C !CANT TAKE.
308 RETURN
309C
310C O14-- PAINTING
311C
31224000 IF(PRSA.NE.MUNGW) GO TO 10
313C !MUNG?
314 CALL RSPEAK(205)
315C !DESTROY PAINTING.
316 OFVAL(PRSO)=0
317 OTVAL(PRSO)=0
318 ODESC1(PRSO)=207
319 ODESC2(PRSO)=206
320 RETURN
321C SOBJS, PAGE 8
322C
323C O15-- BOLT
324C
32527000 IF(PRSA.NE.TURNW) GO TO 10
326C !TURN BOLT?
327 IF(PRSI.NE.WRENC) GO TO 27500
328C !WITH WRENCH?
329 IF(GATEF) GO TO 27100
330C !PROPER BUTTON PUSHED?
331 CALL RSPEAK(210)
332C !NO, LOSE.
333 RETURN
334C
33527100 IF(LWTIDF) GO TO 27200
336C !LOW TIDE NOW?
337 LWTIDF=.TRUE.
338C !NO, EMPTY DAM.
339 CALL RSPEAK(211)
340 OFLAG2(COFFI)=and(OFLAG2(COFFI), not(SCRDBT))
341 OFLAG1(TRUNK)=or(OFLAG1(TRUNK),VISIBT)
342 RFLAG(RESER)=and(or(RFLAG(RESER),RLAND)
343& ,not(RWATER+RSEEN))
344 RETURN
345C
34627200 LWTIDF=.FALSE.
347C !YES, FILL DAM.
348 CALL RSPEAK(212)
349 IF(QHERE(TRUNK,RESER))
350& OFLAG1(TRUNK)=and(OFLAG1(TRUNK), not(VISIBT))
351 RFLAG(RESER)=and(or(RFLAG(RESER),RWATER) ,not(RLAND))
352 RETURN
353C
35427500 CALL RSPSUB(299,ODI2)
355C !NOT WITH THAT.
356 RETURN
357C
358C O16-- GRATING
359C
36028000 IF((PRSA.NE.OPENW).AND.(PRSA.NE.CLOSEW)) GO TO 10
361 IF(GRUNLF) GO TO 28200
362C !UNLOCKED?
363 CALL RSPEAK(214)
364C !NO, LOCKED.
365 RETURN
366C
36728200 I=215
368C !UNLOCKED, VIEW FRM CLR.
369 IF(HERE.NE.CLEAR) I=216
370C !VIEW FROM BELOW.
371 SOBJS=OPNCLS(GRATE,I,885)
372C !OPEN/CLOSE.
373 RFLAG(MGRAT)=and(RFLAG(MGRAT), not(RLIGHT))
374 IF(QOPEN(GRATE)) RFLAG(MGRAT)=or(RFLAG(MGRAT),RLIGHT)
375 IF(.NOT.LIT(HERE)) CALL RSPEAK(406)
376C !IF DARK, DIE.
377 RETURN
378C
379C O17-- TRAP DOOR
380C
38129000 IF(HERE.NE.LROOM) GO TO 29100
382C !FROM LIVING ROOM?
383 SOBJS=OPNCLS(DOOR,218,219)
384C !OPEN/CLOSE.
385 RETURN
386C
38729100 IF(HERE.NE.CELLA) GO TO 10
388C !FROM CELLAR?
389 IF((PRSA.NE.OPENW).OR.QOPEN(DOOR)) GO TO 29200
390 CALL RSPEAK(220)
391C !CANT OPEN CLOSED DOOR.
392 RETURN
393C
39429200 SOBJS=OPNCLS(DOOR,0,22)
395C !NORMAL OPEN/CLOSE.
396 RETURN
397C
398C O18-- DURABLE DOOR
399C
40030000 I=0
401C !ASSUME NO APPL.
402 IF(PRSA.EQ.OPENW) I=221
403C !OPEN?
404 IF(PRSA.EQ.BURNW) I=222
405C !BURN?
406 IF(PRSA.EQ.MUNGW) I=223+RND(3)
407C !MUNG?
408 IF(I.EQ.0) GO TO 10
409 CALL RSPEAK(I)
410 RETURN
411C
412C O19-- MASTER SWITCH
413C
41431000 IF(PRSA.NE.TURNW) GO TO 10
415C !TURN?
416 IF(PRSI.NE.SCREW) GO TO 31500
417C !WITH SCREWDRIVER?
418 IF(QOPEN(MACHI)) GO TO 31600
419C !LID UP?
420 CALL RSPEAK(226)
421C !NO, ACTIVATE.
422 IF(OCAN(COAL).NE.MACHI) GO TO 31400
423C !COAL INSIDE?
424 CALL NEWSTA(COAL,0,0,0,0)
425C !KILL COAL,
426 CALL NEWSTA(DIAMO,0,0,MACHI,0)
427C !REPLACE WITH DIAMOND.
428 RETURN
429C
43031400 DO 31450 I=1,OLNT
431C !KILL NONCOAL OBJECTS.
432 IF(OCAN(I).NE.MACHI) GO TO 31450
433C !INSIDE MACHINE?
434 CALL NEWSTA(I,0,0,0,0)
435C !KILL OBJECT AND CONTENTS.
436 CALL NEWSTA(GUNK,0,0,MACHI,0)
437C !REDUCE TO GUNK.
43831450 CONTINUE
439 RETURN
440C
44131500 CALL RSPSUB(300,ODI2)
442C !CANT TURN WITH THAT.
443 RETURN
444C
44531600 CALL RSPEAK(227)
446C !LID IS UP.
447 RETURN
448C SOBJS, PAGE 9
449C
450C O20-- LEAK
451C
45233000 IF((PRSO.NE.LEAK).OR.(PRSA.NE.PLUGW).OR.(RVMNT.LE.0))
453& GO TO 10
454 IF(PRSI.NE.PUTTY) GO TO 33100
455C !WITH PUTTY?
456 RVMNT=-1
457C !DISABLE LEAK.
458 CTICK(CEVMNT)=0
459 CALL RSPEAK(577)
460 RETURN
461C
46233100 CALL RSPSUB(301,ODI2)
463C !CANT WITH THAT.
464 RETURN
465C
466C O21-- DROWNING BUTTONS
467C
46834000 IF(PRSA.NE.PUSHW) GO TO 10
469C !PUSH?
470 GO TO (34100,34200,34300,34400),(PRSO-RBUTT+1)
471 GO TO 10
472C !NOT A BUTTON.
473C
47434100 RFLAG(HERE)=xor(RFLAG(HERE),RLIGHT)
475 I=230
476 IF(and(RFLAG(HERE),RLIGHT).NE.0) I=231
477 CALL RSPEAK(I)
478 RETURN
479C
48034200 GATEF=.TRUE.
481C !RELEASE GATE.
482 CALL RSPEAK(232)
483 RETURN
484C
48534300 GATEF=.FALSE.
486C !INTERLOCK GATE.
487 CALL RSPEAK(232)
488 RETURN
489C
49034400 IF(RVMNT.NE.0) GO TO 34500
491C !LEAK ALREADY STARTED?
492 CALL RSPEAK(233)
493C !NO, START LEAK.
494 RVMNT=1
495 CTICK(CEVMNT)=-1
496 RETURN
497C
49834500 CALL RSPEAK(234)
499C !BUTTON JAMMED.
500 RETURN
501C
502C O22-- INFLATABLE BOAT
503C
50436000 IF(PRSA.NE.INFLAW) GO TO 10
505C !INFLATE?
506 IF(OROOM(IBOAT).NE.0) GO TO 36100
507C !IN ROOM?
508 CALL RSPEAK(235)
509C !NO, JOKE.
510 RETURN
511C
51236100 IF(PRSI.NE.PUMP) GO TO 36200
513C !WITH PUMP?
514 CALL NEWSTA(IBOAT,0,0,0,0)
515C !KILL DEFL BOAT,
516 CALL NEWSTA(RBOAT,236,HERE,0,0)
517C !REPL WITH INF.
518 DEFLAF=.FALSE.
519 RETURN
520C
52136200 I=237
522C !JOKES.
523 IF(PRSI.NE.LUNGS) I=303
524 CALL RSPSUB(I,ODI2)
525 RETURN
526C
527C O23-- DEFLATED BOAT
528C
52937000 IF(PRSA.NE.INFLAW) GO TO 37100
530C !INFLATE?
531 CALL RSPEAK(238)
532C !JOKE.
533 RETURN
534C
53537100 IF(PRSA.NE.PLUGW) GO TO 10
536C !PLUG?
537 IF(PRSI.NE.PUTTY) GO TO 33100
538C !WITH PUTTY?
539 CALL NEWSTA(IBOAT,239,OROOM(DBOAT),OCAN(DBOAT),OADV(DBOAT))
540 CALL NEWSTA(DBOAT,0,0,0,0)
541C !KILL DEFL BOAT, REPL.
542 RETURN
543C SOBJS, PAGE 10
544C
545C O24-- RUBBER BOAT
546C
54738000 IF(ARG.NE.0) GO TO 10
548C !DISMISS READIN, OUT.
549 IF((PRSA.NE.BOARDW).OR.(OADV(STICK).NE.WINNER)) GO TO 38100
550 CALL NEWSTA(RBOAT,0,0,0,0)
551C !KILL INFL BOAT,
552 CALL NEWSTA(DBOAT,240,HERE,0,0)
553C !REPL WITH DEAD.
554 DEFLAF=.TRUE.
555 RETURN
556C
55738100 IF(PRSA.NE.INFLAW) GO TO 38200
558C !INFLATE?
559 CALL RSPEAK(367)
560C !YES, JOKE.
561 RETURN
562C
56338200 IF(PRSA.NE.DEFLAW) GO TO 10
564C !DEFLATE?
565 IF(AV.EQ.RBOAT) GO TO 38300
566C !IN BOAT?
567 IF(OROOM(RBOAT).EQ.0) GO TO 38400
568C !ON GROUND?
569 CALL NEWSTA(RBOAT,0,0,0,0)
570C !KILL INFL BOAT,
571 CALL NEWSTA(IBOAT,241,HERE,0,0)
572C !REPL WITH DEFL.
573 DEFLAF=.TRUE.
574 RETURN
575C
57638300 CALL RSPEAK(242)
577C !IN BOAT.
578 RETURN
579C
58038400 CALL RSPEAK(243)
581C !NOT ON GROUND.
582 RETURN
583C
584C O25-- BRAIDED ROPE
585C
58641000 IF((PRSA.NE.TIEW).OR.(PRSO.NE.BROPE).OR.
587& ((PRSI.NE.HOOK1).AND.(PRSI.NE.HOOK2)))
588& GO TO 41500
589 BTIEF=PRSI
590C !RECORD LOCATION.
591 CFLAG(CEVBAL)=.FALSE.
592C !STALL ASCENT.
593 CALL RSPEAK(248)
594 RETURN
595C
59641500 IF((PRSA.NE.UNTIEW).OR.(PRSO.NE.BROPE)) GO TO 10
597 IF(BTIEF.NE.0) GO TO 41600
598C !TIED UP?
599 CALL RSPEAK(249)
600C !NO, JOKE.
601 RETURN
602C
60341600 CALL RSPEAK(250)
604 BTIEF=0
605C !UNTIE.
606 CTICK(CEVBAL)=3
607C !RESTART CLOCK.
608 CFLAG(CEVBAL)=.TRUE.
609 RETURN
610C
611C O26-- SAFE
612C
61342000 I=0
614C !ASSUME UNPROCESSED.
615 IF(PRSA.EQ.TAKEW) I=251
616C !TAKE?
617 IF((PRSA.EQ.OPENW).AND.SAFEF) I=253
618C !OPEN AFTER BLAST?
619 IF((PRSA.EQ.OPENW).AND..NOT.SAFEF) I=254
620C !OPEN BEFORE BLAST?
621 IF((PRSA.EQ.CLOSEW).AND.SAFEF) I=253
622C !CLOSE AFTER?
623 IF((PRSA.EQ.CLOSEW).AND..NOT.SAFEF) I=255
624 IF(I.EQ.0) GO TO 10
625 CALL RSPEAK(I)
626 RETURN
627C
628C O27-- FUSE
629C
63043000 IF(PRSA.NE.BURNW) GO TO 10
631C !BURN?
632 CALL RSPEAK(256)
633 CTICK(CEVFUS)=2
634C !START COUNTDOWN.
635 RETURN
636C
637C O28-- GNOME
638C
63944000 IF((PRSA.NE.GIVEW).AND.(PRSA.NE.THROWW)) GO TO 44500
640 IF(OTVAL(PRSO).EQ.0) GO TO 44100
641C !TREASURE?
642 CALL RSPSUB(257,ODO2)
643C !YES, GET DOOR.
644 CALL NEWSTA(PRSO,0,0,0,0)
645 CALL NEWSTA(GNOME,0,0,0,0)
646C !VANISH GNOME.
647 GNODRF=.TRUE.
648 RETURN
649C
65044100 CALL RSPSUB(258,ODO2)
651C !NO, LOSE OBJECT.
652 CALL NEWSTA(PRSO,0,0,0,0)
653 RETURN
654C
65544500 CALL RSPEAK(259)
656C !NERVOUS GNOME.
657 IF(.NOT.GNOMEF) CTICK(CEVGNO)=5
658C !SCHEDULE BYEBYE.
659 GNOMEF=.TRUE.
660 RETURN
661C
662C O29-- COKE BOTTLES
663C
66446000 IF((PRSA.NE.THROWW).AND.(PRSA.NE.MUNGW)) GO TO 10
665 CALL NEWSTA(PRSO,262,0,0,0)
666C !MUNG BOTTLES.
667 RETURN
668C SOBJS, PAGE 11
669C
670C
671C O30-- ROBOT
672C
67353000 IF(PRSA.NE.GIVEW) GO TO 53200
674C !GIVE?
675 CALL NEWSTA(PRSO,0,0,0,AROBOT)
676C !PUT ON ROBOT.
677 CALL RSPSUB(302,ODO2)
678 RETURN
679C
68053200 IF((PRSA.NE.MUNGW).AND.(PRSA.NE.THROWW)) GO TO 10
681 CALL NEWSTA(ROBOT,285,0,0,0)
682C !KILL ROBOT.
683 RETURN
684C
685C O31-- GRUE
686C
68756000 IF(PRSA.NE.EXAMIW) GO TO 56100
688C !EXAMINE?
689 CALL RSPEAK(288)
690 RETURN
691C
69256100 IF(PRSA.NE.FINDW) GO TO 10
693C !FIND?
694 CALL RSPEAK(289)
695 RETURN
696C
697 END