.FUNCT RIDDLE-ROOM-F,RARG EQUAL? RARG,M-LOOK \?CCL3 PRINTI "This bare room has an exit in the northwest corner. To the east is a great " FSET? RIDDLE-DOOR,OPENBIT \?PRG11 PRINTI "open" JUMP ?PRG13 ?PRG11: PRINTI "closed" ?PRG13: PRINTI " door of stone. Above it is written: ""No one shall pass without solving this riddle:" CRLF CRLF PRINT RIDDLE-TEXT RTRUE ?CCL3: EQUAL? RARG,M-BEG \FALSE EQUAL? PRSA,V?SAY \FALSE FSET? RIDDLE-DOOR,OPENBIT /FALSE GET P-LEXV,P-CONT EQUAL? STACK,W?WELL /?CTR23 ADD P-CONT,2 GET P-LEXV,STACK EQUAL? STACK,W?WELL \?PRG29 ?CTR23: ADD SCORE,5 >SCORE FSET RIDDLE-DOOR,OPENBIT PRINTI "With a deafening clap of thunder, the door opens." CRLF JUMP ?CND20 ?PRG29: PRINTI "A hollow laugh comes from the door." CRLF ?CND20: SET 'P-CONT,FALSE-VALUE SET 'QUOTE-FLAG,FALSE-VALUE RTRUE .FUNCT RIDDLE-PSEUDO EQUAL? PRSA,V?READ,V?EXAMINE \FALSE PRINT RIDDLE-TEXT RTRUE .FUNCT RIDDLE-DOOR-F EQUAL? PRSA,V?OPEN \?PRD5 FSET? RIDDLE-DOOR,OPENBIT \?PRG10 ?PRD5: EQUAL? PRSA,V?CLOSE \FALSE FSET? RIDDLE-DOOR,OPENBIT \FALSE ?PRG10: PRINTR "It won't budge." .FUNCT BUCKET-CONT EQUAL? PRSA,V?TAKE \FALSE IN? WINNER,BUCKET /FALSE PRINTR "You must get in the bucket to reach it." .FUNCT BUCKET-F,RARG=M-BEG EQUAL? RARG,M-BEG \?CCL3 EQUAL? PRSA,V?BURN \?CCL6 EQUAL? PRSO,BUCKET \?CCL6 PRINTR "The bucket appears to be fireproof." ?CCL6: EQUAL? PRSA,V?PUT,V?DROP \?CCL12 EQUAL? PRSO,WATER \?CCL12 EQUAL? PRSI,BUCKET \?CCL12 IN? BUCKET,CIRCULAR-ROOM \?CCL12 IN? WINNER,BUCKET /?CCL12 MOVE BUCKET,TOP-OF-WELL MOVE WATER,BUCKET SET 'BUCKET-TOP-FLAG,TRUE-VALUE CALL QUEUE,I-BUCKET,100 PUT STACK,0,1 PRINTR "The bucket swiftly rises up, and is gone." ?CCL12: EQUAL? PRSA,V?KICK \FALSE CALL JIGS-UP,STR?172 RSTACK ?CCL3: EQUAL? RARG,M-END \?CCL23 IN? WATER,BUCKET \?CCL26 ZERO? BUCKET-TOP-FLAG \?CCL26 SET 'BUCKET-TOP-FLAG,TRUE-VALUE SET 'EVAPORATED,FALSE-VALUE CALL PASS-THE-BUCKET,TOP-OF-WELL CALL QUEUE,I-BUCKET,100 PUT STACK,0,1 PRINTI "The bucket rises and" PRINT STOPS RTRUE ?CCL26: ZERO? BUCKET-TOP-FLAG /FALSE IN? WATER,BUCKET /FALSE ZERO? EVAPORATED /?PRG40 PRINTI "The last of the water evaporates, and the bucket descends." CRLF CRLF JUMP ?CND35 ?PRG40: PRINTI "The bucket descends and" PRINT STOPS ?CND35: SET 'BUCKET-TOP-FLAG,FALSE-VALUE CALL PASS-THE-BUCKET,CIRCULAR-ROOM RSTACK ?CCL23: EQUAL? PRSA,V?CLIMB-ON \FALSE CALL PERFORM,V?ENTER,PRSO RTRUE .FUNCT PASS-THE-BUCKET,R MOVE BUCKET,R IN? WINNER,BUCKET \FALSE CALL GOTO,R RSTACK .FUNCT I-BUCKET IN? WATER,BUCKET \FALSE SET 'EVAPORATED,TRUE-VALUE REMOVE WATER RFALSE .FUNCT WELL-F EQUAL? PRSA,V?DROP,V?PUT,V?THROW \?CCL3 FSET? PRSO,TAKEBIT \?CCL3 MOVE PRSO,CIRCULAR-ROOM PRINTI "The " PRINTD PRSO PRINTR " is now at the bottom of the well." ?CCL3: EQUAL? PRSA,V?CLIMB-DOWN,V?CLIMB \FALSE PRINTR "You can't climb the well." .FUNCT CRACK-PSEUDO EQUAL? PRSA,V?EXAMINE \FALSE PRINTR "It's a small, uninteresting crack." .FUNCT ROBOT-F,RARG=M-OBJECT EQUAL? WINNER,ROBOT \?CCL3 EQUAL? PRSA,V?SGIVE /FALSE EQUAL? PRSA,V?FOLLOW \?CCL8 PRINTR """I'm too primitive. I can walk in any direction you order, though.""" ?CCL8: EQUAL? PRSA,V?MOVE,V?TAKE,V?RAISE \?CCL12 EQUAL? PRSO,CAGE-OBJECT \?CCL12 PRINTI "The robots pulverizes the cage to dust." CRLF CRLF CALL INT,I-CAGE-DEATH PUT STACK,0,0 SET 'WINNER,ADVENTURER FCLEAR ROBOT,NDESCBIT FSET PALANTIR-1,TAKEBIT MOVE ROBOT,DINGY-CLOSET SET 'CAGE-SOLVE-FLAG,TRUE-VALUE CALL GOTO,DINGY-CLOSET RSTACK ?CCL12: EQUAL? PRSA,V?THROW,V?PUT,V?DROP \?CCL18 CALL ACCESSIBLE?,ROBOT ZERO? STACK /FALSE PRINT B-W-C IN? PRSO,ROBOT \?PRG29 PRINTC 34 CRLF RFALSE ?PRG29: PRINTR " I don't have that!""" ?CCL18: EQUAL? PRSA,V?WALK /?CTR31 EQUAL? PRSA,V?PUSH,V?TAKE \?CCL32 FSET? PRSO,ACTORBIT /?CCL32 ?CTR31: CALL ACCESSIBLE?,ROBOT ZERO? STACK /FALSE PRINT B-W-C PRINTC 34 CRLF RFALSE ?CCL32: CALL ACCESSIBLE?,ROBOT ZERO? STACK /TRUE PRINTR """My programming is insufficient for that task.""" ?CCL3: EQUAL? PRSA,V?CLOSE,V?LOOK-INSIDE,V?OPEN \?CCL47 PRINTR "The robot has no access panel." ?CCL47: EQUAL? PRSA,V?GIVE \?CCL51 EQUAL? PRSI,ROBOT \?CCL51 MOVE PRSO,ROBOT PRINTI "The robot accepts the " PRINTD PRSO PRINT PERIOD-CR RTRUE ?CCL51: EQUAL? PRSA,V?MUNG,V?THROW \FALSE PRINTI "The robot (being of shoddy construction) disintegrates before your eyes." CRLF EQUAL? PRSA,V?THROW \?CCL62 PUSH PRSI JUMP ?CND60 ?CCL62: PUSH PRSO ?CND60: REMOVE STACK RTRUE .FUNCT TRIANGULAR-BUTTON-F EQUAL? PRSA,V?PUSH \FALSE EQUAL? WINNER,ADVENTURER \?CCL6 CALL JIGS-UP,STR?178 RSTACK ?CCL6: ZERO? CAROUSEL-ON /?PRT7 SET 'CAROUSEL-ON,0 JUMP ?PRE9 ?PRT7: SET 'CAROUSEL-ON,1 ?PRE9: FSET? VIOLIN,INVISIBLE \?PRG15 FCLEAR VIOLIN,INVISIBLE FCLEAR CAROUSEL-ROOM,TOUCHBIT PRINTR "You hear a distant thump." ?PRG15: PRINTR "Click." .FUNCT CAGE-F,RARG ZERO? CAGE-SOLVE-FLAG /FALSE SET 'HERE,DINGY-CLOSET RETURN HERE .FUNCT I-CAGE-DEATH EQUAL? HERE,DINGY-CLOSET,CAGE \FALSE FSET PALANTIR-1,INVISIBLE CALL JIGS-UP,STR?181 RSTACK .FUNCT ALICE-HOLE EQUAL? PRSA,V?EXAMINE,V?ENTER \?CCL3 CALL DO-WALK,P?EAST RSTACK ?CCL3: EQUAL? PRSA,V?LOOK-INSIDE \?CCL5 PRINT ONLY-DARKNESS RTRUE ?CCL5: EQUAL? PRSA,V?PUT \FALSE EQUAL? PRSI,PSEUDO-OBJECT \FALSE PRINTR "It doesn't fit." .FUNCT GREEN-CAKE-F,F,N EQUAL? PRSA,V?EAT \?CCL3 EQUAL? PRSO,GREEN-CAKE \?CCL3 EQUAL? HERE,TEA-ROOM \?CCL3 REMOVE GREEN-CAKE FSET ALICE-TABLE,INVISIBLE FSET ROBOT,INVISIBLE FIRST? HERE >F /?PRG8 ?PRG8: ZERO? F /?PRG17 NEXT? F >N /?BOGUS12 ?BOGUS12: EQUAL? F,ADVENTURER /?CND13 FSET? F,TAKEBIT \?CND13 FSET F,NONLANDBIT FSET F,TRYTAKEBIT MOVE F,POSTS-ROOM ?CND13: SET 'F,N JUMP ?PRG8 ?PRG17: PRINTI "Suddenly, the room becomes huge (although your possessions retain their normal size)." CRLF CRLF CALL GOTO,POSTS-ROOM RSTACK ?CCL3: CALL CAKE-CRUMBLE RSTACK .FUNCT CAKE-F,F,N EQUAL? PRSA,V?READ \?CCL3 FSET? PRSO,NONLANDBIT \?PRG9 PRINTR "The cake is now too tall to read." ?PRG9: PRINTI "The letters are tiny; all you can make out is ""E" EQUAL? PRSO,RED-CAKE \?CCL13 PRINTI "VA" JUMP ?PRG22 ?CCL13: EQUAL? PRSO,ORANGE-CAKE \?PRG20 PRINTI "XP" JUMP ?PRG22 ?PRG20: PRINTI "NL" ?PRG22: PRINTR """." ?CCL3: EQUAL? PRSA,V?EAT \?CCL25 EQUAL? HERE,TEA-ROOM,POSTS-ROOM,POOL-ROOM \?CCL25 EQUAL? PRSO,ORANGE-CAKE \?CCL30 REMOVE PRSO CALL JIGS-UP,STR?186 RSTACK ?CCL30: EQUAL? PRSO,RED-CAKE \?CCL32 REMOVE PRSO CALL JIGS-UP,STR?187 RSTACK ?CCL32: EQUAL? PRSO,BLUE-CAKE \FALSE REMOVE PRSO PRINTI "The room shrinks." CRLF CRLF EQUAL? HERE,POSTS-ROOM \?CCL39 FCLEAR ROBOT,INVISIBLE FCLEAR ALICE-TABLE,INVISIBLE FSET POSTS,INVISIBLE FIRST? HERE >F /?PRG41 ?PRG41: ZERO? F /?REP42 NEXT? F >N /?BOGUS45 ?BOGUS45: EQUAL? F,ADVENTURER /?CND46 FSET? F,TAKEBIT \?CND46 FCLEAR F,NONLANDBIT FCLEAR F,TRYTAKEBIT MOVE F,TEA-ROOM ?CND46: SET 'F,N JUMP ?PRG41 ?REP42: CALL GOTO,TEA-ROOM RSTACK ?CCL39: CALL JIGS-UP,STR?188 RSTACK ?CCL25: EQUAL? PRSA,V?PUT,V?THROW \?CCL51 EQUAL? PRSO,ORANGE-CAKE \?CCL51 EQUAL? HERE,TEA-ROOM,POSTS-ROOM,POOL-ROOM \?CCL51 REMOVE PRSO CALL JIGS-UP,STR?186 RSTACK ?CCL51: EQUAL? PRSA,V?PUT,V?THROW \?CCL56 EQUAL? PRSI,POOL \?CCL56 EQUAL? PRSO,BLUE-CAKE,ORANGE-CAKE \?CND59 PRINTI """Splash!""" CRLF REMOVE PRSO RTRUE ?CND59: MOVE PRSO,HERE REMOVE PRSI FCLEAR CANDY,INVISIBLE PRINTR "The pool evaporates, leaving a damp (but still valuable) package of rare candies." ?CCL56: CALL CAKE-CRUMBLE RSTACK .FUNCT CAKE-CRUMBLE,CAKE FSET? PRSO,FOODBIT \?CCL3 SET 'CAKE,PRSO JUMP ?CND1 ?CCL3: SET 'CAKE,PRSI ?CND1: EQUAL? HERE,TEA-ROOM,POSTS-ROOM,POOL-ROOM /FALSE EQUAL? HERE,MACHINE-ROOM,DINGY-CLOSET,TOP-OF-WELL /FALSE EQUAL? HERE,CAGE /FALSE REMOVE CAKE PRINTI "The " PRINTD CAKE PRINTR " crumbles to dust." .FUNCT POSTS-ROOM-F,RARG EQUAL? RARG,M-BEG \FALSE EQUAL? PRSA,V?TAKE \FALSE FSET? PRSO,NONLANDBIT \FALSE PRINTI "The " PRINTD PRSO PRINTR " is now huge. You have no hope of taking it." .FUNCT POOL-F EQUAL? PRSA,V?DRINK \?CCL3 CALL PERFORM,V?DRINK,WATER RTRUE ?CCL3: EQUAL? PRSA,V?LOOK-UNDER \?CCL5 PRINTR "You can't make out what's below the surface." ?CCL5: EQUAL? PRSA,V?ENTER \FALSE CALL V-SWIM RSTACK .FUNCT CANDY-F EQUAL? PRSA,V?READ,V?EXAMINE \?CCL3 PRINTR """Frobozz Magic Candy Company -- Special Assortment! Candied Grasshoppers, Chocolated Ants, and Worms Glacee!""" ?CCL3: EQUAL? PRSA,V?OPEN,V?EAT \FALSE PRINTR "It's too rich for your tastes." .ENDI