.FUNCT NOT-HERE-OBJECT-F,TBL,PRSO?=1,OBJ EQUAL? PRSO,NOT-HERE-OBJECT \?CCL3 EQUAL? PRSI,NOT-HERE-OBJECT \?CCL3 PRINTR "Those things aren't here!" ?CCL3: EQUAL? PRSO,NOT-HERE-OBJECT \?CCL9 SET 'TBL,P-PRSO JUMP ?CND1 ?CCL9: SET 'TBL,P-PRSI SET 'PRSO?,FALSE-VALUE ?CND1: SET 'P-CONT,FALSE-VALUE SET 'QUOTE-FLAG,FALSE-VALUE EQUAL? WINNER,ADVENTURER \?PRG17 PRINTI "You can't see any " CALL NOT-HERE-PRINT,PRSO? PRINTR " here!" ?PRG17: PRINTI "The " PRINTD WINNER PRINTI " seems confused. ""I don't see any " CALL NOT-HERE-PRINT,PRSO? PRINTR " here!""" .FUNCT NOT-HERE-PRINT,PRSO?,?TMP1 ZERO? P-OFLAG /?CCL3 ZERO? P-XADJ /?CND4 PRINTB P-XADJN ?CND4: ZERO? P-XNAM /FALSE PRINTB P-XNAM RTRUE ?CCL3: ZERO? PRSO? /?CCL10 GET P-ITBL,P-NC1 >?TMP1 GET P-ITBL,P-NC1L CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE RSTACK ?CCL10: GET P-ITBL,P-NC2 >?TMP1 GET P-ITBL,P-NC2L CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE RSTACK .FUNCT GROUND-F EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE EQUAL? PRSI,GROUND \FALSE CALL PERFORM,V?DROP,PRSO RTRUE .FUNCT WATER-F,AV,W,PI? EQUAL? PRSA,V?SGIVE /FALSE EQUAL? PRSA,V?ENTER \?CCL5 CALL PERFORM,V?SWIM,PRSO RTRUE ?CCL5: EQUAL? PRSA,V?FILL \?CCL7 SET 'W,PRSI SET 'PRSA,V?PUT SET 'PRSI,PRSO SET 'PRSO,W SET 'PI?,FALSE-VALUE JUMP ?CND1 ?CCL7: EQUAL? PRSO,GLOBAL-WATER,WATER \?CCL9 SET 'W,PRSO SET 'PI?,FALSE-VALUE JUMP ?CND1 ?CCL9: ZERO? PRSI /?CND1 SET 'W,PRSI SET 'PI?,TRUE-VALUE ?CND1: EQUAL? W,GLOBAL-WATER \?CND11 SET 'W,WATER EQUAL? PRSA,V?PUT,V?TAKE \?CND11 REMOVE W ?CND11: ZERO? PI? /?CCL17 SET 'PRSI,W JUMP ?CND15 ?CCL17: SET 'PRSO,W ?CND15: LOC WINNER >AV FSET? AV,VEHBIT /?CND18 SET 'AV,FALSE-VALUE ?CND18: EQUAL? PRSA,V?PUT,V?TAKE \?CCL22 ZERO? PI? \?CCL22 ZERO? AV /?CCL27 EQUAL? AV,PRSI \?CCL27 CALL PUDDLE,AV RSTACK ?CCL27: ZERO? AV /?CCL31 ZERO? PRSI \?CCL31 IN? W,AV /?CCL31 CALL PUDDLE,AV RSTACK ?CCL31: ZERO? PRSI /?CCL36 EQUAL? PRSI,TEAPOT /?CCL36 PRINTI "The water leaks out of the " PRINTD PRSI PRINTI " and evaporates immediately." CRLF REMOVE W RTRUE ?CCL36: IN? TEAPOT,WINNER \?CCL42 FIRST? TEAPOT /?PRG48 MOVE WATER,TEAPOT PRINTR "The teapot is now full of water." ?PRG48: PRINTR "The teapot isn't currently empty." ?CCL42: IN? PRSO,TEAPOT \?PRG55 EQUAL? PRSA,V?TAKE \?PRG55 ZERO? PRSI \?PRG55 SET 'PRSO,TEAPOT CALL ITAKE SET 'PRSO,W RETURN PRSO ?PRG55: PRINTR "The water slips through your fingers." ?CCL22: ZERO? PI? /?CCL58 PRINTR "Nice try." ?CCL58: EQUAL? PRSA,V?GIVE,V?DROP \?CCL62 EQUAL? PRSO,WATER \?CND63 CALL HELD?,WATER ZERO? STACK \?CND63 PRINTR "You don't have any water." ?CND63: REMOVE WATER ZERO? AV /?PRG72 CALL PUDDLE,AV RSTACK ?PRG72: PRINTI "The water spills to the floor and evaporates." CRLF REMOVE WATER RTRUE ?CCL62: EQUAL? PRSA,V?THROW \FALSE PRINTI "The water splashes on the walls and evaporates." CRLF REMOVE WATER RTRUE .FUNCT PUDDLE,AV PRINTI "There is now a puddle in the bottom of the " PRINTD AV PRINT PERIOD-CR MOVE PRSO,AV RTRUE .FUNCT GRUE-F EQUAL? PRSA,V?EXAMINE \?CCL3 PRINTR "The grue is a sinister, lurking presence in the dark places of the earth. Its favorite diet is adventurers, but its insatiable appetite is tempered by its fear of light." ?CCL3: EQUAL? PRSA,V?FIND \FALSE PRINTR "There's probably one lurking in the darkness nearby. Don't let your light go out!" .FUNCT ME-F EQUAL? PRSA,V?TELL \?CCL3 SET 'P-CONT,FALSE-VALUE SET 'QUOTE-FLAG,FALSE-VALUE PRINTR "Talking to yourself is a sign of impending mental collapse." ?CCL3: EQUAL? PRSA,V?GIVE \?CCL7 EQUAL? PRSI,ME \?CCL7 CALL PERFORM,V?TAKE,PRSO RTRUE ?CCL7: EQUAL? PRSA,V?EAT \?CCL11 PRINTR "Auto-cannibalism is not the answer." ?CCL11: EQUAL? PRSA,V?MUNG,V?ATTACK \?CCL15 CALL JIGS-UP,STR?22 RSTACK ?CCL15: EQUAL? PRSA,V?TAKE \?CCL17 PRINTR "How romantic!" ?CCL17: EQUAL? PRSA,V?EXAMINE \FALSE PRINTR "Difficult, unless your eyes are prehensile." .FUNCT PATH-OBJECT-F EQUAL? PRSA,V?FOLLOW,V?TAKE \FALSE CALL V-WALK-AROUND RSTACK .FUNCT ZORKMID-F EQUAL? PRSA,V?EXAMINE \FALSE PRINTI "The zorkmid is the unit of currency of" PRINT GUE-NAME PRINT PERIOD-CR RTRUE .FUNCT STREAM-F EQUAL? PRSA,V?ENTER \FALSE CALL V-SWIM RSTACK .FUNCT CHASM-F EQUAL? PRSA,V?LEAP /?CTR2 EQUAL? PRSA,V?PUT \?CCL3 EQUAL? PRSO,ME \?CCL3 ?CTR2: CALL JIGS-UP,STR?7 RSTACK ?CCL3: EQUAL? PRSA,V?PUT \FALSE EQUAL? PRSI,PSEUDO-OBJECT \FALSE REMOVE PRSO PRINTI "The " PRINTD PRSO PRINTR " disappears into the chasm." .FUNCT BRIDGE-F EQUAL? PRSA,V?LEAP \FALSE CALL JIGS-UP,STR?7 RSTACK .FUNCT OPEN-CLOSE EQUAL? PRSA,V?OPEN \?CCL3 FSET? PRSO,OPENBIT \?CCL6 PRINT LOOK-AROUND RTRUE ?CCL6: FSET PRSO,OPENBIT PRINTI "The " PRINTD PRSO PRINTR " is now open." ?CCL3: FSET? PRSO,OPENBIT \?PRG15 FCLEAR PRSO,OPENBIT PRINTI "The " PRINTD PRSO PRINTR " is now closed." ?PRG15: PRINT LOOK-AROUND RTRUE .FUNCT HELLO?,WHO EQUAL? WINNER,WHO /?CCL3 EQUAL? PRSA,V?HELLO,V?SAY,V?TELL /?CCL3 EQUAL? PRSA,V?INCANT \FALSE ?CCL3: EQUAL? PRSA,V?INCANT,V?SAY,V?TELL \TRUE SET 'P-CONT,FALSE-VALUE SET 'QUOTE-FLAG,FALSE-VALUE RTRUE .FUNCT FIND-TARGET,TARGET,P,TX,L,ROOM IN? TARGET,HERE \?CCL3 RETURN HERE ?CCL3: SET 'P,0 ?PRG4: NEXTP HERE,P >P ZERO? P /FALSE LESS? P,LOW-DIRECTION /?PRG4 GETPT HERE,P >TX PTSIZE TX >L EQUAL? L,UEXIT,CEXIT,DEXIT \?PRG4 GETB TX,0 >ROOM IN? TARGET,ROOM \?PRG4 RETURN ROOM .FUNCT NOW-DARK? CALL LIT?,HERE >LIT ZERO? LIT \TRUE PRINTR "It is now pitch black." .FUNCT DO-WALK,DIR SET 'P-WALK-DIR,DIR CALL PERFORM,V?WALK,DIR RSTACK .FUNCT GLOBAL-IN?,OBJ1,OBJ2,TX GETPT OBJ2,P?GLOBAL >TX ZERO? TX /FALSE PTSIZE TX SUB STACK,1 CALL ZMEMQB,OBJ1,TX,STACK RSTACK .FUNCT FIND-IN,WHERE,WHAT,W FIRST? WHERE >W /?BOGUS1 ?BOGUS1: ZERO? W /FALSE ?PRG4: FSET? W,WHAT \?CCL8 EQUAL? W,ADVENTURER /?CCL8 RETURN W ?CCL8: NEXT? W >W /?PRG4 RFALSE .FUNCT HELD?,CAN ?PRG1: LOC CAN >CAN ZERO? CAN /FALSE EQUAL? CAN,WINNER \?PRG1 RTRUE .FUNCT OTHER-SIDE,DOBJ,P=0,TX ?PRG1: NEXTP HERE,P >P LESS? P,LOW-DIRECTION /FALSE GETPT HERE,P >TX PTSIZE TX EQUAL? STACK,DEXIT \?PRG1 GETB TX,DEXITOBJ EQUAL? STACK,DOBJ \?PRG1 RETURN P .FUNCT HACK-HACK,STR PRINT STR PRINTD PRSO CALL PICK-ONE,HO-HUM PRINT STACK CRLF RTRUE .ENDI