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