.FUNCT DO-INSTEAD-OF,OBJ1,OBJ2 EQUAL? PRSI,OBJ2 \?ELS5 CALL PERFORM,PRSA,PRSO,OBJ1 RTRUE ?ELS5: EQUAL? PRSO,OBJ2 \?ELS7 CALL PERFORM,PRSA,OBJ1,PRSI RTRUE ?ELS7: CALL1 V-FOO ZERO? STACK /FALSE RTRUE .FUNCT TURN-F EQUAL? PRSA,V?USE \FALSE CALL PERFORM,V?WAIT-FOR,PRSO RTRUE .FUNCT IT-F EQUAL? PRSI,IT \?THN10 EQUAL? PRSA,V?TELL-ABOUT /?THN10 EQUAL? PRSA,V?SEARCH-FOR,V?ASK-FOR,V?ASK-ABOUT /?THN14 ?THN10: EQUAL? PRSO,IT \FALSE EQUAL? PRSA,V?WHAT /?THN14 EQUAL? PRSA,V?FIND,V?ASK-CONTEXT-FOR,V?ASK-CONTEXT-ABOUT \FALSE ?THN14: CALL1 PRODUCE-GIBBERISH RSTACK .FUNCT FLOOR-F,OBJ EQUAL? PRSA,V?PUT \?ELS5 EQUAL? PRSI,FLOOR \?ELS5 CALL PERFORM,V?DROP,PRSO RTRUE ?ELS5: EQUAL? PRSA,V?LOOK-ON,V?SEARCH,V?EXAMINE \?ELS9 CALL FIND-FLAG,HERE,NDESCBIT,WINNER >OBJ ZERO? OBJ /?ELS14 FCLEAR OBJ,NDESCBIT CALL2 THIS-IS-IT,OBJ PRINTI "Something catches your eye: it's " CALL2 PRINTA,OBJ PRINTR "." ?ELS14: PRINTR "You don't find anything new there." ?ELS9: EQUAL? PRSA,V?TAKE,V?BRUSH \FALSE IN? BLOOD-SPOT,HERE \FALSE CALL PERFORM,V?BRUSH,BLOOD-SPOT,PRSI RTRUE .FUNCT DOLLARS-F EQUAL? PRSA,V?COUNT \?ELS5 CALL DO-INSTEAD-OF,GLOBAL-MONEY,DOLLARS RTRUE ?ELS5: ZERO? P-DOLLAR-FLAG /?ELS10 ZERO? P-AMOUNT \?CND8 SET 'P-AMOUNT,1 JUMP ?CND8 ?ELS10: SET 'P-DOLLAR-FLAG,TRUE-VALUE ZERO? P-NUMBER \?CND8 SET 'P-AMOUNT,1 ?CND8: CALL DO-INSTEAD-OF,INTNUM,DOLLARS RTRUE .FUNCT INTNUM-F ZERO? P-DOLLAR-FLAG /FALSE CALL2 DIVESTMENT?,PRSO ZERO? STACK /?ELS11 CALL1 TELL-FLASHING-CASH RTRUE ?ELS11: EQUAL? PRSA,V?ASK-FOR,V?TAKE /FALSE EQUAL? WINNER,PLAYER \FALSE GETP PLAYER,P?SOUTH GRTR? P-AMOUNT,STACK \FALSE PRINTR "You don't have that much." .FUNCT YOU-F EQUAL? WINNER,PLAYER /?ELS5 CALL DO-INSTEAD-OF,WINNER,YOU RTRUE ?ELS5: EQUAL? PRSA,V?ASK-ABOUT \FALSE EQUAL? PRSI,YOU \FALSE CALL PERFORM,V?ASK-ABOUT,PRSO,PRSO RTRUE .FUNCT CORRIDOR-GLOBAL-F,RM EQUAL? PRSA,V?LOOK-UP,V?LOOK-DOWN /?THN6 EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE,V?ANALYZE \FALSE ?THN6: ZERO? ON-TRAIN /FALSE CALL ZMEMQ,HERE,CAR-ROOMS-CORRID ZERO? STACK /?ELS14 CALL2 PERFORM,V?LOOK RTRUE ?ELS14: CALL NEXT-ROOM,HERE,P?OUT >RM ZERO? RM /FALSE CALL ROOM-PEEK,RM,TRUE-VALUE RSTACK .FUNCT GLOBAL-HERE-F,FLG=0,F,HR,TIM,VAL EQUAL? PRSA,V?SIT,V?WALK-TO \?ELS5 CALL DO-INSTEAD-OF,HERE,GLOBAL-HERE RTRUE ?ELS5: EQUAL? PRSA,V?KNOCK \?ELS7 PRINTR "Knocking on the walls reveals nothing unusual." ?ELS7: EQUAL? PRSA,V?TIE-TO,V?PUT-IN,V?PUT \?ELS11 CALL1 MORE-SPECIFIC RSTACK ?ELS11: EQUAL? PRSA,V?EXAMINE,V?SEARCH \FALSE GETP HERE,P?CORRIDOR ZERO? STACK /?ELS16 SET 'TIM,3 JUMP ?CND14 ?ELS16: GETP HERE,P?SIZE ADD 2,STACK >TIM ?CND14: EQUAL? P-ADVERB,W?CAREFULLY \?CND19 MUL 2,TIM >TIM ?CND19: PRINTI "(It's better to examine or search one thing at a time. It would take a long time to search a whole room or area thoroughly. A " EQUAL? P-ADVERB,W?CAREFULLY \?ELS26 PRINTI "careful" JUMP ?CND24 ?ELS26: PRINTI "brief" ?CND24: PRINTI " search would take " PRINTN TIM PRINTI " minutes, and it might not reveal much. Would you like to do it anyway?)" CALL1 YES? ZERO? STACK /?ELS39 CALL2 INT-WAIT,TIM >VAL EQUAL? M-FATAL,VAL /TRUE ZERO? VAL /?ELS46 PRINTI "Your " EQUAL? P-ADVERB,W?CAREFULLY \?ELS52 PRINTI "careful" JUMP ?CND50 ?ELS52: PRINTI "brief" ?CND50: PRINTI " search reveals" CALL2 FOUND?,HERE >VAL ZERO? VAL /?ELS65 CALL2 PRINTT,VAL PRINTR " under the seat." ?ELS65: PRINTR " nothing exciting." ?ELS46: PRINTR "You didn't finish looking over the place." ?ELS39: SET 'CLOCK-WAIT,TRUE-VALUE PRINTR "Okay." .FUNCT FOUND?,RM,X CALL ZMEMQ,RM,CAR-ROOMS-COMPS >X ZERO? X /?ELS5 GET CAR-ROOMS-UNDER,X FIRST? STACK >X \?ELS5 RETURN X ?ELS5: EQUAL? RM,BOOTH-1 \?ELS9 FIRST? UNDER-BOOTH-1 /TRUE RFALSE ?ELS9: EQUAL? RM,BOOTH-2 \?ELS13 FIRST? UNDER-BOOTH-2 /TRUE RFALSE ?ELS13: EQUAL? RM,BOOTH-3 \FALSE FIRST? UNDER-BOOTH-3 /TRUE RFALSE .FUNCT AIR-F EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTR "You can see through the air around you." ?ELS5: EQUAL? PRSA,V?WALK-TO \?ELS9 PRINTR "It's all around you!" ?ELS9: EQUAL? PRSA,V?SMELL \FALSE CALL2 OUTSIDE?,HERE ZERO? STACK /?ELS18 PRINTR "The air is clear and fresh." ?ELS18: CALL2 FRESH-AIR?,HERE ZERO? STACK \TRUE PRINTR "The air is rather musty." .FUNCT SOMETHING-F SET 'CLOCK-WAIT,TRUE-VALUE PRINTI "(Type a real word instead of " PRINTD SOMETHING PRINTR ".)" .FUNCT TOILET-F EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5 CALL1 YOU-CANT RSTACK ?ELS5: EQUAL? PRSA,V?PUT-IN \?ELS7 EQUAL? PRSI,TOILET \FALSE FSET PRSO,MUNGBIT RFALSE ?ELS7: EQUAL? PRSA,V?FLUSH-DOWN,V?FLUSH \FALSE ZERO? IN-STATION /?ELS19 ZERO? ON-TRAIN /?ELS19 PRINTR "An old refrain comes to mind: ""Passengers will please refrain From flushing toilets while the train Is standing in the station. (I love you!)""" ?ELS19: EQUAL? PRSA,V?FLUSH-DOWN \?CND26 CALL1 ITAKE EQUAL? STACK,TRUE-VALUE \TRUE MOVE PRSO,TOILET ?CND26: FIRST? TOILET \?CND32 PRINTI "Say goodbye to" CALL ROB,TOILET,LIMBO-FWD,TRUE-VALUE ?CND32: PRINTR """Whhoooossshhhhh!""" .FUNCT ROB,WHAT,THIEF,TELL?=0,N,X,TOLD?=0 FIRST? WHAT >X /?KLU29 ?KLU29: ?PRG1: ZERO? X /TRUE NEXT? X >N /?KLU30 ?KLU30: ZERO? N \?CND6 ZERO? TOLD? /?CND6 ZERO? TELL? /?CND6 PRINTI " and" ?CND6: SET 'TOLD?,TRUE-VALUE ZERO? TELL? /?CND13 CALL2 PRINTT,X ZERO? N /?ELS21 PRINTI "," JUMP ?CND13 ?ELS21: PRINTI ". " ?CND13: MOVE X,THIEF FCLEAR X,TAKEBIT SET 'X,N JUMP ?PRG1 .FUNCT SINK-F EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5 CALL1 YOU-CANT RSTACK ?ELS5: EQUAL? PRSA,V?LAMP-ON \FALSE PRINTR "You push on the handle, and water runs until you let go. A silly idea comes into your head: what is the sound of one hand washing?" .FUNCT TOWEL-LOOP-F EQUAL? PRSA,V?CUT \?ELS5 EQUAL? PRSI,KNIFE \FALSE MOVE SCARF,PLAYER FSET SCARF,TAKEBIT PUTP SCARF,P?CAR,CAR-HERE MOVE TOWEL-FIXTURE-BROKEN,HERE PUTP TOWEL-FIXTURE-BROKEN,P?CAR,CAR-HERE MOVE TOWEL-LOOP-BROKEN,HERE PUTP TOWEL-LOOP-BROKEN,P?CAR,CAR-HERE CALL2 THIS-IS-IT,TOWEL-LOOP-BROKEN PRINTI "Well done! You now have a government-issue " PRINTD SCARF PRINTR ", and the janitor has a mess to repair." ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS14 PRINTR "This cloth towel must be very long, but most of it is rolled up inside the dispenser. Only about a meter hangs below it in a ""U"" shape." ?ELS14: EQUAL? PRSA,V?TAKE /?THN19 EQUAL? PRSA,V?USE,V?MOVE-DIR,V?MOVE \FALSE ?THN19: PRINTR "As you pull on the towel, a fresh portion appears from a slot, and the used portion starts to disappear into the dispenser." .FUNCT TOWEL-LOOP-BROKEN-F EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTR "This cloth towel must be very long, but most of it is rolled up inside the dispenser. The part that should hang below is cut away." ?ELS5: EQUAL? PRSA,V?TAKE,V?USE /?THN10 EQUAL? PRSA,V?MOVE-DIR,V?MOVE,V?CUT \FALSE ?THN10: PRINTR "There's not enough left!" .FUNCT PAPER-FIXTURE-F EQUAL? PRSA,V?LOOK-INSIDE \FALSE FCLEAR PAPER-LOOP,NDESCBIT RFALSE .FUNCT PAPER-LOOP-F EQUAL? PRSA,V?TAKE /?THN6 EQUAL? PRSA,V?USE,V?MOVE-DIR,V?MOVE \FALSE ?THN6: PRINTR "Whatever you have in mind, it'll never work!" .FUNCT MIRROR-F EQUAL? PRSA,V?MUNG \?ELS5 PRINTR "You don't need any bad luck!" ?ELS5: EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \FALSE PRINTI "A harried and weary " EQUAL? VARIATION,3,4 \?ELS16 PUSH STR?151 JUMP ?CND12 ?ELS16: PUSH STR?152 ?CND12: PRINT STACK PRINTR " looks back at you, with a look that seems to say, ""I don't need this aggravation!""" .FUNCT POCKET-F,X CALL2 DIVESTMENT?,POCKET ZERO? STACK /?ELS5 CALL1 HAR-HAR RSTACK ?ELS5: EQUAL? PRSA,V?LOOK-THROUGH,V?LOOK-INSIDE \?ELS7 CALL2 PRINT-CONT,POCKET >X EQUAL? WINNER,PLAYER \?ELS10 GETP PLAYER,P?SOUTH GRTR? STACK,0 \?ELS10 CALL2 THIS-IS-IT,GLOBAL-MONEY ZERO? X /?ELS15 PRINTR "And some money." ?ELS15: PRINTI "You have some money in your pocket." IN? CUSTOMS-AGENT,HERE \?CND23 PRINTI " But" CALL2 HE-SHE-IT,CUSTOMS-AGENT PRINTI " won't mind." ?CND23: CRLF RTRUE ?ELS10: ZERO? X \TRUE PRINTR "Your pocket is empty." ?ELS7: EQUAL? PRSA,V?EMPTY \?ELS33 FIRST? POCKET \FALSE PRINTI "You are now holding" CALL ROB,POCKET,PLAYER,TRUE-VALUE CRLF RTRUE ?ELS33: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS42 PRINTR "You don't need to do that." ?ELS42: EQUAL? PRSA,V?PUT-IN \FALSE EQUAL? PRSI,POCKET \FALSE EQUAL? PRSO,GLOBAL-MONEY /?THN54 EQUAL? PRSO,INTNUM \?ELS53 ZERO? P-DOLLAR-FLAG /?ELS53 ?THN54: PRINTR "It's already there." ?ELS53: EQUAL? PRSO,CAMERA \FALSE FSET? PRSO,OPENBIT \FALSE FCLEAR PRSO,OPENBIT PRINTI "(You close" CALL2 HIM-HER-IT,PRSO PRINTI " first.)" CRLF RFALSE .FUNCT POCKET-C-F,X CALL2 DIVESTMENT?,POCKET-C ZERO? STACK /?ELS5 CALL1 HAR-HAR RSTACK ?ELS5: EQUAL? PRSA,V?LOOK-THROUGH,V?LOOK-INSIDE \?ELS7 FSET? CONDUCTOR,MUNGBIT /?THN11 FSET? CONDUCTOR,PERSONBIT /?ELS10 ?THN11: CALL2 PRINT-CONT,POCKET-C >X RTRUE ?ELS10: CALL HE-SHE-IT,CONDUCTOR,TRUE-VALUE PRINTR " brushes your hand away without even looking." ?ELS7: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS18 PRINTR "You don't need to do that." ?ELS18: EQUAL? PRSA,V?PUT-IN \FALSE EQUAL? PRSI,POCKET-C \FALSE EQUAL? PRSO,CAMERA \FALSE FSET? PRSO,OPENBIT \FALSE FCLEAR PRSO,OPENBIT PRINTI "(You close" CALL2 HIM-HER-IT,PRSO PRINTI " first.)" CRLF RFALSE .FUNCT TELL-FLASHING-CASH PRINTR "Flashing your bankroll is not a good idea." .FUNCT GLOBAL-MONEY-F EQUAL? PRSA,V?FIND \?ELS5 PRINTR "It's not that easy!" ?ELS5: CALL1 REMOTE-VERB? ZERO? STACK \FALSE EQUAL? PRSA,V?PUT-IN,V?PUT \?ELS11 EQUAL? PRSO,GLOBAL-MONEY \?ELS11 CALL1 MORE-SPECIFIC RSTACK ?ELS11: GETP PLAYER,P?SOUTH GRTR? STACK,0 \?ELS15 EQUAL? PRSA,V?EXAMINE,V?COUNT \?ELS20 PRINTI "You are carrying " PRINTC CURRENCY-SYMBOL GETP PLAYER,P?SOUTH PRINTN STACK PRINTR "." ?ELS20: EQUAL? PRSA,V?GIVE \?ELS26 SET 'CLOCK-WAIT,TRUE-VALUE PRINTR "(You didn't say how much money to give.)" ?ELS26: EQUAL? PRSA,V?TAKE \?ELS30 ZERO? PRSI /?ELS30 PRINTI "You can't see any money on" CALL2 HIM-HER-IT,PRSI PRINTR "." ?ELS30: EQUAL? PRSA,V?SHOW /FALSE CALL1 TELL-FLASHING-CASH RSTACK ?ELS15: CALL2 NOT-HERE,GLOBAL-MONEY RSTACK .FUNCT MENU-F EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \FALSE GETP MENU,P?TEXT PRINT STACK CRLF RTRUE .FUNCT ITEMS-F EQUAL? PRSA,V?BUY,V?ASK-FOR \?ELS5 EQUAL? P-ADJ,W?FIRST \?ELS10 CALL DO-INSTEAD-OF,FOOD,ITEMS RTRUE ?ELS10: CALL DO-INSTEAD-OF,FOOD-2,ITEMS RTRUE ?ELS5: EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \FALSE GETP MENU,P?TEXT PRINT STACK CRLF RTRUE .FUNCT FOOD-GLOBAL-F EQUAL? PRSA,V?SMELL,V?BUY,V?ASK-FOR \?ELS5 CALL DO-INSTEAD-OF,FOOD,FOOD-GLOBAL RTRUE ?ELS5: CALL1 REMOTE-VERB? ZERO? STACK \FALSE CALL2 NOT-HERE,FOOD-GLOBAL RSTACK .FUNCT DRINK-F CALL2 FOOD-F,TRUE-VALUE RSTACK .FUNCT DRINK-1-F CALL DO-INSTEAD-OF,DRINK-GLOBAL,DRINK-1 RTRUE .FUNCT FOOD-F,DRINK?=0,PER,OBJ,X,?ORTMP EQUAL? PRSA,V?DRINK,V?SMELL,V?EAT \?ELS5 EQUAL? PRSA,V?SMELL /?THN11 IN? PRSO,GLOBAL-OBJECTS /?ELS10 ?THN11: PRINTI "It's pungent but not very flavorful." EQUAL? PRSA,V?SMELL /?CND15 GETP PRSO,P?SIZE >X PUTP PRSO,P?SIZE,X EQUAL? X,FOOD-HALF-SIZE \?ELS20 PRINTI " And it's half gone." JUMP ?CND15 ?ELS20: ZERO? X \?CND15 MOVE PRSO,GLOBAL-OBJECTS PRINTI " And it's gone." ?CND15: EQUAL? VARIATION,3,4 \?CND27 PRINTI " You've had better in some mighty dank corners of the world." ?CND27: CRLF RTRUE ?ELS10: PRINTR "That wouldn't be very polite." ?ELS5: EQUAL? PRSA,V?MUNG /?THN38 EQUAL? PRSA,V?PUT-IN,V?PUT,V?POUR \?ELS37 ?THN38: EQUAL? PRSI,TOILET /FALSE EQUAL? PRSA,V?POUR /?ELS46 EQUAL? PRSI,TABLE-3,TABLE-2,TABLE-1 /FALSE ?ELS46: PRINTR "What a mess that would make!" ?ELS37: EQUAL? PRSA,V?BUY,V?ASK-FOR \FALSE EQUAL? HERE,PANTRY \?CND55 CALL2 INVASION?,WAITER ZERO? STACK \TRUE ?CND55: ZERO? ON-TRAIN /?ELS62 SET 'PER,WAITER JUMP ?CND60 ?ELS62: SET 'PER,WAITRESS ?CND60: ZERO? DRINK? /?ELS68 SET 'OBJ,WINE-RED JUMP ?CND66 ?ELS68: SET 'OBJ,FOOD ?CND66: ZERO? DRINK? /?ELS74 FSET? WINE-RED,TOUCHBIT /?THN79 FSET? WINE-WHITE,TOUCHBIT \?CND72 ?THN79: PRINTR "You've bought enough to drink already." ?ELS74: FSET? FOOD,TOUCHBIT \?CND72 PRINTR "You've bought enough to eat already." ?CND72: GETP PLAYER,P?SOUTH ZERO? STACK \?ELS91 PRINTR "You don't have enough money." ?ELS91: IN? PER,HERE /?ELS95 PRINTI "You'd better talk to " CALL2 PRINTA,PER PRINTR " first." ?ELS95: GETP PLAYER,P?SOUTH SUB STACK,1 PUTP PLAYER,P?SOUTH,STACK EQUAL? OBJ,WINE-RED,WINE-WHITE \?ELS102 CALL CALL-FOR-PROP,CUP-A,WAITER POP '?ORTMP ZERO? ?ORTMP /?ORP106 PUSH ?ORTMP JUMP ?THN103 ?ORP106: CALL CALL-FOR-PROP,CUP-B,WAITER ?THN103: POP 'X MOVE OBJ,X PUTP OBJ,P?CAR,CAR-HERE PUTP OBJ,P?SIZE,FOOD-SIZE FSET OBJ,TOUCHBIT SET 'OBJ,X JUMP ?CND100 ?ELS102: PUTP OBJ,P?SIZE,FOOD-SIZE ?CND100: CALL2 TABLE?,HERE POP '?ORTMP ZERO? ?ORTMP /?ORP112 PUSH ?ORTMP JUMP ?THN109 ?ORP112: PUSH HERE ?THN109: MOVE OBJ,STACK PUTP OBJ,P?CAR,CAR-HERE FSET OBJ,TAKEBIT FSET OBJ,TOUCHBIT FCLEAR OBJ,NDESCBIT FCLEAR PER,TOUCHBIT PUTP PER,P?LDESC,29 CALL HE-SHE-IT,PER,TRUE-VALUE PRINTI " returns in an instant with " CALL2 PRINTA,OBJ PRINTI " and takes " PRINTC CURRENCY-SYMBOL PRINTR "1 from you." .FUNCT CUP-F EQUAL? PRSA,V?EMPTY,V?THROW-THROUGH,V?THROW-AT \?ELS5 LOC WINE-RED EQUAL? STACK,PRSO,PRSI \?CND6 MOVE WINE-RED,GLOBAL-OBJECTS ?CND6: LOC WINE-WHITE EQUAL? STACK,PRSO,PRSI \?CND9 MOVE WINE-WHITE,GLOBAL-OBJECTS ?CND9: CALL ROB,PRSO,HERE CALL ROB,PRSI,HERE EQUAL? PRSA,V?EMPTY \FALSE PRINTR "Okay." ?ELS5: EQUAL? PRSA,V?PUT-IN \FALSE EQUAL? PRSO,TOWEL-WAITER,NAPKIN,SCARF \FALSE EQUAL? PRSI,CUP-B,CUP-A \FALSE IN? WINE-RED,PRSI \FALSE CALL DO-INSTEAD-OF,WINE-RED,PRSI RTRUE .FUNCT WINE-PUT? EQUAL? PRSA,V?PUT \?ELS5 EQUAL? PRSI,TOWEL-WAITER,NAPKIN,SCARF \FALSE EQUAL? PRSO,WINE-RED \FALSE RETURN PRSI ?ELS5: EQUAL? PRSA,V?PUT-IN \FALSE EQUAL? PRSO,TOWEL-WAITER,NAPKIN,SCARF \FALSE EQUAL? PRSI,WINE-RED \FALSE RETURN PRSO .FUNCT WINE-F,OBJ EQUAL? PRSA,V?TAKE \?ELS5 LOC PRSO EQUAL? STACK,CUP-A,CUP-B \?ELS5 LOC PRSO CALL PERFORM,PRSA,STACK,PRSI RTRUE ?ELS5: CALL1 WINE-PUT? >OBJ ZERO? OBJ /?ELS9 LOC OBJ MOVE HANKY,STACK FSET HANKY,TAKEBIT MOVE OBJ,LIMBO-FWD FCLEAR OBJ,TAKEBIT MOVE WINE-RED,GLOBAL-OBJECTS PRINTI "The " PRINTD OBJ PRINTI " soaks up the wine, and the stain spreads to every nook and cranny. Within a minute, you have a decent imitation of a " PRINTD HANKY PRINTR "." ?ELS9: CALL2 FOOD-F,TRUE-VALUE RSTACK .FUNCT NO-FOOD-F,PER ZERO? ON-TRAIN /?ELS3 SET 'PER,WAITER JUMP ?CND1 ?ELS3: SET 'PER,WAITRESS ?CND1: EQUAL? PRSA,V?BUY,V?ASK-ABOUT \FALSE CALL2 START-SENTENCE,PER PRINTI " shakes" CALL HIM-HER-IT,PER,FALSE-VALUE,TRUE-VALUE CALL2 THIS-IS-IT,FOOD CALL2 THIS-IS-IT,PER PRINTR " head and points to the first item on the menu, which you find unreadable." .FUNCT TABLE?,RM EQUAL? RM,CAFE \?ELS5 RETURN COUNTER-CAFE ?ELS5: EQUAL? RM,BOOTH-1 \?ELS7 RETURN TABLE-1 ?ELS7: EQUAL? RM,BOOTH-2 \?ELS9 RETURN TABLE-2 ?ELS9: EQUAL? RM,BOOTH-3 \FALSE RETURN TABLE-3 .FUNCT LANGUAGE-F EQUAL? PRSA,V?LEARN,V?ANALYZE \FALSE PRINTR "Maybe you should have taken your company's offer to pay for language lessons before you started this trip. After all, English isn't spoken everywhere." .FUNCT GESTURE-F,P EQUAL? PRSA,V?LEARN,V?ANALYZE \?ELS5 PRINTR "Maybe you should have taken your company's offer to pay for gesture lessons before you started this trip. After all, English gestures aren't used everywhere." ?ELS5: EQUAL? PRSA,V?MAKE \FALSE ZERO? PRSI /?ELS12 FSET? PRSI,PERSONBIT \?ELS12 SET 'P,PRSI JUMP ?CND10 ?ELS12: CALL1 QCONTEXT-GOOD? ZERO? STACK /?ELS16 SET 'P,QCONTEXT JUMP ?CND10 ?ELS16: CALL FIND-FLAG,HERE,PERSONBIT,WINNER >P ZERO? P \?CND10 CALL2 NOT-CLEAR-WHOM,TRUE-VALUE RTRUE ?CND10: CALL2 START-SENTENCE,P CALL HE-SHE-IT,P,-1,STR?154 PRINTR " a gesture right back. Somehow it looks nastier than yours." .FUNCT GAME-F EQUAL? PRSA,V?READ,V?PLAY,V?EXAMINE \FALSE SET 'CLOCK-WAIT,TRUE-VALUE PRINTR "(You're doing it now!)" .FUNCT HEAD-F EQUAL? PRSA,V?NOD \?ELS5 CALL2 PERFORM,V?YES RTRUE ?ELS5: EQUAL? PRSA,V?SHAKE \FALSE CALL2 PERFORM,V?NO RTRUE .ENDI