1 /* SOBJS-	SIMPLE OBJECTS PROCESSOR */
2 /* 	OBJECTS IN THIS MODULE CANNOT CALL RMINFO, JIGSUP, */
3 /* 	MAJOR VERBS, OR OTHER NON-RESIDENT SUBROUTINES */
4 
5 /*COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142*/
6 /* ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED */
7 /* WRITTEN BY R. M. SUPNIK */
8 
9 #include "funcs.h"
10 #include "vars.h"
11 
sobjs_(ri,arg)12 logical sobjs_(ri, arg)
13 integer ri;
14 integer arg;
15 {
16     /* System generated locals */
17     integer i__1;
18     logical ret_val;
19 
20     /* Local variables */
21     logical f;
22     integer i;
23     integer mroom;
24     integer av;
25     integer odi2 = 0, odo2 = 0;
26 
27     if (prsvec_1.prso > 220) {
28 	goto L5;
29     }
30     if (prsvec_1.prso != 0) {
31 	odo2 = objcts_1.odesc2[prsvec_1.prso - 1];
32     }
33 L5:
34     if (prsvec_1.prsi != 0) {
35 	odi2 = objcts_1.odesc2[prsvec_1.prsi - 1];
36     }
37     av = advs_1.avehic[play_1.winner - 1];
38     ret_val = TRUE_;
39 
40     switch (ri) {
41 	case 1:  goto L1000;
42 	case 2:  goto L3000;
43 	case 3:  goto L4000;
44 	case 4:  goto L6000;
45 	case 5:  goto L7000;
46 	case 6:  goto L8000;
47 	case 7:  goto L9000;
48 	case 8:  goto L13000;
49 	case 9:  goto L14000;
50 	case 10:  goto L16000;
51 	case 11:  goto L17000;
52 	case 12:  goto L21000;
53 	case 13:  goto L23000;
54 	case 14:  goto L24000;
55 	case 15:  goto L27000;
56 	case 16:  goto L28000;
57 	case 17:  goto L29000;
58 	case 18:  goto L30000;
59 	case 19:  goto L31000;
60 	case 20:  goto L33000;
61 	case 21:  goto L34000;
62 	case 22:  goto L36000;
63 	case 23:  goto L37000;
64 	case 24:  goto L38000;
65 	case 25:  goto L41000;
66 	case 26:  goto L42000;
67 	case 27:  goto L43000;
68 	case 28:  goto L44000;
69 	case 29:  goto L46000;
70 	case 30:  goto L53000;
71 	case 31:  goto L56000;
72     }
73     bug_(6, ri);
74 
75 /* RETURN HERE TO DECLARE FALSE RESULT */
76 
77 L10:
78     ret_val = FALSE_;
79     return ret_val;
80 /* SOBJS, PAGE 3 */
81 
82 /* O1--	GUNK FUNCTION */
83 
84 L1000:
85     if (objcts_1.ocan[oindex_1.gunk - 1] == 0) {
86 	goto L10;
87     }
88 /* 						!NOT INSIDE? F */
89     newsta_(oindex_1.gunk, 122, 0, 0, 0);
90 /* 						!FALLS APART. */
91     return ret_val;
92 
93 /* O2--	TROPHY CASE */
94 
95 L3000:
96     if (prsvec_1.prsa != vindex_1.takew) {
97 	goto L10;
98     }
99 /* 						!TAKE? */
100     rspeak_(128);
101 /* 						!CANT. */
102     return ret_val;
103 
104 /* O3--	BOTTLE FUNCTION */
105 
106 L4000:
107     if (prsvec_1.prsa != vindex_1.throww) {
108 	goto L4100;
109     }
110 /* 						!THROW? */
111     newsta_(prsvec_1.prso, 129, 0, 0, 0);
112 /* 						!BREAKS. */
113     return ret_val;
114 
115 L4100:
116     if (prsvec_1.prsa != vindex_1.mungw) {
117 	goto L10;
118     }
119 /* 						!MUNG? */
120     newsta_(prsvec_1.prso, 131, 0, 0, 0);
121 /* 						!BREAKS. */
122     return ret_val;
123 /* SOBJS, PAGE 4 */
124 
125 /* O4--	ROPE FUNCTION */
126 
127 L6000:
128     if (play_1.here == rindex_1.dome) {
129 	goto L6100;
130     }
131 /* 						!IN DOME? */
132     findex_1.domef = FALSE_;
133 /* 						!NO, */
134     if (prsvec_1.prsa != vindex_1.untiew) {
135 	goto L6050;
136     }
137 /* 						!UNTIE? */
138     rspeak_(134);
139 /* 						!CANT */
140     return ret_val;
141 
142 L6050:
143     if (prsvec_1.prsa != vindex_1.tiew) {
144 	goto L10;
145     }
146 /* 						!TIE? */
147     rspeak_(135);
148 /* 						!CANT TIE */
149     return ret_val;
150 
151 L6100:
152     if (prsvec_1.prsa != vindex_1.tiew || prsvec_1.prsi != oindex_1.raili) {
153 	goto L6200;
154     }
155     if (findex_1.domef) {
156 	goto L6150;
157     }
158 /* 						!ALREADY TIED? */
159     findex_1.domef = TRUE_;
160 /* 						!NO, TIE IT. */
161     objcts_1.oflag1[oindex_1.rope - 1] |= NDSCBT;
162     objcts_1.oflag2[oindex_1.rope - 1] |= CLMBBT;
163     newsta_(oindex_1.rope, 137, rindex_1.dome, 0, 0);
164     return ret_val;
165 
166 L6150:
167     rspeak_(136);
168 /* 						!DUMMY. */
169     return ret_val;
170 
171 L6200:
172     if (prsvec_1.prsa != vindex_1.untiew) {
173 	goto L6300;
174     }
175 /* 						!UNTIE? */
176     if (findex_1.domef) {
177 	goto L6250;
178     }
179 /* 						!TIED? */
180     rspeak_(134);
181 /* 						!NO, DUMMY. */
182     return ret_val;
183 
184 L6250:
185     findex_1.domef = FALSE_;
186 /* 						!YES, UNTIE IT. */
187     objcts_1.oflag1[oindex_1.rope - 1] &= ~ NDSCBT;
188     objcts_1.oflag2[oindex_1.rope - 1] &= ~ CLMBBT;
189     rspeak_(139);
190     return ret_val;
191 
192 L6300:
193     if (findex_1.domef || prsvec_1.prsa != vindex_1.dropw) {
194 	goto L6400;
195     }
196 /* 						!DROP & UNTIED? */
197     newsta_(oindex_1.rope, 140, rindex_1.mtorc, 0, 0);
198 /* 						!YES, DROP. */
199     return ret_val;
200 
201 L6400:
202     if (prsvec_1.prsa != vindex_1.takew || ! findex_1.domef) {
203 	goto L10;
204     }
205     rspeak_(141);
206 /* 						!TAKE & TIED. */
207     return ret_val;
208 
209 /* O5--	SWORD FUNCTION */
210 
211 L7000:
212     if (prsvec_1.prsa == vindex_1.takew && play_1.winner == aindex_1.player) {
213 
214 	hack_1.swdact = TRUE_;
215     }
216     goto L10;
217 
218 /* O6--	LANTERN */
219 
220 L8000:
221     if (prsvec_1.prsa != vindex_1.throww) {
222 	goto L8100;
223     }
224 /* 						!THROW? */
225     newsta_(oindex_1.lamp, 0, 0, 0, 0);
226 /* 						!KILL LAMP, */
227     newsta_(oindex_1.blamp, 142, play_1.here, 0, 0);
228 /* 						!REPLACE WITH BROKEN. */
229     return ret_val;
230 
231 L8100:
232     if (prsvec_1.prsa == vindex_1.trnonw) {
233 	cevent_1.cflag[cindex_1.cevlnt - 1] = TRUE_;
234     }
235     if (prsvec_1.prsa == vindex_1.trnofw) {
236 	cevent_1.cflag[cindex_1.cevlnt - 1] = FALSE_;
237     }
238     goto L10;
239 
240 /* O7--	RUG FUNCTION */
241 
242 L9000:
243     if (prsvec_1.prsa != vindex_1.raisew) {
244 	goto L9100;
245     }
246 /* 						!RAISE? */
247     rspeak_(143);
248 /* 						!CANT */
249     return ret_val;
250 
251 L9100:
252     if (prsvec_1.prsa != vindex_1.takew) {
253 	goto L9200;
254     }
255 /* 						!TAKE? */
256     rspeak_(144);
257 /* 						!CANT */
258     return ret_val;
259 
260 L9200:
261     if (prsvec_1.prsa != vindex_1.movew) {
262 	goto L9300;
263     }
264 /* 						!MOVE? */
265     i__1 = findex_1.orrug + 145;
266     rspeak_(i__1);
267     findex_1.orrug = 1;
268     objcts_1.oflag1[oindex_1.door - 1] |= VISIBT;
269     return ret_val;
270 
271 L9300:
272     if (prsvec_1.prsa != vindex_1.lookuw || findex_1.orrug != 0 || (
273 	    objcts_1.oflag2[oindex_1.door - 1] & OPENBT) != 0) {
274 	goto L10;
275     }
276     rspeak_(345);
277     return ret_val;
278 /* SOBJS, PAGE 5 */
279 
280 /* O8--	SKELETON */
281 
282 L13000:
283     i = robrm_(play_1.here, 100, rindex_1.lld2, 0, 0) + robadv_(
284 	    play_1.winner, rindex_1.lld2, 0, 0);
285     if (i != 0) {
286 	rspeak_(162);
287     }
288 /* 						!IF ROBBED, SAY SO. */
289     return ret_val;
290 
291 /* O9--	MIRROR */
292 
293 L14000:
294     if (findex_1.mirrmf || prsvec_1.prsa != vindex_1.rubw) {
295 	goto L14500;
296     }
297     mroom = play_1.here ^ 1;
298     i__1 = objcts_1.olnt;
299     for (i = 1; i <= i__1; ++i) {
300 /* 						!INTERCHANGE OBJS. */
301 	if (objcts_1.oroom[i - 1] == play_1.here) {
302 	    objcts_1.oroom[i - 1] = -1;
303 	}
304 	if (objcts_1.oroom[i - 1] == mroom) {
305 	    objcts_1.oroom[i - 1] = play_1.here;
306 	}
307 	if (objcts_1.oroom[i - 1] == -1) {
308 	    objcts_1.oroom[i - 1] = mroom;
309 	}
310 /* L14100: */
311     }
312     f = moveto_(mroom, play_1.winner);
313     rspeak_(163);
314 /* 						!SHAKE WORLD. */
315     return ret_val;
316 
317 L14500:
318     if (prsvec_1.prsa != vindex_1.lookw && prsvec_1.prsa != vindex_1.lookiw &&
319 	     prsvec_1.prsa != vindex_1.examiw) {
320 	goto L14600;
321     }
322     i = 164;
323 /* 						!MIRROR OK. */
324     if (findex_1.mirrmf) {
325 	i = 165;
326     }
327 /* 						!MIRROR DEAD. */
328     rspeak_(i);
329     return ret_val;
330 
331 L14600:
332     if (prsvec_1.prsa != vindex_1.takew) {
333 	goto L14700;
334     }
335 /* 						!TAKE? */
336     rspeak_(166);
337 /* 						!JOKE. */
338     return ret_val;
339 
340 L14700:
341     if (prsvec_1.prsa != vindex_1.mungw && prsvec_1.prsa != vindex_1.throww) {
342 
343 	goto L10;
344     }
345     i = 167;
346 /* 						!MIRROR BREAKS. */
347     if (findex_1.mirrmf) {
348 	i = 168;
349     }
350 /* 						!MIRROR ALREADY BROKEN. */
351     findex_1.mirrmf = TRUE_;
352     findex_1.badlkf = TRUE_;
353     rspeak_(i);
354     return ret_val;
355 /* SOBJS, PAGE 6 */
356 
357 /* O10--	DUMBWAITER */
358 
359 L16000:
360     if (prsvec_1.prsa != vindex_1.raisew) {
361 	goto L16100;
362     }
363 /* 						!RAISE? */
364     if (findex_1.cagetf) {
365 	goto L16400;
366     }
367 /* 						!ALREADY AT TOP? */
368     newsta_(oindex_1.tbask, 175, rindex_1.tshaf, 0, 0);
369 /* 						!NO, RAISE BASKET. */
370     newsta_(oindex_1.fbask, 0, rindex_1.bshaf, 0, 0);
371     findex_1.cagetf = TRUE_;
372 /* 						!AT TOP. */
373     return ret_val;
374 
375 L16100:
376     if (prsvec_1.prsa != vindex_1.lowerw) {
377 	goto L16200;
378     }
379 /* 						!LOWER? */
380     if (! findex_1.cagetf) {
381 	goto L16400;
382     }
383 /* 						!ALREADY AT BOTTOM? */
384     newsta_(oindex_1.tbask, 176, rindex_1.bshaf, 0, 0);
385 /* 						!NO, LOWER BASKET. */
386     newsta_(oindex_1.fbask, 0, rindex_1.tshaf, 0, 0);
387     findex_1.cagetf = FALSE_;
388     if (! lit_(play_1.here)) {
389 	rspeak_(406);
390     }
391 /* 						!IF DARK, DIE. */
392     return ret_val;
393 
394 L16200:
395     if (prsvec_1.prso != oindex_1.fbask && prsvec_1.prsi != oindex_1.fbask) {
396 	goto L16300;
397     }
398     rspeak_(130);
399 /* 						!WRONG BASKET. */
400     return ret_val;
401 
402 L16300:
403     if (prsvec_1.prsa != vindex_1.takew) {
404 	goto L10;
405     }
406 /* 						!TAKE? */
407     rspeak_(177);
408 /* 						!JOKE. */
409     return ret_val;
410 
411 L16400:
412     i__1 = rnd_(3) + 125;
413     rspeak_(i__1);
414 /* 						!DUMMY. */
415     return ret_val;
416 
417 /* O11--	GHOST FUNCTION */
418 
419 L17000:
420     i = 178;
421 /* 						!ASSUME DIRECT. */
422     if (prsvec_1.prso != oindex_1.ghost) {
423 	i = 179;
424     }
425 /* 						!IF NOT, INDIRECT. */
426     rspeak_(i);
427     return ret_val;
428 /* 						!SPEAK AND EXIT. */
429 /* SOBJS, PAGE 7 */
430 
431 /* O12--	TUBE */
432 
433 L21000:
434     if (prsvec_1.prsa != vindex_1.putw || prsvec_1.prsi != oindex_1.tube) {
435 	goto L10;
436     }
437     rspeak_(186);
438 /* 						!CANT PUT BACK IN. */
439     return ret_val;
440 
441 /* O13--	CHALICE */
442 
443 L23000:
444     if (prsvec_1.prsa != vindex_1.takew || objcts_1.ocan[prsvec_1.prso - 1] !=
445 	     0 || objcts_1.oroom[prsvec_1.prso - 1] != rindex_1.treas ||
446 	    objcts_1.oroom[oindex_1.thief - 1] != rindex_1.treas || (
447 	    objcts_1.oflag2[oindex_1.thief - 1] & FITEBT) == 0 || !
448 	    hack_1.thfact) {
449 	goto L10;
450     }
451     rspeak_(204);
452 /* 						!CANT TAKE. */
453     return ret_val;
454 
455 /* O14--	PAINTING */
456 
457 L24000:
458     if (prsvec_1.prsa != vindex_1.mungw) {
459 	goto L10;
460     }
461 /* 						!MUNG? */
462     rspeak_(205);
463 /* 						!DESTROY PAINTING. */
464     objcts_1.ofval[prsvec_1.prso - 1] = 0;
465     objcts_1.otval[prsvec_1.prso - 1] = 0;
466     objcts_1.odesc1[prsvec_1.prso - 1] = 207;
467     objcts_1.odesc2[prsvec_1.prso - 1] = 206;
468     return ret_val;
469 /* SOBJS, PAGE 8 */
470 
471 /* O15--	BOLT */
472 
473 L27000:
474     if (prsvec_1.prsa != vindex_1.turnw) {
475 	goto L10;
476     }
477 /* 						!TURN BOLT? */
478     if (prsvec_1.prsi != oindex_1.wrenc) {
479 	goto L27500;
480     }
481 /* 						!WITH WRENCH? */
482     if (findex_1.gatef) {
483 	goto L27100;
484     }
485 /* 						!PROPER BUTTON PUSHED? */
486     rspeak_(210);
487 /* 						!NO, LOSE. */
488     return ret_val;
489 
490 L27100:
491     if (findex_1.lwtidf) {
492 	goto L27200;
493     }
494 /* 						!LOW TIDE NOW? */
495     findex_1.lwtidf = TRUE_;
496 /* 						!NO, EMPTY DAM. */
497     rspeak_(211);
498     objcts_1.oflag2[oindex_1.coffi - 1] &= ~ SCRDBT;
499     objcts_1.oflag1[oindex_1.trunk - 1] |= VISIBT;
500     rooms_1.rflag[rindex_1.reser - 1] = (rooms_1.rflag[rindex_1.reser - 1] |
501 	    RLAND) & ~ (RWATER + RSEEN);
502     return ret_val;
503 
504 L27200:
505     findex_1.lwtidf = FALSE_;
506 /* 						!YES, FILL DAM. */
507     rspeak_(212);
508     if (qhere_(oindex_1.trunk, rindex_1.reser)) {
509 	objcts_1.oflag1[oindex_1.trunk - 1] &= ~ VISIBT;
510     }
511     rooms_1.rflag[rindex_1.reser - 1] = (rooms_1.rflag[rindex_1.reser - 1] |
512 	    RWATER) & ~ RLAND;
513     return ret_val;
514 
515 L27500:
516     rspsub_(299, odi2);
517 /* 						!NOT WITH THAT. */
518     return ret_val;
519 
520 /* O16--	GRATING */
521 
522 L28000:
523     if (prsvec_1.prsa != vindex_1.openw && prsvec_1.prsa != vindex_1.closew) {
524 
525 	goto L10;
526     }
527     if (findex_1.grunlf) {
528 	goto L28200;
529     }
530 /* 						!UNLOCKED? */
531     rspeak_(214);
532 /* 						!NO, LOCKED. */
533     return ret_val;
534 
535 L28200:
536     i = 215;
537 /* 						!UNLOCKED, VIEW FRM CLR. */
538     if (play_1.here != rindex_1.clear) {
539 	i = 216;
540     }
541 /* 						!VIEW FROM BELOW. */
542     ret_val = opncls_(oindex_1.grate, i, 885);
543 /* 						!OPEN/CLOSE. */
544     rooms_1.rflag[rindex_1.mgrat - 1] &= ~ RLIGHT;
545     if ((objcts_1.oflag2[oindex_1.grate - 1] & OPENBT) != 0) {
546 	rooms_1.rflag[rindex_1.mgrat - 1] |= RLIGHT;
547     }
548     if (! lit_(play_1.here)) {
549 	rspeak_(406);
550     }
551 /* 						!IF DARK, DIE. */
552     return ret_val;
553 
554 /* O17--	TRAP DOOR */
555 
556 L29000:
557     if (play_1.here != rindex_1.lroom) {
558 	goto L29100;
559     }
560 /* 						!FROM LIVING ROOM? */
561     ret_val = opncls_(oindex_1.door, 218, 219);
562 /* 						!OPEN/CLOSE. */
563     return ret_val;
564 
565 L29100:
566     if (play_1.here != rindex_1.cella) {
567 	goto L10;
568     }
569 /* 						!FROM CELLAR? */
570     if (prsvec_1.prsa != vindex_1.openw || (objcts_1.oflag2[oindex_1.door - 1]
571 	     & OPENBT) != 0) {
572 	goto L29200;
573     }
574     rspeak_(220);
575 /* 						!CANT OPEN CLOSED DOOR. */
576     return ret_val;
577 
578 L29200:
579     ret_val = opncls_(oindex_1.door, 0, 22);
580 /* 						!NORMAL OPEN/CLOSE. */
581     return ret_val;
582 
583 /* O18--	DURABLE DOOR */
584 
585 L30000:
586     i = 0;
587 /* 						!ASSUME NO APPL. */
588     if (prsvec_1.prsa == vindex_1.openw) {
589 	i = 221;
590     }
591 /* 						!OPEN? */
592     if (prsvec_1.prsa == vindex_1.burnw) {
593 	i = 222;
594     }
595 /* 						!BURN? */
596     if (prsvec_1.prsa == vindex_1.mungw) {
597 	i = rnd_(3) + 223;
598     }
599 /* 						!MUNG? */
600     if (i == 0) {
601 	goto L10;
602     }
603     rspeak_(i);
604     return ret_val;
605 
606 /* O19--	MASTER SWITCH */
607 
608 L31000:
609     if (prsvec_1.prsa != vindex_1.turnw) {
610 	goto L10;
611     }
612 /* 						!TURN? */
613     if (prsvec_1.prsi != oindex_1.screw) {
614 	goto L31500;
615     }
616 /* 						!WITH SCREWDRIVER? */
617     if ((objcts_1.oflag2[oindex_1.machi - 1] & OPENBT) != 0) {
618 	goto L31600;
619     }
620 /* 						!LID UP? */
621     rspeak_(226);
622 /* 						!NO, ACTIVATE. */
623     if (objcts_1.ocan[oindex_1.coal - 1] != oindex_1.machi) {
624 	goto L31400;
625     }
626 /* 						!COAL INSIDE? */
627     newsta_(oindex_1.coal, 0, 0, 0, 0);
628 /* 						!KILL COAL, */
629     newsta_(oindex_1.diamo, 0, 0, oindex_1.machi, 0);
630 /* 						!REPLACE WITH DIAMOND. */
631     return ret_val;
632 
633 L31400:
634     i__1 = objcts_1.olnt;
635     for (i = 1; i <= i__1; ++i) {
636 /* 						!KILL NONCOAL OBJECTS. */
637 	if (objcts_1.ocan[i - 1] != oindex_1.machi) {
638 	    goto L31450;
639 	}
640 /* 						!INSIDE MACHINE? */
641 	newsta_(i, 0, 0, 0, 0);
642 /* 						!KILL OBJECT AND CONTENTS. */
643 	newsta_(oindex_1.gunk, 0, 0, oindex_1.machi, 0);
644 /* 						!REDUCE TO GUNK. */
645 L31450:
646 	;
647     }
648     return ret_val;
649 
650 L31500:
651     rspsub_(300, odi2);
652 /* 						!CANT TURN WITH THAT. */
653     return ret_val;
654 
655 L31600:
656     rspeak_(227);
657 /* 						!LID IS UP. */
658     return ret_val;
659 /* SOBJS, PAGE 9 */
660 
661 /* O20--	LEAK */
662 
663 L33000:
664     if (prsvec_1.prso != oindex_1.leak || prsvec_1.prsa != vindex_1.plugw ||
665 	    findex_1.rvmnt <= 0) {
666 	goto L10;
667     }
668     if (prsvec_1.prsi != oindex_1.putty) {
669 	goto L33100;
670     }
671 /* 						!WITH PUTTY? */
672     findex_1.rvmnt = -1;
673 /* 						!DISABLE LEAK. */
674     cevent_1.ctick[cindex_1.cevmnt - 1] = 0;
675     rspeak_(577);
676     return ret_val;
677 
678 L33100:
679     rspsub_(301, odi2);
680 /* 						!CANT WITH THAT. */
681     return ret_val;
682 
683 /* O21--	DROWNING BUTTONS */
684 
685 L34000:
686     if (prsvec_1.prsa != vindex_1.pushw) {
687 	goto L10;
688     }
689 /* 						!PUSH? */
690     switch (prsvec_1.prso - oindex_1.rbutt + 1) {
691 	case 1:  goto L34100;
692 	case 2:  goto L34200;
693 	case 3:  goto L34300;
694 	case 4:  goto L34400;
695     }
696     goto L10;
697 /* 						!NOT A BUTTON. */
698 
699 L34100:
700     rooms_1.rflag[play_1.here - 1] ^= RLIGHT;
701     i = 230;
702     if ((rooms_1.rflag[play_1.here - 1] & RLIGHT) != 0) {
703 	i = 231;
704     }
705     rspeak_(i);
706     return ret_val;
707 
708 L34200:
709     findex_1.gatef = TRUE_;
710 /* 						!RELEASE GATE. */
711     rspeak_(232);
712     return ret_val;
713 
714 L34300:
715     findex_1.gatef = FALSE_;
716 /* 						!INTERLOCK GATE. */
717     rspeak_(232);
718     return ret_val;
719 
720 L34400:
721     if (findex_1.rvmnt != 0) {
722 	goto L34500;
723     }
724 /* 						!LEAK ALREADY STARTED? */
725     rspeak_(233);
726 /* 						!NO, START LEAK. */
727     findex_1.rvmnt = 1;
728     cevent_1.ctick[cindex_1.cevmnt - 1] = -1;
729     return ret_val;
730 
731 L34500:
732     rspeak_(234);
733 /* 						!BUTTON JAMMED. */
734     return ret_val;
735 
736 /* O22--	INFLATABLE BOAT */
737 
738 L36000:
739     if (prsvec_1.prsa != vindex_1.inflaw) {
740 	goto L10;
741     }
742 /* 						!INFLATE? */
743     if (objcts_1.oroom[oindex_1.iboat - 1] != 0) {
744 	goto L36100;
745     }
746 /* 						!IN ROOM? */
747     rspeak_(235);
748 /* 						!NO, JOKE. */
749     return ret_val;
750 
751 L36100:
752     if (prsvec_1.prsi != oindex_1.pump) {
753 	goto L36200;
754     }
755 /* 						!WITH PUMP? */
756     newsta_(oindex_1.iboat, 0, 0, 0, 0);
757 /* 						!KILL DEFL BOAT, */
758     newsta_(oindex_1.rboat, 236, play_1.here, 0, 0);
759 /* 						!REPL WITH INF. */
760     findex_1.deflaf = FALSE_;
761     return ret_val;
762 
763 L36200:
764     i = 237;
765 /* 						!JOKES. */
766     if (prsvec_1.prsi != oindex_1.lungs) {
767 	i = 303;
768     }
769     rspsub_(i, odi2);
770     return ret_val;
771 
772 /* O23--	DEFLATED BOAT */
773 
774 L37000:
775     if (prsvec_1.prsa != vindex_1.inflaw) {
776 	goto L37100;
777     }
778 /* 						!INFLATE? */
779     rspeak_(238);
780 /* 						!JOKE. */
781     return ret_val;
782 
783 L37100:
784     if (prsvec_1.prsa != vindex_1.plugw) {
785 	goto L10;
786     }
787 /* 						!PLUG? */
788     if (prsvec_1.prsi != oindex_1.putty) {
789 	goto L33100;
790     }
791 /* 						!WITH PUTTY? */
792     newsta_(oindex_1.iboat, 239, objcts_1.oroom[oindex_1.dboat - 1],
793 	    objcts_1.ocan[oindex_1.dboat - 1], objcts_1.oadv[oindex_1.dboat
794 	    - 1]);
795     newsta_(oindex_1.dboat, 0, 0, 0, 0);
796 /* 						!KILL DEFL BOAT, REPL. */
797     return ret_val;
798 /* SOBJS, PAGE 10 */
799 
800 /* O24--	RUBBER BOAT */
801 
802 L38000:
803     if (arg != 0) {
804 	goto L10;
805     }
806 /* 						!DISMISS READIN, OUT. */
807     if (prsvec_1.prsa != vindex_1.boardw || objcts_1.oadv[oindex_1.stick - 1]
808 	    != play_1.winner) {
809 	goto L38100;
810     }
811     newsta_(oindex_1.rboat, 0, 0, 0, 0);
812 /* 						!KILL INFL BOAT, */
813     newsta_(oindex_1.dboat, 240, play_1.here, 0, 0);
814 /* 						!REPL WITH DEAD. */
815     findex_1.deflaf = TRUE_;
816     return ret_val;
817 
818 L38100:
819     if (prsvec_1.prsa != vindex_1.inflaw) {
820 	goto L38200;
821     }
822 /* 						!INFLATE? */
823     rspeak_(367);
824 /* 						!YES, JOKE. */
825     return ret_val;
826 
827 L38200:
828     if (prsvec_1.prsa != vindex_1.deflaw) {
829 	goto L10;
830     }
831 /* 						!DEFLATE? */
832     if (av == oindex_1.rboat) {
833 	goto L38300;
834     }
835 /* 						!IN BOAT? */
836     if (objcts_1.oroom[oindex_1.rboat - 1] == 0) {
837 	goto L38400;
838     }
839 /* 						!ON GROUND? */
840     newsta_(oindex_1.rboat, 0, 0, 0, 0);
841 /* 						!KILL INFL BOAT, */
842     newsta_(oindex_1.iboat, 241, play_1.here, 0, 0);
843 /* 						!REPL WITH DEFL. */
844     findex_1.deflaf = TRUE_;
845     return ret_val;
846 
847 L38300:
848     rspeak_(242);
849 /* 						!IN BOAT. */
850     return ret_val;
851 
852 L38400:
853     rspeak_(243);
854 /* 						!NOT ON GROUND. */
855     return ret_val;
856 
857 /* O25--	BRAIDED ROPE */
858 
859 L41000:
860     if (prsvec_1.prsa != vindex_1.tiew || prsvec_1.prso != oindex_1.brope ||
861 	    prsvec_1.prsi != oindex_1.hook1 && prsvec_1.prsi !=
862 	    oindex_1.hook2) {
863 	goto L41500;
864     }
865     findex_1.btief = prsvec_1.prsi;
866 /* 						!RECORD LOCATION. */
867     cevent_1.cflag[cindex_1.cevbal - 1] = FALSE_;
868 /* 						!STALL ASCENT. */
869     rspeak_(248);
870     return ret_val;
871 
872 L41500:
873     if (prsvec_1.prsa != vindex_1.untiew || prsvec_1.prso != oindex_1.brope) {
874 
875 	goto L10;
876     }
877     if (findex_1.btief != 0) {
878 	goto L41600;
879     }
880 /* 						!TIED UP? */
881     rspeak_(249);
882 /* 						!NO, JOKE. */
883     return ret_val;
884 
885 L41600:
886     rspeak_(250);
887     findex_1.btief = 0;
888 /* 						!UNTIE. */
889     cevent_1.ctick[cindex_1.cevbal - 1] = 3;
890 /* 						!RESTART CLOCK. */
891     cevent_1.cflag[cindex_1.cevbal - 1] = TRUE_;
892     return ret_val;
893 
894 /* O26--	SAFE */
895 
896 L42000:
897     i = 0;
898 /* 						!ASSUME UNPROCESSED. */
899     if (prsvec_1.prsa == vindex_1.takew) {
900 	i = 251;
901     }
902 /* 						!TAKE? */
903     if (prsvec_1.prsa == vindex_1.openw && findex_1.safef) {
904 	i = 253;
905     }
906 /* 						!OPEN AFTER BLAST? */
907     if (prsvec_1.prsa == vindex_1.openw && ! findex_1.safef) {
908 	i = 254;
909     }
910 /* 						!OPEN BEFORE BLAST? */
911     if (prsvec_1.prsa == vindex_1.closew && findex_1.safef) {
912 	i = 253;
913     }
914 /* 						!CLOSE AFTER? */
915     if (prsvec_1.prsa == vindex_1.closew && ! findex_1.safef) {
916 	i = 255;
917     }
918     if (i == 0) {
919 	goto L10;
920     }
921     rspeak_(i);
922     return ret_val;
923 
924 /* O27--	FUSE */
925 
926 L43000:
927     if (prsvec_1.prsa != vindex_1.burnw) {
928 	goto L10;
929     }
930 /* 						!BURN? */
931     rspeak_(256);
932     cevent_1.ctick[cindex_1.cevfus - 1] = 2;
933 /* 						!START COUNTDOWN. */
934     return ret_val;
935 
936 /* O28--	GNOME */
937 
938 L44000:
939     if (prsvec_1.prsa != vindex_1.givew && prsvec_1.prsa != vindex_1.throww) {
940 
941 	goto L44500;
942     }
943     if (objcts_1.otval[prsvec_1.prso - 1] == 0) {
944 	goto L44100;
945     }
946 /* 						!TREASURE? */
947     rspsub_(257, odo2);
948 /* 						!YES, GET DOOR. */
949     newsta_(prsvec_1.prso, 0, 0, 0, 0);
950     newsta_(oindex_1.gnome, 0, 0, 0, 0);
951 /* 						!VANISH GNOME. */
952     findex_1.gnodrf = TRUE_;
953     return ret_val;
954 
955 L44100:
956     rspsub_(258, odo2);
957 /* 						!NO, LOSE OBJECT. */
958     newsta_(prsvec_1.prso, 0, 0, 0, 0);
959     return ret_val;
960 
961 L44500:
962     rspeak_(259);
963 /* 						!NERVOUS GNOME. */
964     if (! findex_1.gnomef) {
965 	cevent_1.ctick[cindex_1.cevgno - 1] = 5;
966     }
967 /* 						!SCHEDULE BYEBYE. */
968     findex_1.gnomef = TRUE_;
969     return ret_val;
970 
971 /* O29--	COKE BOTTLES */
972 
973 L46000:
974     if (prsvec_1.prsa != vindex_1.throww && prsvec_1.prsa != vindex_1.mungw) {
975 
976 	goto L10;
977     }
978     newsta_(prsvec_1.prso, 262, 0, 0, 0);
979 /* 						!MUNG BOTTLES. */
980     return ret_val;
981 /* SOBJS, PAGE 11 */
982 
983 
984 /* O30--	ROBOT */
985 
986 L53000:
987     if (prsvec_1.prsa != vindex_1.givew) {
988 	goto L53200;
989     }
990 /* 						!GIVE? */
991     newsta_(prsvec_1.prso, 0, 0, 0, aindex_1.arobot);
992 /* 						!PUT ON ROBOT. */
993     rspsub_(302, odo2);
994     return ret_val;
995 
996 L53200:
997     if (prsvec_1.prsa != vindex_1.mungw && prsvec_1.prsa != vindex_1.throww) {
998 
999 	goto L10;
1000     }
1001     newsta_(oindex_1.robot, 285, 0, 0, 0);
1002 /* 						!KILL ROBOT. */
1003     return ret_val;
1004 
1005 /* O31--	GRUE */
1006 
1007 L56000:
1008     if (prsvec_1.prsa != vindex_1.examiw) {
1009 	goto L56100;
1010     }
1011 /* 						!EXAMINE? */
1012     rspeak_(288);
1013     return ret_val;
1014 
1015 L56100:
1016     if (prsvec_1.prsa != vindex_1.findw) {
1017 	goto L10;
1018     }
1019 /* 						!FIND? */
1020     rspeak_(289);
1021     return ret_val;
1022 
1023 } /* sobjs_ */
1024