.FUNCT SOUNDS,N,OP,VOL,NUM,RTN ASSIGNED? 'OP /?CND1 SET 'OP,S-START ?CND1: ASSIGNED? 'VOL /?CND3 SET 'VOL,8 ?CND3: ASSIGNED? 'NUM /?CND5 SET 'NUM,1 ?CND5: LESS? LOOPING?,0 \?CND7 EQUAL? OP,S-START \?CND7 SET 'LOOPING?,0 CRLF PRINTI "[Use $SOUND to toggle sound usage on and off.]" CRLF ?CND7: EQUAL? OP,S-INIT \?CND11 ZERO? SOUND-QUEUED? \TRUE ZERO? LOOPING? \TRUE ?CND11: EQUAL? N,S-CROWD \?CCL19 SET 'VOL,6 JUMP ?CND17 ?CCL19: EQUAL? N,S-BADVIOL \?CND17 SET 'VOL,6 ?CND17: EQUAL? N,S-CROWD,S-BOATING,S-SNORE \?CCL23 EQUAL? OP,S-START \?CCL26 SET 'LOOPING?,N SET 'LOOP-VOL,VOL SET 'NUM,-1 JUMP ?CND24 ?CCL26: EQUAL? OP,S-STOP \?CND24 SET 'LOOPING?,0 ?CND24: ZERO? SOUND-QUEUED? /?CND21 RTRUE ?CCL23: ZERO? RTN \?CND21 SET 'RTN,CHECK-LOOPING ?CND21: ZERO? SOUND-ON? /TRUE EQUAL? OP,S-START \?CCL36 EQUAL? N,S-CROWD,S-BOATING,S-SNORE /?CND37 SET 'SOUND-QUEUED?,N ?CND37: SHIFT NUM,8 BOR STACK,VOL SOUND N,OP,STACK,RTN RTRUE ?CCL36: SOUND N,OP RTRUE .FUNCT CHECK-LOOPING SET 'SOUND-QUEUED?,FALSE-VALUE GRTR? LOOPING?,0 \TRUE ICALL SOUNDS,LOOPING?,S-START,LOOP-VOL RTRUE .FUNCT RT-S-CAB-ARRIVES ZERO? CAB-RAMP \?CCL3 CALL SOUNDS,S-HORSE,S-START,4 RSTACK ?CCL3: DEC 'CAB-RAMP SUB 2,CAB-RAMP CALL SOUNDS,S-HORSE,S-START,STACK,1,RT-S-CAB-ARRIVES RSTACK .FUNCT RT-S-CAB-LEAVES ZERO? SOUND-QUEUED? /?CCL3 EQUAL? SOUND-QUEUED?,S-HORSE \FALSE ?CCL3: SET 'CAB-RAMP,2 CALL1 RT-S-CAB-GOES RSTACK .FUNCT RT-S-CAB-GOES ZERO? CAB-RAMP \?CCL3 CALL SOUNDS,S-HORSE,S-START,1 RSTACK ?CCL3: DEC 'CAB-RAMP ADD CAB-RAMP,1 MUL STACK,2 CALL SOUNDS,S-HORSE,S-START,STACK,1,RT-S-CAB-GOES RSTACK .FUNCT END-FANFARE SET 'SOUND-QUEUED?,FALSE-VALUE CALL1 KILL-SOUNDS RSTACK .FUNCT KILL-SOUNDS EQUAL? SOUND-QUEUED?,S-FANFARE /TRUE SET 'SOUND-QUEUED?,FALSE-VALUE ICALL SOUNDS,0,S-STOP RTRUE .FUNCT V-$SOUND LESS? LOOPING?,0 \?CND1 SET 'LOOPING?,0 ?CND1: PRINTI "Sound " ZERO? SOUND-ON? /?CCL5 SET 'SOUND-QUEUED?,FALSE-VALUE ICALL1 KILL-SOUNDS SET 'SOUND-ON?,FALSE-VALUE PRINTR "off." ?CCL5: PRINTI "on." CRLF SET 'SOUND-ON?,TRUE-VALUE CALL1 CHECK-LOOPING RSTACK .FUNCT PRE-CALL,?TMP1 EQUAL? GL-PRSI,TH-CAB-WHISTLE /FALSE EQUAL? GL-PRSO,ROOMS \?CCL5 EQUAL? GL-P-PRSA-WORD,W?HAIL \?CCL8 PRINTR "Greetings, O strange one." ?CCL8: PRINTR "Helllloooooooo." ?CCL5: GET GL-P-ADJW,0 EQUAL? STACK,W?MARY \?CCL10 EQUAL? GL-P-PRSA-WORD,W?HAIL \?CCL10 PRINTR "Praying isn't a bad idea. But if you really need help, simply type HINT." ?CCL10: GET GL-P-NAMW,0 EQUAL? STACK,W?CAB \?CCL14 FSET? GL-PLACE-CUR,FL-INDOORS \?CCL17 ICALL1 RT-CYOU-MSG PRINTI "can't " PRINTB GL-P-PRSA-WORD PRINTR " a cab while indoors." ?CCL17: LOC TH-GROWLER-CAB >?TMP1 LOC TH-HANSOM-CAB EQUAL? GL-PLACE-CUR,?TMP1,STACK \?CCL19 PRINT K-CAB-HERE-MSG CRLF RTRUE ?CCL19: EQUAL? GL-P-PRSA-WORD,W?HAIL \?CCL22 ICALL RT-CYOU-MSG,STR?648,STR?649 PRINTI "a hand in the air" JUMP ?CND20 ?CCL22: ICALL RT-CYOU-MSG,STR?650,STR?651 PRINTI "for a few moments" ?CND20: PRINTI ", but nothing happens. Apparently that isn't how Victorians " PRINTB GL-P-PRSA-WORD PRINTR " cabs." ?CCL14: FSET? GL-PRSO,FL-ALIVE \?CCL24 CALL2 RT-VISIBLE?,GL-PRSO ZERO? STACK \FALSE ?CCL24: PRINTR "Nothing happens." .FUNCT PRE-DROP EQUAL? GL-PRSO,TH-ANCHOR /FALSE IN? GL-PRSO,GL-WINNER /FALSE IN? GL-PRSO,GLOBAL-OBJECTS \?CCL7 CALL1 RT-IMPOSSIBLE-MSG RSTACK ?CCL7: FSET? GL-PRSO,FL-BODYPART \?CCL9 CALL1 RT-IMPOSSIBLE-MSG RSTACK ?CCL9: ICALL RT-CYOU-MSG,STR?228,STR?229 PRINTI "not holding " ICALL1 RT-THEO-PRINT PRINTC 46 CRLF RETURN 2 .FUNCT PRE-DUMB-EXAMINE CALL1 PRE-EXAMINE ZERO? STACK /FALSE RTRUE .FUNCT PRE-EXAMINE ZERO? GL-NOW-LIT? \?CCL3 PRINT K-TOO-DARK-MSG CRLF RETURN 2 ?CCL3: EQUAL? GL-PRSO,TH-INTDIR \FALSE EQUAL? GL-P-DIRECTION,P?UP \?CCL8 ICALL RT-PERFORM,V?LOOK-UP,ROOMS RTRUE ?CCL8: EQUAL? GL-P-DIRECTION,P?DOWN \?CND6 ICALL RT-PERFORM,V?LOOK-DOWN,ROOMS RTRUE ?CND6: PRINTR "You peer off into the middle distance, but then return your attention to the matters at hand." .FUNCT PRE-FEED CALL2 PRE-GIVE,TRUE-VALUE ZERO? STACK /FALSE RTRUE .FUNCT PRE-GIVE,FEED? ZERO? GL-PRSO /?CTR2 ZERO? GL-PRSI \?CCL3 ?CTR2: PRINT K-REFERRING-MSG CRLF RTRUE ?CCL3: EQUAL? GL-PRSO,GL-PRSI /?CTR6 IN? GL-PRSI,GLOBAL-OBJECTS \?CCL7 ?CTR6: ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL7: FSET? GL-PRSI,FL-ALIVE /?CCL11 ICALL1 RT-CYOU-MSG PRINTI "cannot " ZERO? FEED? /?CCL14 PRINTI "feed " JUMP ?CND12 ?CCL14: PRINTI "give " ?CND12: PRINTI "anything to " ICALL2 RT-A-PRINT,GL-PRSI PRINTR "." ?CCL11: EQUAL? GL-PRSI,CH-ME,CH-PLAYER \?CCL16 IN? GL-PRSO,CH-PLAYER \?CCL16 ICALL1 RT-ALREADY-HAVE-PRSO-MSG RTRUE ?CCL16: EQUAL? GL-PRSI,CH-ME,CH-PLAYER /?CCL20 CALL2 RT-DONT-HAVE-MSG,GL-PRSO ZERO? STACK \TRUE ?CCL20: FSET? GL-PRSO,FL-WORN \FALSE IN? GL-PRSO,CH-PLAYER \FALSE ICALL1 RT-TAKE-OFF-PRSO-FIRST-MSG RFALSE .FUNCT PRE-LISTEN FSET? TH-COTTON-BALLS,FL-WORN \FALSE ICALL1 RT-CYOU-MSG PRINTR "can't hear anything very clearly, but then what did you expect with those huge wads of cotton plugging up your ears?" .FUNCT PRE-POCKET EQUAL? GL-WINNER,CH-PLAYER /?CCL3 PRINTR "[You cannot tell characters to do that.]" ?CCL3: IN? GL-PRSO,GLOBAL-OBJECTS \?CCL5 ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL5: IN? GL-PRSO,TH-POCKET \FALSE ICALL1 RT-CTHEO-PRINT ICALL1 RT-IS-ARE-MSG PRINTI "already in " ICALL2 DPRINT,TH-POCKET PRINTR "." .FUNCT PRE-PUT,PTR,OLOC,CNT IN? GL-PRSO,GLOBAL-OBJECTS /FALSE EQUAL? GL-PRSO,TH-ANCHOR /?CCL5 IN? GL-PRSO,GL-WINNER /?CCL5 ICALL RT-CYOU-MSG,STR?228,STR?229 PRINTI "not holding " ICALL1 RT-THEO-PRINT PRINTC 46 CRLF RETURN 2 ?CCL5: EQUAL? GL-PRSO,TH-CLOTHES \?CCL9 PRINT K-INAPPROPRIATE-MSG CRLF RTRUE ?CCL9: EQUAL? GL-PRSO,GL-PRSI \?CCL11 PRINT K-HOW-TO-MSG CRLF RTRUE ?CCL11: EQUAL? GL-PRSI,TH-INTDIR,TH-RIGHT,TH-LEFT \?CCL13 PRINTR "[You must specify an object.]" ?CCL13: EQUAL? GL-PRSI,TH-HANDS \?CCL15 ICALL RT-NOT-LIKELY-MSG,GL-PRSO,STR?652 RTRUE ?CCL15: EQUAL? TH-FEET,GL-PRSO,GL-PRSI \?CCL17 PRINTI "That would" ICALL1 RT-WASTE-OF-TIME-MSG RTRUE ?CCL17: EQUAL? TH-EARS,GL-PRSO,GL-PRSI /FALSE EQUAL? GL-PRSO,TH-HANDS \?CCL21 ICALL RT-PERFORM,V?REACH-IN,GL-PRSI RTRUE ?CCL21: IN? GL-PRSI,GLOBAL-OBJECTS /FALSE EQUAL? GL-PRSO,TH-PIPE \?CCL25 EQUAL? GL-PRSI,W?MOUTH,W?LIPS \?CCL25 CALL RT-PERFORM,V?SMOKE,TH-PIPE RSTACK ?CCL25: FSET? GL-PRSO,FL-BODYPART \?CCL29 ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL29: IN? GL-PRSO,GL-PRSI \?CCL31 ICALL1 RT-CTHEO-PRINT ICALL1 RT-IS-ARE-MSG PRINTI "already" ICALL2 RT-IN-ON-MSG,GL-PRSI ICALL1 RT-THEI-PRINT PRINTR "." ?CCL31: EQUAL? GL-PRSO,GL-PRSI /?CTR32 IN? GL-PRSO,GLOBAL-OBJECTS /?CTR32 FSET? GL-PRSO,FL-TAKEABLE /?CCL33 ?CTR32: ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL33: CALL2 RT-ACCESSIBLE?,GL-PRSI ZERO? STACK \?CCL38 ICALL2 RT-CANT-SEE-ANY-MSG,GL-PRSI RTRUE ?CCL38: EQUAL? GL-PRSO,TH-STETHOSCOPE \?CCL40 FSET? GL-PRSI,FL-PERSON /FALSE ?CCL40: CALL RT-CHECK-MOVE-MSG?,GL-PRSO,GL-PRSI ZERO? STACK \TRUE FSET? GL-PRSO,FL-WORN \FALSE IN? GL-PRSO,CH-PLAYER \FALSE EQUAL? GL-PRSI,CH-ME,CH-PLAYER /FALSE ICALL1 RT-TAKE-OFF-PRSO-FIRST-MSG RFALSE .FUNCT PRE-PUT-ON CALL1 PRE-PUT ZERO? STACK \TRUE FSET? GL-PRSI,FL-ALIVE /FALSE FSET? GL-PRSI,FL-SURFACE /FALSE ICALL1 RT-NO-GOOD-SURFACE-MSG RTRUE .FUNCT PRE-SHOW EQUAL? FALSE-VALUE,GL-PRSO,GL-PRSI \?CCL3 PRINT K-REFERRING-MSG CRLF RTRUE ?CCL3: EQUAL? GL-PRSI,CH-ME,CH-PLAYER \?CCL5 CALL RT-META-IN?,GL-PRSO,CH-PLAYER ZERO? STACK /FALSE CALL RT-PERFORM,V?EXAMINE,GL-PRSO RSTACK ?CCL5: EQUAL? GL-PRSO,GL-PRSI /?CTR9 IN? GL-PRSI,GLOBAL-OBJECTS \?CCL10 ?CTR9: CALL1 RT-IMPOSSIBLE-MSG RSTACK ?CCL10: FSET? GL-PRSI,FL-ALIVE /FALSE ICALL1 RT-CYOU-MSG PRINTI "cannot show things to " ICALL2 RT-A-PRINT,GL-PRSI PRINTR "." .FUNCT PRE-SHOOT EQUAL? GL-PRSI,FALSE-VALUE,TH-GUN /?CCL3 ICALL1 RT-CYOU-MSG PRINTI "cannot shoot anything with " ICALL1 RT-THEI-PRINT PRINTR "." ?CCL3: EQUAL? GL-PRSI,GL-PRSO \?CCL5 PRINT K-HOW-TO-MSG CRLF RTRUE ?CCL5: IN? TH-GUN,CH-PLAYER /?CCL7 PRINTR "Clever thinking. If only you had something to shoot with!" ?CCL7: EQUAL? GL-PRSO,CH-ME,TH-EARS,CH-PLAYER /?CTR8 EQUAL? GL-PRSO,TH-HEAD,TH-WATSONS-HEART \?CCL9 ?CTR8: PRINT K-SUICIDE-MSG CRLF RTRUE ?CCL9: EQUAL? GL-PRSO,TH-BREATH /FALSE FSET? GL-PRSO,FL-BODYPART \?CCL15 PRINTR "Is this how you got sent home from the Afghan Campaign?" ?CCL15: EQUAL? GL-PRSO,TH-GUN /?CCL17 CALL RT-META-IN?,GL-PRSO,CH-PLAYER ZERO? STACK /?CCL17 PRINT K-DROP-IT-FIRST-MSG CRLF RTRUE ?CCL17: ZERO? TH-GUN-AUX1 \?CCL21 PRINTR "Click!" ?CCL21: DEC 'TH-GUN-AUX1 RFALSE .FUNCT PRE-TAKE,L,?TMP1 EQUAL? GL-PRSO,TH-BREATH \?CND1 EQUAL? GL-WINNER,CH-PLAYER \?CND1 ICALL1 V-INHALE RTRUE ?CND1: IN? GL-PRSO,GLOBAL-OBJECTS /FALSE LOC GL-WINNER EQUAL? GL-PRSO,STACK \?CND7 ICALL1 RT-CYOU-MSG PRINTI "are already inside " ICALL1 RT-THEO-PRINT PRINTR "." ?CND7: LOC GL-PRSO >L FSET? GL-PRSO,FL-BODYPART \?CCL11 CALL1 RT-IMPOSSIBLE-MSG RSTACK ?CCL11: EQUAL? GL-PRSO,TH-STETHOSCOPE,TH-WATSONS-HAT,TH-COTTON-BALLS \?CCL13 FSET? GL-PRSO,FL-WORN /FALSE ?CCL13: EQUAL? L,GL-WINNER \?CCL17 ICALL RT-CYOU-MSG,STR?228,STR?229 PRINTI "already " FSET? GL-PRSO,FL-WORN \?CCL20 PRINTI "wearing " JUMP ?CND18 ?CCL20: PRINTI "holding " ?CND18: ICALL1 RT-THEO-PRINT PRINTR "." ?CCL17: ZERO? L /?CCL22 FSET? L,FL-CONTAINER \?CCL22 FSET? L,FL-OPENABLE \?CCL22 FSET? L,FL-OPENED /?CCL22 ICALL1 RT-CYOU-MSG PRINTI "can't reach into " ICALL2 RT-THEO-PRINT,L PRINTR ". It is closed." ?CCL22: ZERO? GL-PRSI /FALSE EQUAL? GL-PRSO,GL-PRSI \?CCL31 GET GL-P-NAMW,0 >?TMP1 GET GL-P-NAMW,1 EQUAL? ?TMP1,STACK /?CCL34 GET GL-P-ADJW,0 >?TMP1 GET GL-P-ADJW,1 EQUAL? ?TMP1,STACK \FALSE ?CCL34: CALL1 RT-IMPOSSIBLE-MSG RSTACK ?CCL31: EQUAL? GL-PRSI,CH-ME,CH-PLAYER \?CCL38 EQUAL? GL-WINNER,CH-PLAYER \?CCL41 ICALL1 RT-NOBODY-TO-ASK-MSG RTRUE ?CCL41: EQUAL? L,CH-PLAYER /FALSE ICALL RT-CYOU-MSG,STR?653,STR?654 PRINTI "have " ICALL1 RT-THEO-PRINT PRINTR "." ?CCL38: EQUAL? GL-PRSI,CH-BANK-GUARD \?CCL45 EQUAL? L,TH-GUARDS-POCKET \?CCL45 CALL RT-PERFORM,V?TAKE,GL-PRSO,TH-GUARDS-POCKET RSTACK ?CCL45: EQUAL? L,GL-PRSI /FALSE ICALL1 RT-CTHEO-PRINT ICALL1 RT-ISNT-ARENT-MSG ICALL RT-IN-ON-MSG,GL-PRSI,FALSE-VALUE ICALL1 RT-THEI-PRINT PRINTR "." .FUNCT PRE-THROW CALL1 PRE-PUT ZERO? STACK /FALSE RTRUE .FUNCT PRE-THROW-OVER CALL1 PRE-THROW ZERO? STACK /FALSE RTRUE .FUNCT PRE-WATCH CALL1 PRE-EXAMINE ZERO? STACK /FALSE RTRUE .FUNCT V-ADJUST EQUAL? GL-P-PRSA-WORD,W?ADJUST \?CCL3 ICALL1 RT-CTHEO-PRINT ICALL2 RT-DONT-DOESNT-MSG,GL-PRSO PRINTR "need adjustment." ?CCL3: ICALL1 RT-CYOU-MSG PRINTI "cannot focus " ICALL2 RT-A-PRINT,GL-PRSO PRINTR "." .FUNCT V-ALARM CALL1 RT-FOOLISH-TO-TALK-MSG ZERO? STACK /?CCL3 RETURN 2 ?CCL3: EQUAL? GL-PRSO,ROOMS \?CCL5 ICALL RT-CYOU-MSG,STR?228,STR?229 PRINTR "already wide awake." ?CCL5: FSET? GL-PRSO,FL-ALIVE \?CCL7 ICALL1 RT-CTHEO-PRINT ICALL2 RT-IS-ARE-MSG,GL-PRSO FSET? GL-PRSO,FL-ASLEEP \?CCL10 PRINTR "unconscious, not asleep." ?CCL10: PRINTR "already wide awake." ?CCL7: ICALL1 RT-IMPOSSIBLE-MSG RTRUE .FUNCT V-ARREST PRINTI "Unfortunately," ICALL RT-YOU-MSG,STR?655,STR?656 PRINTI "not have the authority to arrest any" FSET? GL-PRSO,FL-PERSON \?CCL3 PRINTI "one" JUMP ?CND1 ?CCL3: PRINTI "thing" ?CND1: PRINTR "." .FUNCT V-ASK-ABOUT-1 RTRUE .FUNCT V-ASK-ABOUT CALL1 RT-FOOLISH-TO-TALK-MSG ZERO? STACK /?CCL3 RETURN 2 ?CCL3: EQUAL? GL-WINNER,GL-PRSI \?CCL5 PRINTI "That would" ICALL1 RT-WASTE-OF-TIME-MSG RETURN 2 ?CCL5: EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL7 ICALL1 RT-TALK-TO-SELF-MSG RTRUE ?CCL7: ICALL1 RT-NO-RESPONSE-MSG RTRUE .FUNCT V-ASK-FOR-1 RTRUE .FUNCT V-ASK-FOR,WHO CALL1 RT-FOOLISH-TO-TALK-MSG ZERO? STACK /?CCL3 RETURN 2 ?CCL3: EQUAL? GL-WINNER,GL-PRSI \?CCL5 ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL5: FSET? GL-PRSI,FL-TAKEABLE /?CCL7 ICALL2 RT-CTHEO-PRINT,GL-PRSO PRINTI " say" ICALL2 RT-S-NOS-MSG,GL-PRSO PRINTI ", ""Unfortunately, " FSET? GL-PRSO,FL-PLURAL /?CCL10 PRINTC 73 JUMP ?CND8 ?CCL10: PRINTI "we" ?CND8: PRINTR " can't help you with that.""" ?CCL7: ICALL1 RT-NO-RESPONSE-MSG RTRUE .FUNCT V-BLOW-INTO FSET? GL-PRSO,FL-PERSON \?CCL3 ICALL RT-PERFORM,V?USE,GL-PRSO RTRUE ?CCL3: ICALL2 RT-NO-POINT-MSG,STR?657 RTRUE .FUNCT V-BOW ICALL2 RT-NO-POINT-MSG,STR?658 RTRUE .FUNCT V-BURN,OBJ,FIX-LAMP? CALL RT-META-IN?,TH-LAMP,GL-WINNER ZERO? STACK /?CND1 FSET? TH-LAMP,FL-LIGHTED \?CND1 SET 'FIX-LAMP?,TRUE-VALUE FCLEAR TH-LAMP,FL-LIGHTED ?CND1: CALL RT-GET-WHAT-I-MEAN,FL-LIGHTED,194,PR?WITH,TRUE-VALUE,TRUE-VALUE >OBJ ZERO? OBJ /?CCL7 EQUAL? OBJ,TH-LAMP /?CCL7 ZERO? FIX-LAMP? /?CND10 FSET TH-LAMP,FL-LIGHTED ?CND10: PRINTI "[with " ICALL2 RT-THEO-PRINT,OBJ PRINTC 93 CRLF ICALL RT-PERFORM,V?BURN-WITH,GL-PRSO,OBJ RTRUE ?CCL7: ZERO? FIX-LAMP? /?CND12 FSET TH-LAMP,FL-LIGHTED ?CND12: PUT GL-P-ITBL,K-P-PREP2,PR?WITH ICALL1 RT-SYNTAX-CHECK SET 'GL-P-GOOD,FALSE-VALUE RETURN 2 .FUNCT V-BURN-WITH FSET? GL-PRSO,FL-BURNABLE \?CCL3 FSET? GL-PRSI,FL-BURNABLE \?CCL6 FSET? GL-PRSI,FL-LIGHTED \?CCL6 CALL RT-META-IN?,TH-ETHERIUM-AMPOULE,GL-PRSO ZERO? STACK /?CND9 FSET? TH-ETHERIUM-AMPOULE,FL-BROKEN /?CND9 ICALL1 RT-CTHEO-PRINT PRINTI " catches fire, and quickly generates enough heat to affect the etherium you left inside it." ICALL RT-PERFORM,V?BURN-WITH,TH-ETHERIUM-AMPOULE,GL-PRSI RTRUE ?CND9: REMOVE GL-PRSO FCLEAR GL-PRSO,FL-WORN ICALL1 RT-CTHEO-PRINT PRINTR " catches fire and is quickly consumed." ?CCL6: ICALL1 RT-CTHEI-PRINT ICALL2 RT-ISNT-ARENT-MSG,GL-PRSI PRINTR "burning." ?CCL3: ICALL1 RT-CYOU-MSG PRINTI "can't " PRINTB GL-P-PRSA-WORD PRINTC 32 ICALL1 RT-THEO-PRINT PRINTR "." .FUNCT V-BUY CALL2 RT-VISIBLE?,GL-PRSO ZERO? STACK \?CCL3 ICALL2 RT-CANT-SEE-ANY-MSG,GL-PRSO RETURN 2 ?CCL3: CALL2 RT-HELD?,GL-PRSO ZERO? STACK /?CCL5 ICALL1 RT-ALREADY-HAVE-PRSO-MSG RTRUE ?CCL5: FSET? GL-PRSO,FL-BUYABLE /?CCL7 ICALL1 RT-CTHEO-PRINT ICALL1 RT-ISNT-ARENT-MSG PRINTR "for sale." ?CCL7: EQUAL? GL-WINNER,CH-PLAYER \?CCL9 IN? GL-PRSO,TH-POCKET \?CCL9 ICALL1 RT-SAY-ITS-MSG PRINTI "in " ICALL2 RT-THEO-PRINT,TH-POCKET PRINTR "." ?CCL9: ZERO? GL-PRSI /?CCL13 ICALL RT-CYOU-MSG,STR?659,STR?660 PRINTI "buy " ICALL1 RT-THEO-PRINT PRINTI " with " ICALL2 RT-A-PRINT,GL-PRSI PRINTR "." ?CCL13: ICALL1 RT-NO-MONEY-MSG RTRUE .FUNCT V-BUY-FROM PRINTI "It's not for sale." CRLF RETURN 2 .FUNCT V-CALL LOC GL-PRSO EQUAL? STACK,GL-PLACE-CUR \?CCL3 ICALL1 RT-CTHEO-PRINT ICALL2 RT-IS-ARE-MSG,GL-PRSO PRINTR "right in front of you." ?CCL3: PRINTR "Nothing happens." .FUNCT V-CAST-OFF,?TMP1 EQUAL? GL-PRSO,ROOMS,TH-BOAT /?CCL3 ICALL1 V-DROP RTRUE ?CCL3: IN? CH-PLAYER,TH-BOAT /?CTR4 LOC CH-PLAYER >?TMP1 LOC TH-BOAT EQUAL? ?TMP1,STACK \?CCL5 ?CTR4: ICALL1 RT-LAUNCH-BOAT RTRUE ?CCL5: PRINTR "Clever idea. Now, if only you were in a boat...." .FUNCT V-CLEAN PRINTI "Sorry. You get no points for neatness." CRLF RETURN 2 .FUNCT V-CLEAN-OFF EQUAL? GL-PRSO,GL-PRSI \?CCL3 ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL3: ICALL1 RT-CYOU-MSG PRINTI "cannot " PRINTB GL-P-PRSA-WORD PRINTC 32 ICALL1 RT-THEO-PRINT PRINTI " on " ICALL1 RT-THEI-PRINT PRINTR "." .FUNCT V-CLIMB-DOWN EQUAL? GL-P-PRSA-WORD,W?JUMP,W?LEAP \?CCL3 ICALL RT-PERFORM,V?DIVE,GL-PRSO RTRUE ?CCL3: EQUAL? GL-PRSO,ROOMS \?CCL5 ICALL2 RT-DO-WALK,P?DOWN RTRUE ?CCL5: ICALL1 RT-IMPOSSIBLE-MSG RTRUE .FUNCT V-CLIMB-ON EQUAL? GL-P-PRSA-WORD,W?TAKE \?CCL3 ICALL RT-NOT-LIKELY-MSG,GL-PRSO,STR?661 RTRUE ?CCL3: ICALL1 RT-CYOU-MSG PRINTI "cannot " PRINTB GL-P-PRSA-WORD PRINTI " onto " ICALL1 RT-SAY-HIM-HER-THEM-IT-MSG PRINTR "." .FUNCT V-CLIMB-OVER EQUAL? GL-PRSO,ROOMS \?CCL3 ICALL1 V-WALK-AROUND RTRUE ?CCL3: ICALL1 RT-CYOU-MSG PRINTI "cannot climb over " ICALL1 RT-SAY-HIM-HER-THEM-IT-MSG PRINTR "." .FUNCT V-CLIMB-UP EQUAL? GL-PRSO,ROOMS \?CCL3 ICALL2 RT-DO-WALK,P?UP RTRUE ?CCL3: ICALL1 RT-IMPOSSIBLE-MSG RTRUE .FUNCT V-CLOSE FSET? GL-PRSO,FL-OPENABLE \?CCL3 FSET? GL-PRSO,FL-OPENED /?CCL6 ICALL2 RT-ITS-ALREADY-MSG,STR?662 RTRUE ?CCL6: FSET? GL-PRSO,FL-LOCKED \?CCL8 PRINTR "The door is fixed in the open position. It cannot be closed." ?CCL8: ICALL1 RT-YOU-CLOSE-MSG RTRUE ?CCL3: ICALL1 RT-CANT-CLOSE-THAT-MSG RTRUE .FUNCT V-COUNT GET GL-P-NAMW,0 EQUAL? STACK,W?ARMS,W?EARS,W?EYES /?CTR2 GET GL-P-NAMW,0 EQUAL? STACK,W?FEET,W?HANDS,W?LEGS /?CTR2 GET GL-P-NAMW,0 EQUAL? STACK,W?LIPS \?CCL3 ?CTR2: PRINTR "Two." ?CCL3: FSET? GL-PRSO,FL-PLURAL /?CTR7 EQUAL? GL-PRSO,TH-BANK-OF-CANDLES \?CCL8 ?CTR7: ICALL RT-CYOU-MSG,STR?663,STR?664 PRINTI "distracted and lose" EQUAL? GL-WINNER,CH-PLAYER /?CND11 PRINTC 115 ?CND11: PRINTR " count." ?CCL8: ICALL RT-CYOU-MSG,STR?665,STR?666 PRINTR "only one." .FUNCT V-COVER ICALL RT-PERFORM,V?PUT-ON,GL-PRSI,GL-PRSO RTRUE .FUNCT V-CROSS ICALL1 RT-CYOU-MSG PRINTI "cannot cross " ICALL1 RT-SAY-HIM-HER-THEM-IT-MSG PRINTR "." .FUNCT V-CUT PRINTI "That would" ICALL1 RT-WASTE-OF-TIME-MSG RTRUE .FUNCT V-DETONATE ICALL1 RT-IMPOSSIBLE-MSG RTRUE .FUNCT V-DIAGNOSE FSET? GL-PRSO,FL-ALIVE /?CCL3 PRINTR "Don't be ridiculous." ?CCL3: FSET? GL-PRSO,FL-ASLEEP \?CCL5 ICALL1 RT-CTHEO-PRINT ICALL2 RT-IS-ARE-MSG,GL-PRSO PRINTR "asleep." ?CCL5: EQUAL? GL-PRSO,CH-PLAYER,CH-ME \?CCL7 PRINTR "You're doing fine. Now quit fooling around and get back to solving the game." ?CCL7: ICALL1 RT-CTHEO-PRINT PRINTI " appear" ICALL2 RT-S-NOS-MSG,GL-PRSO PRINTR " to be in good health." .FUNCT V-DIVE EQUAL? GL-PRSO,ROOMS \?CCL3 EQUAL? GL-PLACE-CUR,RM-THE-EMBANKMENT,RM-SWAN-LANE,RM-LONDON-BRIDGE \?CCL3 PRINTI "Yuck! Have you looked at that water?" CRLF RETURN 2 ?CCL3: PRINTI "That would be a foolish thing to do." CRLF RETURN 2 .FUNCT V-DRESS EQUAL? GL-PRSO,ROOMS \?CCL3 PRINTR "You are already dressed." ?CCL3: FSET? GL-PRSO,FL-PERSON \?CCL5 ICALL RT-CYOU-MSG,STR?228,STR?229 PRINTR "already dressed." ?CCL5: ICALL1 RT-CYOU-MSG PRINTI "cannot dress " ICALL2 RT-A-PRINT,GL-PRSO PRINTR "." .FUNCT V-DRINK,FROM? ICALL1 RT-CYOU-MSG PRINTI "cannot drink " ZERO? FROM? /?CND1 PRINTI "from " ?CND1: ICALL2 DPRINT,TH-NOT-HERE-OBJECT PRINTR "." .FUNCT V-DRINK-FROM ICALL2 V-DRINK,TRUE-VALUE RTRUE .FUNCT V-DRIVE LOC GL-WINNER EQUAL? STACK,TH-HANSOM-CAB,TH-GROWLER-CAB \?CCL3 EQUAL? GL-PRSO,ROOMS /TRUE SET 'GL-WHERE-TO-PROMPT?,FALSE-VALUE PRINTR """Sorry, guv. Could you be a little more specific?""" ?CCL3: ICALL RT-CYOU-MSG,STR?228,STR?229 PRINTR "not in a cab." .FUNCT V-DROP CALL1 RT-IDROP-MSG ZERO? STACK /TRUE ICALL1 RT-SAY-DROPPED-MSG RTRUE .FUNCT V-DUMB-EXAMINE CALL1 V-EXAMINE ZERO? STACK /FALSE RTRUE .FUNCT V-EAT EQUAL? GL-WINNER,CH-PLAYER \?CCL3 ICALL RT-NOT-LIKELY-MSG,GL-PRSO,STR?667 RTRUE ?CCL3: PRINTI """It" CALL2 RT-PICK-NEXT,GL-NOT-LIKELY-TXT PRINT STACK PRINTI " that " ICALL1 RT-THEO-PRINT PRINTR " would agree with me.""" .FUNCT V-EMPTY,DEST ZERO? DEST \?CND1 SET 'DEST,CH-PLAYER ?CND1: FSET? GL-PRSO,FL-SURFACE \?CCL5 ICALL2 RT-EMPTY-PRSO-MSG,DEST RTRUE ?CCL5: FSET? GL-PRSO,FL-CONTAINER \?CCL7 FSET? GL-PRSO,FL-OPENED \?CCL10 ICALL2 RT-EMPTY-PRSO-MSG,DEST RTRUE ?CCL10: ICALL2 RT-ITS-CLOSED-MSG,GL-PRSO RTRUE ?CCL7: ICALL1 RT-CYOU-MSG PRINTI "cannot possibly empty " ICALL1 RT-THEO-PRINT PRINTR "." .FUNCT V-EMPTY-INTO EQUAL? GL-PRSI,TH-HANDS,CH-ME,CH-PLAYER \?CCL3 CALL2 V-EMPTY,CH-PLAYER RSTACK ?CCL3: CALL RT-IDENTIFY-FLOOR?,W?GROUND,GL-PRSI ZERO? STACK \?CTR4 CALL RT-IDENTIFY-FLOOR?,W?FLOOR,GL-PRSI ZERO? STACK /?CCL5 ?CTR4: CALL2 V-EMPTY,GL-PRSI RSTACK ?CCL5: FSET? GL-PRSI,FL-SURFACE \?CCL9 CALL2 V-EMPTY,GL-PRSI RSTACK ?CCL9: FSET? GL-PRSI,FL-CONTAINER \?CCL11 FSET? GL-PRSI,FL-OPENED \?CCL14 FSET? GL-PRSI,TH-WATSONS-COAT \?CCL17 CALL2 V-EMPTY,TH-POCKET RSTACK ?CCL17: CALL2 V-EMPTY,GL-PRSI RSTACK ?CCL14: CALL2 RT-ITS-CLOSED-MSG,GL-PRSI RSTACK ?CCL11: ICALL1 RT-CYOU-MSG PRINTI "cannot empty " ICALL1 RT-THEO-PRINT PRINTI " into " ICALL1 RT-THEI-PRINT PRINTR "." .FUNCT V-ENTER,VEH EQUAL? GL-PRSO,GL-PLACE-CUR \?CCL3 ICALL1 RT-ALREADY-IN-ROOM-MSG RTRUE ?CCL3: CALL RT-FIND-IN?,GL-PLACE-CUR,FL-VEHICLE >VEH ZERO? VEH /?CND1 EQUAL? GL-PRSO,ROOMS,VEH \?CND1 IN? GL-WINNER,VEH \?CCL9 ICALL RT-CYOU-MSG,STR?228,STR?229 PRINTI "already in " ICALL2 RT-THEO-PRINT,VEH PRINTR "." ?CCL9: ICALL RT-PERFORM,V?ENTER,VEH RTRUE ?CND1: EQUAL? GL-PRSO,ROOMS \?CCL12 ICALL2 RT-DO-WALK,P?IN RTRUE ?CCL12: FSET? GL-PRSO,FL-CLOTHING \?CCL14 PRINTI "[Presumably, you mean WEAR " ICALL1 RT-THEO-PRINT PRINTI ".]" CRLF ICALL RT-PERFORM,V?WEAR,GL-PRSO RTRUE ?CCL14: ICALL1 RT-IMPOSSIBLE-MSG RTRUE .FUNCT V-ESCAPE ICALL1 V-WALK-AROUND RTRUE .FUNCT V-EXAMINE,ODF,NUM,DRES FSET? GL-PRSO,FL-HAS-DESCFCN \?CND1 GETP GL-PRSO,P?ACTION >ODF ?CND1: CALL2 RT-HOLE?,GL-PRSO >NUM ZERO? NUM /?CND3 PRINTI "There " EQUAL? NUM,1 \?CCL7 PRINTI "is one" JUMP ?CND5 ?CCL7: PRINTI "are " EQUAL? NUM,2 \?CCL10 PRINTI "two" JUMP ?CND5 ?CCL10: EQUAL? NUM,3 \?CCL12 PRINTI "three" JUMP ?CND5 ?CCL12: EQUAL? NUM,4 \?CCL14 PRINTI "four" JUMP ?CND5 ?CCL14: EQUAL? NUM,5 \?CCL16 PRINTI "five" JUMP ?CND5 ?CCL16: PRINTI "six" ?CND5: PRINTI " bullet hole" GRTR? NUM,1 \?CND17 PRINTC 115 ?CND17: PRINTI " in " ICALL1 RT-THEO-PRINT PRINTC 46 CRLF ?CND3: ZERO? ODF /?CCL21 CALL ODF,K-M-DESCFCN >DRES EQUAL? DRES,1 \?CCL21 FSET GL-PRSO,FL-SEEN RTRUE ?CCL21: FSET? GL-PRSO,FL-OPENABLE \?CCL25 ICALL1 RT-OPEN-CLOSED-MSG CRLF FSET GL-PRSO,FL-SEEN RTRUE ?CCL25: FSET? GL-PRSO,FL-SURFACE \?CCL27 PRINTI "On " ICALL1 RT-THEO-PRINT PRINTI " can be seen " ICALL2 RT-PRINT-CONTENTS-2,GL-PRSO PRINTC 46 CRLF FSET GL-PRSO,FL-SEEN RTRUE ?CCL27: FSET? GL-PRSO,FL-CONTAINER \?CCL29 FSET? GL-PRSO,FL-OPENED /?CTR31 FSET? GL-PRSO,FL-TRANSPARENT \?CCL32 ?CTR31: ICALL1 V-LOOK-INSIDE FSET GL-PRSO,FL-SEEN RTRUE ?CCL32: ICALL2 RT-ITS-CLOSED-MSG,GL-PRSO CRLF FSET GL-PRSO,FL-SEEN RTRUE ?CCL29: FSET? GL-PRSO,FL-PERSON \?CCL36 CALL2 RT-SEE-ANYTHING-IN?,GL-PRSO ZERO? STACK /?CCL36 ICALL1 RT-CTHEO-PRINT ICALL2 RT-IS-ARE-MSG,GL-PRSO PRINTI "holding " ICALL2 RT-PRINT-CONTENTS-2,GL-PRSO PRINTC 46 CRLF FSET GL-PRSO,FL-SEEN RTRUE ?CCL36: ZERO? NUM \TRUE ZERO? DRES \TRUE ICALL1 RT-NOTHING-INTERESTING-MSG PRINTI " about " ICALL1 RT-THEO-PRINT PRINTC 46 CRLF FSET GL-PRSO,FL-SEEN RTRUE .FUNCT V-EXHALE EQUAL? GL-PRSO,TH-BREATH,ROOMS /?CCL3 ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL3: FSET? TH-BREATH,FL-LOCKED /?CCL5 ICALL1 RT-CYOU-MSG ICALL2 RT-WOULD-HAVE-TO-MSG,STR?668 RTRUE ?CCL5: FCLEAR TH-BREATH,FL-LOCKED PRINTI "You begin to breathe normally." CRLF ICALL2 RT-ALARM-CLR,RT-I-EXHALE ICALL2 RT-ALARM-CLR,RT-I-INHALE ICALL1 RT-SMELL-ETHERIUM? RTRUE .FUNCT V-EXIT,VEH,L CALL RT-FIND-IN?,GL-PLACE-CUR,FL-VEHICLE >VEH ZERO? VEH /?CND1 EQUAL? GL-PRSO,ROOMS,VEH \?CND1 EQUAL? GL-PRSO,ROOMS \?CCL7 LOC GL-WINNER FSET? STACK,FL-VEHICLE \?CCL7 LOC GL-WINNER ICALL RT-PERFORM,V?EXIT,STACK RTRUE ?CCL7: IN? GL-WINNER,VEH /?CCL11 ICALL RT-CYOU-MSG,STR?228,STR?229 PRINTI "not in " ICALL2 RT-THEO-PRINT,VEH PRINTR "." ?CCL11: ICALL RT-PERFORM,V?EXIT,VEH RTRUE ?CND1: LOC GL-PRSO >L EQUAL? GL-PRSO,ROOMS \?CCL14 ICALL2 RT-DO-WALK,P?OUT RTRUE ?CCL14: EQUAL? GL-PRSO,GL-PLACE-CUR \?CCL16 PRINT K-SPECIFY-DIR-MSG CRLF RTRUE ?CCL16: EQUAL? L,ROOMS \?CCL18 ICALL1 RT-NOT-IN-ROOM-MSG RTRUE ?CCL18: FSET? L,FL-CONTAINER \?CCL20 CALL2 RT-VISIBLE?,GL-PRSO ZERO? STACK /?CCL20 PRINTI "[from " ICALL2 DPRINT,L PRINTC 93 CRLF ICALL RT-PERFORM,V?TAKE,GL-PRSO RTRUE ?CCL20: ICALL1 RT-IMPOSSIBLE-MSG RTRUE .FUNCT V-FEED EQUAL? GL-PRSI,GL-WINNER \?CCL3 ICALL1 RT-CYOU-MSG JUMP ?CND1 ?CCL3: ICALL2 RT-CTHEO-PRINT,GL-PRSI PRINTC 32 ?CND1: PRINTI "cannot eat " ICALL2 RT-THEO-PRINT,GL-PRSO PRINTR "." .FUNCT V-FEED-SWP ICALL RT-PERFORM,V?FEED,GL-PRSI,GL-PRSO RTRUE .FUNCT V-FILL ICALL RT-PERFORM,V?PUT,GL-PRSI,GL-PRSO RTRUE .FUNCT V-FIND,L LOC GL-PRSO >L ZERO? L \?CCL3 PRINT K-DO-IT-YOURSELF-MSG CRLF RTRUE ?CCL3: EQUAL? GL-PRSO,CH-ME,CH-PLAYER,TH-HANDS /?CTR4 EQUAL? GL-PRSO,TH-WATSONS-HEART,TH-FEET,TH-EARS /?CTR4 EQUAL? GL-PRSO,TH-HEAD,TH-PLAYER-BODY,TH-BREATH /?CTR4 EQUAL? GL-PRSO,TH-CLOTHES \?CCL5 ?CTR4: PRINTR "You're right here." ?CCL5: IN? GL-PRSO,CH-PLAYER \?CCL11 PRINTI "You're " FSET? GL-PRSO,FL-WORN \?CCL14 PRINTI "wearing" JUMP ?CND12 ?CCL14: PRINTI "holding" ?CND12: PRINTC 32 ICALL1 RT-SAY-HIM-HER-THEM-IT-MSG PRINTR "." ?CCL11: IN? GL-PRSO,GL-PLACE-CUR /?CTR15 EQUAL? GL-PRSO,GL-PLACE-CUR /?CTR15 IN? GL-PRSO,LOCAL-GLOBALS /?PRD21 IN? GL-PRSO,ROOMS \?CCL16 ?PRD21: CALL RT-GLOBAL-IN?,GL-PRSO,GL-PLACE-CUR ZERO? STACK /?CCL16 ?CTR15: ICALL1 RT-ITS-RIGHT-HERE-MSG RTRUE ?CCL16: FSET? L,FL-PERSON /?PRD27 FSET? L,FL-ALIVE \?CCL25 ?PRD27: CALL2 RT-VISIBLE?,L ZERO? STACK /?CCL25 ICALL2 RT-CTHEO-PRINT,L PRINTI " ha" FSET? L,FL-PLURAL /?CCL32 PRINTC 115 JUMP ?CND30 ?CCL32: PRINTI "ve" ?CND30: PRINTR " it." ?CCL25: CALL2 RT-SEE-INSIDE?,L ZERO? STACK /?CCL34 CALL2 RT-VISIBLE?,L ZERO? STACK /?CCL34 ICALL1 RT-SAY-ITS-MSG ICALL RT-IN-ON-MSG,L,FALSE-VALUE ICALL2 RT-THEO-PRINT,L PRINTR "." ?CCL34: PRINT K-DO-IT-YOURSELF-MSG CRLF RTRUE .FUNCT V-FLIP FSET? GL-PRSO,FL-TAKEABLE /?CCL3 FSET? GL-PRSO,FL-TRYTAKE /?CCL3 ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL3: ICALL2 RT-NO-POINT-MSG,STR?669 RTRUE .FUNCT V-FLY ICALL1 RT-CYOU-MSG PRINTR "cannot possibly do that." .FUNCT V-FOCUS-ON ZERO? GL-PRSI \?CCL3 EQUAL? GL-PRSO,TH-TELESCOPE \?CCL6 ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL6: IN? TH-TELESCOPE,CH-PLAYER \?CCL8 ICALL RT-PERFORM,V?LOOK-THRU,GL-PRSO,TH-TELESCOPE RTRUE ?CCL8: PRINT K-HOW-TO-MSG CRLF RTRUE ?CCL3: EQUAL? GL-PRSO,TH-TELESCOPE \?CCL11 ICALL RT-PERFORM,V?LOOK-THRU,GL-PRSI,GL-PRSO RTRUE ?CCL11: ICALL1 RT-CYOU-MSG PRINTI "cannot focus " ICALL1 RT-THEO-PRINT PRINTI " on " ICALL1 RT-THEI-PRINT PRINTR "." .FUNCT V-FOLD ICALL2 RT-NO-POINT-MSG,STR?670 RTRUE .FUNCT V-FOLLOW ZERO? GL-PRSO \?CCL3 ICALL1 RT-CANT-SEE-ANY-MSG RETURN 2 ?CCL3: CALL RT-META-IN?,GL-PRSO,GL-PLACE-CUR ZERO? STACK \?CND1 LOC GL-PRSO EQUAL? STACK,LOCAL-GLOBALS,GLOBAL-OBJECTS /?CND1 ICALL2 RT-CANT-SEE-ANY-MSG,GL-PRSO RETURN 2 ?CND1: PRINTI "But " EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL9 PRINTR "you're right here." ?CCL9: ICALL1 RT-THEO-PRINT ICALL2 RT-IS-ARE-MSG,GL-PRSO CALL2 RT-VISIBLE?,GL-PRSO ZERO? STACK \?CTR11 IN? GL-PRSO,GLOBAL-OBJECTS \?CCL12 ?CTR11: PRINTI "right here" JUMP ?CND7 ?CCL12: PRINTI "not visible at the moment" ?CND7: PRINTR "." .FUNCT V-FOO EQUAL? GL-P-PRSA-WORD,W?RENT \?CCL3 ICALL1 RT-CTHEO-PRINT ICALL1 RT-ISNT-ARENT-MSG PRINTR "for rent." ?CCL3: EQUAL? GL-PRSO,ROOMS \FALSE PRINTR "Same to you, fella." .FUNCT V-GET-FOR ICALL RT-PERFORM,V?TAKE,GL-PRSO RTRUE .FUNCT V-GET-FOR-SWP ICALL RT-PERFORM,V?TAKE,GL-PRSI RTRUE .FUNCT V-GIN,WHO EQUAL? GL-PLACE-CUR,RM-BYWARD-TOWER \?CCL3 ICALL2 RT-CTHEO-PRINT,CH-TOWER-GUARD PRINTR " takes a quick look around and says, ""Thanks. Don't mind if I do,"" whereupon he whips out a hip flask and takes a quick slug. Just as quickly, he tucks it away and resumes staring at you." ?CCL3: CALL1 RT-WHO-SAYS? >WHO EQUAL? WHO,CH-HOLMES \?CCL6 PRINTR "Holmes shakes his head and says, ""No drinks for you until we recover the Crown Jewels.""" ?CCL6: EQUAL? WHO,CH-WIGGINS \?CCL8 PRINTR "Wiggins says, ""Good idea. I could use a belt.""" ?CCL8: PRINTR "Wrong game, dummy." .FUNCT V-GIVE EQUAL? GL-PRSI,CH-ME,CH-PLAYER \?CCL3 ICALL1 RT-NOBODY-TO-ASK-MSG RTRUE ?CCL3: EQUAL? GL-PRSI,CH-TOWER-GUARD,CH-PALACE-GUARD,CH-TUSSAUDS-GUARD \?CCL5 FSET? GL-PRSO,FL-MONEY \?CCL5 ICALL1 RT-CTHEI-PRINT PRINTI " doesn't even glance at " ICALL1 RT-THEO-PRINT PRINTR ". Clearly he cannot be bribed." ?CCL5: FSET? GL-PRSI,FL-PERSON \?CCL9 ICALL1 RT-CTHEI-PRINT PRINTI " show" ICALL2 RT-S-NOS-MSG,GL-PRSI PRINTR " little interest in your offer." ?CCL9: ICALL RT-NOT-LIKELY-MSG,GL-PRSI,STR?671 RTRUE .FUNCT V-GIVE-SWP ICALL RT-PERFORM,V?GIVE,GL-PRSI,GL-PRSO RTRUE .FUNCT V-GOODBYE CALL1 RT-HI-BYE-MSG RSTACK .FUNCT V-GUESS,WHO CALL1 RT-WHO-SAYS? >WHO EQUAL? WHO,CH-WIGGINS \?CND1 PRINTR "Wiggins says, ""Mr 'Olmes doesn't like people guessing about things.""" ?CND1: EQUAL? GL-WINNER,CH-HOLMES \?CCL5 PRINTI "Holmes looks at you in shock and says, ""I never" JUMP ?CND3 ?CCL5: EQUAL? WHO,CH-HOLMES \?CCL7 PRINTI "Holmes shakes his head and says, ""Never" JUMP ?CND3 ?CCL7: PRINTI "Holmes's words come back to you, ""Never" ?CND3: PRINTR " guess, Watson. It is a shocking habit - destructive to the logical faculty.""" .FUNCT V-HAGGLE FSET? GL-PRSO,FL-PERSON /?CCL3 ICALL1 RT-CYOU-MSG PRINTI "cannot " PRINTB GL-P-PRSA-WORD PRINTI " with " ICALL1 RT-A-PRINT PRINTR "." ?CCL3: EQUAL? GL-PRSO,CH-HOLMES \?CCL5 PRINTI "There is nothing to negotiate with " ICALL2 RT-THEO-PRINT,CH-HOLMES PRINTR " about." ?CCL5: EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL7 PRINTR "You have nothing to negotiate." ?CCL7: ICALL1 RT-CTHEO-PRINT PRINTI " refuse" ICALL2 RT-S-NOS-MSG,GL-PRSO PRINTR " to negotiate." .FUNCT V-HAUL PRINTR "You're a doctor, not a sailor." .FUNCT V-HEAT CALL2 RT-NO-POINT-MSG,STR?672 RSTACK .FUNCT V-HELLO CALL1 RT-HI-BYE-MSG RSTACK .FUNCT V-HIDE PRINTR "You can run, but you cannot hide." .FUNCT V-HIT PRINTI "Attacking " ICALL1 RT-THEO-PRINT ZERO? GL-PRSI /?CND1 EQUAL? GL-PRSI,TH-HANDS /?CND1 PRINTI " with " ICALL2 RT-A-PRINT,GL-PRSI ?CND1: PRINT K-WONT-HELP-MSG CRLF RTRUE .FUNCT V-HOLD-OVER PRINTI "That would" ICALL1 RT-WASTE-OF-TIME-MSG RTRUE .FUNCT V-HUSH PRINTR "Silence is golden." .FUNCT V-INHALE EQUAL? GL-PRSO,TH-BREATH,ROOMS /?CCL3 ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL3: FSET? TH-BREATH,FL-LOCKED \?CCL5 EQUAL? GL-P-PRSA-WORD,W?BREATHE \?CCL8 ICALL1 V-EXHALE RTRUE ?CCL8: PRINTI "You are already holding " ICALL2 RT-THEO-PRINT,TH-BREATH PRINTR "." ?CCL5: PRINTI "You take a deep breath." EQUAL? GL-PUPPY,CH-HOLMES \?CND9 PRINTC 32 ICALL2 RT-CTHEO-PRINT,CH-HOLMES PRINTI " notices your action and surreptitiously does likewise." ?CND9: CRLF CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,2,0 ICALL RT-ALARM-SET-REL,RT-I-EXHALE,STACK FSET TH-BREATH,FL-LOCKED SET 'GL-CLOCK-WAIT,TRUE-VALUE RTRUE .FUNCT V-KICK ICALL2 RT-NO-POINT-MSG,STR?673 RTRUE .FUNCT V-KILL PRINTR "Calm down." .FUNCT V-KISS PRINTR "You really can't wait for the Victorian Era to end, can you?" .FUNCT V-KNOCK FSET? GL-PRSO,FL-DOOR \?CCL3 FSET? GL-PRSO,FL-OPENED \?CND4 ICALL2 RT-ITS-ALREADY-MSG,STR?227 RTRUE ?CND4: PRINTR "There's no answer." ?CCL3: FSET? GL-PRSO,FL-PERSON \?CND1 ICALL RT-PERFORM,V?USE,GL-PRSO RTRUE ?CND1: PRINTI "That would" ICALL1 RT-WASTE-OF-TIME-MSG RTRUE .FUNCT V-LEAP EQUAL? GL-PRSO,ROOMS /?CCL3 PRINTR "No." ?CCL3: PRINTI "That would" ICALL1 RT-WASTE-OF-TIME-MSG RTRUE .FUNCT V-LIE-DOWN PRINTR "With so much at stake, resting is out of the question." .FUNCT V-LIGHT,OBJ,FIX-LAMP? CALL RT-META-IN?,TH-LAMP,GL-WINNER ZERO? STACK /?CND1 FSET? TH-LAMP,FL-LIGHTED \?CND1 SET 'FIX-LAMP?,TRUE-VALUE FCLEAR TH-LAMP,FL-LIGHTED ?CND1: CALL RT-GET-WHAT-I-MEAN,FL-LIGHTED,194,PR?WITH,TRUE-VALUE,TRUE-VALUE >OBJ ZERO? OBJ /?CCL7 EQUAL? OBJ,TH-LAMP /?CCL7 ZERO? FIX-LAMP? /?CND10 FSET TH-LAMP,FL-LIGHTED ?CND10: PRINTI "[with " ICALL2 RT-THEO-PRINT,OBJ PRINTC 93 CRLF ICALL RT-PERFORM,V?LIGHT-WITH,GL-PRSO,OBJ RTRUE ?CCL7: ZERO? FIX-LAMP? /?CND12 FSET TH-LAMP,FL-LIGHTED ?CND12: PUT GL-P-ITBL,K-P-PREP2,PR?WITH ICALL1 RT-SYNTAX-CHECK SET 'GL-P-GOOD,FALSE-VALUE RETURN 2 .FUNCT V-LIGHT-WITH,OBJ EQUAL? GL-PRSI,TH-LAMP \?CND1 EQUAL? GL-PRSI,GL-PRSO \?CND3 ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CND3: ICALL RT-PERFORM,V?SHINE-AT,GL-PRSI,GL-PRSO RTRUE ?CND1: ICALL1 V-BURN-WITH RTRUE .FUNCT V-LISTEN,OBJ EQUAL? GL-PRSO,ROOMS \?CCL3 FSET? GL-PLACE-CUR,RM-DIOGENES-CLUB \?CCL6 ICALL2 RT-CTHEO-PRINT,CH-MEMBERS PRINTI " are all asleep." CRLF JUMP ?CND4 ?CCL6: FSET? GL-PLACE-CUR,FL-INDOORS \?CCL8 PRINTI "From afar you" JUMP ?CND4 ?CCL8: PRINTI "You" ?CND4: PRINTI " hear the sounds of the " IN? CH-PLAYER,TH-BOAT \?CCL11 PRINTI "river " JUMP ?CND9 ?CCL11: PRINTI "city " ?CND9: CALL1 RT-TIME-OF-DAY ZERO? STACK \?CCL14 PRINTI "at night" JUMP ?CND12 ?CCL14: CALL1 RT-TIME-OF-DAY EQUAL? STACK,1 \?CCL16 PRINTI "waking up" JUMP ?CND12 ?CCL16: CALL1 RT-TIME-OF-DAY EQUAL? STACK,2 \?CCL18 PRINTI "going about its business" JUMP ?CND12 ?CCL18: CALL1 RT-TIME-OF-DAY EQUAL? STACK,3 \?CND12 PRINTI "going to sleep" ?CND12: PRINTR "." ?CCL3: EQUAL? GL-PRSI,FALSE-VALUE,TH-STETHOSCOPE,TH-EARS /?CCL21 ICALL1 RT-CYOU-MSG PRINTI "cannot listen to anything with " ICALL1 RT-THEI-PRINT PRINTR "." ?CCL21: EQUAL? GL-PRSI,TH-STETHOSCOPE \?CCL23 FSET? TH-STETHOSCOPE,FL-WORN /?CCL23 ICALL1 RT-CTHEI-PRINT PRINTI " is not in " ICALL2 RT-THEO-PRINT,TH-EARS PRINTR "." ?CCL23: FSET? GL-PRSO,FL-ALIVE \?CCL27 EQUAL? GL-PRSI,TH-STETHOSCOPE \?CCL27 EQUAL? GL-PRSO,CH-HOLMES \?CCL32 FSET? CH-HOLMES,FL-ASLEEP \?CCL32 ICALL1 RT-THEO-PRINT PRINTR " is suffering from a mental, not physical, malaise." ?CCL32: PRINTI "You don't need to. Your experienced eye tells you there is nothing wrong with " ICALL1 RT-THEO-PRINT PRINTR "." ?CCL27: PRINTI "At the moment, " EQUAL? GL-PRSO,CH-PLAYER,CH-ME \?CCL37 PRINTI "you" JUMP ?CND35 ?CCL37: ICALL1 RT-THEO-PRINT ?CND35: ICALL1 RT-IS-ARE-MSG PRINTI "silent." CRLF SET 'GL-LISTEN-OBJ,GL-PRSO RTRUE .FUNCT V-LOCK FSET? GL-PRSO,FL-OPENABLE /?CTR2 FSET? GL-PRSO,FL-CONTAINER \?CCL3 ?CTR2: FSET? GL-PRSO,FL-OPENED \?CCL8 ICALL RT-YOUD-HAVE-TO-MSG,STR?674,GL-PRSO RTRUE ?CCL8: FSET? GL-PRSO,FL-LOCKED \?CCL10 ICALL1 RT-CTHEO-PRINT ICALL1 RT-IS-ARE-MSG PRINTR "already locked." ?CCL10: ICALL RT-THING-WONT-LOCK-MSG,GL-PRSI,GL-PRSO RTRUE ?CCL3: ICALL1 RT-CANT-LOCK-MSG RTRUE .FUNCT V-LOOK ICALL RT-DESC-ALL,FALSE-VALUE,TRUE-VALUE RTRUE .FUNCT V-LOOK-BEHIND ZERO? GL-NOW-LIT? \?CCL3 PRINT K-TOO-DARK-MSG CRLF RETURN 2 ?CCL3: FSET? GL-PRSO,FL-DOOR \?CCL5 FSET? GL-PRSO,FL-OPENED \?CCL8 ICALL1 RT-CANT-SEE-MUCH-MSG RTRUE ?CCL8: ICALL2 RT-ITS-CLOSED-MSG,GL-PRSO RTRUE ?CCL5: PRINTI "There's nothing behind " ICALL1 RT-THEO-PRINT PRINTR "." .FUNCT V-LOOK-DOWN,X ZERO? GL-NOW-LIT? \?CCL3 PRINT K-TOO-DARK-MSG CRLF RETURN 2 ?CCL3: EQUAL? GL-PRSO,ROOMS \?CCL5 EQUAL? GL-PLACE-CUR,RM-CLOCK-TOWER \?CCL8 ICALL RT-PERFORM,V?EXAMINE,TH-SHAFT RTRUE ?CCL8: ICALL1 RT-NOTHING-INTERESTING-MSG PRINTR " down there." ?CCL5: PRINTI "You cannot look down " ICALL1 RT-A-PRINT PRINTR "." .FUNCT V-LOOK-INSIDE,ODF ZERO? ODF /?CND1 CALL ODF ZERO? STACK \TRUE ?CND1: ZERO? GL-NOW-LIT? \?CCL7 PRINT K-TOO-DARK-MSG CRLF RETURN 2 ?CCL7: FSET? GL-PRSO,FL-PERSON \?CCL9 ICALL2 RT-YOURE-NOT-A-MSG,STR?675 RTRUE ?CCL9: FSET? GL-PRSO,FL-ALIVE \?CCL11 ICALL2 RT-YOURE-NOT-A-MSG,STR?676 RTRUE ?CCL11: FSET? GL-PRSO,FL-CONTAINER \?CCL13 FSET? GL-PRSO,FL-OPENED /?CCL16 FSET? GL-PRSO,FL-TRANSPARENT /?CCL16 ICALL RT-YOUD-HAVE-TO-MSG,STR?227,GL-PRSO RTRUE ?CCL16: PRINTI "In " ICALL1 RT-THEO-PRINT PRINTI " you see " ICALL2 RT-PRINT-CONTENTS-2,GL-PRSO PRINTR "." ?CCL13: FSET? GL-PRSO,FL-DOOR \?CCL20 FSET? GL-PRSO,FL-OPENED \?CCL23 ICALL1 RT-CANT-SEE-MUCH-MSG RTRUE ?CCL23: ICALL2 RT-ITS-CLOSED-MSG,GL-PRSO RTRUE ?CCL20: PRINTI "You cannot look inside " ICALL1 RT-A-PRINT PRINTR "." .FUNCT V-LOOK-ON ZERO? GL-NOW-LIT? \?CCL3 PRINT K-TOO-DARK-MSG CRLF RETURN 2 ?CCL3: FSET? GL-PRSO,FL-SURFACE \?CCL5 PRINTI "On " ICALL1 RT-THEO-PRINT PRINTI " you see " ICALL2 RT-PRINT-CONTENTS-2,GL-PRSO PRINTR "." ?CCL5: FSET? GL-PRSO,FL-READABLE \?CCL7 ICALL1 RT-CTHEO-PRINT PRINTR " has something written on it." ?CCL7: ICALL1 RT-NOTHING-INTERESTING-MSG PRINTI " on " ICALL1 RT-THEO-PRINT PRINTR "." .FUNCT V-LOOK-OUTSIDE ZERO? GL-NOW-LIT? \?CCL3 PRINT K-TOO-DARK-MSG CRLF RETURN 2 ?CCL3: EQUAL? GL-PRSO,ROOMS \?CCL5 FSET? GL-PLACE-CUR,FL-INDOORS \?CCL8 ICALL1 RT-NOTHING-INTERESTING-MSG PRINTR " outside." ?CCL8: PRINTR "You are outside." ?CCL5: FSET? GL-PRSO,FL-DOOR \?CCL10 FSET? GL-PRSO,FL-OPENED \?CCL13 ICALL1 RT-CANT-SEE-MUCH-MSG RTRUE ?CCL13: ICALL2 RT-ITS-CLOSED-MSG,GL-PRSO RTRUE ?CCL10: PRINTI "You cannot look out of " ICALL1 RT-A-PRINT PRINTR "." .FUNCT V-LOOK-THRU ZERO? GL-NOW-LIT? \?CCL3 PRINT K-TOO-DARK-MSG CRLF RETURN 2 ?CCL3: EQUAL? GL-P-PRSA-WORD,W?EXAMINE,W?X \?CCL5 EQUAL? GL-PRSI,TH-STETHOSCOPE \?CCL5 FSET? GL-PRSO,FL-PERSON \?CCL5 CALL RT-PERFORM,V?LISTEN,GL-PRSO,GL-PRSI RSTACK ?CCL5: ZERO? GL-PRSI /?CCL10 FSET? GL-PRSI,FL-TRANSPARENT /?CCL10 PRINTI "You can't look through " ICALL1 RT-THEI-PRINT PRINTR "." ?CCL10: ZERO? GL-PRSI /?CCL14 FSET? GL-PRSI,FL-TRANSPARENT \?CCL14 ICALL1 RT-NOTHING-INTERESTING-MSG PRINTI " through " ICALL1 RT-THEI-PRINT PRINTR "." ?CCL14: ICALL1 RT-NOTHING-INTERESTING-MSG PRINTR "at all." .FUNCT V-LOOK-THRU-SWP CALL RT-PERFORM,V?LOOK-THRU,GL-PRSI,GL-PRSO RSTACK .FUNCT V-LOOK-UNDER ZERO? GL-NOW-LIT? \?CCL3 PRINT K-TOO-DARK-MSG CRLF RETURN 2 ?CCL3: IN? GL-PRSO,CH-PLAYER \?CCL5 PRINTI "You are already " FSET? GL-PRSO,FL-WORN \?CCL8 PRINTI "wearing" JUMP ?CND6 ?CCL8: PRINTI "holding" ?CND6: PRINTR " that." ?CCL5: ICALL1 RT-NOTHING-INTERESTING-MSG PRINTI " under " ICALL1 RT-THEO-PRINT PRINTR "." .FUNCT V-LOOK-UP,X ZERO? GL-NOW-LIT? \?CCL3 PRINT K-TOO-DARK-MSG CRLF RETURN 2 ?CCL3: EQUAL? GL-PRSO,ROOMS \?CCL5 FSET? GL-PLACE-CUR,FL-INDOORS \?CND6 PUTP TH-FLOOR-ETC,P?OBJ-NOUN,W?CEILING ICALL RT-PERFORM,V?EXAMINE,TH-FLOOR-ETC RTRUE ?CND6: ICALL1 RT-NOTHING-INTERESTING-MSG PRINTR " up there." ?CCL5: PRINTI "You cannot look up " ICALL1 RT-A-PRINT PRINTR "." .FUNCT V-LOOSEN PRINTI "That would" ICALL1 RT-WASTE-OF-TIME-MSG RTRUE .FUNCT V-LOWER EQUAL? GL-PRSO,ROOMS \?CCL3 ICALL2 RT-DO-WALK,P?DOWN RTRUE ?CCL3: ICALL1 V-RAISE RTRUE .FUNCT V-LAND EQUAL? GL-PRSO,ROOMS \?CCL3 IN? CH-PLAYER,TH-BOAT \?CCL6 ICALL1 RT-LAND-BOAT RTRUE ?CCL6: PRINTR "Very good. Next week, we'll learn the word for water." ?CCL3: EQUAL? GL-PRSO,TH-BOAT \?CCL8 IN? CH-PLAYER,TH-BOAT \?CCL11 ICALL1 RT-LAND-BOAT RTRUE ?CCL11: PRINT K-MUST-BE-IN-BOAT-MSG PRINTR "land it." ?CCL8: PRINTI "You can't land " ICALL1 RT-THEO-PRINT PRINTR "!" .FUNCT RT-LAND-BOAT IN? TH-BOAT,RM-THE-EMBANKMENT \?CCL3 PRINTR "The boat is already on the Embankment." ?CCL3: IN? TH-BOAT,RM-OUTSIDE-TRAITORS-GATE \?CCL5 PRINTR "The boat is already at Traitors Gate." ?CCL5: IN? TH-ANCHOR,TH-BOAT /?CCL7 PRINTR "You can't land the boat. The anchor seems to be doing its job." ?CCL7: IN? TH-BOAT,RM-THAMES-ONE \?CCL9 ICALL SOUNDS,S-BOATING,S-STOP PRINTI "You land the boat on the Embankment." CRLF MOVE TH-BOAT,RM-THE-EMBANKMENT ICALL2 RT-ALARM-CLR,RT-I-MOVE-DOWNSTREAM RTRUE ?CCL9: IN? TH-BOAT,RM-THAMES-FOUR \?CCL11 ICALL SOUNDS,S-BOATING,S-STOP PRINTI "You land the boat outside Traitors Gate." CRLF MOVE TH-BOAT,RM-OUTSIDE-TRAITORS-GATE ICALL2 RT-ALARM-CLR,RT-I-MOVE-DOWNSTREAM RTRUE ?CCL11: PRINTI "There doesn't seem to be any place to land the boat." CRLF ICALL2 RT-ALARM-CLR,RT-I-MOVE-DOWNSTREAM RTRUE .FUNCT V-LAMP-OFF ICALL2 V-LAMP-ON,TRUE-VALUE RTRUE .FUNCT V-LAMP-ON,OFF? ICALL1 RT-CYOU-MSG PRINTI "couldn't " EQUAL? GL-P-PRSA-WORD,W?EXTINGUISH \?CCL3 PRINTI "extinguish" JUMP ?CND1 ?CCL3: PRINTB GL-P-PRSA-WORD ?CND1: PRINTI " that" ZERO? OFF? /?CCL6 EQUAL? GL-P-PRSA-WORD,W?CLOSE,W?SHUT,W?TURN \?CCL6 PRINTI " off" JUMP ?CND4 ?CCL6: ZERO? OFF? /?CCL10 EQUAL? GL-P-PRSA-WORD,W?BLOW,W?PUT \?CCL10 PRINTI " out" JUMP ?CND4 ?CCL10: ZERO? OFF? \?CND4 EQUAL? GL-P-PRSA-WORD,W?TURN \?CND4 PRINTI " on" ?CND4: EQUAL? GL-PRSI,FALSE-VALUE,TH-HANDS /?CND16 PRINTI ", " ICALL2 DPRINT,GL-PRSI PRINTI " or no " ICALL2 DPRINT,GL-PRSI ?CND16: PRINTR "." .FUNCT V-LAUNCH,?TMP1 EQUAL? GL-PRSO,ROOMS \?CCL3 IN? CH-PLAYER,TH-BOAT /?CTR5 LOC CH-PLAYER >?TMP1 LOC TH-BOAT EQUAL? ?TMP1,STACK \?CCL6 ?CTR5: ICALL1 RT-LAUNCH-BOAT RTRUE ?CCL6: PRINTR "That usually works better when one is in a boat." ?CCL3: EQUAL? GL-PRSO,TH-BOAT \?CCL10 ICALL1 RT-LAUNCH-BOAT RTRUE ?CCL10: PRINTI "You can't launch " ICALL1 RT-THEO-PRINT PRINTR ". Perhaps you meant to throw it?" .FUNCT RT-LAUNCH-BOAT IN? TH-ANCHOR,TH-BOAT /?CCL3 ICALL2 RT-THIS-IS-IT,TH-ANCHOR PRINTR "The anchor is restraining the boat." ?CCL3: IN? CH-PLAYER,TH-BOAT /?CCL5 PRINTI "You push the boat into the Thames, and then watch as it slowly floats away. Too bad you weren't in it." CRLF REMOVE TH-BOAT RTRUE ?CCL5: IN? TH-BOAT,RM-THE-EMBANKMENT \?CCL7 PRINTI "The boat slips away from the Embankment. You are now in the middle of the Thames." CRLF ICALL SOUNDS,S-BOATING,S-START MOVE TH-BOAT,RM-THAMES-ONE RTRUE ?CCL7: IN? TH-BOAT,RM-OUTSIDE-TRAITORS-GATE \?CCL9 PRINTI "The boat slips out into the river." CRLF ICALL SOUNDS,S-BOATING,S-START MOVE TH-BOAT,RM-THAMES-FOUR RTRUE ?CCL9: PRINTR "You are already on the Thames. You don't need to launch the boat again." .FUNCT V-MAKE EQUAL? GL-PRSO,TH-RUBBINGS \?CCL3 PRINTI "[To make a rubbing, put a blank piece of paper on a tomb, and then rub the paper with the crayon.]" CRLF RETURN 2 ?CCL3: PRINT K-HOW-TO-MSG CRLF RTRUE .FUNCT V-ECHO EQUAL? GL-P-PRSA-WORD,W?MARX \?CCL3 PRINTR "Cocoanuts." ?CCL3: EQUAL? GL-P-PRSA-WORD,W?CHICO \?CCL5 PRINTR """Wattsa matta you? You needa de password? I sell it you.""" ?CCL5: EQUAL? GL-P-PRSA-WORD,W?GROUCHO \?CCL7 PRINTR """Say the secret woid, and the guy will let you in.""" ?CCL7: EQUAL? GL-P-PRSA-WORD,W?GUMMO \?CCL9 PRINTR "This isn't a trivia game. Get back to work." ?CCL9: EQUAL? GL-P-PRSA-WORD,W?HARPO \?CCL11 CRLF RTRUE ?CCL11: EQUAL? GL-P-PRSA-WORD,W?ZEPPO \?CCL13 PRINTR "Did you really think saying ""Zeppo"" was going to get you anywhere?" ?CCL13: EQUAL? GL-P-PRSA-WORD,W?PUNT \?CCL15 PRINTR "But it's not even fourth down!" ?CCL15: EQUAL? GL-P-PRSA-WORD,W?HUM,W?WHISTLE,W?SING \?CCL17 PRINTI "You " PRINTB GL-P-PRSA-WORD PRINTR " tunelessly for a few moments until you remember that you're tone deaf and know next to nothing about music." ?CCL17: EQUAL? GL-P-PRSA-WORD,W?ECHO \FALSE PRINTR "ECHO...Echo...echo...." .FUNCT V-MELT PRINT K-HOW-TO-MSG CRLF RTRUE .FUNCT V-MOVE EQUAL? GL-PRSO,ROOMS \?CCL3 ICALL1 V-WALK-AROUND RTRUE ?CCL3: FSET? GL-PRSO,FL-TAKEABLE \?CCL5 PRINTI "Moving " ICALL1 RT-THEO-PRINT PRINTI " would" CALL2 RT-PICK-NEXT,GL-NO-POINT-TXT PRINT STACK PRINTR "." ?CCL5: PRINTI "You cannot possibly move " ICALL1 RT-THEO-PRINT PRINTR "." .FUNCT V-MUNG ICALL2 RT-NO-POINT-MSG,STR?677 RTRUE .FUNCT V-OPEN FSET? GL-PRSO,FL-OPENABLE /?CCL3 ICALL1 RT-CANT-OPEN-PRSO-MSG RTRUE ?CCL3: FSET? GL-PRSO,FL-OPENED \?CCL5 ICALL2 RT-ITS-ALREADY-MSG,STR?227 RTRUE ?CCL5: FSET? GL-PRSO,FL-LOCKED \?CCL7 ICALL1 RT-OBJECT-IS-LOCKED-MSG RTRUE ?CCL7: ICALL1 RT-YOU-OPEN-MSG FSET? GL-PRSO,FL-CONTAINER \TRUE ZERO? GL-NOW-LIT? \?CCL12 PRINTR "It is too dark to see inside." ?CCL12: PRINTI "Inside you see " ICALL2 RT-PRINT-CONTENTS-2,GL-PRSO PRINTR "." .FUNCT V-OPEN-WITH FSET? GL-PRSO,FL-OPENABLE /?CCL3 ICALL1 RT-CANT-OPEN-PRSO-MSG RTRUE ?CCL3: FSET? GL-PRSO,FL-OPENED \?CND1 ICALL2 RT-ITS-ALREADY-MSG,STR?227 RTRUE ?CND1: ICALL1 RT-CYOU-MSG PRINTI "cannot " PRINTB GL-P-PRSA-WORD PRINTC 32 ICALL1 RT-THEO-PRINT PRINTI " with " ICALL1 RT-THEI-PRINT PRINTR "." .FUNCT V-PADDLE IN? GL-WINNER,TH-BOAT \?CCL3 EQUAL? GL-PRSO,TH-BOAT,TH-INTDIR \?CCL6 PRINT K-BETTER-SUCCESS-MSG CRLF RTRUE ?CCL6: CALL1 V-HIT RSTACK ?CCL3: EQUAL? GL-PRSO,TH-INTDIR \?CCL8 ICALL RT-CYOU-MSG,STR?228,STR?229 PRINTR "not in a boat." ?CCL8: CALL1 V-HIT RSTACK .FUNCT V-PADDLE-WITH EQUAL? GL-PRSI,TH-VIOLIN \?CCL3 PRINTR "How could you even THINK of using such a beautiful instrument in such a manner?" ?CCL3: IN? GL-WINNER,TH-BOAT \?CCL5 EQUAL? GL-PRSO,TH-INTDIR \?CCL8 ICALL RT-CYOU-MSG,STR?228,STR?229 PRINTR "not in a boat." ?CCL8: PRINT K-BETTER-SUCCESS-MSG CRLF RTRUE ?CCL5: EQUAL? GL-PRSO,TH-INTDIR \?CCL10 ICALL1 RT-CYOU-MSG PRINTI "can't paddle anywhere with " ICALL1 RT-THEI-PRINT PRINTR "." ?CCL10: CALL1 V-HIT RSTACK .FUNCT V-PASSWORD,WRD GET GL-P-NAMW,0 >WRD EQUAL? WRD,W?SWORDFISH \?CCL3 CALL2 RT-PERFORM,V?SWORDFISH RSTACK ?CCL3: EQUAL? WRD,W?PARR \?CCL5 CALL2 RT-PERFORM,V?PARR RSTACK ?CCL5: EQUAL? WRD,W?CLEVES \?CCL7 CALL2 RT-PERFORM,V?CLEVES RSTACK ?CCL7: EQUAL? WRD,W?ARAGON \?CCL9 CALL2 RT-PERFORM,V?ARAGON RSTACK ?CCL9: EQUAL? WRD,W?HOWARD \?CCL11 CALL2 RT-PERFORM,V?HOWARD RSTACK ?CCL11: EQUAL? WRD,W?SEYMOUR \?CCL13 CALL2 RT-PERFORM,V?SEYMOUR RSTACK ?CCL13: EQUAL? WRD,W?BOLEYN \?CCL15 CALL2 RT-PERFORM,V?BOLEYN RSTACK ?CCL15: EQUAL? WRD,W?GIN \?CCL17 CALL2 RT-PERFORM,V?GIN RSTACK ?CCL17: PRINTR """No, it isn't.""" .FUNCT V-PAY ICALL RT-PERFORM,V?GIVE,GL-PRSI,GL-PRSO RTRUE .FUNCT V-PICK FSET? GL-PRSO,FL-OPENABLE \?CCL3 ICALL2 RT-YOURE-NOT-A-MSG,STR?678 RTRUE ?CCL3: ICALL1 RT-IMPOSSIBLE-MSG RTRUE .FUNCT V-PLAY EQUAL? GL-PRSO,ROOMS \?CCL3 PRINTI "That would" ICALL1 RT-WASTE-OF-TIME-MSG RTRUE ?CCL3: ICALL2 RT-NO-POINT-MSG,STR?679 RTRUE .FUNCT V-PLUG ICALL1 RT-CYOU-MSG PRINTI "cannot " PRINTB GL-P-PRSA-WORD PRINTC 32 ICALL1 RT-THEO-PRINT PRINTI " into " ZERO? GL-PRSI /?CCL3 ICALL1 RT-THEI-PRINT JUMP ?CND1 ?CCL3: PRINTI "anything" ?CND1: PRINTR "." .FUNCT V-POCKET ICALL RT-PERFORM,V?PUT,GL-PRSO,TH-POCKET RTRUE .FUNCT V-POINT ICALL2 RT-NO-POINT-MSG,STR?680 RTRUE .FUNCT V-POINT-AT ICALL2 RT-NO-POINT-MSG,STR?681 RTRUE .FUNCT V-POINT-AT-SWP ICALL2 RT-NO-POINT-MSG,STR?681 RETURN 2 .FUNCT V-POUR EQUAL? GL-PRSO,TH-HANDS \?CCL3 PRINTI "[To do that, just DROP EVERYTHING.]" CRLF RETURN 2 ?CCL3: EQUAL? GL-PRSO,TH-POCKET \?CCL5 ICALL RT-YOUD-HAVE-TO-MSG,STR?682,TH-CLOTHES RTRUE ?CCL5: FSET? GL-PRSO,FL-SURFACE \?CCL7 ICALL2 RT-EMPTY-PRSO-MSG,FALSE-VALUE RTRUE ?CCL7: FSET? GL-PRSO,FL-CONTAINER \?CCL9 FSET? GL-PRSO,FL-OPENED \?CND10 ICALL2 RT-EMPTY-PRSO-MSG,FALSE-VALUE RTRUE ?CND10: ICALL1 RT-ITS-CLOSED-MSG RTRUE ?CCL9: ICALL1 RT-CYOU-MSG PRINTI "cannot empty " ICALL1 RT-SAY-HIM-HER-THEM-IT-MSG PRINTR "." .FUNCT V-POUR-FROM EQUAL? GL-PRSI,TH-HANDS \?CCL3 ICALL RT-PERFORM,V?DROP,GL-PRSO RTRUE ?CCL3: EQUAL? GL-PRSI,TH-POCKET \?CCL5 ICALL RT-YOUD-HAVE-TO-MSG,STR?682,TH-CLOTHES RTRUE ?CCL5: FSET? GL-PRSI,FL-CONTAINER /?CCL7 FSET? GL-PRSI,FL-SURFACE /?CCL7 PRINTI "You cannot" PRINTB GL-P-PRSA-WORD PRINTI " things from " ICALL2 RT-A-PRINT,GL-PRSI PRINTR "." ?CCL7: FSET? GL-PRSI,FL-CONTAINER \?CCL11 FSET? GL-PRSI,FL-OPENED /?CCL11 ICALL2 RT-ITS-CLOSED-MSG,GL-PRSI RTRUE ?CCL11: IN? GL-PRSO,GL-PRSI \?CCL15 FSET? GL-PRSO,FL-TAKEABLE \?CND16 ICALL1 RT-CTHEO-PRINT PRINTC 32 ICALL1 RT-LANDS-AT-YOUR-FEET-MSG RTRUE ?CND16: ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL15: ICALL1 RT-CTHEO-PRINT ICALL2 RT-ISNT-ARENT-MSG,GL-PRSO PRINTI "in " ICALL1 RT-THEI-PRINT PRINTR "." .FUNCT V-PRAY PRINTR "Good idea. You could use the help." .FUNCT V-PULL ICALL2 RT-NO-POINT-MSG,STR?683 RTRUE .FUNCT V-PUSH ICALL2 RT-NO-POINT-MSG,STR?684 RTRUE .FUNCT V-PUSH-TO EQUAL? GL-PRSO,TH-HANDS \?CND1 ZERO? GL-PRSI /?CND1 ICALL RT-PERFORM,V?REACH-IN,GL-PRSI RTRUE ?CND1: ICALL1 RT-CYOU-MSG PRINTI "cannot push " ICALL1 RT-THEO-PRINT PRINTR " around like that." .FUNCT V-PUT,L,WRD LOC GL-PRSO >L EQUAL? L,GLOBAL-OBJECTS \?CCL3 PRINTI "That would" CALL1 RT-WASTE-OF-TIME-MSG RSTACK ?CCL3: FSET? GL-PRSO,FL-BODYPART \?CCL5 ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL5: CALL RT-IDENTIFY-FLOOR?,W?FLOOR,GL-PRSI ZERO? STACK \?CTR6 CALL RT-IDENTIFY-FLOOR?,W?GROUND,GL-PRSI ZERO? STACK /?CCL7 ?CTR6: MOVE GL-PRSO,GL-PLACE-CUR ZERO? GL-P-MULT? /?CCL13 PRINTR "Done." ?CCL13: ICALL RT-CYOU-MSG,STR?685,STR?686 ICALL1 RT-THEO-PRINT ICALL2 RT-IN-ON-MSG,GL-PRSI ICALL1 RT-THEI-PRINT PRINTR "." ?CCL7: ZERO? L /?CTR14 ZERO? GL-PRSI /?CCL15 FSET? GL-PRSI,FL-SURFACE /?CCL15 FSET? GL-PRSI,FL-CONTAINER /?CCL15 FSET? GL-PRSI,FL-OPENED /?CCL15 FSET? GL-PRSI,FL-OPENABLE /?CCL15 ?CTR14: ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL15: FSET? GL-PRSI,FL-OPENED /?CCL24 FSET? GL-PRSI,FL-SURFACE /?CCL24 ICALL1 RT-CTHEI-PRINT ICALL2 RT-ISNT-ARENT-MSG,GL-PRSI PRINTR "open." ?CCL24: CALL RT-ROOM-IN-ON-MSG?,GL-PRSO,GL-PRSI ZERO? STACK \TRUE EQUAL? L,GL-WINNER /?CCL30 PRINTI "Maybe" ICALL1 RT-YOU-MSG PRINTI "should take " ICALL1 RT-THEO-PRINT ICALL2 RT-OUT-OFF-MSG,L ICALL2 RT-THEO-PRINT,L PRINTR " first." ?CCL30: MOVE GL-PRSO,GL-PRSI FSET GL-PRSO,FL-TOUCHED FSET? GL-PRSI,FL-CONTAINER \?CCL33 CALL2 RT-PUT-OUT,GL-PRSO ZERO? STACK \TRUE ?CCL33: ZERO? GL-P-MULT? /?CCL37 PRINTR "Done." ?CCL37: ICALL RT-CYOU-MSG,STR?685,STR?686 ICALL1 RT-THEO-PRINT ICALL2 RT-IN-ON-MSG,GL-PRSI ICALL1 RT-THEI-PRINT PRINTR "." .FUNCT V-PUT-BEHIND PRINTR "That hiding place is too obvious." .FUNCT V-PUT-ON EQUAL? GL-PRSI,CH-ME,CH-PLAYER \?CND1 ICALL RT-PERFORM,V?WEAR,GL-PRSO RTRUE ?CND1: ICALL1 V-PUT RTRUE .FUNCT V-PUT-UNDER ICALL1 RT-CYOU-MSG PRINTI "cannot put anything under " ICALL1 RT-SAY-HIM-HER-THEM-IT-MSG PRINTR "." .FUNCT V-QUESTION EQUAL? GL-WINNER,CH-PLAYER \?CND1 ICALL RT-TO-DO-THING-USE-MSG,STR?687,STR?688 RETURN 2 ?CND1: ICALL1 RT-NO-RESPONSE-MSG RTRUE .FUNCT V-RAISE EQUAL? GL-PRSO,ROOMS \?CCL3 ICALL1 V-STAND RTRUE ?CCL3: ICALL2 RT-NO-POINT-MSG,STR?689 RTRUE .FUNCT V-REACH-IN,OBJ FIRST? GL-PRSO >OBJ /?BOGUS1 ?BOGUS1: FSET? GL-PRSO,FL-PERSON /?CTR3 FSET? GL-PRSO,FL-ALIVE \?CCL4 ?CTR3: ICALL2 RT-YOURE-NOT-A-MSG,STR?675 RTRUE ?CCL4: FSET? GL-PRSO,FL-DOOR \?CCL8 FSET? GL-PRSO,FL-OPENED \?CND9 PRINTI "You reach into " ICALL1 RT-THEO-PRINT PRINTI ", but experience nothing " CALL2 RT-PICK-NEXT,GL-BORING-TXT PRINT STACK PRINTR "." ?CND9: ICALL1 RT-ITS-CLOSED-MSG RTRUE ?CCL8: FSET? GL-PRSO,FL-CONTAINER /?CCL12 ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL12: FSET? GL-PRSO,FL-OPENED /?CCL14 PRINTR "It's not open." ?CCL14: ZERO? OBJ /?CTR15 FSET? OBJ,FL-TAKEABLE /?CCL16 ?CTR15: FSET? GL-PRSO,FL-PLURAL \?CCL21 FSET? GL-PRSO,FL-COLLECTIVE /?CCL21 PRINTI "They're" JUMP ?CND19 ?CCL21: PRINTI "It's" ?CND19: PRINTR " empty." ?CCL16: SET 'GL-P-IT-OBJECT,OBJ PRINTI "You " EQUAL? GL-PRSO,TH-EARS \?CCL26 PRINTI "put your hands to " JUMP ?CND24 ?CCL26: PRINTI "reach into " ?CND24: ICALL1 RT-THEO-PRINT PRINTR ". There's something in there." .FUNCT V-READ ZERO? GL-NOW-LIT? \?CCL3 PRINT K-TOO-DARK-MSG CRLF RETURN 2 ?CCL3: FSET? GL-PRSO,FL-READABLE /?CCL5 ICALL1 RT-HOW-READ-MSG PRINTR "?" ?CCL5: PRINTR "There's nothing written on it." .FUNCT V-READ-TO ZERO? GL-NOW-LIT? \?CCL3 PRINT K-TOO-DARK-MSG CRLF RETURN 2 ?CCL3: FSET? GL-PRSO,FL-READABLE /?CCL5 ICALL1 RT-HOW-READ-MSG PRINTI " to " ICALL2 RT-A-PRINT,GL-PRSI PRINTR "?" ?CCL5: EQUAL? GL-WINNER,CH-PLAYER \?CCL7 ICALL RT-NOT-LIKELY-MSG,GL-PRSI,STR?690 RTRUE ?CCL7: PRINTR "Maybe you ought to do it." .FUNCT V-READ-TO-SWP ICALL RT-PERFORM,V?READ-TO,GL-PRSI,GL-PRSO RTRUE .FUNCT V-REFUSE FSET? GL-PRSO,FL-TAKEABLE /?CND1 PRINTI "That would" ICALL1 RT-WASTE-OF-TIME-MSG RTRUE ?CND1: PRINTI "How could you turn down such a tempting " ICALL2 DPRINT,GL-PRSO PRINTR "?" .FUNCT V-RELEASE IN? GL-PRSO,GL-WINNER \?CCL3 ICALL RT-PERFORM,V?DROP,GL-PRSO RTRUE ?CCL3: EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL6 PRINTI "You aren't " JUMP ?CND4 ?CCL6: ICALL1 RT-CTHEO-PRINT ICALL1 RT-ISNT-ARENT-MSG ?CND4: PRINTR "confined by anything." .FUNCT V-REPAIR EQUAL? GL-PRSO,TH-LAMP,TH-ETHERIUM-AMPOULE \?CCL3 FSET? GL-PRSO,FL-BROKEN \?CCL3 ICALL1 RT-CTHEO-PRINT PRINTR " is hopelessly beyond repair." ?CCL3: EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL7 PRINTI "You aren't " JUMP ?CND1 ?CCL7: ICALL1 RT-CTHEO-PRINT ICALL1 RT-ISNT-ARENT-MSG ?CND1: PRINTR "in need of repair." .FUNCT V-REPLACE EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL3 PRINTR "Easily done." ?CCL3: ICALL1 RT-CTHEO-PRINT ICALL2 RT-DONT-DOESNT-MSG,GL-PRSO PRINTR "need replacement." .FUNCT V-REPLY,WHO CALL1 RT-FOOLISH-TO-TALK-MSG ZERO? STACK /?CND1 RETURN 2 ?CND1: ICALL1 RT-NO-RESPONSE-MSG RTRUE .FUNCT V-RESCUE EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CND1 EQUAL? GL-WINNER,CH-PLAYER \?CND3 ICALL1 V-HINT RTRUE ?CND3: PRINT K-HOW-TO-MSG CRLF RTRUE ?CND1: ICALL1 RT-CTHEO-PRINT ICALL2 RT-DONT-DOESNT-MSG,GL-PRSO PRINTR "need any help." .FUNCT V-RIDE FSET? GL-PRSO,FL-ALIVE \?CCL3 ICALL RT-NOT-LIKELY-MSG,GL-PRSO,STR?691 RTRUE ?CCL3: PRINTR "You cannot ride that." .FUNCT V-RING EQUAL? GL-PRSO,TH-BELL \?CCL3 CALL2 RT-ALARM-SET?,RT-I-SWING-BELL ZERO? STACK /?CCL6 PRINTR "The bell is already ringing." ?CCL6: PRINTR "The bell is too heavy for you to move, but your effort makes it vibrate softly." ?CCL3: ICALL1 RT-IMPOSSIBLE-MSG RTRUE .FUNCT V-RIP PRINTI "That would" ICALL1 RT-WASTE-OF-TIME-MSG RTRUE .FUNCT V-ROB ICALL RT-PERFORM,V?STEAL,GL-PRSI,GL-PRSO RTRUE .FUNCT V-ROW IN? CH-PLAYER,TH-BOAT \?CCL3 PRINTR "You'd have better success if you launched the boat first." ?CCL3: EQUAL? GL-PRSO,TH-INTDIR \?CCL5 ICALL RT-CYOU-MSG,STR?228,STR?229 PRINTR "not in a boat." ?CCL5: ICALL1 RT-IMPOSSIBLE-MSG RTRUE .FUNCT V-RUB-WITH ICALL2 RT-NO-POINT-MSG,STR?692 RTRUE .FUNCT V-SAY,WRD EQUAL? GL-WINNER,CH-PLAYER \?CND1 CALL1 RT-ANYONE-HERE? ZERO? STACK /?CND3 GET GL-P-NAMW,0 >WRD EQUAL? WRD,W?SWORDFISH \?CCL7 ICALL2 RT-PERFORM,V?SWORDFISH RTRUE ?CCL7: EQUAL? WRD,W?PARR \?CCL9 ICALL2 RT-PERFORM,V?PARR RTRUE ?CCL9: EQUAL? WRD,W?CLEVES \?CCL11 ICALL2 RT-PERFORM,V?CLEVES RTRUE ?CCL11: EQUAL? WRD,W?ARAGON \?CCL13 ICALL2 RT-PERFORM,V?ARAGON RTRUE ?CCL13: EQUAL? WRD,W?HOWARD \?CCL15 ICALL2 RT-PERFORM,V?HOWARD RTRUE ?CCL15: EQUAL? WRD,W?SEYMOUR \?CCL17 ICALL2 RT-PERFORM,V?SEYMOUR RTRUE ?CCL17: EQUAL? WRD,W?BOLEYN \?CCL19 ICALL2 RT-PERFORM,V?BOLEYN RTRUE ?CCL19: EQUAL? WRD,W?GIN \?CCL21 ICALL2 RT-PERFORM,V?GIN RTRUE ?CCL21: ICALL1 RT-WAY-TO-TALK-MSG RTRUE ?CND3: ICALL1 RT-TALK-TO-SELF-MSG RTRUE ?CND1: ICALL1 RT-NO-RESPONSE-MSG RTRUE .FUNCT V-SEARCH FSET? GL-PRSO,FL-CONTAINER \?CCL3 FSET? GL-PRSO,FL-OPENED /?CCL6 FSET? GL-PRSO,FL-TRANSPARENT /?CCL6 ICALL RT-YOUD-HAVE-TO-MSG,STR?227,GL-PRSO RTRUE ?CCL6: PRINTI "You see " ICALL2 RT-PRINT-CONTENTS-2,GL-PRSO PRINTI " inside " ICALL1 RT-THEO-PRINT PRINTR "." ?CCL3: FSET? GL-PRSO,FL-SURFACE \?CCL10 PRINTI "You see " ICALL2 RT-PRINT-CONTENTS-2,GL-PRSO PRINTI " on " ICALL1 RT-THEO-PRINT PRINTR "." ?CCL10: FSET? GL-PRSO,FL-PERSON \?CCL12 ICALL RT-PERFORM,V?USE,GL-PRSO RTRUE ?CCL12: ICALL1 RT-NOTHING-INTERESTING-MSG PRINTR "." .FUNCT V-SELL EQUAL? GL-WINNER,CH-PLAYER /?CCL3 ICALL RT-NOT-LIKELY-MSG,GL-WINNER,STR?693 RTRUE ?CCL3: EQUAL? GL-PRSI,GL-PRSO,CH-ME,CH-PLAYER /?CTR4 EQUAL? GL-PRSI,GL-WINNER \?CCL5 ?CTR4: ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL5: FSET? GL-PRSI,FL-PERSON /?CND1 ICALL RT-NOT-LIKELY-MSG,GL-PRSI,STR?694 RTRUE ?CND1: ICALL2 RT-YOURE-NOT-A-MSG,STR?695 RTRUE .FUNCT V-SELL-SWP ICALL RT-PERFORM,V?SELL,GL-PRSI,GL-PRSO RTRUE .FUNCT V-SHAKE,X FSET? GL-PRSO,FL-PERSON \?CCL3 ICALL RT-PERFORM,V?ALARM,GL-PRSO RTRUE ?CCL3: FSET? GL-PRSO,FL-TAKEABLE /?CCL5 FSET? GL-PRSO,FL-TRYTAKE /?CCL5 ICALL2 RT-NO-POINT-MSG,STR?696 RTRUE ?CCL5: PRINTI "That would" ICALL1 RT-WASTE-OF-TIME-MSG RTRUE .FUNCT V-SHINE-AT PRINTI "You cannot illuminate anything with " ICALL2 RT-A-PRINT,GL-PRSO PRINTR "." .FUNCT V-SHINE-AT-SWP ICALL RT-PERFORM,V?SHINE-AT,GL-PRSI,GL-PRSO RTRUE .FUNCT V-SHOOT,NUM EQUAL? GL-PRSO,TH-GUN \?CCL3 PRINTR "BANG!! The bullet barely misses your foot." ?CCL3: FSET? GL-PRSO,FL-PERSON /?CTR4 EQUAL? GL-PRSO,TH-GENERIC-BODY \?CCL5 ?CTR4: FSET? GL-PRSO,FL-NEEDS-IDENTITY \?CND8 PUTP GL-PRSO,P?OBJ-NOUN,0 PUTP GL-PRSO,P?OBJ-ADJ,0 ?CND8: PRINTI "You shoot " EQUAL? GL-PRSO,TH-GENERIC-BODY /?CND10 PRINTI "and kill " ?CND10: ICALL2 RT-THEO-PRINT,GL-PRSO PRINTI ". Inspector Lestrade " IN? CH-PLAYER,TH-BOAT \?CCL14 PRINTI "pulls up alongside you in a Scotland Yard launch" JUMP ?CND12 ?CCL14: PRINTI "appears out of nowhere" ?CND12: PRINTI " and says," EQUAL? GL-PRSO,CH-HOLMES \?CCL17 PRINT K-PLUG-HIM-MYSELF-MSG JUMP ?CND15 ?CCL17: PRINTI " ""You may be on our side, doctor, but killing people is still against the law. I'm afraid I'm going to have to arrest you.""" ?CND15: CRLF CRLF PRINT K-LESTRADE-ARRESTS-MSG CRLF CRLF CALL1 RT-QSR RSTACK ?CCL5: EQUAL? GL-PRSO,TH-SAPPHIRE,TH-EMERALD,TH-OPAL /?CTR18 EQUAL? GL-PRSO,TH-RUBY,TH-TOPAZ,TH-GARNET \?CCL19 ?CTR18: REMOVE GL-PRSO PRINTI "You shoot " ICALL1 RT-THEO-PRINT PRINTR ", which shatters and disappears." ?CCL19: EQUAL? GL-PRSO,TH-CROWN-JEWELS \?CCL23 PRINTI "The jewels shatter and Holmes throws up his arms in exasperation. ""That's it, Watson. You have pushed me to the limit."" He leaps for your throat, and the ensuing struggle attracts the attention of the local constabulary, with what should by now be predictable results." CRLF CRLF CALL1 RT-QSR RSTACK ?CCL23: EQUAL? GL-PRSO,TH-SHAFT /?CTR24 EQUAL? GL-PRSO,PSEUDO-OBJECT \?CCL25 GETP PSEUDO-OBJECT,P?ACTION EQUAL? STACK,RT-AC-TH-FIREPLACE \?CCL25 ?CTR24: PRINTI "The bullet disappears into " ICALL1 RT-THEO-PRINT PRINTR "." ?CCL25: EQUAL? GL-PRSO,TH-INTNUM,TH-INTDIR /?CTR30 IN? GL-PRSO,ROOMS \?CCL31 ?CTR30: CALL1 RT-IMPOSSIBLE-MSG RSTACK ?CCL31: FSET? GL-PRSO,FL-PLURAL \?CCL35 PRINTR "There are so many of them, you don't know where to begin." ?CCL35: FSET? GL-PRSO,FL-MONEY \?CCL37 PRINTI "You take aim at " ICALL1 RT-THEO-PRINT PRINTR ", but your frugal nature prevents you from going through with it." ?CCL37: GET GL-HOLES,0 >NUM MUL NUM,2 ADD STACK,1 PUT GL-HOLES,STACK,GL-PRSO LOC GL-PRSO EQUAL? STACK,LOCAL-GLOBALS,ROOMS,GLOBAL-OBJECTS \?CND38 MUL NUM,2 ADD STACK,2 PUT GL-HOLES,STACK,GL-PLACE-CUR ?CND38: ADD NUM,1 PUT GL-HOLES,0,STACK PRINTI "The bullet puts a neat hole in " ICALL1 RT-THEO-PRINT PRINTR "." .FUNCT V-SHOOT-SWP ICALL RT-PERFORM,V?SHOOT,GL-PRSI,GL-PRSO RTRUE .FUNCT V-SHOW FSET? GL-PRSI,FL-ASLEEP \?CCL3 ICALL1 RT-CTHEI-PRINT ICALL2 RT-IS-ARE-MSG,GL-PRSI PRINTI "in no condition to appreciate " ICALL1 RT-THEO-PRINT PRINTR "." ?CCL3: EQUAL? GL-PRSI,CH-ME,CH-PLAYER \?CCL5 ICALL RT-PERFORM,V?EXAMINE,GL-PRSO RTRUE ?CCL5: ICALL1 RT-CTHEI-PRINT PRINTI " glance" ICALL2 RT-S-NOS-MSG,GL-PRSI PRINTI " at " ICALL1 RT-THEO-PRINT PRINTR ", but makes no comment." .FUNCT V-SHOW-SWP ICALL RT-PERFORM,V?SHOW,GL-PRSI,GL-PRSO RTRUE .FUNCT V-SIT CALL RT-IDENTIFY-FLOOR?,W?GROUND,GL-PRSO ZERO? STACK \?CTR2 CALL RT-IDENTIFY-FLOOR?,W?FLOOR,GL-PRSO ZERO? STACK \?CTR2 EQUAL? GL-PRSO,ROOMS /?CTR2 FSET? GL-PRSO,FL-SURFACE \?CCL3 ?CTR2: PRINT K-NO-RESTING-MSG CRLF RTRUE ?CCL3: ICALL1 RT-IMPOSSIBLE-MSG RTRUE .FUNCT V-SMELL,OBJ CALL RT-IDENTIFY-FLOOR?,W?SKY,GL-PRSO ZERO? STACK \?CTR2 EQUAL? GL-PRSO,ROOMS \?CCL3 ?CTR2: PRINTI "You do not smell anything " CALL2 RT-PICK-NEXT,GL-BORING-TXT PRINT STACK PRINTR "." ?CCL3: EQUAL? GL-PRSO,TH-BUNG,TH-MALMSEY,TH-MALMSEY-POOL /?CTR6 EQUAL? GL-PRSO,TH-BUTT-OF-MALMSEY,TH-GARNET \?CCL7 ?CTR6: PRINT K-EAU-DE-MSG CRLF RTRUE ?CCL7: PRINTI "It smells just like " ICALL2 RT-A-PRINT,GL-PRSO PRINTR "." .FUNCT V-SMOKE ICALL1 RT-CYOU-MSG PRINTI "cannot smoke " ICALL1 RT-THEO-PRINT PRINTR "." .FUNCT V-SPIN EQUAL? GL-PRSO,ROOMS \?CCL3 PRINT K-DIZZY-MSG CRLF RTRUE ?CCL3: PRINTI "You cannot spin " ICALL1 RT-SAY-HIM-HER-THEM-IT-MSG PRINTR "." .FUNCT V-STAND PRINTR "You are already standing." .FUNCT V-STAND-ON PRINTI "Standing on " ICALL1 RT-THEO-PRINT PRINTI " would" ICALL1 RT-WASTE-OF-TIME-MSG RTRUE .FUNCT V-STAND-UNDER ICALL1 RT-IMPOSSIBLE-MSG RTRUE .FUNCT V-STEAL PRINT K-THEFT-MSG CRLF RTRUE .FUNCT V-STRIKE ICALL1 V-HIT RTRUE .FUNCT V-SWIM EQUAL? GL-PRSO,ROOMS \?CCL3 EQUAL? GL-PLACE-CUR,RM-THE-EMBANKMENT,RM-SWAN-LANE,RM-LONDON-BRIDGE \?CCL6 PRINTR "Yuck! Have you looked at that water?" ?CCL6: PRINT K-NO-SWIM-MSG CRLF RTRUE ?CCL3: EQUAL? GL-PRSO,TH-INTDIR \?CCL8 ZERO? GL-P-DIRECTION /?CCL8 EQUAL? GL-WINNER,CH-PLAYER \?CCL8 PRINTI "You cannot " PRINTB GL-P-PRSA-WORD PRINTR " that way from here." ?CCL8: ICALL1 RT-IMPOSSIBLE-MSG RTRUE .FUNCT V-SWING ZERO? GL-PRSI \?CCL3 PRINTI "That would" ICALL1 RT-WASTE-OF-TIME-MSG RTRUE ?CCL3: ICALL RT-PERFORM,V?KILL,GL-PRSI,GL-PRSO RTRUE .FUNCT V-TAKE,L LOC GL-PRSO EQUAL? GLOBAL-OBJECTS,STACK \?CCL3 ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL3: ZERO? GL-PRSI /?CCL5 LOC GL-PRSI EQUAL? GLOBAL-OBJECTS,STACK \?CND1 ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL5: FSET? GL-PRSO,FL-WORN \?CND1 ICALL RT-PERFORM,V?TAKE-OFF,GL-PRSO RTRUE ?CND1: CALL1 RT-ITAKE >L ZERO? L /TRUE ZERO? GL-P-MULT? /?CCL13 PRINTI "Taken." CRLF JUMP ?CND11 ?CCL13: FSET? L,FL-CONTAINER /?CTR14 FSET? L,FL-SURFACE /?CTR14 FSET? L,FL-PERSON /?CTR14 FSET? L,FL-ALIVE \?CCL15 ?CTR14: ICALL RT-CYOU-MSG,STR?697,STR?698 ICALL1 RT-THEO-PRINT ICALL2 RT-OUT-OFF-MSG,L ICALL2 RT-THEO-PRINT,L PRINTC 46 CRLF JUMP ?CND11 ?CCL15: ICALL RT-CYOU-MSG,STR?697,STR?698 ICALL1 RT-THEO-PRINT PRINTC 46 CRLF ?CND11: GETP GL-PRSO,P?VALUE >L ZERO? L /TRUE PUTP GL-PRSO,P?VALUE,0 ICALL1 RT-TOPAZ-MSG ICALL2 RT-UPDATE-SCORE,L ICALL1 RT-UPDATE-STATUS-LINE RTRUE .FUNCT V-TAKE-OFF EQUAL? GL-PRSO,TH-CLOTHES,TH-FEET \?CCL3 PRINT K-INAPPROPRIATE-MSG CRLF RTRUE ?CCL3: FSET? GL-PRSO,FL-TAKEABLE \?CCL5 IN? GL-PRSO,GL-WINNER \?CCL8 FSET? GL-PRSO,FL-WORN \?CCL8 FCLEAR GL-PRSO,FL-WORN PRINTI "You take off " ICALL1 RT-THEO-PRINT PRINTR "." ?CCL8: ICALL RT-PERFORM,V?TAKE,GL-PRSO RTRUE ?CCL5: FSET? GL-PRSO,FL-VEHICLE \?CCL12 ICALL RT-PERFORM,V?EXIT,GL-PRSO RTRUE ?CCL12: ICALL1 RT-IMPOSSIBLE-MSG RTRUE .FUNCT V-TAKE-WITH PRINT K-HOW-TO-MSG CRLF RTRUE .FUNCT V-TASTE ICALL RT-PERFORM,V?EAT,GL-PRSO RTRUE .FUNCT V-TELL,N,M,WRD CALL1 RT-FOOLISH-TO-TALK-MSG ZERO? STACK /?CCL3 RETURN 2 ?CCL3: EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL5 EQUAL? GL-WINNER,CH-PLAYER \?CCL8 ICALL1 RT-TALK-TO-SELF-MSG RTRUE ?CCL8: ICALL1 RT-NO-RESPONSE-MSG RTRUE ?CCL5: SET 'GL-P-QCONTEXT-TH,GL-PRSO LOC GL-PRSO >GL-P-QCONTEXT-RM ZERO? GL-P-CONT /?CCL11 SET 'GL-WINNER,GL-PRSO ICALL2 RT-THIS-IS-IT,GL-PRSO SET 'GL-CLOCK-WAIT,TRUE-VALUE SET 'N,GL-P-CONT SET 'M,GL-P-LEN ?PRG12: GET GL-P-P-LEX,N >WRD EQUAL? WRD,W?QUOTE \?CCL16 PUT GL-P-P-LEX,N,W?THE JUMP ?CND14 ?CCL16: EQUAL? WRD,W?THEN,W?PERIOD /TRUE ?CND14: ADD N,K-P-LEXELEN >N DLESS? 'M,1 \?PRG12 RTRUE ?CCL11: ICALL1 RT-NO-RESPONSE-MSG RTRUE .FUNCT V-TELL-ABOUT CALL1 RT-WHO-WHAT-WHERE-MSG ZERO? STACK /TRUE RETURN 2 .FUNCT V-TELL-WHO PRINTR "You must use TELL ME ABOUT SOMETHING or TELL CHARACTER ABOUT SOMETHING." .FUNCT V-THANK CALL1 RT-ANYONE-HERE? ZERO? STACK \?CCL3 PRINTR "[There's nobody here to thank.]" ?CCL3: EQUAL? GL-WINNER,CH-PLAYER \?CCL5 EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL8 PRINTI "Patting yourself on the back" PRINT K-WONT-HELP-MSG CRLF RTRUE ?CCL8: FSET? GL-PRSO,FL-ASLEEP \?CCL10 ICALL1 RT-CTHEO-PRINT ICALL2 RT-ISNT-ARENT-MSG,GL-PRSO PRINTR "in any condition to accept your thanks." ?CCL10: PRINTR """You're welcome.""" ?CCL5: ICALL1 RT-FOOLISH-TO-TALK-MSG RTRUE .FUNCT V-THROUGH EQUAL? GL-PRSO,ROOMS \?CCL3 ICALL2 RT-DO-WALK,P?IN RTRUE ?CCL3: ICALL1 RT-IMPOSSIBLE-MSG RTRUE .FUNCT V-THROW EQUAL? GL-P-PRSA-WORD,W?PUT \?CCL3 EQUAL? GL-PRSO,TH-HANDS,TH-FEET \?CCL3 FSET? GL-PRSI,FL-DOOR \?CCL8 FSET? GL-PRSI,FL-OPENED \?CCL11 ICALL RT-CYOU-MSG,STR?685,STR?686 ICALL1 RT-THEO-PRINT PRINTI " through " ICALL1 RT-THEI-PRINT PRINTR ", but can't reach anything on the other side." ?CCL11: ICALL1 RT-CTHEI-PRINT ICALL2 RT-IS-ARE-MSG,GL-PRSI PRINTR "closed." ?CCL8: ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL3: IN? GL-PRSO,GLOBAL-OBJECTS \?CCL13 ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL13: CALL1 RT-IDROP-MSG ZERO? STACK /TRUE FSET? CH-HOLMES,FL-ASLEEP \?CND15 EQUAL? GL-PRSI,CH-HOLMES,TH-PHIAL,TH-SYRINGE /?CCL16 EQUAL? GL-PRSI,TH-MOROCCO-CASE \?CND15 ?CCL16: EQUAL? GL-PRSO,TH-KNIFE \?CCL23 EQUAL? GL-PRSI,CH-HOLMES \?CCL26 PRINTI "Holmes absentmindedly dodges the knife" JUMP ?CND24 ?CCL26: EQUAL? GL-PRSI,TH-PHIAL,TH-SYRINGE,TH-MOROCCO-CASE \?CND24 PRINTI "Holmes casually moves " ICALL1 RT-THEI-PRINT PRINTI " out of harm's way" ?CND24: PRINTR " and continues staring at the phial." ?CCL23: PRINTI "Holmes absentmindedly catches " ICALL1 RT-THEO-PRINT PRINTR " with his free hand and bops you over the head with it before letting it fall to the ground. He then continues staring at the phial." ?CND15: ICALL1 RT-CTHEO-PRINT PRINTI " miss" ICALL2 RT-ES-NOES-MSG,GL-PRSO PRINTC 32 ICALL1 RT-THEI-PRINT PRINTI " by a mile and land" ICALL2 RT-S-NOS-MSG,GL-PRSI EQUAL? GL-PLACE-CUR,RM-THAMES-ONE,RM-THAMES-TWO,RM-THAMES-THREE /?CTR29 EQUAL? GL-PLACE-CUR,RM-THAMES-FOUR,RM-THAMES-FIVE \?CCL30 ?CTR29: PRINTI " in the water." MOVE GL-PRSO,LG-WATER EQUAL? GL-PRSO,CH-TRAINED-PIGEON \?CND33 ICALL1 RT-KILL-PIGEON ?CND33: PRINTR " Plop." ?CCL30: PRINTI " on the " FSET? GL-PLACE-CUR,FL-INDOORS \?CCL37 PRINTI "floor" JUMP ?CND35 ?CCL37: PRINTI "ground" ?CND35: PRINTR " nearby." .FUNCT V-THROW-SWP ICALL RT-PERFORM,V?THROW,GL-PRSI,GL-PRSO RTRUE .FUNCT V-THROW-OVER PRINTI "That would" ICALL1 RT-WASTE-OF-TIME-MSG RTRUE .FUNCT V-TIE ICALL1 RT-CYOU-MSG PRINTI "cannot possibly tie " ICALL1 RT-THEO-PRINT ZERO? GL-PRSI /?CND1 PRINTI " to " ICALL1 RT-THEI-PRINT ?CND1: PRINTR "." .FUNCT V-TIE-UP ICALL1 RT-CYOU-MSG PRINTI "cannot tie up " EQUAL? GL-PRSI,FALSE-VALUE,ROOMS \?CCL3 PRINTI "that" JUMP ?CND1 ?CCL3: PRINTI "anything with " ICALL1 RT-THEI-PRINT ?CND1: PRINTR "." .FUNCT V-TIP FSET? GL-PRSO,FL-PERSON \?CCL3 ICALL RT-CYOU-MSG,STR?699,STR?700 PRINTI "confidentially, ""Buy low, sell high.""" CRLF CRLF ICALL1 RT-CTHEO-PRINT ICALL2 RT-DONT-DOESNT-MSG,GL-PRSO PRINTR "look impressed." ?CCL3: ICALL1 RT-CYOU-MSG PRINTR "can't do that." .FUNCT V-TOUCH ICALL2 RT-NO-POINT-MSG,STR?701 RTRUE .FUNCT V-TOUCH-TO EQUAL? GL-PRSO,TH-HANDS \?CND1 ICALL RT-PERFORM,V?TOUCH,GL-PRSI RTRUE ?CND1: ICALL RT-CYOU-MSG,STR?685,STR?686 ICALL1 RT-THEO-PRINT PRINTI " next to " ICALL1 RT-THEI-PRINT PRINTI ", but nothing " CALL2 RT-PICK-NEXT,GL-BORING-TXT PRINT STACK PRINTR " happens." .FUNCT V-TOUCH-TO-SWP ICALL RT-PERFORM,V?TOUCH-TO,GL-PRSI,GL-PRSO RTRUE .FUNCT V-TRANSLATE PRINT K-HOW-TO-MSG CRLF RTRUE .FUNCT V-TUNE-TO ICALL1 RT-IMPOSSIBLE-MSG RTRUE .FUNCT V-TURN FSET? GL-PRSO,FL-TAKEABLE /?CCL3 FSET? GL-PRSO,FL-TRYTAKE /?CCL3 ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL3: ICALL2 RT-NO-POINT-MSG,STR?702 RTRUE .FUNCT V-TURN-DOWN ICALL1 V-REFUSE RTRUE .FUNCT V-TURN-TO CALL2 RT-VISIBLE?,GL-PRSO ZERO? STACK /?CCL3 ICALL RT-PERFORM,V?WATCH,GL-PRSO RTRUE ?CCL3: ICALL RT-CYOU-MSG,STR?653,STR?654 PRINTI "see " ICALL1 RT-THEO-PRINT PRINTR "." .FUNCT V-TURN-UP ICALL1 V-LOOK-UNDER RTRUE .FUNCT V-UNDRESS EQUAL? GL-PRSO,ROOMS /?CTR2 FSET? GL-PRSO,FL-PERSON \?CCL3 ?CTR2: PRINT K-INAPPROPRIATE-MSG CRLF RTRUE ?CCL3: ICALL1 RT-CYOU-MSG PRINTI "cannot undress " ICALL2 RT-A-PRINT,GL-PRSO PRINTR "." .FUNCT V-UNFOLD ICALL1 RT-CTHEO-PRINT ICALL1 RT-ISNT-ARENT-MSG PRINTR "folded up." .FUNCT V-UNLOCK FSET? GL-PRSO,FL-OPENABLE /?CTR2 FSET? GL-PRSO,FL-CONTAINER \?CCL3 ?CTR2: FSET? GL-PRSO,FL-OPENED /?CTR7 FSET? GL-PRSO,FL-LOCKED /?CCL8 ?CTR7: ICALL1 RT-CTHEO-PRINT ICALL1 RT-ISNT-ARENT-MSG PRINTR "locked." ?CCL8: ICALL RT-THING-WONT-LOCK-MSG,GL-PRSI,GL-PRSO,TRUE-VALUE RTRUE ?CCL3: ICALL2 RT-CANT-LOCK-MSG,TRUE-VALUE RTRUE .FUNCT V-UNPLUG ICALL1 RT-CTHEO-PRINT ICALL1 RT-ISNT-ARENT-MSG PRINTI "connected to " ZERO? GL-PRSI /?CCL3 ICALL1 RT-THEI-PRINT JUMP ?CND1 ?CCL3: PRINTI "anything" ?CND1: PRINTR "." .FUNCT V-UNSCREW-FROM EQUAL? GL-PRSO,GL-PRSI \?CCL3 ICALL1 RT-IMPOSSIBLE-MSG RTRUE ?CCL3: IN? GL-PRSO,GL-PRSI /?CCL5 FSET? GL-PRSI,FL-ALIVE \?CND6 ICALL1 RT-CTHEI-PRINT ICALL2 RT-DONT-DOESNT-MSG,GL-PRSI PRINTI "have " ICALL1 RT-THEO-PRINT PRINTR "." ?CND6: ICALL1 RT-CTHEO-PRINT ICALL1 RT-ISNT-ARENT-MSG ICALL RT-IN-ON-MSG,GL-PRSI,FALSE-VALUE ICALL1 RT-THEI-PRINT PRINTR "." ?CCL5: ICALL1 RT-CYOU-MSG PRINTI "cannot unscrew " ICALL1 RT-THEO-PRINT PRINTR "." .FUNCT V-UNTIE ICALL1 RT-CYOU-MSG PRINTI "cannot untie " ICALL2 RT-A-PRINT,GL-PRSO PRINTR "." .FUNCT V-USE FSET? GL-PRSO,FL-PERSON \?CCL3 ICALL1 RT-CTHEO-PRINT PRINTR " might resent that." ?CCL3: PRINTI "[You must specify what you want to do with " ICALL1 RT-THEO-PRINT PRINTR ".]" .FUNCT V-USE-ON PRINTI "Using " ICALL1 RT-THEO-PRINT PRINTI " on " ICALL1 RT-THEI-PRINT PRINTI " would" ICALL1 RT-WASTE-OF-TIME-MSG RTRUE .FUNCT V-WAIT,H,M,S,N EQUAL? GL-P-NUMBER,-1 \?CCL3 SET 'N,1 JUMP ?CND1 ?CCL3: SET 'N,GL-P-NUMBER ?CND1: EQUAL? GL-PRSO,TH-TIME \?CCL6 GETP GL-PRSO,P?OBJ-NOUN EQUAL? STACK,W?MINUTE,W?MINUTES \?CCL9 SET 'H,0 SET 'M,N JUMP ?CND4 ?CCL9: SET 'H,N SET 'M,0 JUMP ?CND4 ?CCL6: EQUAL? GL-PRSO,TH-INTNUM \?CCL11 SET 'H,0 SET 'M,N PRINTC 91 PRINTN M PRINTI " minute" EQUAL? M,1 /?CND12 PRINTC 115 ?CND12: PRINTC 93 CRLF CRLF JUMP ?CND4 ?CCL11: EQUAL? GL-PRSO,ROOMS /?CCL15 ICALL1 RT-CYOU-MSG PRINTR "can't wait for that." ?CCL15: SET 'H,0 SET 'M,10 ?CND4: SET 'S,0 PRINTI "Time passes..." CRLF ICALL RT-CLOCK-JMP,H,M,S ICALL2 RT-TIME-OF-DAY-MSG,TRUE-VALUE RTRUE .FUNCT V-WALK,PT,PTS,STR,OBJ,RM GETPT GL-PLACE-CUR,GL-PRSO >PT ZERO? GL-P-WALK-DIR \?CCL3 PRINTR "[You must specify a direction.]" ?CCL3: ZERO? PT /?CCL5 PTSIZE PT >PTS EQUAL? PTS,K-UEXIT \?CCL8 LOC GL-WINNER FSET? STACK,FL-VEHICLE \?CND9 LOC GL-WINNER ICALL RT-PERFORM,V?EXIT,STACK LOC GL-WINNER FSET? STACK,FL-VEHICLE \?CND9 RETURN 2 ?CND9: GETB PT,K-REXIT >RM ICALL2 RT-GOTO,RM RTRUE ?CCL8: EQUAL? PTS,K-NEXIT \?CCL14 GET PT,K-NEXITSTR >STR PRINT STR CRLF RETURN 2 ?CCL14: EQUAL? PTS,K-PEXIT \?CCL16 GET PT,K-PEXITRTN CALL STACK >RM ZERO? RM /?CCL19 ICALL2 RT-GOTO,RM RTRUE ?CCL19: RETURN 2 ?CCL16: EQUAL? PTS,K-CEXIT \?CCL21 GETB PT,K-CEXITFLG VALUE STACK ZERO? STACK /?CND22 GETB PT,K-REXIT >RM ICALL2 RT-GOTO,RM RTRUE ?CND22: ICALL1 RT-CYOU-MSG PRINTI "cannot go that way." CRLF RETURN 2 ?CCL21: EQUAL? PTS,K-DEXIT \FALSE LOC GL-WINNER FSET? STACK,FL-VEHICLE \?CND26 LOC GL-WINNER ICALL RT-PERFORM,V?EXIT,STACK LOC GL-WINNER FSET? STACK,FL-VEHICLE \?CND26 RETURN 2 ?CND26: ADD 1,PT GET STACK,0 >OBJ FSET? OBJ,FL-OPENED \?CCL32 GETB PT,K-REXIT >RM ICALL2 RT-GOTO,RM RTRUE ?CCL32: PRINTI "The door is not open." CRLF RETURN 2 ?CCL5: EQUAL? GL-P-WALK-DIR,P?OUT \?CCL34 FSET? GL-PLACE-CUR,FL-INDOORS /?CCL34 ICALL RT-CYOU-MSG,STR?228,STR?229 PRINTI "already outside." CRLF RETURN 2 ?CCL34: EQUAL? GL-P-WALK-DIR,P?IN \?CCL38 FSET? GL-PLACE-CUR,FL-INDOORS \?CCL38 ICALL RT-CYOU-MSG,STR?228,STR?229 PRINTI "already inside." CRLF RETURN 2 ?CCL38: PRINTI "You cannot go that way." CRLF RETURN 2 .FUNCT V-WALK-AROUND PRINTI "[Which way do you want to go?]" CRLF RETURN 2 .FUNCT V-WALK-TO EQUAL? GL-PRSO,TH-INTDIR \?CCL3 ICALL2 RT-DO-WALK,GL-P-DIRECTION RTRUE ?CCL3: EQUAL? GL-PRSO,TH-RIGHT,TH-LEFT /?CTR4 IN? GL-PRSO,ROOMS \?CCL5 ?CTR4: PRINT K-BE-MORE-SPECIFIC-MSG CRLF RTRUE ?CCL5: ICALL1 V-FOLLOW RTRUE .FUNCT V-WATCH FSET? GL-PRSO,FL-PERSON \?CCL3 ICALL1 RT-CTHEO-PRINT ICALL1 RT-ISNT-ARENT-MSG PRINTI "doing anything " CALL2 RT-PICK-NEXT,GL-BORING-TXT PRINT STACK JUMP ?CND1 ?CCL3: PRINTI "Nothing " CALL2 RT-PICK-NEXT,GL-BORING-TXT PRINT STACK PRINTI " is happening" ?CND1: PRINTR "." .FUNCT V-WAVE-AT CALL1 RT-WHO-WHAT-WHERE-MSG ZERO? STACK /TRUE RETURN 2 .FUNCT V-WEAR IN? GL-PRSO,GL-WINNER \?PRD5 FSET? GL-PRSO,FL-WORN /?CTR2 ?PRD5: EQUAL? GL-PRSO,TH-CLOTHES \?CCL3 ?CTR2: ICALL RT-CYOU-MSG,STR?228,STR?229 PRINTI "already wearing " ICALL1 RT-THEO-PRINT PRINTR "." ?CCL3: FSET? GL-PRSO,FL-CLOTHING /?CCL9 ICALL1 RT-CYOU-MSG PRINTI "cannot wear " ICALL1 RT-THEO-PRINT PRINTR "." ?CCL9: CALL2 RT-DONT-HAVE-MSG,GL-PRSO ZERO? STACK \TRUE FSET GL-PRSO,FL-WORN ICALL RT-CYOU-MSG,STR?685,STR?686 PRINTI "on " ICALL1 RT-THEO-PRINT PRINTR "." .FUNCT V-WEDGE ICALL RT-PERFORM,V?LOOSEN,GL-PRSI,GL-PRSO RTRUE .FUNCT V-WEIGH PRINTR "You haven't got any scales to weigh things with." .FUNCT V-WHAT CALL1 RT-WHO-WHAT-WHERE-MSG ZERO? STACK /TRUE RETURN 2 .FUNCT V-WHERE CALL1 RT-WHO-WHAT-WHERE-MSG ZERO? STACK /TRUE RETURN 2 .FUNCT V-WHO CALL1 RT-WHO-WHAT-WHERE-MSG ZERO? STACK /TRUE RETURN 2 .FUNCT V-WIND ICALL1 RT-CYOU-MSG PRINTI "cannot wind " ICALL2 RT-A-PRINT,GL-PRSO PRINTR "." .FUNCT V-WRAP-AROUND ICALL1 RT-CYOU-MSG PRINTI "could not possibly " PRINTB GL-P-PRSA-WORD PRINTC 32 ICALL1 RT-THEO-PRINT PRINTI " around " ICALL1 RT-THEI-PRINT PRINTR "." .FUNCT V-WRAP-AROUND-SWP ICALL RT-PERFORM,V?WRAP-AROUND,GL-PRSI,GL-PRSO RTRUE .FUNCT V-YELL EQUAL? GL-PRSO,ROOMS \?CCL3 EQUAL? GL-P-PRSA-WORD,W?CRY \?CCL6 PRINTR "Awww. Don't cry. You'll figure it out eventually." ?CCL6: PRINTR "The idea of the primal scream as a technique to relieve anxiety will not be discovered for eighty years. But if it makes you feel better, go right ahead." ?CCL3: ICALL RT-NOT-LIKELY-MSG,GL-PRSO,STR?230 RTRUE .FUNCT RT-CANT-SEE-MUCH-MSG ICALL1 RT-CYOU-MSG PRINTR "cannot see much from here." .FUNCT RT-NO-MONEY-MSG ICALL RT-CYOU-MSG,STR?653,STR?654 PRINTR "have any money." .FUNCT RT-IN-VEHICLE-MSG IN? CH-PLAYER,TH-HANSOM-CAB /?CTR2 IN? CH-PLAYER,TH-GROWLER-CAB \?CCL3 ?CTR2: PRINTI " in a cab " RTRUE ?CCL3: IN? CH-PLAYER,TH-BOAT \?CCL7 PRINTI " in a boat " RTRUE ?CCL7: PRINTI " standing " RTRUE .FUNCT RT-DRIVE-WALK-MSG? IN? CH-PLAYER,TH-HANSOM-CAB /?CTR2 IN? CH-PLAYER,TH-GROWLER-CAB \?CCL3 ?CTR2: PRINTI " drive " RTRUE ?CCL3: PRINTI " walk " RTRUE .FUNCT RT-ALREADY-IN-ROOM-MSG PRINTI "You are already in " ICALL1 RT-THEO-PRINT PRINTR "." .FUNCT RT-NOT-IN-ROOM-MSG PRINTI "You are not in " ICALL1 RT-THEO-PRINT PRINTR "." .FUNCT RT-OBJECT-IS-LOCKED-MSG ICALL1 RT-CYOU-MSG PRINTR "cannot do that. It is locked." .FUNCT RT-NOTHING-INTERESTING-MSG ICALL RT-CYOU-MSG,STR?655,STR?656 PRINTI "not see anything " CALL2 RT-PICK-NEXT,GL-BORING-TXT PRINT STACK RTRUE .FUNCT RT-WASTE-OF-TIME-MSG CALL2 RT-PICK-NEXT,GL-NO-POINT-TXT PRINT STACK PRINTR "." .FUNCT RT-FOG-MSG CALL2 RT-PICK-NEXT,GL-FOG-TXT PRINT STACK PRINTR "." .FUNCT RT-ITS-RIGHT-HERE-MSG ICALL1 RT-SAY-ITS-MSG PRINTR "right here in front of you." .FUNCT RT-WHO-WHAT-WHERE-MSG CALL1 RT-FOOLISH-TO-TALK-MSG ZERO? STACK \TRUE EQUAL? GL-PRSA,V?WHO,V?WHAT,V?WHERE /?CCL6 PUSH 0 JUMP ?CND4 ?CCL6: PUSH GL-WINNER ?CND4: ICALL2 RT-NO-RESPONSE-MSG,STACK RFALSE .FUNCT RT-HI-BYE-MSG CALL1 RT-FOOLISH-TO-TALK-MSG ZERO? STACK /?CCL3 RETURN 2 ?CCL3: EQUAL? GL-PRSO,ROOMS \?CCL5 ICALL1 RT-TALK-TO-SELF-MSG RTRUE ?CCL5: ICALL1 RT-NO-RESPONSE-MSG RTRUE .FUNCT RT-NO-RESPONSE-MSG,WHO ZERO? WHO \?CND1 SET 'WHO,GL-PRSO ?CND1: ICALL2 RT-CTHEO-PRINT,WHO ICALL2 RT-DONT-DOESNT-MSG,WHO PRINTR "respond." .FUNCT RT-TAKE-OFF-PRSO-FIRST-MSG PRINTI "[taking off " ICALL1 RT-THEO-PRINT PRINTI " first]" CRLF FCLEAR GL-PRSO,FL-WORN EQUAL? GL-PRSO,TH-WATSONS-HAT \?CCL3 FSET TH-WATSONS-HAT,FL-OPENED RTRUE ?CCL3: EQUAL? GL-PRSO,TH-SUIT-OF-ARMOUR \TRUE MOVE TH-SUIT-OF-ARMOUR,GL-PLACE-CUR RTRUE .FUNCT RT-SAY-DROPPED-MSG ZERO? GL-P-MULT? /?CCL3 PRINTR "Dropped." ?CCL3: ICALL RT-CYOU-MSG,STR?703,STR?704 ICALL1 RT-THEO-PRINT PRINTR "." .FUNCT RT-FOOLISH-TO-TALK-MSG EQUAL? GL-WINNER,CH-ME,CH-PLAYER /?CCL3 ICALL2 RT-CTHEO-PRINT,GL-WINNER ICALL2 RT-DONT-DOESNT-MSG,GL-WINNER PRINTR "respond." ?CCL3: EQUAL? GL-PRSO,FALSE-VALUE,ROOMS /FALSE FSET? GL-PRSO,FL-ALIVE /?CCL7 ICALL RT-NOT-LIKELY-MSG,GL-PRSO,STR?230 ICALL1 RT-P-CLEAR RTRUE ?CCL7: EQUAL? GL-PRSO,CH-ME,CH-PLAYER,GL-PRSI /?CTR8 EQUAL? GL-PRSO,GL-WINNER \?CCL9 ?CTR8: PRINTI "That would" ICALL1 RT-WASTE-OF-TIME-MSG ICALL1 RT-P-CLEAR RTRUE ?CCL9: ICALL2 RT-THIS-IS-IT,GL-PRSO RFALSE .FUNCT RT-YOU-MSG,WRD1,WRD2,PRONOUN? EQUAL? GL-WINNER,CH-PLAYER \?CCL3 PRINTI " you " ZERO? WRD1 /FALSE PRINT WRD1 PRINTC 32 RTRUE ?CCL3: PRINTC 32 ZERO? PRONOUN? /?CCL9 FSET? GL-WINNER,FL-PLURAL \?CCL12 FSET? GL-WINNER,FL-COLLECTIVE /?CCL12 PRINTI "they" JUMP ?CND7 ?CCL12: FSET? GL-WINNER,FL-PERSON \?CCL16 FSET? GL-WINNER,FL-FEMALE \?CCL19 PRINTI "she" JUMP ?CND7 ?CCL19: PRINTI "he" JUMP ?CND7 ?CCL16: PRINTI "it" JUMP ?CND7 ?CCL9: ICALL2 RT-THEO-PRINT,GL-WINNER ?CND7: PRINTC 32 ZERO? WRD2 /FALSE PRINT WRD2 PRINTC 32 RTRUE .FUNCT RT-CYOU-MSG,WRD1,WRD2,PRONOUN? EQUAL? GL-WINNER,CH-PLAYER \?CCL3 PRINTI "You " ZERO? WRD1 /FALSE PRINT WRD1 PRINTC 32 RTRUE ?CCL3: ZERO? PRONOUN? /?CCL9 FSET? GL-WINNER,FL-PLURAL \?CCL12 FSET? GL-WINNER,FL-COLLECTIVE /?CCL12 PRINTI "They" JUMP ?CND7 ?CCL12: FSET? GL-WINNER,FL-PERSON \?CCL16 FSET? GL-WINNER,FL-FEMALE \?CCL19 PRINTI "She" JUMP ?CND7 ?CCL19: PRINTI "He" JUMP ?CND7 ?CCL16: PRINTI "It" JUMP ?CND7 ?CCL9: ICALL2 RT-CTHEO-PRINT,GL-WINNER ?CND7: PRINTC 32 ZERO? WRD2 /FALSE PRINT WRD2 PRINTC 32 RTRUE .FUNCT RT-ITS-ALREADY-MSG,STR PRINTI "It is already " PRINT STR PRINTR "." .FUNCT RT-YOURE-NOT-A-MSG,STR PRINTI "You're a general practitioner, not a " PRINT STR PRINTR "." .FUNCT RT-NO-POINT-MSG,STR PRINT STR PRINTC 32 ICALL1 RT-THEO-PRINT PRINTI " would" CALL2 RT-PICK-NEXT,GL-NO-POINT-TXT PRINT STACK PRINTR "." .FUNCT RT-IS-ARE-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: EQUAL? THING,CH-ME,CH-PLAYER /?CTR4 FSET? THING,FL-PLURAL \?CCL5 FSET? THING,FL-COLLECTIVE /?CCL5 ?CTR4: PRINTI " are " RTRUE ?CCL5: PRINTI " is " RTRUE .FUNCT RT-ISNT-ARENT-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: EQUAL? THING,CH-ME,CH-PLAYER /?CTR4 FSET? THING,FL-PLURAL \?CCL5 FSET? THING,FL-COLLECTIVE /?CCL5 ?CTR4: PRINTI " are not " RTRUE ?CCL5: PRINTI " is not " RTRUE .FUNCT RT-S-NOS-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: EQUAL? THING,CH-ME,CH-PLAYER /TRUE FSET? THING,FL-PLURAL \?CCL4 FSET? THING,FL-COLLECTIVE \TRUE ?CCL4: PRINTC 115 RTRUE .FUNCT RT-ES-NOES-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: EQUAL? THING,CH-ME,CH-PLAYER /TRUE FSET? THING,FL-PLURAL \?CCL4 FSET? THING,FL-COLLECTIVE \TRUE ?CCL4: PRINTI "es" RTRUE .FUNCT RT-DONT-DOESNT-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: EQUAL? THING,CH-ME,CH-PLAYER /?CTR4 FSET? THING,FL-PLURAL \?CCL5 FSET? THING,FL-COLLECTIVE /?CCL5 ?CTR4: PRINTI " do not " RTRUE ?CCL5: PRINTI " does not " RTRUE .FUNCT RT-SAY-ITS-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: FSET? THING,FL-PLURAL \?CCL5 FSET? THING,FL-COLLECTIVE /?CCL5 PRINTI "They are " RTRUE ?CCL5: FSET? THING,FL-PERSON \?CCL9 FSET? THING,FL-FEMALE \?CCL9 PRINTI "She is " RTRUE ?CCL9: FSET? THING,FL-PERSON \?CCL13 FSET? THING,FL-FEMALE /?CCL13 PRINTI "He is " RTRUE ?CCL13: PRINTI "It is " RTRUE .FUNCT RT-SAY-HIM-HER-THEM-IT-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: EQUAL? THING,CH-PLAYER,CH-ME \?CCL5 EQUAL? GL-WINNER,CH-PLAYER,CH-ME \?CCL8 PRINTI "yourself" RTRUE ?CCL8: PRINTI "you" RTRUE ?CCL5: FSET? THING,FL-PLURAL \?CCL10 FSET? THING,FL-COLLECTIVE /?CCL10 PRINTI "them" RTRUE ?CCL10: FSET? THING,FL-PERSON \?CCL14 FSET? THING,FL-FEMALE \?CCL17 PRINTI "her" RTRUE ?CCL17: PRINTI "him" RTRUE ?CCL14: PRINTI "it" RTRUE .FUNCT RT-YOUR-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-WINNER ?CND1: EQUAL? THING,CH-PLAYER,CH-ME \?CCL5 PRINTI "your " RTRUE ?CCL5: FSET? THING,FL-PLURAL \?CCL7 FSET? THING,FL-COLLECTIVE /?CCL7 PRINTI "their " RTRUE ?CCL7: FSET? THING,FL-PERSON \?CCL11 FSET? THING,FL-FEMALE \?CCL14 PRINTI "her " RTRUE ?CCL14: PRINTI "his " RTRUE ?CCL11: PRINTI "its " RTRUE .FUNCT RT-ITS-CLOSED-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: ICALL2 RT-CTHEO-PRINT,THING ICALL2 RT-IS-ARE-MSG,THING PRINTR "closed." .FUNCT RT-WHY-SHOOT-MSG,OBJ ZERO? OBJ \?CND1 SET 'OBJ,GL-PRSO ?CND1: PRINTI "Why would" ICALL1 RT-YOU-MSG PRINTI "want to shoot the poor, little, innocent " ICALL2 DPRINT,OBJ PRINTR "?" .FUNCT RT-HOW-READ-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: PRINTI "How can" ICALL1 RT-YOU-MSG PRINTI "read " ICALL2 RT-A-PRINT,THING RTRUE .FUNCT RT-ALREADY-HAVE-PRSO-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: ICALL RT-CYOU-MSG,STR?705,STR?706 ICALL2 RT-A-PRINT,THING PRINTR "." .FUNCT RT-CANT-OPEN-PRSO-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: ICALL1 RT-CYOU-MSG PRINTI "could not possibly open " ICALL2 RT-THEO-PRINT,THING PRINTR "." .FUNCT RT-CANT-CLOSE-THAT-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: ICALL1 RT-CYOU-MSG PRINTI "cannot close " ZERO? THING /?CCL5 ICALL2 RT-THEO-PRINT,THING JUMP ?CND3 ?CCL5: ICALL2 DPRINT,TH-NOT-HERE-OBJECT ?CND3: PRINTR "." .FUNCT RT-NO-GOOD-SURFACE-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSI ?CND1: PRINTI "There is no good surface on " ICALL2 RT-THEO-PRINT,THING PRINTR "." .FUNCT RT-LANDS-AT-YOUR-FEET-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: PRINTI "land" ICALL2 RT-S-NOS-MSG,THING PRINTI " at your feet." CRLF MOVE THING,GL-PLACE-CUR RTRUE .FUNCT RT-OPEN-CLOSED-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: ICALL2 RT-CTHEO-PRINT,THING ICALL2 RT-IS-ARE-MSG,THING FSET? THING,FL-OPENED \?CCL5 PRINTI "open" JUMP ?CND3 ?CCL5: PRINTI "closed" ?CND3: PRINTC 46 RTRUE .FUNCT RT-YOU-OPEN-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: FSET THING,FL-OPENED ICALL RT-CYOU-MSG,STR?227,STR?707 ICALL2 RT-THEO-PRINT,THING PRINTR "." .FUNCT RT-YOU-CLOSE-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: FCLEAR THING,FL-OPENED ICALL RT-CYOU-MSG,STR?674,STR?708 ICALL2 RT-THEO-PRINT,THING PRINTR "." .FUNCT RT-IN-ON-MSG,THING,SPACE? ASSIGNED? 'SPACE? /?CND1 SET 'SPACE?,TRUE-VALUE ?CND1: ZERO? THING \?CND3 SET 'THING,GL-PRSO ?CND3: ZERO? SPACE? /?CND5 PRINTC 32 ?CND5: FSET? THING,FL-CONTAINER \?CCL9 PRINTI "in" JUMP ?CND7 ?CCL9: FSET? THING,FL-SURFACE \?CCL11 PRINTI "on" JUMP ?CND7 ?CCL11: PRINTI "held by" ?CND7: PRINTC 32 RTRUE .FUNCT RT-CIN-CON-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: FSET? THING,FL-SURFACE \?CCL5 PRINTI "On " RTRUE ?CCL5: FSET? THING,FL-CONTAINER \?CCL7 PRINTI "In " RTRUE ?CCL7: PRINTI "Held by " RTRUE .FUNCT RT-OUT-OFF-MSG,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: FSET? THING,FL-SURFACE \?CCL5 PRINTI " off of " RTRUE ?CCL5: FSET? THING,FL-CONTAINER \?CCL7 PRINTI " out of " RTRUE ?CCL7: PRINTI " from " RTRUE .FUNCT RT-CANT-LOCK-MSG,UN?,THING ZERO? THING \?CND1 SET 'THING,GL-PRSO ?CND1: ICALL1 RT-CYOU-MSG PRINTI "cannot " ZERO? UN? /?CND3 PRINTI "un" ?CND3: PRINTI "lock " ICALL2 RT-A-PRINT,THING PRINTR "." .FUNCT RT-THING-WONT-LOCK-MSG,THING,CLOSED-THING,UN? ICALL1 RT-CYOU-MSG PRINTI "cannot " ZERO? UN? /?CND1 PRINTI "un" ?CND1: PRINTI "lock " ICALL2 RT-THEO-PRINT,CLOSED-THING PRINTI " with " ICALL2 RT-THEO-PRINT,THING PRINTR "." .FUNCT RT-DONT-HAVE-MSG,OBJ,L,O LOC OBJ >L ZERO? L /?CND1 EQUAL? L,GL-WINNER /FALSE IN? L,CH-PLAYER \?CND1 EQUAL? GL-WINNER,CH-PLAYER \?CND1 SET 'O,GL-PRSO SET 'GL-PRSO,OBJ CALL2 RT-ITAKE,FALSE-VALUE ZERO? STACK /?CCL11 PRINTI "[taking " ICALL1 RT-THEO-PRINT ICALL2 RT-OUT-OFF-MSG,L ICALL2 RT-THEO-PRINT,L PRINTI " first]" CRLF SET 'GL-PRSO,O ICALL2 RT-THIS-IS-IT,GL-PRSO RFALSE ?CCL11: SET 'GL-PRSO,O ICALL1 RT-CYOU-MSG ICALL RT-WOULD-HAVE-TO-MSG,STR?697,OBJ ICALL2 RT-OUT-OFF-MSG,L ICALL2 RT-THEO-PRINT,L PRINTR " first." ?CND1: ICALL1 RT-WINNER-NOT-HOLDING-MSG ZERO? OBJ /?CCL14 ICALL2 RT-THEO-PRINT,OBJ JUMP ?CND12 ?CCL14: ICALL2 RT-THEO-PRINT,TH-NOT-HERE-OBJECT ?CND12: PRINTR "." .FUNCT RT-ROOM-IN-ON-MSG?,OBJ1,OBJ2 CALL RT-OBJ-TOO-LARGE?,OBJ1,OBJ2 ZERO? STACK /FALSE PRINTI "There is not enough room" ICALL2 RT-IN-ON-MSG,OBJ2 ICALL2 RT-THEO-PRINT,OBJ2 PRINTR "." .FUNCT RT-IMPOSSIBLE-PUT-IN-ON-MSG,OBJ ZERO? OBJ \?CND1 SET 'OBJ,GL-PRSI ?CND1: EQUAL? GL-PRSA,V?PUT,V?PUT-ON \FALSE EQUAL? GL-PRSI,OBJ \FALSE ICALL1 RT-IMPOSSIBLE-MSG RTRUE .FUNCT RT-CANT-PUT-IN-ON-MSG,OBJ ZERO? OBJ \?CND1 SET 'OBJ,GL-PRSI ?CND1: EQUAL? GL-PRSA,V?PUT,V?PUT-ON \FALSE EQUAL? GL-PRSI,OBJ \FALSE ICALL1 RT-CYOU-MSG PRINTI "cannot put " ICALL1 RT-THEO-PRINT PRINTC 32 FSET? GL-PRSO,FL-CONTAINER \?CCL10 PRINTI "in" JUMP ?CND8 ?CCL10: FSET? GL-PRSO,FL-SURFACE \?CCL12 PRINTI "on" JUMP ?CND8 ?CCL12: EQUAL? GL-PRSA,V?PUT \?CCL14 PRINTI "in" JUMP ?CND8 ?CCL14: PRINTI "on" ?CND8: PRINTC 32 ICALL1 RT-THEI-PRINT PRINTR "." .FUNCT RT-CHECK-MOVE-MSG?,SRC,DEST,PTR,OLOC,CNT ZERO? DEST /FALSE SET 'PTR,GL-LOC-TRAIL SET 'OLOC,DEST ?PRG4: PUT PTR,0,OLOC INC 'CNT ZERO? OLOC /?REP5 IN? OLOC,ROOMS /?REP5 IN? OLOC,LOCAL-GLOBALS /?REP5 IN? OLOC,GLOBAL-OBJECTS /?REP5 LOC OLOC >OLOC ADD PTR,2 >PTR EQUAL? OLOC,DEST \?PRG4 ?REP5: INTBL? SRC,GL-LOC-TRAIL,CNT \FALSE ICALL1 RT-CYOU-MSG PRINTI "cannot put " ICALL2 RT-THEO-PRINT,SRC ICALL2 RT-IN-ON-MSG,SRC PRINTI "itself, or" ICALL2 RT-IN-ON-MSG,SRC PRINTI "something that is already" ICALL2 RT-IN-ON-MSG,SRC PRINTR "it." .FUNCT RT-EMPTY-PRSO-MSG,DEST,OBJ,NXT,X FIRST? GL-PRSO >OBJ /?BOGUS1 ?BOGUS1: ZERO? OBJ \?CND2 PRINTI "There is nothing" ICALL2 RT-IN-ON-MSG,GL-PRSO ICALL1 RT-THEO-PRINT PRINTR "." ?CND2: SET 'GL-P-MULT?,TRUE-VALUE ?PRG4: ZERO? OBJ /?REP5 ICALL2 RT-CTHEO-PRINT,OBJ PRINTI ": " NEXT? OBJ >NXT /?BOGUS8 ?BOGUS8: EQUAL? DEST,CH-PLAYER \?CCL11 CALL RT-PERFORM,V?TAKE,OBJ,GL-PRSO >X EQUAL? X,FATAL-VALUE /?REP5 JUMP ?CND9 ?CCL11: ZERO? DEST \?CCL15 FSET? GL-PRSO,FL-PLURAL \?CCL18 FSET? GL-PRSO,FL-COLLECTIVE /?CCL18 PRINTI "They " JUMP ?CND16 ?CCL18: PRINTI "It " ?CND16: ICALL1 RT-LANDS-AT-YOUR-FEET-MSG JUMP ?CND9 ?CCL15: CALL RT-ROOM-IN-ON-MSG?,OBJ,DEST ZERO? STACK \?CND9 CALL RT-CHECK-MOVE-MSG?,OBJ,DEST ZERO? STACK \?REP5 MOVE OBJ,DEST PRINTI "Done." CRLF ?CND9: SET 'OBJ,NXT JUMP ?PRG4 ?REP5: SET 'GL-P-MULT?,FALSE-VALUE RTRUE .FUNCT RT-IDROP-MSG,L LOC GL-PRSO >L ZERO? L /?CTR2 EQUAL? GL-PRSO,GL-WINNER,CH-ME,CH-PLAYER \?CCL3 ?CTR2: ICALL1 RT-IMPOSSIBLE-MSG RFALSE ?CCL3: EQUAL? L,GL-WINNER /?CCL7 ICALL1 RT-CYOU-MSG ICALL RT-WOULD-HAVE-TO-MSG,STR?697,GL-PRSO ICALL2 RT-OUT-OFF-MSG,L ICALL2 RT-THEO-PRINT,L PRINTI " first." CRLF RFALSE ?CCL7: FSET? GL-PRSO,FL-WORN \?CND1 IN? GL-PRSO,GL-WINNER \?CND1 ICALL1 RT-TAKE-OFF-PRSO-FIRST-MSG ?CND1: EQUAL? GL-PRSA,V?THROW \?CCL13 CALL2 RT-META-LOC,GL-WINNER MOVE GL-PRSO,STACK RTRUE ?CCL13: LOC GL-WINNER MOVE GL-PRSO,STACK RTRUE .FUNCT RT-PRINT-CONTENTS-1,THING,OBJ,CNT,TMP ICALL RT-MOVE-NODESC-OBJS,THING,TH-Y-OBJECT FIRST? THING >OBJ /?PRG2 ?PRG2: ZERO? OBJ /?REP3 FSET OBJ,FL-SEEN PRINTI " " ICALL2 RT-A-PRINT,OBJ FSET? OBJ,FL-LIGHTED \?CND6 PRINTI " (providing light)" ?CND6: PRINTC 46 CRLF INC 'CNT NEXT? OBJ >OBJ /?PRG2 JUMP ?PRG2 ?REP3: ZERO? CNT \?CND9 PRINTI " nothing." CRLF ?CND9: ICALL RT-MOVE-ALL,TH-Y-OBJECT,THING FIRST? THING >OBJ /?PRG12 ?PRG12: ZERO? OBJ /TRUE CALL2 RT-SEE-INSIDE?,OBJ ZERO? STACK /?CND17 ICALL2 RT-PRINT-CONTENTS-3,OBJ ?CND17: NEXT? OBJ >OBJ /?PRG12 JUMP ?PRG12 .FUNCT RT-PRINT-CONTENTS-2,THING,OBJ,CNT ICALL RT-MOVE-NODESC-OBJS,THING,TH-Y-OBJECT FIRST? THING >OBJ /?PRG2 ?PRG2: ZERO? OBJ /?REP3 FSET OBJ,FL-SEEN ICALL2 RT-A-PRINT,OBJ FSET? OBJ,FL-LIGHTED \?CND6 PRINTI " (providing light)" ?CND6: INC 'CNT NEXT? OBJ >OBJ /?BOGUS8 ?BOGUS8: ZERO? OBJ /?PRG2 NEXT? OBJ /?CCL13 PRINTI " and " JUMP ?PRG2 ?CCL13: PRINTI ", " JUMP ?PRG2 ?REP3: ZERO? CNT \?CND14 PRINTI "nothing" ?CND14: ICALL RT-MOVE-ALL,TH-Y-OBJECT,THING RTRUE .FUNCT RT-PRINT-CONTENTS-3,THING,OBJ,FIRST,CNT SET 'FIRST,TRUE-VALUE FIRST? THING >OBJ /?PRG2 ?PRG2: ZERO? OBJ /?REP3 FSET? OBJ,FL-NODESC /?CND4 ZERO? FIRST /?CND8 SET 'FIRST,FALSE-VALUE LOC OBJ ICALL2 RT-CIN-CON-MSG,STACK LOC OBJ ICALL2 RT-THEO-PRINT,STACK PRINTI " you see:" CRLF ?CND8: PRINTI " " ICALL2 RT-A-PRINT,OBJ CRLF ?CND4: NEXT? OBJ >OBJ /?PRG2 JUMP ?PRG2 ?REP3: FIRST? THING >OBJ /?PRG12 ?PRG12: ZERO? OBJ /TRUE CALL2 RT-SEE-INSIDE?,OBJ ZERO? STACK /?CND17 ICALL2 RT-PRINT-CONTENTS-3,OBJ ?CND17: NEXT? OBJ >OBJ /?PRG12 JUMP ?PRG12 .FUNCT RT-DO-WALK,DIR1,DIR2,DIR3,X SET 'GL-P-WALK-DIR,DIR1 CALL RT-PERFORM,V?WALK,DIR1 >X ZERO? DIR2 /?CND1 EQUAL? X,FALSE-VALUE,FATAL-VALUE /?CND1 SET 'GL-P-WALK-DIR,DIR2 CALL RT-PERFORM,V?WALK,DIR2 >X ZERO? DIR3 /?CND1 EQUAL? X,FALSE-VALUE,FATAL-VALUE /?CND1 SET 'GL-P-WALK-DIR,DIR3 CALL RT-PERFORM,V?WALK,DIR3 >X ?CND1: RETURN X .FUNCT RT-WHO-SAYS? CALL2 RT-META-LOC,CH-HOLMES EQUAL? GL-PLACE-CUR,STACK \?CCL3 FSET? CH-HOLMES,FL-ASLEEP /?CCL3 FSET? CH-HOLMES,FL-LOCKED /?CCL3 RETURN CH-HOLMES ?CCL3: CALL2 RT-META-LOC,CH-WIGGINS EQUAL? GL-PLACE-CUR,STACK \FALSE FSET? CH-WIGGINS,FL-ASLEEP /FALSE FSET? CH-WIGGINS,FL-LOCKED /FALSE RETURN CH-WIGGINS .FUNCT RT-TRANSCRIPT,STR DIROUT K-D-SCR-OFF CRLF PRINTI "Transcript: " PRINT STR CRLF ICALL1 RT-VERSION-MSG DIROUT K-D-SCR-ON RTRUE .FUNCT RT-QSR,KEY ICALL1 KILL-SOUNDS PRINTI "The game is no longer afoot." CRLF CRLF ?PRG1: PRINTI "Do you wish to: (1) Quit, (2) Restart, (3) Restore, (4) Hints" ZERO? GL-CAN-UNDO /?CND3 PRINTI ", (5) Undo" ?CND3: PRINTI " ?" CRLF INPUT 1 >KEY EQUAL? KEY,49 \?CCL7 QUIT PRINTI "Quit failed." CRLF JUMP ?PRG1 ?CCL7: EQUAL? KEY,50 \?CCL9 RESTART PRINTI "Restart failed." CRLF JUMP ?PRG1 ?CCL9: EQUAL? KEY,51 \?CCL11 ZERO? GL-DEBUG-FLAG /?CND12 ICALL1 V-REFRESH ?CND12: ICALL1 RT-P-CLEAR PUTB GL-OOPS-INBUF,1,0 RESTORE PRINTI "Restore failed." CRLF JUMP ?PRG1 ?CCL11: EQUAL? KEY,52 \?CCL15 ICALL1 V-HINT ICALL1 V-REFRESH JUMP ?PRG1 ?CCL15: EQUAL? KEY,53 \?PRG1 ZERO? GL-CAN-UNDO /?PRG1 ICALL1 V-UNDO JUMP ?PRG1 .FUNCT V-YES PRINT K-GOOD-SHOW-MSG CRLF RETURN 2 .FUNCT V-NO PRINT K-PITY-MSG CRLF RETURN 2 .FUNCT V-MAYBE PRINT K-MAYBE-MSG CRLF RETURN 2 .FUNCT V-DESC-LEVEL PRINTC 91 EQUAL? GL-P-PRSA-WORD,W?VERBOSE \?CCL3 SET 'GL-DESC-LEVEL,2 PRINTI "Verbose" JUMP ?CND1 ?CCL3: EQUAL? GL-P-PRSA-WORD,W?BRIEF \?CCL5 SET 'GL-DESC-LEVEL,1 PRINTI "Brief" JUMP ?CND1 ?CCL5: EQUAL? GL-P-PRSA-WORD,W?SUPER,W?SUPERBRIEF \?CND1 SET 'GL-DESC-LEVEL,0 PRINTI "Superbrief" ?CND1: PRINTI " descriptions]" CRLF RETURN 2 .FUNCT V-QUIT PRINTI "[Your score is " PRINTN GL-SCORE-CUR PRINTI " out of " PRINTN GL-SCORE-MAX PRINTI ", which earns you a ranking of " CALL2 RT-RANK-STR,GL-SCORE-CUR PRINT STACK PRINTI ".]" CRLF CRLF PRINTI "Are you sure you want to quit?" CALL1 RT-GET-YES-NO? ZERO? STACK /?CCL3 QUIT RTRUE ?CCL3: CRLF PRINTI "Continuing." CRLF RETURN 2 .FUNCT V-RESTART PRINTI "Are you sure you want to restart?" CALL1 RT-GET-YES-NO? ZERO? STACK /?CCL3 ICALL1 KILL-SOUNDS RESTART RTRUE ?CCL3: CRLF PRINTI "Continuing." CRLF RETURN 2 .FUNCT V-SAVE,X,WHO CALL1 RT-WHO-SAYS? >WHO EQUAL? WHO,CH-HOLMES \?CCL3 ICALL2 RT-CTHEO-PRINT,CH-HOLMES PRINTI " nods in approval and says, ""A wise move, Watson. These are dangerous times.""" CRLF CRLF JUMP ?CND1 ?CCL3: EQUAL? WHO,CH-WIGGINS \?CND1 ICALL2 RT-CTHEO-PRINT,CH-WIGGINS PRINTI " glances around in alarm and says, ""Do you know somefing I don't know?""" CRLF CRLF ?CND1: ZERO? GL-DEBUG-FLAG /?CND5 ICALL1 V-REFRESH ?CND5: SET 'GL-SCORE-STS,-1 SET 'GL-MOVES-STS,-1 SET 'GL-PLACE-STS,-1 ICALL1 RT-P-CLEAR PUTB GL-OOPS-INBUF,1,0 SET 'SOUND-QUEUED?,FALSE-VALUE ICALL1 KILL-SOUNDS SAVE >X ZERO? SOUND-ON? /?CND7 ICALL1 CHECK-LOOPING ?CND7: ICALL1 RT-UPDATE-STATUS-LINE ZERO? X \?CCL11 PRINTI "Save failed." CRLF RETURN 2 ?CCL11: EQUAL? X,1 \?CCL13 PRINTI "Save completed." CRLF RETURN 2 ?CCL13: PRINTI "Restore completed." CRLF CRLF CALL1 RT-WHO-SAYS? >WHO EQUAL? WHO,CH-HOLMES \?CCL16 ICALL2 RT-CTHEO-PRINT,CH-HOLMES PRINTI " looks up and says impatiently, ""Where have you been, Watson? We have work to do.""" CRLF CRLF JUMP ?CND14 ?CCL16: EQUAL? WHO,CH-WIGGINS \?CND14 ICALL2 RT-CTHEO-PRINT,CH-WIGGINS PRINTI " jumps nervously and then says, ""Crikey! You scared me. Don't sneak up on people that way.""" CRLF CRLF ?CND14: ICALL RT-DESC-ALL,FALSE-VALUE,TRUE-VALUE RETURN 2 .FUNCT V-RESTORE SET 'SOUND-QUEUED?,FALSE-VALUE ICALL1 KILL-SOUNDS ZERO? GL-DEBUG-FLAG /?CND1 ICALL1 V-REFRESH ?CND1: ICALL1 RT-P-CLEAR PUTB GL-OOPS-INBUF,1,0 RESTORE GET 0,8 BTST STACK,4 \?CND3 ICALL2 RT-INIT-SCREEN,TRUE-VALUE ICALL1 RT-UPDATE-STATUS-LINE GET 0,8 BAND STACK,-5 PUT 0,8,STACK ?CND3: PRINTI "Restore failed." CRLF ZERO? SOUND-ON? \?CCL6 RETURN 2 ?CCL6: ICALL1 CHECK-LOOPING RETURN 2 .FUNCT V-SCRIPT PRINTI "[Scripting " EQUAL? GL-P-PRSA-WORD,W?SCRIPT \?CCL3 PRINTI "on" JUMP ?CND1 ?CCL3: PRINTI "off" ?CND1: PRINTC 93 CRLF EQUAL? GL-P-PRSA-WORD,W?SCRIPT \?CCL6 DIROUT K-D-PRN-ON ICALL2 RT-TRANSCRIPT,STR?709 RETURN 2 ?CCL6: ICALL2 RT-TRANSCRIPT,STR?710 DIROUT K-D-PRN-OFF RETURN 2 .FUNCT V-VERSION ICALL1 RT-VERSION-MSG RETURN 2 .FUNCT V-INVENTORY,POCKET,PLOC,OBJ,NXT,OLDIT SET 'OLDIT,GL-P-IT-OBJECT LOC TH-POCKET >PLOC FIRST? TH-POCKET >POCKET /?BOGUS1 ?BOGUS1: REMOVE TH-POCKET FIRST? CH-PLAYER >OBJ /?PRG3 ?PRG3: ZERO? OBJ /?REP4 NEXT? OBJ >NXT /?BOGUS8 ?BOGUS8: FSET? OBJ,FL-WORN \?CND9 EQUAL? OBJ,TH-COTTON-BALLS,TH-STETHOSCOPE /?CND9 MOVE OBJ,TH-X-OBJECT ?CND9: SET 'OBJ,NXT JUMP ?PRG3 ?REP4: FIRST? TH-X-OBJECT \?CND13 PRINTI "You are wearing:" CRLF ICALL2 RT-PRINT-CONTENTS-1,TH-X-OBJECT ?CND13: FSET? TH-COTTON-BALLS,FL-WORN /?CCL16 FSET? TH-STETHOSCOPE,FL-WORN \?CND15 ?CCL16: PRINTI "You have in your ears:" CRLF PRINTI " " FSET? TH-COTTON-BALLS,FL-WORN \?CCL21 MOVE TH-COTTON-BALLS,TH-X-OBJECT ICALL2 RT-A-PRINT,TH-COTTON-BALLS PRINTC 46 CRLF JUMP ?CND15 ?CCL21: MOVE TH-STETHOSCOPE,TH-X-OBJECT ICALL2 RT-A-PRINT,TH-STETHOSCOPE PRINTC 46 CRLF ?CND15: FSET? TH-WATSONS-COAT,FL-WORN \?CND22 FIRST? TH-POCKET \?CND22 PRINTI "Your pocket contains:" CRLF ICALL2 RT-PRINT-CONTENTS-1,TH-POCKET ?CND22: PRINTI "You are holding:" CRLF ICALL2 RT-PRINT-CONTENTS-1,CH-PLAYER ICALL RT-MOVE-ALL,TH-X-OBJECT,CH-PLAYER MOVE TH-POCKET,PLOC SET 'GL-P-IT-OBJECT,OLDIT RETURN 2 .FUNCT V-NOTIFY ZERO? GL-SCORE-MSG /?PRT1 SET 'GL-SCORE-MSG,0 JUMP ?PRE3 ?PRT1: SET 'GL-SCORE-MSG,1 ?PRE3: PRINTI "[Score Notification " ZERO? GL-SCORE-MSG /?CCL6 PRINTI "Enabled" JUMP ?CND4 ?CCL6: PRINTI "Disabled" ?CND4: PRINTC 93 CRLF RETURN 2 .FUNCT V-SCORE PRINTI "[You have " PRINTN GL-SCORE-CUR PRINTI " out of " PRINTN GL-SCORE-MAX PRINTI " points, which earns you a ranking of " CALL2 RT-RANK-STR,GL-SCORE-CUR PRINT STACK PRINTI ".]" CRLF RETURN 2 .FUNCT V-UNDO SET 'SOUND-QUEUED?,FALSE-VALUE ICALL1 KILL-SOUNDS SET 'GL-PLACE-STS,0 IRESTORE ZERO? STACK \?CCL3 PRINTI "[UNDO failed.]" CRLF JUMP ?CND1 ?CCL3: PRINTI "[UNDO is not available.]" CRLF ?CND1: ZERO? SOUND-ON? /FALSE CALL1 CHECK-LOOPING RSTACK .ENDI