Annotation of 43BSDReno/games/dungeon/sobjs.F, revision 1.1.1.1

1.1       root        1: C SOBJS-       SIMPLE OBJECTS PROCESSOR
                      2: C      OBJECTS IN THIS MODULE CANNOT CALL RMINFO, JIGSUP,
                      3: C      MAJOR VERBS, OR OTHER NON-RESIDENT SUBROUTINES
                      4: C
                      5: C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
                      6: C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
                      7: C WRITTEN BY R. M. SUPNIK
                      8: C
                      9: C DECLARATIONS
                     10: C
                     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"
                     31: C
                     32: C FUNCTIONS AND DATA
                     33: C
                     34:        QOPEN(R)=and(OFLAG2(R),OPENBT).NE.0
                     35: C SOBJS, PAGE 2
                     36: C
                     37:        IF(PRSO.GT.220) GO TO 5
                     38:        IF(PRSO.NE.0) ODO2=ODESC2(PRSO)
                     39: 5      IF(PRSI.NE.0) ODI2=ODESC2(PRSI)
                     40:        AV=AVEHIC(WINNER)
                     41:        SOBJS=.TRUE.
                     42: C
                     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)
                     51: C
                     52: C RETURN HERE TO DECLARE FALSE RESULT
                     53: C
                     54: 10     SOBJS=.FALSE.
                     55:        RETURN
                     56: C SOBJS, PAGE 3
                     57: C
                     58: C O1-- GUNK FUNCTION
                     59: C
                     60: 1000   IF(OCAN(GUNK).EQ.0) GO TO 10
                     61: C                                              !NOT INSIDE? F
                     62:        CALL NEWSTA(GUNK,122,0,0,0)
                     63: C                                              !FALLS APART.
                     64:        RETURN
                     65: C
                     66: C O2-- TROPHY CASE
                     67: C
                     68: 3000   IF(PRSA.NE.TAKEW) GO TO 10
                     69: C                                              !TAKE?
                     70:        CALL RSPEAK(128)
                     71: C                                              !CANT.
                     72:        RETURN
                     73: C
                     74: C O3-- BOTTLE FUNCTION
                     75: C
                     76: 4000   IF(PRSA.NE.THROWW) GO TO 4100
                     77: C                                              !THROW?
                     78:        CALL NEWSTA(PRSO,129,0,0,0)
                     79: C                                              !BREAKS.
                     80:        RETURN
                     81: C
                     82: 4100   IF(PRSA.NE.MUNGW) GO TO 10
                     83: C                                              !MUNG?
                     84:        CALL NEWSTA(PRSO,131,0,0,0)
                     85: C                                              !BREAKS.
                     86:        RETURN
                     87: C SOBJS, PAGE 4
                     88: C
                     89: C O4-- ROPE FUNCTION
                     90: C
                     91: 6000   IF(HERE.EQ.DOME) GO TO 6100
                     92: C                                              !IN DOME?
                     93:        DOMEF=.FALSE.
                     94: C                                              !NO,
                     95:        IF(PRSA.NE.UNTIEW) GO TO 6050
                     96: C                                              !UNTIE?
                     97:        CALL RSPEAK(134)
                     98: C                                              !CANT
                     99:        RETURN
                    100: C
                    101: 6050   IF(PRSA.NE.TIEW) GO TO 10
                    102: C                                              !TIE?
                    103:        CALL RSPEAK(135)
                    104: C                                              !CANT TIE
                    105:        RETURN
                    106: C
                    107: 6100   IF((PRSA.NE.TIEW).OR.(PRSI.NE.RAILI)) GO TO 6200
                    108:        IF(DOMEF) GO TO 6150
                    109: C                                              !ALREADY TIED?
                    110:        DOMEF=.TRUE.
                    111: C                                              !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
                    116: C
                    117: 6150   CALL RSPEAK(136)
                    118: C                                              !DUMMY.
                    119:        RETURN
                    120: C
                    121: 6200   IF(PRSA.NE.UNTIEW) GO TO 6300
                    122: C                                              !UNTIE?
                    123:        IF(DOMEF) GO TO 6250
                    124: C                                              !TIED?
                    125:        CALL RSPEAK(134)
                    126: C                                              !NO, DUMMY.
                    127:        RETURN
                    128: C
                    129: 6250   DOMEF=.FALSE.
                    130: C                                              !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
                    135: C
                    136: 6300   IF(DOMEF.OR.(PRSA.NE.DROPW)) GO TO 6400
                    137: C                                              !DROP & UNTIED?
                    138:        CALL NEWSTA(ROPE,140,MTORC,0,0)
                    139: C                                              !YES, DROP.
                    140:        RETURN
                    141: C
                    142: 6400   IF((PRSA.NE.TAKEW).OR. .NOT.DOMEF) GO TO 10
                    143:        CALL RSPEAK(141)
                    144: C                                              !TAKE & TIED.
                    145:        RETURN
                    146: C
                    147: C O5-- SWORD FUNCTION
                    148: C
                    149: 7000   IF((PRSA.EQ.TAKEW).AND.(WINNER.EQ.PLAYER))
                    150: &              SWDACT=.TRUE.
                    151:        GO TO 10
                    152: C
                    153: C O6-- LANTERN
                    154: C
                    155: 8000   IF(PRSA.NE.THROWW) GO TO 8100
                    156: C                                              !THROW?
                    157:        CALL NEWSTA(LAMP,0,0,0,0)
                    158: C                                              !KILL LAMP,
                    159:        CALL NEWSTA(BLAMP,142,HERE,0,0)
                    160: C                                              !REPLACE WITH BROKEN.
                    161:        RETURN
                    162: C
                    163: 8100   IF(PRSA.EQ.TRNONW) CFLAG(CEVLNT)=.TRUE.
                    164:        IF(PRSA.EQ.TRNOFW) CFLAG(CEVLNT)=.FALSE.
                    165:        GO TO 10
                    166: C
                    167: C O7-- RUG FUNCTION
                    168: C
                    169: 9000   IF(PRSA.NE.RAISEW) GO TO 9100
                    170: C                                              !RAISE?
                    171:        CALL RSPEAK(143)
                    172: C                                              !CANT
                    173:        RETURN
                    174: C
                    175: 9100   IF(PRSA.NE.TAKEW) GO TO 9200
                    176: C                                              !TAKE?
                    177:        CALL RSPEAK(144)
                    178: C                                              !CANT
                    179:        RETURN
                    180: C
                    181: 9200   IF(PRSA.NE.MOVEW) GO TO 9300
                    182: C                                              !MOVE?
                    183:        CALL RSPEAK(145+ORRUG)
                    184:        ORRUG=1
                    185:        OFLAG1(DOOR)=or(OFLAG1(DOOR),VISIBT)
                    186:        RETURN
                    187: C
                    188: 9300   IF((PRSA.NE.LOOKUW).OR.(ORRUG.NE.0).OR.
                    189: &              QOPEN(DOOR)) GO TO 10
                    190:        CALL RSPEAK(345)
                    191:        RETURN
                    192: C SOBJS, PAGE 5
                    193: C
                    194: C O8-- SKELETON
                    195: C
                    196: 13000  I=ROBRM(HERE,100,LLD2,0,0)+ROBADV(WINNER,LLD2,0,0)
                    197:        IF(I.NE.0) CALL RSPEAK(162)
                    198: C                                              !IF ROBBED, SAY SO.
                    199:        RETURN
                    200: C
                    201: C O9-- MIRROR
                    202: C
                    203: 14000  IF(MIRRMF.OR.(PRSA.NE.RUBW)) GO TO 14500
                    204:        MROOM=xor(HERE,1)
                    205:        DO 14100 I=1,OLNT
                    206: C                                              !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
                    210: 14100  CONTINUE
                    211:        F=MOVETO(MROOM,WINNER)
                    212:        CALL RSPEAK(163)
                    213: C                                              !SHAKE WORLD.
                    214:        RETURN
                    215: C
                    216: 14500  IF((PRSA.NE.LOOKW).AND.(PRSA.NE.LOOKIW).AND.
                    217: &              (PRSA.NE.EXAMIW)) GO TO 14600
                    218:        I=164
                    219: C                                              !MIRROR OK.
                    220:        IF(MIRRMF) I=165
                    221: C                                              !MIRROR DEAD.
                    222:        CALL RSPEAK(I)
                    223:        RETURN
                    224: C
                    225: 14600  IF(PRSA.NE.TAKEW) GO TO 14700
                    226: C                                              !TAKE?
                    227:        CALL RSPEAK(166)
                    228: C                                              !JOKE.
                    229:        RETURN
                    230: C
                    231: 14700  IF((PRSA.NE.MUNGW).AND.(PRSA.NE.THROWW)) GO TO 10
                    232:        I=167
                    233: C                                              !MIRROR BREAKS.
                    234:        IF(MIRRMF) I=168
                    235: C                                              !MIRROR ALREADY BROKEN.
                    236:        MIRRMF=.TRUE.
                    237:        BADLKF=.TRUE.
                    238:        CALL RSPEAK(I)
                    239:        RETURN
                    240: C SOBJS, PAGE 6
                    241: C
                    242: C O10--        DUMBWAITER
                    243: C
                    244: 16000  IF(PRSA.NE.RAISEW) GO TO 16100
                    245: C                                              !RAISE?
                    246:        IF(CAGETF) GO TO 16400
                    247: C                                              !ALREADY AT TOP?
                    248:        CALL NEWSTA(TBASK,175,TSHAF,0,0)
                    249: C                                              !NO, RAISE BASKET.
                    250:        CALL NEWSTA(FBASK,0,BSHAF,0,0)
                    251:        CAGETF=.TRUE.
                    252: C                                              !AT TOP.
                    253:        RETURN
                    254: C
                    255: 16100  IF(PRSA.NE.LOWERW) GO TO 16200
                    256: C                                              !LOWER?
                    257:        IF(.NOT.CAGETF) GO TO 16400
                    258: C                                              !ALREADY AT BOTTOM?
                    259:        CALL NEWSTA(TBASK,176,BSHAF,0,0)
                    260: C                                              !NO, LOWER BASKET.
                    261:        CALL NEWSTA(FBASK,0,TSHAF,0,0)
                    262:        CAGETF=.FALSE.
                    263:        IF(.NOT.LIT(HERE)) CALL RSPEAK(406)
                    264: C                                              !IF DARK, DIE.
                    265:        RETURN
                    266: C
                    267: 16200  IF((PRSO.NE.FBASK).AND.(PRSI.NE.FBASK)) GO TO 16300
                    268:        CALL RSPEAK(130)
                    269: C                                              !WRONG BASKET.
                    270:        RETURN
                    271: C
                    272: 16300  IF(PRSA.NE.TAKEW) GO TO 10
                    273: C                                              !TAKE?
                    274:        CALL RSPEAK(177)
                    275: C                                              !JOKE.
                    276:        RETURN
                    277: C
                    278: 16400  CALL RSPEAK(125+RND(3))
                    279: C                                              !DUMMY.
                    280:        RETURN
                    281: C
                    282: C O11--        GHOST FUNCTION
                    283: C
                    284: 17000  I=178
                    285: C                                              !ASSUME DIRECT.
                    286:        IF(PRSO.NE.GHOST) I=179
                    287: C                                              !IF NOT, INDIRECT.
                    288:        CALL RSPEAK(I)
                    289:        RETURN
                    290: C                                              !SPEAK AND EXIT.
                    291: C SOBJS, PAGE 7
                    292: C
                    293: C O12--        TUBE
                    294: C
                    295: 21000  IF((PRSA.NE.PUTW).OR.(PRSI.NE.TUBE)) GO TO 10
                    296:        CALL RSPEAK(186)
                    297: C                                              !CANT PUT BACK IN.
                    298:        RETURN
                    299: C
                    300: C O13--        CHALICE
                    301: C
                    302: 23000  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)
                    307: C                                              !CANT TAKE.
                    308:        RETURN
                    309: C
                    310: C O14--        PAINTING
                    311: C
                    312: 24000  IF(PRSA.NE.MUNGW) GO TO 10
                    313: C                                              !MUNG?
                    314:        CALL RSPEAK(205)
                    315: C                                              !DESTROY PAINTING.
                    316:        OFVAL(PRSO)=0
                    317:        OTVAL(PRSO)=0
                    318:        ODESC1(PRSO)=207
                    319:        ODESC2(PRSO)=206
                    320:        RETURN
                    321: C SOBJS, PAGE 8
                    322: C
                    323: C O15--        BOLT
                    324: C
                    325: 27000  IF(PRSA.NE.TURNW) GO TO 10
                    326: C                                              !TURN BOLT?
                    327:        IF(PRSI.NE.WRENC) GO TO 27500
                    328: C                                              !WITH WRENCH?
                    329:        IF(GATEF) GO TO 27100
                    330: C                                              !PROPER BUTTON PUSHED?
                    331:        CALL RSPEAK(210)
                    332: C                                              !NO, LOSE.
                    333:        RETURN
                    334: C
                    335: 27100  IF(LWTIDF) GO TO 27200
                    336: C                                              !LOW TIDE NOW?
                    337:        LWTIDF=.TRUE.
                    338: C                                              !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
                    345: C
                    346: 27200  LWTIDF=.FALSE.
                    347: C                                              !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
                    353: C
                    354: 27500  CALL RSPSUB(299,ODI2)
                    355: C                                              !NOT WITH THAT.
                    356:        RETURN
                    357: C
                    358: C O16--        GRATING
                    359: C
                    360: 28000  IF((PRSA.NE.OPENW).AND.(PRSA.NE.CLOSEW)) GO TO 10
                    361:        IF(GRUNLF) GO TO 28200
                    362: C                                              !UNLOCKED?
                    363:        CALL RSPEAK(214)
                    364: C                                              !NO, LOCKED.
                    365:        RETURN
                    366: C
                    367: 28200  I=215
                    368: C                                              !UNLOCKED, VIEW FRM CLR.
                    369:        IF(HERE.NE.CLEAR) I=216
                    370: C                                              !VIEW FROM BELOW.
                    371:        SOBJS=OPNCLS(GRATE,I,885)
                    372: C                                              !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)
                    376: C                                              !IF DARK, DIE.
                    377:        RETURN
                    378: C
                    379: C O17--        TRAP DOOR
                    380: C
                    381: 29000  IF(HERE.NE.LROOM) GO TO 29100
                    382: C                                              !FROM LIVING ROOM?
                    383:        SOBJS=OPNCLS(DOOR,218,219)
                    384: C                                              !OPEN/CLOSE.
                    385:        RETURN
                    386: C
                    387: 29100  IF(HERE.NE.CELLA) GO TO 10
                    388: C                                              !FROM CELLAR?
                    389:        IF((PRSA.NE.OPENW).OR.QOPEN(DOOR)) GO TO 29200
                    390:        CALL RSPEAK(220)
                    391: C                                              !CANT OPEN CLOSED DOOR.
                    392:        RETURN
                    393: C
                    394: 29200  SOBJS=OPNCLS(DOOR,0,22)
                    395: C                                              !NORMAL OPEN/CLOSE.
                    396:        RETURN
                    397: C
                    398: C O18--        DURABLE DOOR
                    399: C
                    400: 30000  I=0
                    401: C                                              !ASSUME NO APPL.
                    402:        IF(PRSA.EQ.OPENW) I=221
                    403: C                                              !OPEN?
                    404:        IF(PRSA.EQ.BURNW) I=222
                    405: C                                              !BURN?
                    406:        IF(PRSA.EQ.MUNGW) I=223+RND(3)
                    407: C                                              !MUNG?
                    408:        IF(I.EQ.0) GO TO 10
                    409:        CALL RSPEAK(I)
                    410:        RETURN
                    411: C
                    412: C O19--        MASTER SWITCH
                    413: C
                    414: 31000  IF(PRSA.NE.TURNW) GO TO 10
                    415: C                                              !TURN?
                    416:        IF(PRSI.NE.SCREW) GO TO 31500
                    417: C                                              !WITH SCREWDRIVER?
                    418:        IF(QOPEN(MACHI)) GO TO 31600
                    419: C                                              !LID UP?
                    420:        CALL RSPEAK(226)
                    421: C                                              !NO, ACTIVATE.
                    422:        IF(OCAN(COAL).NE.MACHI) GO TO 31400
                    423: C                                              !COAL INSIDE?
                    424:        CALL NEWSTA(COAL,0,0,0,0)
                    425: C                                              !KILL COAL,
                    426:        CALL NEWSTA(DIAMO,0,0,MACHI,0)
                    427: C                                              !REPLACE WITH DIAMOND.
                    428:        RETURN
                    429: C
                    430: 31400  DO 31450 I=1,OLNT
                    431: C                                              !KILL NONCOAL OBJECTS.
                    432:          IF(OCAN(I).NE.MACHI) GO TO 31450
                    433: C                                              !INSIDE MACHINE?
                    434:          CALL NEWSTA(I,0,0,0,0)
                    435: C                                              !KILL OBJECT AND CONTENTS.
                    436:          CALL NEWSTA(GUNK,0,0,MACHI,0)
                    437: C                                              !REDUCE TO GUNK.
                    438: 31450  CONTINUE
                    439:        RETURN
                    440: C
                    441: 31500  CALL RSPSUB(300,ODI2)
                    442: C                                              !CANT TURN WITH THAT.
                    443:        RETURN
                    444: C
                    445: 31600  CALL RSPEAK(227)
                    446: C                                              !LID IS UP.
                    447:        RETURN
                    448: C SOBJS, PAGE 9
                    449: C
                    450: C O20--        LEAK
                    451: C
                    452: 33000  IF((PRSO.NE.LEAK).OR.(PRSA.NE.PLUGW).OR.(RVMNT.LE.0))
                    453: &              GO TO 10
                    454:        IF(PRSI.NE.PUTTY) GO TO 33100
                    455: C                                              !WITH PUTTY?
                    456:        RVMNT=-1
                    457: C                                              !DISABLE LEAK.
                    458:        CTICK(CEVMNT)=0
                    459:        CALL RSPEAK(577)
                    460:        RETURN
                    461: C
                    462: 33100  CALL RSPSUB(301,ODI2)
                    463: C                                              !CANT WITH THAT.
                    464:        RETURN
                    465: C
                    466: C O21--        DROWNING BUTTONS
                    467: C
                    468: 34000  IF(PRSA.NE.PUSHW) GO TO 10
                    469: C                                              !PUSH?
                    470:        GO TO (34100,34200,34300,34400),(PRSO-RBUTT+1)
                    471:        GO TO 10
                    472: C                                              !NOT A BUTTON.
                    473: C
                    474: 34100  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
                    479: C
                    480: 34200  GATEF=.TRUE.
                    481: C                                              !RELEASE GATE.
                    482:        CALL RSPEAK(232)
                    483:        RETURN
                    484: C
                    485: 34300  GATEF=.FALSE.
                    486: C                                              !INTERLOCK GATE.
                    487:        CALL RSPEAK(232)
                    488:        RETURN
                    489: C
                    490: 34400  IF(RVMNT.NE.0) GO TO 34500
                    491: C                                              !LEAK ALREADY STARTED?
                    492:        CALL RSPEAK(233)
                    493: C                                              !NO, START LEAK.
                    494:        RVMNT=1
                    495:        CTICK(CEVMNT)=-1
                    496:        RETURN
                    497: C
                    498: 34500  CALL RSPEAK(234)
                    499: C                                              !BUTTON JAMMED.
                    500:        RETURN
                    501: C
                    502: C O22--        INFLATABLE BOAT
                    503: C
                    504: 36000  IF(PRSA.NE.INFLAW) GO TO 10
                    505: C                                              !INFLATE?
                    506:        IF(OROOM(IBOAT).NE.0) GO TO 36100
                    507: C                                              !IN ROOM?
                    508:        CALL RSPEAK(235)
                    509: C                                              !NO, JOKE.
                    510:        RETURN
                    511: C
                    512: 36100  IF(PRSI.NE.PUMP) GO TO 36200
                    513: C                                              !WITH PUMP?
                    514:        CALL NEWSTA(IBOAT,0,0,0,0)
                    515: C                                              !KILL DEFL BOAT,
                    516:        CALL NEWSTA(RBOAT,236,HERE,0,0)
                    517: C                                              !REPL WITH INF.
                    518:        DEFLAF=.FALSE.
                    519:        RETURN
                    520: C
                    521: 36200  I=237
                    522: C                                              !JOKES.
                    523:        IF(PRSI.NE.LUNGS) I=303
                    524:        CALL RSPSUB(I,ODI2)
                    525:        RETURN
                    526: C
                    527: C O23--        DEFLATED BOAT
                    528: C
                    529: 37000  IF(PRSA.NE.INFLAW) GO TO 37100
                    530: C                                              !INFLATE?
                    531:        CALL RSPEAK(238)
                    532: C                                              !JOKE.
                    533:        RETURN
                    534: C
                    535: 37100  IF(PRSA.NE.PLUGW) GO TO 10
                    536: C                                              !PLUG?
                    537:        IF(PRSI.NE.PUTTY) GO TO 33100
                    538: C                                              !WITH PUTTY?
                    539:        CALL NEWSTA(IBOAT,239,OROOM(DBOAT),OCAN(DBOAT),OADV(DBOAT))
                    540:        CALL NEWSTA(DBOAT,0,0,0,0)
                    541: C                                              !KILL DEFL BOAT, REPL.
                    542:        RETURN
                    543: C SOBJS, PAGE 10
                    544: C
                    545: C O24--        RUBBER BOAT
                    546: C
                    547: 38000  IF(ARG.NE.0) GO TO 10
                    548: C                                              !DISMISS READIN, OUT.
                    549:        IF((PRSA.NE.BOARDW).OR.(OADV(STICK).NE.WINNER)) GO TO 38100
                    550:        CALL NEWSTA(RBOAT,0,0,0,0)
                    551: C                                              !KILL INFL BOAT,
                    552:        CALL NEWSTA(DBOAT,240,HERE,0,0)
                    553: C                                              !REPL WITH DEAD.
                    554:        DEFLAF=.TRUE.
                    555:        RETURN
                    556: C
                    557: 38100  IF(PRSA.NE.INFLAW) GO TO 38200
                    558: C                                              !INFLATE?
                    559:        CALL RSPEAK(367)
                    560: C                                              !YES, JOKE.
                    561:        RETURN
                    562: C
                    563: 38200  IF(PRSA.NE.DEFLAW) GO TO 10
                    564: C                                              !DEFLATE?
                    565:        IF(AV.EQ.RBOAT) GO TO 38300
                    566: C                                              !IN BOAT?
                    567:        IF(OROOM(RBOAT).EQ.0) GO TO 38400
                    568: C                                              !ON GROUND?
                    569:        CALL NEWSTA(RBOAT,0,0,0,0)
                    570: C                                              !KILL INFL BOAT,
                    571:        CALL NEWSTA(IBOAT,241,HERE,0,0)
                    572: C                                              !REPL WITH DEFL.
                    573:        DEFLAF=.TRUE.
                    574:        RETURN
                    575: C
                    576: 38300  CALL RSPEAK(242)
                    577: C                                              !IN BOAT.
                    578:        RETURN
                    579: C
                    580: 38400  CALL RSPEAK(243)
                    581: C                                              !NOT ON GROUND.
                    582:        RETURN
                    583: C
                    584: C O25--        BRAIDED ROPE
                    585: C
                    586: 41000  IF((PRSA.NE.TIEW).OR.(PRSO.NE.BROPE).OR.
                    587: &              ((PRSI.NE.HOOK1).AND.(PRSI.NE.HOOK2)))
                    588: &              GO TO 41500
                    589:        BTIEF=PRSI
                    590: C                                              !RECORD LOCATION.
                    591:        CFLAG(CEVBAL)=.FALSE.
                    592: C                                              !STALL ASCENT.
                    593:        CALL RSPEAK(248)
                    594:        RETURN
                    595: C
                    596: 41500  IF((PRSA.NE.UNTIEW).OR.(PRSO.NE.BROPE)) GO TO 10
                    597:        IF(BTIEF.NE.0) GO TO 41600
                    598: C                                              !TIED UP?
                    599:        CALL RSPEAK(249)
                    600: C                                              !NO, JOKE.
                    601:        RETURN
                    602: C
                    603: 41600  CALL RSPEAK(250)
                    604:        BTIEF=0
                    605: C                                              !UNTIE.
                    606:        CTICK(CEVBAL)=3
                    607: C                                              !RESTART CLOCK.
                    608:        CFLAG(CEVBAL)=.TRUE.
                    609:        RETURN
                    610: C
                    611: C O26--        SAFE
                    612: C
                    613: 42000  I=0
                    614: C                                              !ASSUME UNPROCESSED.
                    615:        IF(PRSA.EQ.TAKEW) I=251
                    616: C                                              !TAKE?
                    617:        IF((PRSA.EQ.OPENW).AND.SAFEF) I=253
                    618: C                                              !OPEN AFTER BLAST?
                    619:        IF((PRSA.EQ.OPENW).AND..NOT.SAFEF) I=254
                    620: C                                              !OPEN BEFORE BLAST?
                    621:        IF((PRSA.EQ.CLOSEW).AND.SAFEF) I=253
                    622: C                                              !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
                    627: C
                    628: C O27--        FUSE
                    629: C
                    630: 43000  IF(PRSA.NE.BURNW) GO TO 10
                    631: C                                              !BURN?
                    632:        CALL RSPEAK(256)
                    633:        CTICK(CEVFUS)=2
                    634: C                                              !START COUNTDOWN.
                    635:        RETURN
                    636: C
                    637: C O28--        GNOME
                    638: C
                    639: 44000  IF((PRSA.NE.GIVEW).AND.(PRSA.NE.THROWW)) GO TO 44500
                    640:        IF(OTVAL(PRSO).EQ.0) GO TO 44100
                    641: C                                              !TREASURE?
                    642:        CALL RSPSUB(257,ODO2)
                    643: C                                              !YES, GET DOOR.
                    644:        CALL NEWSTA(PRSO,0,0,0,0)
                    645:        CALL NEWSTA(GNOME,0,0,0,0)
                    646: C                                              !VANISH GNOME.
                    647:        GNODRF=.TRUE.
                    648:        RETURN
                    649: C
                    650: 44100  CALL RSPSUB(258,ODO2)
                    651: C                                              !NO, LOSE OBJECT.
                    652:        CALL NEWSTA(PRSO,0,0,0,0)
                    653:        RETURN
                    654: C
                    655: 44500  CALL RSPEAK(259)
                    656: C                                              !NERVOUS GNOME.
                    657:        IF(.NOT.GNOMEF) CTICK(CEVGNO)=5
                    658: C                                              !SCHEDULE BYEBYE.
                    659:        GNOMEF=.TRUE.
                    660:        RETURN
                    661: C
                    662: C O29--        COKE BOTTLES
                    663: C
                    664: 46000  IF((PRSA.NE.THROWW).AND.(PRSA.NE.MUNGW)) GO TO 10
                    665:        CALL NEWSTA(PRSO,262,0,0,0)
                    666: C                                              !MUNG BOTTLES.
                    667:        RETURN
                    668: C SOBJS, PAGE 11
                    669: C
                    670: C
                    671: C O30--        ROBOT
                    672: C
                    673: 53000  IF(PRSA.NE.GIVEW) GO TO 53200
                    674: C                                              !GIVE?
                    675:        CALL NEWSTA(PRSO,0,0,0,AROBOT)
                    676: C                                              !PUT ON ROBOT.
                    677:        CALL RSPSUB(302,ODO2)
                    678:        RETURN
                    679: C
                    680: 53200  IF((PRSA.NE.MUNGW).AND.(PRSA.NE.THROWW)) GO TO 10
                    681:        CALL NEWSTA(ROBOT,285,0,0,0)
                    682: C                                              !KILL ROBOT.
                    683:        RETURN
                    684: C
                    685: C O31--        GRUE
                    686: C
                    687: 56000  IF(PRSA.NE.EXAMIW) GO TO 56100
                    688: C                                              !EXAMINE?
                    689:        CALL RSPEAK(288)
                    690:        RETURN
                    691: C
                    692: 56100  IF(PRSA.NE.FINDW) GO TO 10
                    693: C                                              !FIND?
                    694:        CALL RSPEAK(289)
                    695:        RETURN
                    696: C
                    697:        END

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.