.FUNCT COAL-F EQUAL? PRSA,V?TAKE \FALSE PRINTR "Such menial tasks are best left to troglodytes." .FUNCT SOOTY-ROOM-F,RARG EQUAL? RARG,M-ENTER \FALSE FSET? SOOTY-ROOM,TOUCHBIT /FALSE ADD SCORE,20 >SCORE RETURN SCORE .FUNCT SOOTY-ROOM-EXIT-F FSET? COAL-BIN-ROOM,TOUCHBIT \?ELS5 PRINTI "That passage is now completely blocked by a cave-in." CRLF RFALSE ?ELS5: RETURN COAL-BIN-ROOM .FUNCT TIMBER-PSEUDO EQUAL? PRSA,V?MOVE \FALSE CALL JIGS-UP,STR?299 RSTACK .FUNCT COAL-BIN-ROOM-F,RARG EQUAL? RARG,M-ENTER \?ELS5 FSET? HERE,TOUCHBIT /?ELS10 RANDOM 873 >COMBO PUT VEZZAS,5,0 PRINTI "There is a rumbling noise behind you as the ceiling of the tunnel collapses, blocking your retreat! The air smells strongly of coal gas. " ZERO? VILSTUED /?ELS15 CALL QUEUE,I-OLDER-SELF,2 PUT STACK,0,1 PRINTI "Good thing you took that vilstu potion" JUMP ?CND13 ?ELS15: CALL QUEUE,I-SUFFOCATE,2 PUT STACK,0,1 PRINTI "You won't survive long in this atmosphere" ?CND13: PRINTI "." CRLF CRLF RTRUE ?ELS10: ZERO? GOLMACKED /FALSE CALL QUEUE,I-YOUNGER-SELF,-1 PUT STACK,0,1 MOVE YOUNGER-SELF,HERE ZERO? YOUNGER-HAS-SPELL-BOOK /?CND28 IN? SPELL-BOOK,LAGOON-FLOOR \?CND32 SET 'BOOK-BELONGS-IN-LAGOON,TRUE-VALUE ?CND32: MOVE SPELL-BOOK,YOUNGER-SELF FSET SPELL-BOOK,TRYTAKEBIT ?CND28: CALL LIT?,HERE >LIT RETURN LIT ?ELS5: EQUAL? RARG,M-END \FALSE RANDOM 100 LESS? 35,STACK /FALSE CRLF PRINTR "A few lumps of coal spill from the coal chute." .FUNCT I-SUFFOCATE CRLF ZERO? SUFFOCATE-WARNING /?ELS5 CALL JIGS-UP,STR?301 RSTACK ?ELS5: SET 'SUFFOCATE-WARNING,TRUE-VALUE CALL QUEUE,I-SUFFOCATE,2 PUT STACK,0,1 PRINTR "You are about to pass out from the bad air." .FUNCT COAL-BIN-F EQUAL? PRSA,V?LOOK-INSIDE \?ELS5 PRINTR "It's full of coal." ?ELS5: EQUAL? PRSA,V?DIG,V?SEARCH \FALSE PRINTR "You find nothing of interest." .FUNCT UPPER-CHUTE-F EQUAL? PRSA,V?LEAP,V?THROUGH \?ELS5 EQUAL? HERE,TOP-OF-CHUTE,SLANTED-ROOM \?ELS10 CALL DO-WALK,P?DOWN RSTACK ?ELS10: CALL LOOK-AROUND-YOU RSTACK ?ELS5: EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \?ELS14 EQUAL? HERE,TOP-OF-CHUTE \?ELS19 CALL BOTTOM-TOP-OF-CHUTE,TRUE-VALUE RSTACK ?ELS19: CALL DO-WALK,P?UP RSTACK ?ELS14: EQUAL? PRSA,V?CLIMB-DOWN \?ELS23 EQUAL? HERE,COAL-BIN-ROOM \?ELS28 CALL BOTTOM-TOP-OF-CHUTE RSTACK ?ELS28: CALL DO-WALK,P?DOWN RSTACK ?ELS23: EQUAL? PRSA,V?LOWER-INTO,V?PUT \?ELS32 EQUAL? PRSI,UPPER-CHUTE \?ELS32 EQUAL? HERE,TOP-OF-CHUTE,SLANTED-ROOM \?ELS39 EQUAL? PRSO,BEAM \?ELS44 ZERO? ROPE-TO-BEAM /?ELS44 MOVE ROPE,COAL-BIN-ROOM MOVE BEAM,COAL-BIN-ROOM SET 'ROPE-PLACED,FALSE-VALUE FCLEAR BEAM,TRYTAKEBIT FCLEAR ROPE,TRYTAKEBIT CALL BEAM-AND-ROPE RSTACK ?ELS44: EQUAL? PRSO,ROPE \?ELS48 ZERO? ROPE-TO-BEAM /?ELS48 CALL DROP-BEAM-FIRST ZERO? STACK \TRUE SET 'ROPE-PLACED,TRUE-VALUE FSET BEAM,TRYTAKEBIT FSET ROPE,TRYTAKEBIT MOVE ROPE,HERE CALL ROPE-HANGS RSTACK ?ELS48: GETP PRSO,P?SIZE LESS? STACK,20 \?ELS58 MOVE PRSO,DIAL JUMP ?CND56 ?ELS58: MOVE PRSO,COAL-BIN-ROOM ?CND56: CALL DISAPPEARS-DOWN-CHUTE RSTACK ?ELS39: EQUAL? HERE,COAL-BIN-ROOM \FALSE CALL LOOK-AROUND-YOU RSTACK ?ELS32: EQUAL? PRSA,V?LOOK-INSIDE \FALSE CALL PERFORM,V?RESEARCH,UPPER-CHUTE RTRUE .FUNCT LOWER-CHUTE-F EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \?ELS5 EQUAL? HERE,COAL-BIN-ROOM \?ELS10 CALL BOTTOM-TOP-OF-CHUTE,TRUE-VALUE RSTACK ?ELS10: CALL DO-WALK,P?UP RSTACK ?ELS5: EQUAL? PRSA,V?LEAP,V?THROUGH,V?CLIMB-DOWN \?ELS14 EQUAL? HERE,COVE \?ELS19 CALL BOTTOM-TOP-OF-CHUTE RSTACK ?ELS19: CALL DO-WALK,P?DOWN RSTACK ?ELS14: EQUAL? PRSA,V?LOWER-INTO,V?PUT \?ELS23 EQUAL? PRSI,LOWER-CHUTE \?ELS23 EQUAL? HERE,COAL-BIN-ROOM \?ELS30 EQUAL? PRSO,BEAM \?ELS35 ZERO? ROPE-TO-BEAM /?ELS35 MOVE ROPE,LAGOON-FLOOR MOVE BEAM,LAGOON-FLOOR SET 'ROPE-IN-LOWER-CHUTE,FALSE-VALUE FCLEAR ROPE,TRYTAKEBIT CALL BEAM-AND-ROPE RSTACK ?ELS35: EQUAL? PRSO,ROPE \?ELS39 ZERO? ROPE-TO-BEAM /?ELS39 CALL DROP-BEAM-FIRST ZERO? STACK \TRUE SET 'ROPE-IN-LOWER-CHUTE,TRUE-VALUE FSET ROPE,TRYTAKEBIT MOVE ROPE,HERE CALL ROPE-HANGS RSTACK ?ELS39: MOVE PRSO,LAGOON-FLOOR FSET? PRSO,SCROLLBIT /?THN50 EQUAL? PRSO,SPELL-BOOK \?CND47 ?THN50: FSET PRSO,MUNGBIT ?CND47: CALL DISAPPEARS-DOWN-CHUTE RSTACK ?ELS30: EQUAL? HERE,COAL-BIN-ROOM \FALSE CALL LOOK-AROUND-YOU RSTACK ?ELS23: EQUAL? PRSA,V?LOOK-INSIDE \FALSE CALL PERFORM,V?RESEARCH,LOWER-CHUTE RTRUE .FUNCT DROP-BEAM-FIRST CALL HELD?,BEAM ZERO? STACK /FALSE PRINTR "You'll have to drop the beam before doing that." .FUNCT BEAM-AND-ROPE PRINTR "The beam and rope both slide into the chute." .FUNCT ROPE-HANGS PRINTR "The rope hangs from the beam, into the chute." .FUNCT DISAPPEARS-DOWN-CHUTE PRINTI "The " PRINTD PRSO PRINTR " disappears into the chute." .FUNCT OLDER-SELF-F EQUAL? WINNER,OLDER-SELF \?ELS5 PRINTI "Your older self ignores your words." CRLF CALL STOP RSTACK ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9 PRINT OLDER-INTRO PRINTR " The stranger is carrying a smelly scroll." ?ELS9: EQUAL? PRSA,V?GIVE \?ELS13 EQUAL? PRSO,SPELL-BOOK \?ELS13 MOVE SPELL-BOOK,OLDER-SELF FSET SPELL-BOOK,TRYTAKEBIT PRINTR "Your older self accepts the spell book gratefully." ?ELS13: EQUAL? PRSA,V?FOLLOW \?ELS19 ZERO? TWIN-FOLLOW /?ELS19 CALL DO-WALK,P?DOWN RSTACK ?ELS19: EQUAL? PRSA,V?AIMFIZ \?ELS23 CALL V-SWANZO RSTACK ?ELS23: EQUAL? PRSA,V?YOMIN \FALSE PRINTR "The thoughts of your older self center on attempting to breathe." .FUNCT I-OLDER-SELF CALL QUEUE,I-OLDER-SELF,-1 PUT STACK,0,1 INC 'OLDER-COUNTER EQUAL? OLDER-COUNTER,1 \?ELS5 MOVE OLDER-SELF,COAL-BIN-ROOM CALL HELD?,SPELL-BOOK ZERO? STACK /?CND6 SET 'YOUNGER-HAS-SPELL-BOOK,TRUE-VALUE ?CND6: EQUAL? HERE,COAL-BIN-ROOM \?ELS13 CRLF PRINTI "Someone slides out of the coal chute, and lands near the bin. " PRINT OLDER-INTRO CRLF SET 'OLDER-INTRODUCED,TRUE-VALUE RETURN OLDER-INTRODUCED ?ELS13: EQUAL? HERE,DIAL-ROOM \?ELS19 CRLF PRINTR "You here a commotion from the room to the west." ?ELS19: CALL INT,I-OLDER-SELF PUT STACK,0,0 RFALSE ?ELS5: EQUAL? OLDER-COUNTER,2 \?ELS25 CALL DATA-TO-TABLE,MOVE-ONE-TABLE EQUAL? HERE,COAL-BIN-ROOM \?ELS30 CRLF ZERO? OLDER-INTRODUCED \?CND31 SET 'OLDER-INTRODUCED,TRUE-VALUE PRINTI "Someone is standing near the coal bin. " PRINT OLDER-INTRO CRLF CRLF ?CND31: SET 'COMBO-DISCOVERED,TRUE-VALUE CALL OLDER-TELLS-COMBO IN? SPELL-BOOK,OLDER-SELF /?CND36 PRINTI " Your older self then looks at you, almost expectantly." ?CND36: CRLF RTRUE ?ELS30: CRLF PRINTR "From the next room you glimpse someone gasping for air." ?ELS25: EQUAL? OLDER-COUNTER,3 \?ELS46 CALL DATA-TO-TABLE,MOVE-TWO-TABLE EQUAL? HERE,COAL-BIN-ROOM \?ELS51 ZERO? OLDER-INTRODUCED \?CND52 SET 'OLDER-INTRODUCED,TRUE-VALUE CRLF PRINTI "Someone is standing near the coal bin. " PRINT OLDER-INTRO CRLF ?CND52: IN? SPELL-BOOK,OLDER-SELF \?ELS61 MOVE SPELL-BOOK,YOUNGER-SELF FSET SPELL-BOOK,TRYTAKEBIT MOVE OLDER-SELF,DIAL MOVE VARDIK-SCROLL,DIAL SET 'TWIN-FOLLOW,TRUE-VALUE CALL QUEUE,I-TWIN-UNFOLLOW,1 PUT STACK,0,1 CRLF PRINTR "Your look-alike dives into the lower chute and slides out of view." ?ELS61: ZERO? COMBO-DISCOVERED \?ELS65 CRLF CALL OLDER-TELLS-COMBO CRLF RTRUE ?ELS65: CRLF PRINTR """Give me...the spell book,"" croaks your older self." ?ELS51: MOVE OLDER-SELF,DIAL MOVE VARDIK-SCROLL,DIAL CRLF PRINTR "Someone in the coal bin room dives into the lower chute." ?ELS46: CALL DATA-TO-TABLE,MOVE-THREE-TABLE CALL INT,I-OLDER-SELF PUT STACK,0,0 EQUAL? HERE,COAL-BIN-ROOM \?CND76 IN? OLDER-SELF,HERE \?CND76 CRLF PRINTI "Your older self dives into the lower chute." CRLF ?CND76: MOVE OLDER-SELF,DIAL MOVE VARDIK-SCROLL,DIAL RTRUE .FUNCT OLDER-TELLS-COMBO PRINTI "Your disheveled ""twin"" is having difficulty breathing, but gasps, ""The combination is " PRINTN COMBO PRINTI ".""" RTRUE .FUNCT I-TWIN-UNFOLLOW SET 'TWIN-FOLLOW,FALSE-VALUE RFALSE .FUNCT DATA-TO-TABLE,TABLE PUT TABLE,1,PRSA PUT TABLE,2,PRSO PUT TABLE,3,PRSI RTRUE .FUNCT YOUNGER-SELF-F EQUAL? YOUNGER-SELF,WINNER \?ELS5 EQUAL? PRSA,V?COMBO \?ELS10 EQUAL? PRSO,INTNUM \?ELS10 EQUAL? P-NUMBER,COMBO \?CND13 SET 'COMBO-REVEALED,TRUE-VALUE ?CND13: PRINTR "Your younger self seems surprised by your statement." ?ELS10: EQUAL? PRSA,V?GIVE \?ELS19 EQUAL? PRSO,SPELL-BOOK \?ELS19 EQUAL? PRSI,ME \?ELS19 CALL SPELL-BOOK-PASS-OFF-CHECK ZERO? STACK \TRUE ?ELS19: PRINTI "Your younger self seems confused, and doesn't respond." CRLF CALL STOP RSTACK ?ELS5: EQUAL? PRSA,V?YOMIN \?ELS27 PRINTR "The thoughts of your younger self are confused, and seem to center on whether or not to perform a SAVE." ?ELS27: EQUAL? PRSA,V?AIMFIZ \?ELS31 CALL V-SWANZO RSTACK ?ELS31: EQUAL? PRSA,V?EXAMINE \FALSE PRINTI "It's almost like looking in a mirror. Your younger self looks confused" IN? SPELL-BOOK,YOUNGER-SELF \?CND36 PRINTI ", and is carrying a spell book" ?CND36: PRINTR "." .FUNCT YOUNGER-SELF-DESCFCN,TABLE LESS? YOUNGER-COUNTER,3 \?ELS3 SET 'TABLE,MOVE-ONE-TABLE JUMP ?CND1 ?ELS3: EQUAL? YOUNGER-COUNTER,3 \?ELS5 SET 'TABLE,MOVE-TWO-TABLE JUMP ?CND1 ?ELS5: SET 'TABLE,MOVE-THREE-TABLE ?CND1: FSET? YOUNGER-SELF,TOUCHBIT \?ELS12 PRINTI "Your younger self is here" ZERO? YOUNGER-HAS-SPELL-BOOK /?ELS19 PRINTR ", holding your spell book." ?ELS19: PRINTR "." ?ELS12: FSET YOUNGER-SELF,TOUCHBIT PRINTI "Standing here, looking quite confused, is someone who could only be your younger self -- an exact duplicate of you, but cleaner and breathing with considerably less difficulty. You remember seeing this scene from another viewpoint just a short while ago." ZERO? YOUNGER-HAS-SPELL-BOOK /?CND31 PRINTI " Among the items carried by your ""twin"" is your spell book." ?CND31: CRLF RTRUE .FUNCT SPELL-BOOK-PASS-OFF-CHECK,TABLE EQUAL? YOUNGER-COUNTER,1 \?ELS3 SET 'TABLE,MOVE-ONE-TABLE JUMP ?CND1 ?ELS3: EQUAL? YOUNGER-COUNTER,2 \?ELS5 SET 'TABLE,MOVE-TWO-TABLE JUMP ?CND1 ?ELS5: EQUAL? YOUNGER-COUNTER,3 \FALSE SET 'TABLE,MOVE-THREE-TABLE ?CND1: GET TABLE,2 EQUAL? STACK,SPELL-BOOK \?ELS18 GET TABLE,3 EQUAL? STACK,OLDER-SELF \?ELS18 GET TABLE,1 EQUAL? STACK,V?GIVE /TRUE ?ELS18: GET TABLE,2 EQUAL? STACK,OLDER-SELF \FALSE GET TABLE,3 EQUAL? STACK,SPELL-BOOK \FALSE GET TABLE,1 EQUAL? STACK,V?SGIVE \FALSE RTRUE .FUNCT I-YOUNGER-SELF INC 'YOUNGER-COUNTER IN? YOUNGER-SELF,HERE \FALSE ZERO? LIT \?ELS7 ZERO? BLORTED /FALSE ?ELS7: EQUAL? YOUNGER-COUNTER,2 \?ELS11 CALL YOUNGER-ACTIONS,MOVE-ONE-TABLE RSTACK ?ELS11: EQUAL? YOUNGER-COUNTER,3 \?ELS13 CALL YOUNGER-ACTIONS,MOVE-TWO-TABLE RSTACK ?ELS13: EQUAL? YOUNGER-COUNTER,4 \FALSE CALL YOUNGER-ACTIONS,MOVE-THREE-TABLE RSTACK .FUNCT YOUNGER-ACTIONS,TABLE GET TABLE,2 ZERO? STACK \?CND1 PUT TABLE,2,NOT-HERE-OBJECT ?CND1: GET TABLE,3 ZERO? STACK \?CND4 PUT TABLE,3,NOT-HERE-OBJECT ?CND4: GET TABLE,2 EQUAL? STACK,OLDER-SELF \?ELS9 PUT TABLE,2,YOU-OBJECT JUMP ?CND7 ?ELS9: GET TABLE,2 EQUAL? STACK,ME \?CND7 PUT TABLE,2,YOUNGER-SELF ?CND7: GET TABLE,3 EQUAL? STACK,OLDER-SELF \?ELS14 PUT TABLE,3,YOU-OBJECT JUMP ?CND12 ?ELS14: GET TABLE,3 EQUAL? STACK,ME \?CND12 PUT TABLE,3,YOUNGER-SELF ?CND12: CRLF PRINTI "Your younger self " GET TABLE,2 EQUAL? STACK,SPELL-BOOK \?ELS27 GET TABLE,3 EQUAL? STACK,YOU-OBJECT \?ELS27 GET TABLE,1 EQUAL? STACK,V?GIVE /?THN24 ?ELS27: GET TABLE,2 EQUAL? STACK,YOU-OBJECT \?ELS23 GET TABLE,3 EQUAL? STACK,SPELL-BOOK \?ELS23 GET TABLE,1 EQUAL? STACK,V?SGIVE \?ELS23 ?THN24: MOVE SPELL-BOOK,PROTAGONIST FCLEAR SPELL-BOOK,TRYTAKEBIT PRINTR "hands you your spell book!" ?ELS23: GET TABLE,1 EQUAL? STACK,V?VERBOSE,V?BRIEF,V?SUPER-BRIEF /?THN34 GET TABLE,1 EQUAL? STACK,V?SCORE,V?SCRIPT,V?UNSCRIPT \?ELS33 ?THN34: PRINTR "is performing a spell of high technology." ?ELS33: GET TABLE,1 EQUAL? STACK,V?ANSWER,V?REPLY,V?CURSE /?THN40 GET TABLE,1 EQUAL? STACK,V?HELLO,V?TELL,V?ASK-FOR /?THN40 GET TABLE,1 EQUAL? STACK,V?SAY,V?THANK,V?YELL /?THN40 GET TABLE,1 EQUAL? STACK,V?ASK-ABOUT \?ELS39 ?THN40: PRINTR "is attempting to talk." ?ELS39: GET TABLE,1 EQUAL? STACK,V?CAST,V?GNUSTO,V?FROTZ /?THN46 GET TABLE,1 EQUAL? STACK,V?REZROV,V?IZYUK,V?FWEEP /?THN46 GET TABLE,1 EQUAL? STACK,V?AIMFIZ,V?SWANZO,V?VARDIK /?THN46 GET TABLE,1 EQUAL? STACK,V?MEEF,V?PULVER,V?GOLMAC /?THN46 GET TABLE,1 EQUAL? STACK,V?YOMIN,V?VEZZA,V?GASPAR /?THN46 GET TABLE,1 EQUAL? STACK,V?YONK,V?MALYON \?ELS45 ?THN46: PRINTR "is casting a familiar spell." ?ELS45: GET TABLE,1 EQUAL? STACK,V?INVENTORY \?ELS51 PRINTR "is doing an inventory." ?ELS51: GET TABLE,1 EQUAL? STACK,V?DIAGNOSE \?ELS55 PRINTR "is checking for wounds." ?ELS55: GET TABLE,1 EQUAL? STACK,V?WAIT \?ELS59 PRINTR "is doing absolutely nothing." ?ELS59: GET TABLE,1 EQUAL? STACK,V?SLEEP \?ELS63 PRINTR "is trying to fall asleep!" ?ELS63: GET TABLE,1 EQUAL? STACK,V?LEARN \?ELS67 PRINTR "is studying a spell book." ?ELS67: GET TABLE,1 EQUAL? STACK,V?SPELLS \?ELS71 PRINTR "seems lost in thought." ?ELS71: GET TABLE,1 EQUAL? STACK,V?LOOK \?ELS75 PRINTR "is looking around." ?ELS75: GET TABLE,1 EQUAL? STACK,V?LEAP,V?SKIP \?ELS79 PRINTR "is hopping around like a crazed rabbit." ?ELS79: GET TABLE,1 EQUAL? STACK,V?WALK,V?WALK-AROUND,V?WALK-TO \?ELS83 PRINTR "is moving around." ?ELS83: GET TABLE,1 EQUAL? STACK,V?GIVE \?ELS87 PRINTI "is trying to give" GET TABLE,2 CALL ARTICLE,STACK PRINTI " to" GET TABLE,3 CALL ARTICLE,STACK PRINTR "." ?ELS87: GET TABLE,1 EQUAL? STACK,V?SHOW \?ELS95 PRINTI "is trying to show" GET TABLE,2 CALL ARTICLE,STACK PRINTI " to" GET TABLE,3 CALL ARTICLE,STACK PRINTR "." ?ELS95: GET TABLE,1 EQUAL? STACK,V?RAISE,V?LOWER,V?RUB /?THN104 GET TABLE,1 EQUAL? STACK,V?MOVE,V?SHAKE,V?PUSH /?THN104 GET TABLE,1 EQUAL? STACK,V?KICK,V?PUT-ON,V?PUSH-TO /?THN104 GET TABLE,1 EQUAL? STACK,V?PUT,V?PUT-UNDER,V?PUT-BEHIND \?ELS103 ?THN104: GET TABLE,1 EQUAL? STACK,V?PUT \?CND106 GET TABLE,2 EQUAL? STACK,SPELL-BOOK \?CND106 GET TABLE,3 EQUAL? STACK,LOWER-CHUTE \?CND106 MOVE SPELL-BOOK,DIAL ?CND106: PRINTI "is attempting to move" GET TABLE,2 CALL ARTICLE,STACK PRINTR "." ?ELS103: GET TABLE,1 EQUAL? STACK,V?EXAMINE,V?LOOK-INSIDE /?THN117 GET TABLE,1 EQUAL? STACK,V?LOOK-BEHIND,V?LOOK-UNDER \?ELS116 ?THN117: PRINTI "is examining" GET TABLE,2 CALL ARTICLE,STACK PRINTR "." ?ELS116: GET TABLE,1 EQUAL? STACK,V?BOARD,V?ENTER,V?THROUGH \?ELS124 PRINTI "is trying to get into" GET TABLE,2 CALL ARTICLE,STACK PRINTR "." ?ELS124: GET TABLE,1 EQUAL? STACK,V?THROW,V?THROW-OFF \?ELS130 PRINTI "is performing aeronautical experiments with" GET TABLE,2 CALL ARTICLE,STACK PRINTR "." ?ELS130: GET TABLE,1 EQUAL? STACK,V?WHAT,V?WHERE,V?WHO \?ELS136 PRINTI "is asking about" GET TABLE,2 CALL ARTICLE,STACK PRINTR ", addressing the question to no one in particular." ?ELS136: GET TABLE,1 EQUAL? STACK,V?ATTACK,V?KILL,V?MUNG \?ELS142 PRINTI "is attacking" GET TABLE,2 CALL ARTICLE,STACK,TRUE-VALUE PRINTR "." ?ELS142: GET TABLE,1 EQUAL? STACK,V?EAT,V?DRINK \?ELS148 PRINTI "is attempting to ingest" GET TABLE,2 CALL ARTICLE,STACK PRINTR "." ?ELS148: GET TABLE,1 EQUAL? STACK,V?CLIMB-ON,V?CLIMB-UP,V?CLIMB-FOO /?THN155 GET TABLE,1 EQUAL? STACK,V?CLIMB-DOWN,V?CLIMB-OVER \?ELS154 ?THN155: PRINTI "is climbing" GET TABLE,2 CALL ARTICLE,STACK,TRUE-VALUE PRINTR "." ?ELS154: GET TABLE,1 EQUAL? STACK,V?READ \?ELS162 PRINTI "is reading" GET TABLE,2 CALL ARTICLE,STACK PRINTR "." ?ELS162: GET TABLE,1 EQUAL? STACK,V?SMELL \?ELS168 PRINTI "is smelling" GET TABLE,2 CALL ARTICLE,STACK PRINTR "." ?ELS168: GET TABLE,1 EQUAL? STACK,V?LISTEN \?ELS174 PRINTI "seems to be listening to" GET TABLE,2 CALL ARTICLE,STACK PRINTR "." ?ELS174: GET TABLE,1 EQUAL? STACK,V?KISS \?ELS180 PRINTI "tries to kiss" GET TABLE,2 CALL ARTICLE,STACK PRINTR "." ?ELS180: GET TABLE,1 EQUAL? STACK,V?OPEN \?ELS186 PRINTI "is trying to open" GET TABLE,2 CALL ARTICLE,STACK PRINTR "." ?ELS186: GET TABLE,1 EQUAL? STACK,V?CLOSE \?ELS192 PRINTI "is closing" GET TABLE,2 CALL ARTICLE,STACK PRINTR "." ?ELS192: GET TABLE,1 EQUAL? STACK,V?EXIT,V?DISEMBARK \?ELS198 PRINTI "is trying to leave" GET TABLE,2 CALL ARTICLE,STACK PRINTR "." ?ELS198: GET TABLE,1 EQUAL? STACK,V?TAKE \?ELS204 PRINTI "is reaching for" GET TABLE,2 CALL ARTICLE,STACK PRINTR "." ?ELS204: GET TABLE,1 EQUAL? STACK,V?DROP \?ELS210 PRINTI "is dropping" GET TABLE,2 CALL ARTICLE,STACK PRINTR "." ?ELS210: PRINTR "is doing something." .FUNCT LAMP-PSEUDO EQUAL? PRSA,V?TAKE \FALSE CALL PERFORM,V?TAKE,KEROSENE-LAMP RTRUE .FUNCT DIAL-DOOR-F EQUAL? PRSA,V?OPEN \?ELS5 FSET? DIAL-DOOR,OPENBIT /?ELS5 ZERO? DIAL-OPEN /?ELS12 FSET DIAL-DOOR,OPENBIT ADD SCORE,COAL-DOOR-POINT >SCORE SET 'COAL-DOOR-POINT,0 PRINTR "The door opens easily." ?ELS12: PRINTR "The door won't budge." ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS21 CALL PERFORM,V?EXAMINE,DIAL RTRUE ?ELS21: EQUAL? PRSA,V?REZROV \FALSE CALL JIGS-UP,STR?305 RSTACK .FUNCT DIAL-F EQUAL? PRSA,V?READ,V?EXAMINE \?ELS5 PRINTI "Set in the door is a large circular dial which can be set to any number up to 873. It is currently set to " PRINTN CURRENT-SETTING PRINTR "." ?ELS5: EQUAL? PRSA,V?TURN \FALSE ZERO? FWEEPED /?ELS14 CALL BATTY RSTACK ?ELS14: ZERO? PRSI /?THN18 EQUAL? PRSI,INTNUM /?ELS17 ?THN18: PRINTR "You must say what number to turn it to." ?ELS17: EQUAL? CURRENT-SETTING,P-NUMBER \?ELS23 PRINTI "The dial is already set to " PRINTN CURRENT-SETTING PRINTR "." ?ELS23: SET 'CURRENT-SETTING,P-NUMBER PRINTI "The dial is now set to " PRINTN CURRENT-SETTING PRINTI "." EQUAL? CURRENT-SETTING,COMBO \?CND30 PRINTI " You hear a click from inside the door." SET 'DIAL-OPEN,TRUE-VALUE ?CND30: CRLF RTRUE .FUNCT ROPE-F EQUAL? PRSA,V?PUT \?ELS5 CALL ACCESSIBLE?,ROPE ZERO? STACK /FALSE ?ELS5: EQUAL? PRSA,V?TIE \?ELS9 EQUAL? PRSI,BEAM \?ELS9 PRINTI "The rope is " ZERO? ROPE-TO-BEAM /?CND14 PRINTI "already " ?CND14: PRINTI "tied securely to the center of the beam." CRLF SET 'ROPE-TO-BEAM,TRUE-VALUE RETURN ROPE-TO-BEAM ?ELS9: EQUAL? PRSA,V?TIE \?ELS23 EQUAL? PRSI,COAL-BIN \?ELS23 PRINTR "The bin is too large." ?ELS23: EQUAL? PRSA,V?UNTIE \?ELS29 ZERO? ROPE-TO-BEAM /?ELS29 SET 'ROPE-TO-BEAM,FALSE-VALUE PRINTR "The rope is untied." ?ELS29: EQUAL? PRSA,V?CLIMB-DOWN \?ELS35 ZERO? ROPE-PLACED \?ELS40 ZERO? ROPE-IN-LOWER-CHUTE \?ELS40 PRINTR "It would be hard to climb down the rope in its current state." ?ELS40: CALL DO-WALK,P?DOWN RSTACK ?ELS35: EQUAL? PRSA,V?CLIMB-UP \?ELS48 PRINTR "Do you also charm snakes?" ?ELS48: EQUAL? PRSA,V?EXAMINE \FALSE ZERO? ROPE-PLACED \?THN58 ZERO? ROPE-IN-LOWER-CHUTE /?ELS57 ?THN58: PRINTR "The rope is tied to the beam and hangs into the chute." ?ELS57: ZERO? ROPE-TO-BEAM /FALSE PRINTR "It is tied to the center of the timber." .FUNCT SHAFT-BOTTOM-F,RARG EQUAL? RARG,M-ENTER \FALSE FSET? VARDIK-SCROLL,TOUCHBIT \FALSE SET 'BREATH-SHORTAGE,3 CALL I-BREATHE RSTACK .FUNCT SHAFT-PSEUDO EQUAL? PRSA,V?CLIMB-DOWN \?ELS5 EQUAL? HERE,SHAFT-TOP \?ELS10 CALL DO-WALK,P?DOWN RSTACK ?ELS10: CALL LOOK-AROUND-YOU RSTACK ?ELS5: EQUAL? PRSA,V?CLIMB-UP,V?CLIMB-FOO \?ELS14 EQUAL? HERE,SHAFT-TOP \?ELS19 CALL LOOK-AROUND-YOU RSTACK ?ELS19: CALL DO-WALK,P?UP RSTACK ?ELS14: EQUAL? PRSA,V?PUT-ON \?ELS23 EQUAL? PRSO,BEAM \?ELS23 PRINTR "The shaft is too wide." ?ELS23: EQUAL? PRSA,V?PUT \FALSE EQUAL? HERE,SHAFT-TOP \FALSE EQUAL? PRSO,ROPE \?ELS36 ZERO? ROPE-TO-BEAM /?ELS36 PRINTR "The rope now dangles into the shaft." ?ELS36: MOVE PRSO,SHAFT-BOTTOM PRINTR "It disappears into the shaft. A moment later comes a distant thud." .FUNCT BEAM-F EQUAL? PRSA,V?PUT-ON \?ELS5 EQUAL? PRSI,UPPER-CHUTE,LOWER-CHUTE \?ELS5 MOVE BEAM,HERE PRINTR "The beam is now lying across the mouth of the chute." ?ELS5: EQUAL? PRSA,V?TAKE \?ELS11 ZERO? ROPE-PLACED /?ELS11 PRINTR "You'd have to take the rope out of the chute first." ?ELS11: EQUAL? PRSA,V?EXAMINE \FALSE ZERO? ROPE-PLACED /?ELS22 PRINTR "A rope hangs from the beam, into the chute." ?ELS22: ZERO? ROPE-TO-BEAM /FALSE PRINTR "A rope is tied to the beam." .FUNCT TOP-OF-CHUTE-F,RARG EQUAL? RARG,M-END \FALSE IN? TROGLODYTE,HERE /FALSE ZERO? LIT \?THN8 ZERO? BLORTED /FALSE ?THN8: RANDOM 100 LESS? 30,STACK /FALSE MOVE TROGLODYTE,HERE CALL QUEUE,I-TROGLODYTE,2 PUT STACK,0,1 CRLF PRINTR "A troglodyte trundles in and dumps a load of coal into the chute." .FUNCT I-TROGLODYTE MOVE TROGLODYTE,DIAL EQUAL? HERE,TOP-OF-CHUTE \FALSE SET 'TROG-FOLLOW,TRUE-VALUE CALL QUEUE,I-TROG-UNFOLLOW,1 PUT STACK,0,1 CRLF PRINTR "The troglodyte trundles off into the coal mine." .FUNCT I-TROG-UNFOLLOW SET 'TROG-FOLLOW,FALSE-VALUE RFALSE .FUNCT TROGLODYTE-F EQUAL? WINNER,TROGLODYTE \?ELS5 PRINTI "The troglodyte ignores you." CRLF CALL STOP RSTACK ?ELS5: EQUAL? PRSA,V?FOLLOW \?ELS9 ZERO? TROG-FOLLOW /?ELS9 PRINTR "You didn't notice which passage it took." ?ELS9: EQUAL? PRSA,V?YOMIN \?ELS15 PRINTR "The troglodyte is worried about filling his coal quotas." ?ELS15: EQUAL? PRSA,V?RESEARCH \FALSE PRINTR "Semi-intelligent subterranean beasts frequently used to dig and haul coal." .FUNCT CHUTE-EXIT-F ZERO? ROPE-PLACED /?ELS5 PRINTI "You climb carefully down the rope, which is slippery with coal dust, " GRTR? AWAKE,0 \?ELS13 PRINTI "but because of your fatigue you lose your grip." CALL ORANGE-FLASH CRLF CRLF RETURN COAL-BIN-ROOM ?ELS13: CALL NOTHING-HELD? ZERO? STACK \?ELS17 PRINTI "but because of your load you are unable to maintain your grip." CALL ORANGE-FLASH CRLF CRLF RETURN COAL-BIN-ROOM ?ELS17: PRINTI "and soon reach a small opening off the chute. You clamber inside..." CRLF CRLF ADD SCORE,20 >SCORE FCLEAR VARDIK-SPELL,INVISIBLE RETURN SLANTED-ROOM ?ELS5: CALL ROPE-BEAM-CHECK,TRUE-VALUE PRINTI "Wheee!!! " CALL ORANGE-FLASH PRINTI " You land beside an enormous bin of coal." CRLF CRLF RETURN COAL-BIN-ROOM .FUNCT ORANGE-FLASH PRINTI " As you " ZERO? FLYING /?ELS5 PRINTI "float" JUMP ?CND3 ?ELS5: PRINTI "whiz" ?CND3: PRINTI " down the chute, you notice a flash of orange light spilling from an opening onto the chute." RTRUE .FUNCT SLANTED-ROOM-F,RARG EQUAL? RARG,M-ENTER \FALSE PUT VEZZAS,6,0 RTRUE .FUNCT SLANTED-ROOM-EXIT-F IN? GOLMAC-SCROLL,PROTAGONIST /?ELS5 ZERO? GOLMACKED \?ELS5 CALL POOF RFALSE ?ELS5: IN? GOLMAC-SCROLL,PROTAGONIST \?ELS9 ZERO? GOLMACKED /?ELS9 CALL POOF RFALSE ?ELS9: PRINTI "Wheeee!!!" CRLF CRLF RETURN COAL-BIN-ROOM .FUNCT KEROSENE-LAMP-DESCFCN,RARG PRINTI "Mounted securely to the wall is a kerosene lamp, filling the room with a serene orange glow. " FSET? KEROSENE-LAMP,OPENBIT \?CND3 PRINTI "A small compartment at its base is open." ?CND3: CRLF RTRUE .FUNCT KEROSENE-LAMP-F EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTR "The lamp has a glass bowl where the flame burns. Below is a small metal door, perhaps a compartment for storing extra wicks or kerosene." ?ELS5: EQUAL? PRSA,V?TAKE \?ELS9 PRINTR "It's mounted securely to the wall." ?ELS9: EQUAL? PRSA,V?LAMP-OFF \FALSE PRINTR "You can't spare the breath to blow out the lamp." .FUNCT CHUTE-ENTER-F ZERO? FLYING /?ELS3 PRINTI "The chute is too narrow to fly up." JUMP ?CND1 ?ELS3: PRINTI "The chute is too steep and slippery." ?CND1: CRLF RFALSE .FUNCT BOTTOM-TOP-OF-CHUTE,TOP=0 PRINTI "You're already at the " ZERO? TOP /?ELS5 PRINTI "top" JUMP ?CND3 ?ELS5: PRINTI "bottom" ?CND3: PRINTR " of the chute." .ENDI