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 698