leathergoddesses/verbs.zap

4062 lines
76 KiB
Plaintext

.FUNCT V-VERBOSE
SET 'VERBOSITY,2
PRINTI "Maximum verbosity."
CRLF
CRLF
CALL V-LOOK
RSTACK
.FUNCT V-BRIEF
SET 'VERBOSITY,1
PRINTR "Brief descriptions."
.FUNCT V-SUPER-BRIEF
SET 'VERBOSITY,0
PRINTR "Super-brief descriptions."
.FUNCT V-TAME
ZERO? NAUGHTY-LEVEL \?ELS5
PRINT ALREADY-IN-MODE
RTRUE
?ELS5: SET 'NAUGHTY-LEVEL,0
PRINTR "Tame descriptions. [Yawn.]"
.FUNCT V-SUGGESTIVE
EQUAL? NAUGHTY-LEVEL,1 \?ELS5
PRINT ALREADY-IN-MODE
RTRUE
?ELS5: SET 'NAUGHTY-LEVEL,1
PRINTR "Suggestive descriptions."
.FUNCT V-LEWD,ACCEPTABLE-AGE=0
EQUAL? NAUGHTY-LEVEL,2 \?ELS3
PRINT ALREADY-IN-MODE
RTRUE
?ELS3: GRTR? AGE,17 \?ELS5
SET 'ACCEPTABLE-AGE,TRUE-VALUE
JUMP ?CND1
?ELS5: PUTB P-LEXV,0,10
PRINTI "What is your age? >"
?PRG8: READ P-INBUF,P-LEXV
CRLF
CALL NUMBER?,P-LEXSTART
EQUAL? STACK,W?NUMBER \?ELS12
LESS? P-NUMBER,18 \?ELS15
SET 'AGE,P-NUMBER
LESS? P-NUMBER,5 \?ELS18
PRINTI "Precocious, aren't you! Unfortunately"
JUMP ?CND16
?ELS18: PRINTI "Sorry"
?CND16: PRINTI ", you must be at least 18 to enter LEWD mode."
CRLF
JUMP ?REP9
?ELS15: GRTR? P-NUMBER,120 \?ELS22
PRINTI "Bullpuckies. Tell the truth. >"
JUMP ?PRG8
?ELS22: GRTR? AGE,-1 \?ELS24
LESS? AGE,19 \?ELS24
PRINTI "Liar! You said before that you were "
PRINTN AGE
PRINT PERIOD-CR
JUMP ?REP9
?ELS24: SET 'AGE,P-NUMBER
PRINTI "Acceptable age. "
SET 'ACCEPTABLE-AGE,TRUE-VALUE
JUMP ?REP9
?ELS12: PRINTI "Please tell me your age! >"
JUMP ?PRG8
?REP9: PUTB P-LEXV,0,60
?CND1: ZERO? ACCEPTABLE-AGE /FALSE
PRINTI "Switching to LEWD level."
CRLF
SET 'NAUGHTY-LEVEL,2
RETURN NAUGHTY-LEVEL
.FUNCT V-SAVE
EQUAL? HERE,AUDIENCE-CHAMBER \?CND1
ZERO? RIDDLE-ANSWERED \?CND1
PRINTI """Oh, all right,"" says"
CALL TPRINT,SULTAN
PRINTI ", ""I'll bend the rules a tad. You may SAVE."""
CRLF
CRLF
?CND1: SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
SAVE \?ELS10
PRINT OK
RTRUE
?ELS10: PRINT FAILED
RTRUE
.FUNCT V-RESTORE
RESTORE \?ELS5
PRINT OK
RTRUE
?ELS5: PRINT FAILED
RTRUE
.FUNCT TELL-SCORE
PRINTI "In "
PRINTN MOVES
PRINTI " turn"
EQUAL? MOVES,1 /?CND1
PRINTI "s"
?CND1: PRINTI ", you have achieved a score of, um, oh, call it "
PRINTN SCORE
PRINTI " out of "
PRINTN EXT-MAX
PRINTI " points. This gives you the rank of "
ZERO? MALE /?ELS6
GET MALE-RANKS,RANK
PRINT STACK
JUMP ?CND4
?ELS6: GET FEMALE-RANKS,RANK
PRINT STACK
?CND4: PRINT PERIOD-CR
RTRUE
.FUNCT V-SCRIPT
GET 0,8
BOR STACK,1
PUT 0,8,STACK
CALL CORP-NOTICE,STR?34
CALL V-VERSION
RSTACK
.FUNCT V-UNSCRIPT
CALL CORP-NOTICE,STR?35
CALL V-VERSION
GET 0,8
BAND STACK,-2
PUT 0,8,STACK
RTRUE
.FUNCT CORP-NOTICE,STRING
PRINTI "Here "
PRINT STRING
PRINTI " a transcript of interaction with "
PRINT LGOP-CAPS
PRINT PERIOD-CR
RTRUE
.FUNCT V-DIAGNOSE
FSET? CELL,TOUCHBIT /?ELS3
PRINTI "You're pretty drunk"
CALL RUNNING?,I-URGE
ZERO? STACK /?CND1
PRINTI ", and your bladder is about to burst"
JUMP ?CND1
?ELS3: GRTR? ION-DEATH-COUNTER,0 \?ELS8
PRINTI "You now have a "
GET ION-TABLE,ION-DEATH-COUNTER
PRINT STACK
PRINTI " headache"
JUMP ?CND1
?ELS8: FSET? CATACOMBS,MUNGBIT \?ELS10
CALL IN-CATACOMBS
ZERO? STACK /?ELS10
PRINTI "You have some tiny wounds"
JUMP ?CND1
?ELS10: ZERO? GONE-APE /?ELS18
EQUAL? SUGAR-RUSH,GORILLA-ATE-CHOCOLATE /?THN15
?ELS18: ZERO? GONE-APE \?ELS14
EQUAL? SUGAR-RUSH,HUMAN-ATE-CHOCOLATE \?ELS14
?THN15: PRINTI "You're experiencing a sugar rush"
JUMP ?CND1
?ELS14: EQUAL? HERE,RUINED-CASTLE-2 \?ELS22
FSET? HERE,MUNGBIT \?ELS22
ZERO? NAUGHTY-LEVEL /?ELS22
PRINTI "You feel "
EQUAL? NAUGHTY-LEVEL,1 \?ELS27
PRINTI "sexually unsatisfied"
JUMP ?CND1
?ELS27: PRINTI "horny"
JUMP ?CND1
?ELS22: EQUAL? HERE,IN-SPACE \?ELS31
FSET? WHITE-SUIT,WORNBIT /?ELS31
PRINTI "Brrr"
JUMP ?CND1
?ELS31: PRINTI "You are in good health"
ZERO? GONE-APE /?CND1
PRINTI " (for a gorilla)"
?CND1: PRINT PERIOD-CR
RTRUE
.FUNCT V-INVENTORY
ZERO? GONE-APE /?ELS5
FIRST? PROTAGONIST /?ELS5
PRINTR "You are empty-pawed."
?ELS5: CALL DESCRIBE-CONTENTS,PROTAGONIST,FALSE-VALUE
CALL ULTIMATELY-IN?,FLASHLIGHT
ZERO? STACK /?CND10
EQUAL? HERE,JOES-BAR,MENS-ROOM,LADIES-ROOM \?CND10
PRINTI " It's not clear why you've carried"
CALL APRINT,FLASHLIGHT
PRINTI " into "
PRINTD JOES-BAR
PRINTI ", except that the lighting in the bathrooms isn't too reliable."
?CND10: CRLF
RTRUE
.FUNCT V-QUIT
CALL TELL-SCORE
CALL DO-YOU-WISH,STR?36
CALL YES?
ZERO? STACK /?ELS5
QUIT
RTRUE
?ELS5: PRINT OK
RTRUE
.FUNCT V-RESTART
CALL TELL-SCORE
CALL DO-YOU-WISH,STR?37
CALL YES?
ZERO? STACK /FALSE
PRINTI "Restarting."
CRLF
RESTART
PRINT FAILED
RTRUE
.FUNCT DO-YOU-WISH,STRING
CRLF
PRINTI "Do you wish to "
PRINT STRING
PRINTI "? (Y is affirmative): "
RTRUE
.FUNCT YES?
?FCN: PRINTI ">"
READ P-INBUF,P-LEXV
GET P-LEXV,1
CALL YES-WORD,STACK
ZERO? STACK \TRUE
GET P-LEXV,1
CALL NO-WORD,STACK
ZERO? STACK \FALSE
GET P-LEXV,1
EQUAL? STACK,W?N /FALSE
PRINTI "Please answer YES or NO. "
JUMP ?FCN
.FUNCT FINISH,REPEATING=0,CNT=0
?PRG1: CRLF
ZERO? REPEATING \?CND3
SET 'REPEATING,TRUE-VALUE
CALL TELL-SCORE
?CND3: PRINTI "Would you like to start over, restore a saved position, or end this session of the game?
(Type RESTART, RESTORE, or QUIT): >"
PUTB P-LEXV,0,10
READ P-INBUF,P-LEXV
PUTB P-LEXV,0,60
INC 'CNT
GET P-LEXV,1
EQUAL? STACK,W?RESTAR \?ELS8
RESTART
PRINT FAILED
JUMP ?PRG1
?ELS8: GET P-LEXV,1
EQUAL? STACK,W?RESTOR \?ELS10
RESTORE /?ELS10
PRINT FAILED
JUMP ?PRG1
?ELS10: GET P-LEXV,1
EQUAL? STACK,W?QUIT,W?Q /?THN15
GRTR? CNT,10 \?PRG1
?THN15: QUIT
JUMP ?PRG1
.FUNCT V-STATUS
PRINTI "You are currently in "
ZERO? NAUGHTY-LEVEL \?ELS3
PRINTI "tame"
JUMP ?CND1
?ELS3: EQUAL? NAUGHTY-LEVEL,1 \?ELS5
PRINTI "suggestive"
JUMP ?CND1
?ELS5: PRINTI "lewd"
?CND1: PRINTI " mode and are getting "
ZERO? VERBOSITY \?ELS10
PRINTI "super-brief"
JUMP ?CND8
?ELS10: EQUAL? VERBOSITY,1 \?ELS12
PRINTI "brief"
JUMP ?CND8
?ELS12: PRINTI "verbose"
?CND8: PRINTI " descriptions. "
CALL TELL-SCORE
RSTACK
.FUNCT V-VERSION,CNT=17,V
GET 0,1
BAND STACK,2047 >V
PRINT LGOP-CAPS
CRLF
PRINTI "Infocom interactive fiction -- a racy space-age spoof
Copyright (c) 1986 by Infocom, Inc. All rights reserved.
"
PRINT LGOP-CAPS
PRINTI " is a trademark of Infocom, Inc.
Release "
PRINTN V
PRINTI " / Serial number "
?PRG1: IGRTR? 'CNT,23 \?ELS5
JUMP ?REP2
?ELS5: GETB 0,CNT
PRINTC STACK
JUMP ?PRG1
?REP2: CRLF
RTRUE
.FUNCT V-$COMMAND
DIRIN 1
RTRUE
.FUNCT V-$RANDOM
EQUAL? PRSO,INTNUM /?ELS5
PRINTR "ILLEGAL."
?ELS5: SUB 0,P-NUMBER
RANDOM STACK
RTRUE
.FUNCT V-$RECORD
DIROUT D-RECORD-ON
RTRUE
.FUNCT V-$UNRECORD
DIROUT D-RECORD-OFF
RTRUE
.FUNCT V-$VERIFY
EQUAL? PRSO,INTNUM \?ELS5
EQUAL? P-NUMBER,69 \?ELS5
PRINTN SERIAL
CRLF
RTRUE
?ELS5: PRINTI "Verifying."
CRLF
VERIFY \?ELS14
PRINT OK
RTRUE
?ELS14: CRLF
PRINTR "** Bad **"
.FUNCT V-ALARM
EQUAL? PRSO,ROOMS \?ELS5
CALL PERFORM-PRSA,ME
RTRUE
?ELS5: PRINTI "But"
CALL TPRINT-PRSO
PRINTR " isn't asleep."
.FUNCT V-ANSWER
ZERO? AWAITING-REPLY /?ELS5
GET P-LEXV,P-CONT
CALL YES-WORD,STACK
ZERO? STACK /?ELS5
CALL V-YES
CALL STOP
RSTACK
?ELS5: ZERO? AWAITING-REPLY /?ELS9
GET P-LEXV,P-CONT
CALL NO-WORD,STACK
ZERO? STACK /?ELS9
CALL V-NO
CALL STOP
RSTACK
?ELS9: CALL RUNNING?,I-SNEEZE
ZERO? STACK /?ELS13
CALL RIDDLE-ANSWER
RSTACK
?ELS13: IN? HAREM-GUARD,HERE \?ELS15
CALL PICK-WIFE
RSTACK
?ELS15: PRINTI "Nobody is awaiting your answer."
CRLF
CALL STOP
RSTACK
.FUNCT V-ANSWER-KLUDGE
CALL NOUN-USED,W?I,ME
ZERO? STACK /?ELS5
CALL V-INVENTORY
RSTACK
?ELS5: SET 'P-WON,FALSE-VALUE
PRINT NO-VERB
CALL STOP
RSTACK
.FUNCT ORPHAN-VERB
EQUAL? HERE,AUDIENCE-CHAMBER,BEDROOM /?CND1
SET 'AWAITING-FAKE-ORPHAN,FALSE-VALUE
RFALSE
?CND1: PUT P-VTBL,0,W?ZZMGCK
PUT P-OVTBL,0,W?ANSWER
PUT P-OTBL,P-VERB,ACT?ZZMGCK
PUT P-OTBL,P-VERBN,P-VTBL
PUT P-OTBL,P-PREP1,0
PUT P-OTBL,P-PREP1N,0
PUT P-OTBL,P-PREP2,0
PUT P-OTBL,5,0
PUT P-OTBL,P-NC1,1
PUT P-OTBL,P-NC1L,0
PUT P-OTBL,P-NC2,0
PUT P-OTBL,P-NC2L,0
SET 'P-OFLAG,TRUE-VALUE
RETURN P-OFLAG
.FUNCT V-APPLAUD
CALL IN-CATACOMBS
ZERO? STACK /?CND1
CALL QUEUE,I-BEETLES,6
?CND1: PRINTR "Clap."
.FUNCT V-APPLY
FSET? PRSO,WEARBIT \?ELS5
CALL PERFORM,V?WEAR,PRSO
RTRUE
?ELS5: SET 'AWAITING-REPLY,2
CALL QUEUE,I-REPLY,2
PRINTI "Apply"
CALL TPRINT-PRSO
PRINTR " for what? A job?"
.FUNCT PRE-SPEAK
ZERO? GONE-APE /?ELS5
PRINTI "You open "
PRINTD MOUTH
PRINTI " to speak, but all that comes out are a few grunts."
CRLF
CALL STOP
RSTACK
?ELS5: FSET? EARS,MUNGBIT \FALSE
PRINT YOU-CANT
PRINTI "carry on a conversation when "
PRINTD EARS
PRINTI " are"
EQUAL? EARS,HAND-COVER \?ELS11
PRINTI " covered"
JUMP ?CND9
?ELS11: PRINTI " plugged up"
?CND9: PRINT PERIOD-CR
CALL STOP
RSTACK
.FUNCT V-ASK-ABOUT,OWINNER
EQUAL? PRSO,ME \?ELS5
CALL PERFORM,V?TELL,ME
RTRUE
?ELS5: FSET? PRSO,ACTORBIT /?THN8
EQUAL? PRSO,INTNUM \?ELS7
EQUAL? P-NUMBER,CHOICE-NUMBER \?ELS7
IN? SULTANS-WIFE,HERE \?ELS7
?THN8: SET 'OWINNER,WINNER
SET 'WINNER,PRSO
CALL PERFORM,V?TELL-ABOUT,ME,PRSI
SET 'WINNER,OWINNER
CALL THIS-IS-IT,PRSI
CALL THIS-IS-IT,PRSO
RTRUE
?ELS7: CALL PERFORM,V?TELL,PRSO
RTRUE
.FUNCT V-ASK-FOR
PRINTI "Unsurprisingly,"
CALL TPRINT-PRSO
PRINTR " doesn't oblige."
.FUNCT V-ASK-NO-ONE-FOR,ACTOR
CALL FIND-IN,HERE,ACTORBIT >ACTOR
ZERO? ACTOR /?ELS5
CALL PERFORM,V?ASK-FOR,ACTOR,PRSO
RTRUE
?ELS5: CALL NO-ONE-HERE,STR?38
RSTACK
.FUNCT V-BARTER-WITH
FSET? PRSO,ACTORBIT \?ELS5
PRINTI "But"
CALL TPRINT-PRSO
PRINTR " has nothing worth trading for."
?ELS5: CALL IMPOSSIBLES
RSTACK
.FUNCT V-BARTER-FOR
CALL IMPOSSIBLES
RSTACK
.FUNCT V-BEND
EQUAL? P-PRSA-WORD,W?SPREAD \?ELS5
FSET? PRSO,ACTORBIT \?ELS10
CALL V-BOARD
RSTACK
?ELS10: CALL HACK-HACK,STR?39
RSTACK
?ELS5: CALL HACK-HACK,STR?40
RSTACK
.FUNCT V-BITE
CALL HACK-HACK,STR?41
RSTACK
.FUNCT V-BLOW
FSET? PRSO,ACTORBIT \?ELS5
CALL PERFORM,V?EAT,PRSO
RTRUE
?ELS5: CALL CANT-VERB-A-PRSO,STR?42
RSTACK
.FUNCT PRE-BOARD
IN? PROTAGONIST,PRSO \?ELS5
PRINT LOOK-AROUND
RTRUE
?ELS5: CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?ELS7
EQUAL? PRSO,FLEXIBLE-HOLE /?ELS7
PRINT HOLDING-IT
RTRUE
?ELS7: CALL UNTOUCHABLE?,PRSO
ZERO? STACK /FALSE
CALL CANT-REACH,PRSO
RSTACK
.FUNCT V-BOARD,AV
LOC PROTAGONIST >AV
FSET? PRSO,VEHBIT \?ELS5
LOC PRSO
EQUAL? STACK,HERE,LOCAL-GLOBALS /?CND6
PRINT YOU-CANT
PRINTI "board"
CALL TPRINT-PRSO
PRINTI " when it's "
LOC PRSO
FSET? STACK,SURFACEBIT \?ELS11
PRINTI "on"
JUMP ?CND9
?ELS11: PRINTI "in"
?CND9: LOC PRSO
CALL TRPRINT,STACK
RTRUE
?CND6: MOVE PROTAGONIST,PRSO
PRINTI "You are now "
FSET? PRSO,INBIT \?ELS16
PRINTI "i"
JUMP ?CND14
?ELS16: PRINTI "o"
?CND14: PRINTI "n"
CALL TPRINT-PRSO
PRINTI "."
IN? SIDEKICK,HERE \?CND19
EQUAL? PRSO,STALLION,RAFT,BARGE /?THN24
EQUAL? PRSO,TREE-HOLE \?CND19
?THN24: MOVE SIDEKICK,PRSO
PRINTI " "
CALL DPRINT-SIDEKICK
PRINTI " gets "
FSET? PRSO,INBIT \?ELS28
PRINTI "i"
JUMP ?CND26
?ELS28: PRINTI "o"
?CND26: PRINTI "n behind you."
?CND19: EQUAL? PRSO,BARGE \?CND31
FSET? BARGE,TOUCHBIT /?CND31
PRINTI " You notice some simple controls."
?CND31: FSET PRSO,TOUCHBIT
CRLF
RTRUE
?ELS5: FSET? PRSO,ACTORBIT \?ELS37
PRINTR "Let's not beat around the bush. Come out and say what you mean."
?ELS37: GET P-ITBL,P-PREP1
EQUAL? STACK,PR?IN \?ELS39
CALL CANT-VERB-A-PRSO,STR?43
RSTACK
?ELS39: CALL CANT-VERB-A-PRSO,STR?44
RSTACK
.FUNCT V-BOARD-DIR
CALL RECOGNIZE
RSTACK
.FUNCT V-BURN
ZERO? PRSI \?CND1
CALL ULTIMATELY-IN?,TORCH
ZERO? STACK /?ELS6
FSET? TORCH,ONBIT \?ELS6
SET 'PRSI,TORCH
PRINTI "[with the torch]"
CRLF
JUMP ?CND1
?ELS6: PRINTR "You have no source of fire."
?CND1: EQUAL? PRSI,TORCH \?THN16
FSET? TORCH,ONBIT /?ELS15
?THN16: PRINT YOU-CANT
PRINTI "burn something with"
CALL ARPRINT,PRSI
RSTACK
?ELS15: EQUAL? PRSO,SHEET \?ELS19
ZERO? SHEET-TIED /?ELS19
CALL DO-FIRST,STR?45,PRSO
RSTACK
?ELS19: IN? PROTAGONIST,PRSO \?ELS23
CALL DO-FIRST,STR?46,PRSO
RSTACK
?ELS23: CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?ELS25
CALL DO-FIRST,STR?47,PRSO
RSTACK
?ELS25: FSET? PRSO,BURNBIT \?ELS27
EQUAL? PRSO,LEAVES \?CND28
ZERO? LEAVES-PLACED /?CND28
SET 'PRSO,TRELLIS
?CND28: REMOVE PRSO
PRINTI "In an instant,"
CALL TPRINT-PRSO
EQUAL? PRSO,TRELLIS \?ELS35
ZERO? LEAVES-PLACED /?ELS35
REMOVE LEAVES
SET 'LEAVES-PLACED,FALSE-VALUE
PRINTI " and leaves are"
JUMP ?CND33
?ELS35: PRINTI " is"
?CND33: EQUAL? PRSO,TRELLIS \?ELS42
CALL UNDO-TRAP
JUMP ?CND40
?ELS42: EQUAL? PRSO,LEAVES \?CND40
SET 'LEAVES-PLACED,FALSE-VALUE
?CND40: PRINTR " consumed by fire."
?ELS27: CALL CANT-VERB-A-PRSO,STR?48
RSTACK
.FUNCT V-BUY
PRINTR "Sorry, there aren't any on sale here."
.FUNCT V-BUY-WITH
EQUAL? PRSI,TEN-MARSMID-COIN,ONE-MARSMID-COIN \?ELS5
CALL PERFORM,V?BUY,PRSO
RTRUE
?ELS5: PRINTI "That must be a queer planet you come from, where"
CALL APRINT,PRSI
PRINTR " is a unit of money."
.FUNCT V-CALL
EQUAL? HERE,VIZICOMM-BOOTH \?ELS5
CALL PERFORM,V?SET,VIZICOMM
RTRUE
?ELS5: CALL VISIBLE?,PRSO
ZERO? STACK \?ELS7
CALL CANT-SEE,PRSO
RSTACK
?ELS7: CALL PERFORM,V?TELL,PRSO
RTRUE
.FUNCT V-CAST-OFF
EQUAL? PRSO,ROOMS \?ELS5
LOC PROTAGONIST
CALL PERFORM,V?LAUNCH,STACK
RTRUE
?ELS5: CALL PERFORM,V?TAKE-OFF,PRSO
RTRUE
.FUNCT V-CATCH
PRINTR "The only thing you're good at catching is a cold."
.FUNCT V-CHASTISE
EQUAL? PRSO,INTDIR \?ELS5
PRINT YOULL-HAVE-TO
PRINTR "go in that direction to see what's there."
?ELS5: PRINTR "Use prepositions to indicate precisely what you want to do: LOOK AT the object, LOOK INSIDE it, LOOK UNDER it, etc."
.FUNCT V-CHEER
EQUAL? PRSO,ROOMS \?ELS5
PRINT OK
RTRUE
?ELS5: PRINTI "Probably,"
CALL TPRINT-PRSO
PRINTR " is as happy as possible."
.FUNCT V-CLEAN
SET 'AWAITING-REPLY,2
CALL QUEUE,I-REPLY,2
PRINTR "Do you also do windows?"
.FUNCT V-CLICK
PRINTR """Click."""
.FUNCT V-CLIMB
EQUAL? PRSO,ROOMS \?ELS5
CALL DO-WALK,P?UP
RSTACK
?ELS5: CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?ELS7
PRINT HOLDING-IT
RTRUE
?ELS7: CALL IMPOSSIBLES
RSTACK
.FUNCT V-CLIMB-DOWN
EQUAL? PRSO,ROOMS \?ELS5
CALL DO-WALK,P?DOWN
RSTACK
?ELS5: CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?ELS7
PRINT HOLDING-IT
RTRUE
?ELS7: FSET? PRSO,ACTORBIT \?ELS9
EQUAL? P-PRSA-WORD,W?GO \?ELS9
CALL PERFORM,V?EAT,PRSO
RTRUE
?ELS9: CALL IMPOSSIBLES
RSTACK
.FUNCT V-CLIMB-ON
FSET? PRSO,VEHBIT /?THN6
FSET? PRSO,ACTORBIT \?ELS5
?THN6: CALL PERFORM,V?BOARD,PRSO
RTRUE
?ELS5: CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?ELS9
PRINT HOLDING-IT
RTRUE
?ELS9: GET P-ITBL,P-PREP1
EQUAL? STACK,PR?IN \?ELS11
CALL CANT-VERB-A-PRSO,STR?49
RSTACK
?ELS11: CALL CANT-VERB-A-PRSO,STR?50
RSTACK
.FUNCT V-CLIMB-OVER
CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?ELS5
PRINT HOLDING-IT
RTRUE
?ELS5: CALL IMPOSSIBLES
RSTACK
.FUNCT V-CLIMB-UP
EQUAL? PRSO,ROOMS \?ELS5
CALL DO-WALK,P?UP
RSTACK
?ELS5: CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?ELS7
PRINT HOLDING-IT
RTRUE
?ELS7: CALL IMPOSSIBLES
RSTACK
.FUNCT V-CLOSE
FSET? PRSO,SURFACEBIT /?THN6
FSET? PRSO,ACTORBIT /?THN6
FSET? PRSO,VEHBIT \?ELS5
?THN6: CALL CANT-VERB-A-PRSO,STR?51
RSTACK
?ELS5: FSET? PRSO,DOORBIT /?THN10
FSET? PRSO,CONTBIT \?ELS9
?THN10: FSET? PRSO,OPENBIT \?ELS16
FCLEAR PRSO,OPENBIT
PRINTI "Okay,"
CALL TPRINT-PRSO
PRINTI " is now closed."
CRLF
CALL NOW-DARK?
RSTACK
?ELS16: PRINT ALREADY-IS
RTRUE
?ELS9: CALL CANT-VERB-A-PRSO,STR?51
RSTACK
.FUNCT V-COME
ZERO? NAUGHTY-LEVEL \?ELS5
PRINTR "Go."
?ELS5: PRINTR "You're not even breathing hard."
.FUNCT V-COPULATE,LOVER=0
CALL FIND-IN,HERE,ACTORBIT,STR?52 >LOVER
ZERO? LOVER /?ELS5
CALL PERFORM,V?FUCK,LOVER
RTRUE
?ELS5: CALL PERFORM,V?MAKE,LOVE
RTRUE
.FUNCT V-COUNT
CALL IMPOSSIBLES
RSTACK
.FUNCT V-CRAWL-UNDER
FSET? PRSO,TAKEBIT /?ELS5
CALL TELL-HIT-HEAD
RSTACK
?ELS5: CALL IMPOSSIBLES
RSTACK
.FUNCT V-CROSS
CALL V-WALK-AROUND
RSTACK
.FUNCT V-CUT
ZERO? PRSI \?ELS5
CALL IMPOSSIBLES
RSTACK
?ELS5: PRINTI "To put it bluntly, neither"
CALL TPRINT-PRSI
PRINTR " nor you are very sharp."
.FUNCT V-DECODE
PRINT YOULL-HAVE-TO
PRINTR "figure it out yourself."
.FUNCT V-DEFLATE
CALL IMPOSSIBLES
RSTACK
.FUNCT V-DIG
CALL WASTES
RSTACK
.FUNCT V-DISEMBARK
ZERO? PRSO \?ELS5
IN? PROTAGONIST,HERE /?ELS10
LOC PROTAGONIST
CALL PERFORM-PRSA,STACK
RTRUE
?ELS10: PRINT LOOK-AROUND
RTRUE
?ELS5: EQUAL? P-PRSA-WORD,W?TAKE \?ELS14
CALL PERFORM,V?TAKE,PRSO
RTRUE
?ELS14: IN? PROTAGONIST,PRSO /?ELS16
PRINT LOOK-AROUND
RETURN 8
?ELS16: EQUAL? HERE,CANAL \?ELS20
CALL PERFORM,V?ENTER,CANAL-OBJECT
RTRUE
?ELS20: MOVE PROTAGONIST,HERE
PRINTI "You"
IN? SIDEKICK,PRSO \?CND23
MOVE SIDEKICK,HERE
PRINTI " and "
CALL DPRINT-SIDEKICK
?CND23: PRINTI " get o"
CALL OFF-VEHICLE?,PRSO
ZERO? STACK /?ELS28
PRINTI "ff"
JUMP ?CND26
?ELS28: PRINTI "ut of"
?CND26: CALL TPRINT-PRSO
PRINTI "."
IN? SIDEKICK,SECOND-SLAB \?CND31
MOVE SIDEKICK,HERE
PRINTI " You also "
ZERO? SIDEKICKS-BODY-TIED-TO-SLAB /?ELS36
PRINTI "untie "
CALL DPRINT-SIDEKICK
PRINTI " and help "
CALL HIM-HER
JUMP ?CND34
?ELS36: PRINTI "help "
CALL DPRINT-SIDEKICK
?CND34: PRINTI " up from"
CALL TPRINT,SECOND-SLAB
PRINTI "."
?CND31: CRLF
RTRUE
.FUNCT V-DRESS
ZERO? PRSO /?ELS5
FSET? PRSO,ACTORBIT \?ELS11
FSET? PRSO,FEMALEBIT \?ELS14
PRINTI "Sh"
JUMP ?CND12
?ELS14: PRINTI "H"
?CND12: PRINTR "e is dressed!"
?ELS11: CALL IMPOSSIBLES
RSTACK
?ELS5: SET 'PRSO,ROOMS
CALL V-GET-DRESSED
RSTACK
.FUNCT V-DRINK
CALL CANT-VERB-A-PRSO,STR?53
RSTACK
.FUNCT V-DRINK-FROM
CALL IMPOSSIBLES
RSTACK
.FUNCT V-DROP
CALL SPECIAL-DROP
ZERO? STACK \FALSE
LOC PROTAGONIST
EQUAL? STACK,BARGE,RAFT /?THN9
LOC PROTAGONIST
EQUAL? STACK,TREE-HOLE,CAGE \?ELS8
?THN9: LOC PROTAGONIST
MOVE PRSO,STACK
JUMP ?CND6
?ELS8: MOVE PRSO,HERE
?CND6: PRINTR "Dropped."
.FUNCT SPECIAL-DROP
CALL IN-CATACOMBS
ZERO? STACK /?ELS5
REMOVE PRSO
PRINTI "With a splash,"
CALL TPRINT-PRSO
PRINTR " is lost forever."
?ELS5: CALL IN-SPACE?
ZERO? STACK /?ELS7
MOVE PRSO,PROTAGONIST
PRINTI "In the absence of gravity,"
CALL TPRINT-PRSO
PRINTI " floats back into "
PRINTD HANDS
PRINTR "s."
?ELS7: EQUAL? HERE,EXIT-SHOP \?ELS9
MOVE PRSO,DUST
PRINTI "You lose"
CALL TPRINT-PRSO
PRINTR " in the dust."
?ELS9: EQUAL? PRSO,TORCH \FALSE
FSET? TORCH,ONBIT \FALSE
IN? PROTAGONIST,BARGE \FALSE
CALL PERFORM,V?PUT,TORCH,BARGE
RTRUE
.FUNCT V-EAT
FSET? PRSO,ACTORBIT \?ELS5
ZERO? GONE-APE \?ELS5
ZERO? NAUGHTY-LEVEL /?ELS5
PRINTI "As you try,"
CALL TPRINT-PRSO
PRINTI " slaps you across the face."
EQUAL? PRSO,FEMALE-GORILLA,MALE-GORILLA /?CND8
PRINTI " ""Really, we hardly know each other."""
?CND8: CRLF
RTRUE
?ELS5: PRINTI "While the foodstuffs of the universe are many and varied,"
CALL APRINT,PRSO
FSET? PRSO,PLURALBIT \?ELS15
PRINTI " are"
JUMP ?CND13
?ELS15: PRINTI " is"
?CND13: PRINTR " not one of them."
.FUNCT V-EMPTY,OBJ,NXT
ZERO? PRSI \?CND1
SET 'PRSI,GROUND
?CND1: FSET? PRSO,CONTBIT /?ELS8
PRINT HUH
RTRUE
?ELS8: FSET? PRSO,OPENBIT /?ELS10
PRINTI "But"
CALL TPRINT-PRSO
PRINTR " isn't open."
?ELS10: FIRST? PRSO /?ELS12
PRINTI "But"
CALL TPRINT-PRSO
PRINTR " is already empty!"
?ELS12: FIRST? PRSO /?KLU50
?KLU50: EQUAL? PRSI,STACK \?ELS14
NEXT? PRSI /?ELS14
PRINT THERES-NOTHING
PRINTI "in"
CALL TPRINT-PRSO
PRINTI " but"
CALL TRPRINT,PRSI
RSTACK
?ELS14: CALL IN-SPACE?
ZERO? STACK /?ELS18
PRINT YOU-CANT
PRINTI "empty"
CALL TPRINT-PRSO
PRINTR " without gravity!"
?ELS18: FIRST? PRSO >OBJ /?KLU51
?KLU51:
?PRG21: NEXT? OBJ >NXT /?KLU52
?KLU52: EQUAL? OBJ,PROTAGONIST /?CND23
CALL DPRINT,OBJ
PRINTI ": "
EQUAL? PRSI,TRELLIS \?ELS28
EQUAL? OBJ,LEAVES \?ELS28
CALL PERFORM,V?PUT-ON,LEAVES,TRELLIS
JUMP ?CND23
?ELS28: FSET? OBJ,TAKEBIT \?ELS32
MOVE OBJ,PROTAGONIST
EQUAL? PRSI,HANDS \?ELS35
PRINTI "Taken."
CRLF
JUMP ?CND26
?ELS35: EQUAL? PRSI,GROUND \?ELS37
CALL PERFORM,V?DROP,OBJ
JUMP ?CND26
?ELS37: FSET? PRSI,SURFACEBIT \?ELS39
CALL PERFORM,V?PUT-ON,OBJ,PRSI
JUMP ?CND26
?ELS39: CALL PERFORM,V?PUT,OBJ,PRSI
JUMP ?CND26
?ELS32: CALL YUKS
?CND26:
?CND23: ZERO? NXT /TRUE
SET 'OBJ,NXT
JUMP ?PRG21
.FUNCT V-EMPTY-FROM
IN? PRSO,PRSI \?ELS5
FSET? PRSO,TAKEBIT \?ELS10
MOVE PRSO,PROTAGONIST
CALL PERFORM,V?DROP,PRSO
RTRUE
?ELS10: CALL YUKS
RSTACK
?ELS5: CALL NOT-IN
RSTACK
.FUNCT V-ENTER
FSET? PRSO,DOORBIT \?ELS5
CALL OTHER-SIDE,PRSO
CALL DO-WALK,STACK
RTRUE
?ELS5: FSET? PRSO,VEHBIT \?ELS7
CALL PERFORM,V?BOARD,PRSO
RTRUE
?ELS7: FSET? PRSO,ACTORBIT \?ELS9
CALL PERFORM,V?BOARD,PRSO
RTRUE
?ELS9: FSET? PRSO,TAKEBIT /?ELS11
CALL TELL-HIT-HEAD
RSTACK
?ELS11: CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?ELS13
PRINT HOLDING-IT
RTRUE
?ELS13: CALL IMPOSSIBLES
RSTACK
.FUNCT V-EXAMINE
FSET? PRSO,UNTEEDBIT \?ELS5
PRINTI "It looks just like"
CALL APRINT,PRSO
PRINTR ", whatever that is."
?ELS5: FSET? PRSO,ACTORBIT \?ELS7
FIRST? PRSO \?ELS12
CALL PERFORM,V?LOOK-INSIDE,PRSO
RTRUE
?ELS12: CALL NOTHING-INTERESTING
PRINTI "about"
CALL TRPRINT,PRSO
RSTACK
?ELS7: FSET? PRSO,DOORBIT /?THN17
FSET? PRSO,SURFACEBIT \?ELS16
?THN17: CALL V-LOOK-INSIDE
RSTACK
?ELS16: FSET? PRSO,CONTBIT \?ELS20
FSET? PRSO,OPENBIT \?ELS25
CALL V-LOOK-INSIDE
RSTACK
?ELS25: PRINTR "It's closed."
?ELS20: FSET? PRSO,LIGHTBIT \?ELS29
PRINTI "It's o"
FSET? PRSO,ONBIT \?ELS32
PRINTI "n"
JUMP ?CND30
?ELS32: PRINTI "ff"
?CND30: PRINT PERIOD-CR
RTRUE
?ELS29: FSET? PRSO,READBIT \?ELS36
CALL PERFORM,V?READ,PRSO
RTRUE
?ELS36: FSET? PRSO,NARTICLEBIT \?ELS38
CALL SENSE-OBJECT,STR?54
RSTACK
?ELS38: RANDOM 100
LESS? 25,STACK \?THN41
EQUAL? PRSO,PSEUDO-OBJECT \?ELS40
?THN41: PRINTI "Totally ordinary looking "
CALL DPRINT,PRSO
PRINT PERIOD-CR
RTRUE
?ELS40: RANDOM 100
LESS? 60,STACK /?ELS44
CALL NOTHING-INTERESTING
PRINTI "about"
CALL TRPRINT,PRSO
RSTACK
?ELS44: CALL PRONOUN
PRINTI " look"
FSET? PRSO,PLURALBIT /?CND47
EQUAL? PRSO,ME /?CND47
PRINTI "s"
?CND47: PRINTI " like every other "
CALL DPRINT,PRSO
PRINTR " you've ever seen."
.FUNCT NOTHING-INTERESTING
PRINT THERES-NOTHING
RANDOM 100
LESS? 25,STACK /?ELS3
PRINTI "unusual"
JUMP ?CND1
?ELS3: RANDOM 100
LESS? 33,STACK /?ELS5
PRINTI "noteworthy"
JUMP ?CND1
?ELS5: RANDOM 100
LESS? 50,STACK /?ELS7
PRINTI "eye-catching"
JUMP ?CND1
?ELS7: PRINTI "special"
?CND1: PRINTI " "
RTRUE
.FUNCT V-EXIT
ZERO? PRSO /?ELS5
FSET? PRSO,VEHBIT \?ELS5
CALL PERFORM,V?DISEMBARK,PRSO
RTRUE
?ELS5: CALL IN-EXITABLE-VEHICLE?
ZERO? STACK \FALSE
CALL DO-WALK,P?OUT
RSTACK
.FUNCT IN-EXITABLE-VEHICLE?,AV
LOC PROTAGONIST >AV
EQUAL? AV,RAFT,BARGE,CAGE /?THN6
EQUAL? AV,TREE-HOLE \FALSE
?THN6: LOC PROTAGONIST
CALL PERFORM,V?DISEMBARK,STACK
RTRUE
.FUNCT V-FEED
CALL ULTIMATELY-IN?,CHOCOLATE
ZERO? STACK /?ELS5
CALL PERFORM,V?GIVE,CHOCOLATE,PRSO
RTRUE
?ELS5: PRINTI "You have no food for"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-FILL
FSET? PRSO,CONTBIT /?ELS11
EQUAL? PRSO,CREAM,STAIN \?ELS11
FSET? STAIN,MUNGBIT \?ELS5
?ELS11: EQUAL? PRSI,WATER /?THN12
CALL GLOBAL-IN?,WATER,HERE
ZERO? STACK /?ELS5
?THN12: CALL WASTES
RSTACK
?ELS5: ZERO? PRSI \?ELS15
PRINT THERES-NOTHING
PRINTR "to fill it with."
?ELS15: CALL IMPOSSIBLES
RSTACK
.FUNCT V-FIND,WHERE=0,L
LOC PRSO >L
ZERO? L \?ELS5
CALL PRONOUN
PRINTR " could be anywhere!"
?ELS5: IN? PRSO,PROTAGONIST \?ELS7
PRINTR "You have it!"
?ELS7: IN? PRSO,HERE \?ELS9
PRINTR "Right in front of you."
?ELS9: IN? PRSO,GLOBAL-OBJECTS /?THN12
CALL GLOBAL-IN?,PRSO,HERE
ZERO? STACK \?THN12
EQUAL? PRSO,PSEUDO-OBJECT \?ELS11
?THN12: CALL V-DECODE
RSTACK
?ELS11: FSET? L,ACTORBIT \?ELS15
CALL VISIBLE?,L
ZERO? STACK /?ELS15
PRINTI "Looks as if"
CALL TPRINT,L
PRINTR " has it."
?ELS15: FSET? L,CONTBIT \?ELS19
CALL VISIBLE?,PRSO
ZERO? STACK /?ELS19
IN? L,GLOBAL-OBJECTS /?ELS19
FSET? L,SURFACEBIT \?ELS24
PRINTI "O"
JUMP ?CND22
?ELS24: FSET? L,VEHBIT \?ELS26
FSET? L,INBIT /?ELS26
PRINTI "O"
JUMP ?CND22
?ELS26: PRINTI "I"
?CND22: PRINTI "n"
CALL TRPRINT,L
RSTACK
?ELS19: ZERO? WHERE /?ELS32
PRINTR "Beats me."
?ELS32: CALL V-DECODE
RSTACK
.FUNCT V-FLUSH
PRINTR "It's your brain that needs flushing."
.FUNCT V-FOLLOW
CALL VISIBLE?,PRSO
ZERO? STACK /?ELS5
PRINTI "But"
CALL TPRINT-PRSO
PRINTR " is right here!"
?ELS5: FSET? PRSO,ACTORBIT /?ELS7
CALL IMPOSSIBLES
RSTACK
?ELS7: PRINTI "You have no idea where"
CALL TPRINT-PRSO
PRINTR " is."
.FUNCT I-FOLLOW
SET 'FOLLOW-FLAG,FALSE-VALUE
RFALSE
.FUNCT PRE-FUCK
GRTR? ION-DEATH-COUNTER,0 \FALSE
PRINTR "Not tonight; you have a headache."
.FUNCT V-FUCK
ZERO? NAUGHTY-LEVEL \?ELS5
PRINTR "Shocking! What if your mother saw you typing inputs like that?"
?ELS5: FSET? PRSO,ACTORBIT /?ELS7
PRINTR "Not in my game, you pansexual pervert!"
?ELS7: EQUAL? NAUGHTY-LEVEL,1 \?ELS9
PRINTI "Unfortunately,"
CALL TPRINT-PRSO
PRINTR " doesn't seem interested, and it takes two to tango."
?ELS9: PRINTI "A slap across the face alerts you that"
CALL TPRINT-PRSO
PRINTR " isn't that hot to trot. And not a goddam single cold shower in sight!"
.FUNCT PRE-GIVE
EQUAL? PRSA,V?GIVE \?ELS5
EQUAL? PRSO,HANDS \?ELS5
CALL PERFORM,V?SHAKE-WITH,PRSI
RTRUE
?ELS5: CALL IDROP
ZERO? STACK \TRUE
RFALSE
.FUNCT V-GET-DRESSED
EQUAL? PRSO,ROOMS \?ELS5
PRINTR "You are!"
?ELS5: CALL RECOGNIZE
RSTACK
.FUNCT V-GET-DRUNK
EQUAL? PRSO,ROOMS /?ELS5
CALL RECOGNIZE
RSTACK
?ELS5: EQUAL? HERE,JOES-BAR \?ELS7
CALL PERFORM,V?BUY,BEER
RTRUE
?ELS7: SET 'AWAITING-REPLY,2
CALL QUEUE,I-REPLY,2
PRINTR "Here?"
.FUNCT V-GET-UNDRESSED
EQUAL? PRSO,ROOMS \?ELS5
CALL PERFORM,V?TAKE-OFF,GARMENT
RTRUE
?ELS5: CALL RECOGNIZE
RSTACK
.FUNCT V-GIDDYAP
IN? STALLION,HERE \?ELS5
CALL PERFORM,V?KICK,STALLION
RTRUE
?ELS5: PRINT HUH
RTRUE
.FUNCT V-GIVE
FSET? PRSI,ACTORBIT \?ELS5
PRINTI "Briskly,"
CALL TPRINT-PRSI
PRINTR " refuses your offer."
?ELS5: PRINT YOU-CANT
PRINTI "give"
CALL APRINT,PRSO
PRINTI " to"
CALL APRINT,PRSI
PRINTR "!"
.FUNCT V-GIVE-UP
EQUAL? PRSO,ROOMS \?ELS5
CALL V-QUIT
RSTACK
?ELS5: CALL RECOGNIZE
RSTACK
.FUNCT V-HELLO
ZERO? PRSO /?ELS5
PRINTR "[The proper way to talk to characters in the story is PERSON, HELLO.]"
?ELS5: CALL PERFORM,V?TELL,ME
RTRUE
.FUNCT V-HELP
PRINTI "If you're in a bind, maps and hint booklets are available from your ""dealer,"" or via mail order with the form"
CALL IN-PACKAGE
CRLF
RTRUE
.FUNCT V-HIDE
PRINT YOU-CANT
PRINTI "hide "
ZERO? PRSO /?CND1
PRINTI "t"
?CND1: PRINTR "here."
.FUNCT V-HISS
CALL VISIBLE?,FLYTRAP
ZERO? STACK /?ELS5
FSET? FLYTRAP,MUNGBIT /?CND6
CALL INCREMENT-SCORE,2,15
?CND6: CALL DEQUEUE,I-FLYTRAP
REMOVE FLYTRAP
PRINTI "The "
PRINTD FLYTRAP
PRINTR " assumes the hissing is a spray can of weed killer, dies of fright, and is immediately consumed by parasites who live inside flytraps waiting for just such an occasion."
?ELS5: PRINTR """Ssss."""
.FUNCT V-IN,VEHICLE
CALL DO-WALK,P?IN
RSTACK
.FUNCT V-INFLATE
CALL IMPOSSIBLES
RSTACK
.FUNCT V-INHALE
ZERO? PRSO \?ELS5
PRINT OK
RTRUE
?ELS5: EQUAL? PRSO,ROOMS \?ELS7
PRINTR "You begin to get light-headed."
?ELS7: CALL RECOGNIZE
RSTACK
.FUNCT V-KICK
CALL HACK-HACK,STR?55
RSTACK
.FUNCT V-KILL
PRINTR "Relax."
.FUNCT V-KISS
PRINTR """Smack."""
.FUNCT V-KISS-ON
CALL V-KISS
RSTACK
.FUNCT V-KNEEL
EQUAL? P-PRSA-WORD,W?BOW \?ELS5
CALL SORE,STR?56
RSTACK
?ELS5: CALL PRE-POUR
ZERO? STACK \FALSE
CALL SORE,STR?57
RSTACK
.FUNCT V-KNOCK
FSET? PRSO,DOORBIT \?ELS5
PRINTR "Silence answers back."
?ELS5: CALL HACK-HACK,STR?58
RSTACK
.FUNCT V-KWEEPA
CALL IN-CATACOMBS
ZERO? STACK /?CND1
CALL QUEUE,I-GATOR,12
?CND1: PRINTR "A Martian hawk, hearing the cry of a possible mate, flies up and begins squawking and flapping a mating ritual. As it pauses to catch its breath, it takes a better look at you, rubs its eyes, and flies quickly away."
.FUNCT V-LAND
ZERO? PRSO \?ELS5
LOC PROTAGONIST
EQUAL? STACK,RAFT,BARGE \?ELS5
LOC PROTAGONIST
CALL PERFORM-PRSA,STACK
RTRUE
?ELS5: PRINT HUH
RTRUE
.FUNCT V-LAUGH
PRINTR """Tee hee."""
.FUNCT V-LAUNCH
PRINTR "Your brain is out to launch."
.FUNCT V-LEAP
EQUAL? PRSO,ROOMS /?THN6
ZERO? PRSO \?ELS5
?THN6: EQUAL? HERE,ROOF \?ELS12
CALL JIGS-UP,STR?59
RSTACK
?ELS12: EQUAL? HERE,CLOSET \?ELS14
PRINTR "You still can't reach the shelf."
?ELS14: EQUAL? HERE,ROCKY-CLIFFTOP,MINARET \?ELS16
CALL JIGS-UP,STR?60
RSTACK
?ELS16: CALL WEE
RSTACK
?ELS5: ZERO? PRSO /?ELS20
IN? PRSO,HERE /?ELS20
CALL IMPOSSIBLES
RSTACK
?ELS20: CALL WEE
RSTACK
.FUNCT V-LEAP-OFF
FSET? PRSO,VEHBIT \?ELS5
CALL PERFORM,V?DISEMBARK,PRSO
RTRUE
?ELS5: CALL PERFORM,V?LEAP,PRSO
RTRUE
.FUNCT V-LEAVE
ZERO? PRSO \?CND1
SET 'PRSO,ROOMS
?CND1: EQUAL? PRSO,ROOMS \?ELS8
CALL DO-WALK,P?OUT
RSTACK
?ELS8: IN? PROTAGONIST,PRSO \?ELS10
CALL PERFORM,V?DISEMBARK,PRSO
RTRUE
?ELS10: CALL PERFORM,V?DROP,PRSO
RTRUE
.FUNCT V-LICK
FSET? PRSO,ACTORBIT \?ELS5
CALL PERFORM,V?EAT,PRSO
RTRUE
?ELS5: CALL PERFORM,V?TASTE,PRSO
RTRUE
.FUNCT V-LIE-DOWN
EQUAL? HERE,BEDROOM \?CND1
EQUAL? PRSO,ROOMS \?CND1
SET 'PRSO,BED
?CND1: FSET? PRSO,VEHBIT /?THN11
FSET? PRSO,ACTORBIT \?ELS10
?THN11: CALL PERFORM,V?BOARD,PRSO
RTRUE
?ELS10: CALL WASTES
RSTACK
.FUNCT V-LIMBER
PRINTR "Ahhh. Nothing like a little muscle-loosening."
.FUNCT PRE-LISTEN
FSET? EARS,MUNGBIT \FALSE
ZERO? GONE-APE \FALSE
PRINTI "You hear the sound of "
EQUAL? EARS,HAND-COVER \?ELS10
PRINTI "sweating palms"
JUMP ?CND8
?ELS10: PRINTI "rustling cotton"
?CND8: PRINT PERIOD-CR
RTRUE
.FUNCT V-LISTEN
ZERO? PRSO /?ELS5
CALL SENSE-OBJECT,STR?61
RSTACK
?ELS5: EQUAL? HERE,BOUDOIR \?ELS8
CALL NOT-ALONE-ON-DIVAN
CRLF
RTRUE
?ELS8: PRINTR "You hear nothing of interest."
.FUNCT V-LOCK
CALL YUKS
RSTACK
.FUNCT PRE-LOOK
EQUAL? PRSA,V?EXAMINE \?ELS5
EQUAL? P-PRSA-WORD,W?DESCRIBE \?ELS5
EQUAL? PRSO,ODOR /FALSE
?ELS5: CALL PLAYER-CANT-SEE
ZERO? STACK \TRUE
RFALSE
.FUNCT V-LOOK
EQUAL? HAND-COVER,EYES \?ELS5
CALL UNIFORMLY-COLORED,STR?62,STR?63
RSTACK
?ELS5: FSET? EYES,MUNGBIT \?ELS7
CALL UNIFORMLY-COLORED,STR?64,STR?65
RSTACK
?ELS7: CALL DESCRIBE-ROOM,TRUE-VALUE
ZERO? STACK /TRUE
CALL DESCRIBE-OBJECTS
RTRUE
.FUNCT UNIFORMLY-COLORED,ROOM-NAME,STRING
PRINT ROOM-NAME
PRINTI " Room
This location is dim and uniformly colored, resembling what you see when you have your "
PRINT STRING
PRINTI ". In fact, you have your "
PRINT STRING
PRINT PERIOD-CR
RTRUE
.FUNCT V-LOOK-BEHIND
FSET? PRSO,DOORBIT \?CND1
CALL PERFORM,V?LOOK-INSIDE,PRSO
RTRUE
?CND1: PRINTI "There is nothing behind"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-LOOK-DOWN
EQUAL? PRSO,ROOMS \?ELS5
CALL PERFORM,V?EXAMINE,GROUND
RTRUE
?ELS5: CALL PERFORM,V?LOOK-INSIDE,PRSO
RTRUE
.FUNCT V-LOOK-INSIDE
FSET? PRSO,ACTORBIT \?ELS5
PRINT IT-SEEMS-THAT
CALL TPRINT-PRSO
PRINTI " has"
CALL DESCRIBE-NOTHING
ZERO? STACK \TRUE
PRINT PERIOD-CR
RTRUE
?ELS5: IN? PROTAGONIST,PRSO \?ELS10
CALL DESCRIBE-VEHICLE
RSTACK
?ELS10: FSET? PRSO,SURFACEBIT \?ELS12
PRINT YOU-SEE
CALL DESCRIBE-NOTHING
ZERO? STACK \TRUE
PRINTI " on"
CALL TRPRINT,PRSO
RTRUE
?ELS12: FSET? PRSO,DOORBIT \?ELS17
PRINTI "All you can tell is that"
CALL TPRINT-PRSO
PRINTI " is "
CALL OPEN-CLOSED,PRSO
PRINT PERIOD-CR
RTRUE
?ELS17: FSET? PRSO,CONTBIT \?ELS19
CALL SEE-INSIDE?,PRSO
ZERO? STACK /?ELS24
PRINT YOU-SEE
CALL DESCRIBE-NOTHING
ZERO? STACK \TRUE
PRINTI " in"
CALL TRPRINT,PRSO
RTRUE
?ELS24: FSET? PRSO,OPENBIT /?ELS29
FIRST? PRSO \?ELS29
CALL PRE-TOUCH
ZERO? STACK \TRUE
CALL PERFORM,V?OPEN,PRSO
RTRUE
?ELS29: CALL DO-FIRST,STR?66,PRSO
RSTACK
?ELS19: GET P-ITBL,P-PREP1
EQUAL? STACK,PR?IN \?ELS38
CALL CANT-VERB-A-PRSO,STR?67
RSTACK
?ELS38: PRINTI "Even Superman would have trouble seeing through"
CALL ARPRINT,PRSO
RSTACK
.FUNCT V-LOOK-OVER
CALL V-EXAMINE
RSTACK
.FUNCT V-LOOK-UNDER
CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?ELS5
FSET? PRSO,WORNBIT \?ELS10
PRINTR "You're wearing it!"
?ELS10: PRINT HOLDING-IT
RTRUE
?ELS5: CALL NOTHING-INTERESTING
PRINTI "under"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-LOOK-UP
EQUAL? PRSO,ROOMS \?ELS5
EQUAL? HERE,WELL-BOTTOM \?ELS10
PRINT YOU-SEE
PRINTR " a dot of light."
?ELS10: CALL IN-CATACOMBS
ZERO? STACK /?ELS12
PRINT ONLY-BLACKNESS
RTRUE
?ELS12: FSET? HERE,INDOORSBIT \?ELS14
CALL PERFORM,V?EXAMINE,CEILING
RTRUE
?ELS14: PRINTR "The sky is an inky black."
?ELS5: CALL PERFORM,V?LOOK-INSIDE,PRSO
RTRUE
.FUNCT V-LOVE
PRINTI "Not difficult, considering how lovable"
CALL TPRINT-PRSO
PRINTI " "
FSET? PRSO,PLURALBIT \?ELS3
PRINTI "are"
JUMP ?CND1
?ELS3: PRINTI "is"
?CND1: PRINT PERIOD-CR
RTRUE
.FUNCT V-LOWER
CALL V-RAISE
RSTACK
.FUNCT V-MAKE
CALL CANT-VERB-A-PRSO,STR?68
RSTACK
.FUNCT V-MAKE-LOVE
EQUAL? PRSO,LOVE \?ELS5
CALL PERFORM,V?FUCK,PRSI
RTRUE
?ELS5: CALL RECOGNIZE
RSTACK
.FUNCT V-MAKE-OUT,KISSEE
EQUAL? PRSO,ROOMS /?ELS3
SET 'KISSEE,PRSO
JUMP ?CND1
?ELS3: CALL FIND-IN,HERE,ACTORBIT,STR?52 >KISSEE
ZERO? KISSEE \?CND1
SET 'KISSEE,ME
?CND1: CALL PERFORM,V?KISS,KISSEE
RTRUE
.FUNCT V-MAKE-WITH
CALL V-MAKE
RSTACK
.FUNCT V-MARRY
PRINTI "I doubt that"
CALL TPRINT-PRSO
PRINTR " is the marrying type."
.FUNCT V-MASTURBATE
ZERO? PRSO /?ELS5
EQUAL? PRSO,ROOMS /?ELS5
CALL RECOGNIZE
RSTACK
?ELS5: ZERO? NAUGHTY-LEVEL \?ELS9
SET 'AWAITING-REPLY,2
CALL QUEUE,I-REPLY,2
PRINTR "Don't you know that this causes blindness?"
?ELS9: CALL PERFORM,V?FUCK,ME
RTRUE
.FUNCT V-MEASURE
FSET? PRSO,PARTBIT /?THN6
EQUAL? PRSO,ME \?ELS5
?THN6: PRINTR "Usual size."
?ELS5: PRINTI "The same size as any other "
CALL DPRINT,PRSO
PRINT PERIOD-CR
RTRUE
.FUNCT V-MOAN
PRINTR """Ohhhh..."""
.FUNCT V-MOVE
CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?ELS5
CALL WASTES
RSTACK
?ELS5: CALL LOC-CLOSED
ZERO? STACK \TRUE
FSET? PRSO,TAKEBIT \?ELS9
PRINTI "Moving"
CALL TPRINT-PRSO
PRINTR " reveals nothing."
?ELS9: EQUAL? P-PRSA-WORD,W?PULL \?ELS11
CALL HACK-HACK,STR?69
RSTACK
?ELS11: CALL CANT-VERB-A-PRSO,STR?70
RSTACK
.FUNCT V-MUNG
EQUAL? PRSO,ROOMS \?ELS5
IN? PROTAGONIST,CAGE \?ELS10
CALL PERFORM-PRSA,CAGE
RTRUE
?ELS10: PRINTR "Argh! Pimples!"
?ELS5: CALL HACK-HACK,STR?71
RSTACK
.FUNCT V-NO
EQUAL? AWAITING-REPLY,1 \?ELS5
PRINTI """Too bad."" "
CALL RIDDLE-DEATH
RSTACK
?ELS5: EQUAL? AWAITING-REPLY,2 \?ELS7
CALL V-YES
RSTACK
?ELS7: CALL YOU-SOUND,STR?72
RSTACK
.FUNCT NO-WORD,WRD
EQUAL? WRD,W?NO,W?NOPE /TRUE
EQUAL? WRD,W?NAH,W?UH-UH \FALSE
RTRUE
.FUNCT V-OFF
FSET? PRSO,LIGHTBIT \?ELS5
FSET? PRSO,ONBIT \?ELS10
FCLEAR PRSO,ONBIT
PRINTI "Okay,"
CALL TPRINT-PRSO
PRINTI " is now off."
CRLF
CALL NOW-DARK?
RSTACK
?ELS10: PRINTR "It isn't on!"
?ELS5: CALL CANT-TURN,STR?73
RSTACK
.FUNCT V-ON
FSET? PRSO,ACTORBIT \?ELS5
PRINTR "Hopefully, your sexy body will do the trick."
?ELS5: FSET? PRSO,LIGHTBIT \?ELS7
FSET? PRSO,ONBIT \?ELS12
PRINT ALREADY-IS
RTRUE
?ELS12: FSET PRSO,ONBIT
PRINTI "Okay,"
CALL TPRINT-PRSO
PRINTI " is now on."
CRLF
CALL NOW-LIT?
RSTACK
?ELS7: CALL CANT-TURN,STR?74
RSTACK
.FUNCT CANT-TURN,STRING
PRINT YOU-CANT
PRINTI "turn that o"
PRINT STRING
PRINT PERIOD-CR
RTRUE
.FUNCT V-OPEN
FSET? PRSO,SURFACEBIT /?THN6
FSET? PRSO,ACTORBIT /?THN6
FSET? PRSO,VEHBIT \?ELS5
?THN6: CALL IMPOSSIBLES
RSTACK
?ELS5: FSET? PRSO,OPENBIT \?ELS9
PRINT ALREADY-IS
RTRUE
?ELS9: FSET? PRSO,DOORBIT \?ELS11
FSET? PRSO,LOCKEDBIT \?ELS16
PRINTR "It's locked. Very locked."
?ELS16: FSET PRSO,OPENBIT
FSET PRSO,TOUCHBIT
PRINTI "The "
CALL DPRINT,PRSO
PRINTR " swings open."
?ELS11: FSET? PRSO,CONTBIT \?ELS20
FSET PRSO,OPENBIT
FSET PRSO,TOUCHBIT
FIRST? PRSO \?THN26
FSET? PRSO,TRANSBIT \?ELS25
?THN26: PRINTR "Opened."
?ELS25: PRINTI "Opening"
CALL TPRINT-PRSO
PRINTI " reveals"
CALL DESCRIBE-NOTHING
ZERO? STACK \?CND30
PRINT PERIOD-CR
?CND30: CALL NOW-LIT?
RSTACK
?ELS20: CALL CANT-VERB-A-PRSO,STR?66
RSTACK
.FUNCT V-PASS
PRINT YOULL-HAVE-TO
PRINTR "say who you want to pass it to."
.FUNCT V-PAY
CALL ULTIMATELY-IN?,ONE-MARSMID-COIN
ZERO? STACK /?ELS5
CALL PERFORM,V?GIVE,ONE-MARSMID-COIN,PRSO
RTRUE
?ELS5: CALL ULTIMATELY-IN?,TEN-MARSMID-COIN
ZERO? STACK /?ELS7
CALL PERFORM,V?GIVE,TEN-MARSMID-COIN,PRSO
RTRUE
?ELS7: PRINTR "You have no money!"
.FUNCT V-PEE
CALL RUNNING?,I-URGE
ZERO? STACK /?ELS5
EQUAL? HERE,MENS-ROOM,LADIES-ROOM \?ELS10
CALL DEQUEUE,I-URGE
CALL QUEUE,I-KIDNAPPING,5
IN? PROTAGONIST,STOOL \?CND11
MOVE PROTAGONIST,HERE
PRINTI "[getting off the stool first]"
CRLF
?CND11: PRINTI "Ahhh..."
CALL NOTICE-PIZZA-ODOR
RSTACK
?ELS10: SET 'AWAITING-REPLY,3
CALL QUEUE,I-REPLY,2
PRINTR "What, on the floor?"
?ELS5: CALL V-SHIT,TRUE-VALUE
RSTACK
.FUNCT V-PEE-IN
PRINTR "Miss Manners would be shocked."
.FUNCT V-PHONE
EQUAL? HERE,VIZICOMM-BOOTH \?ELS5
CALL V-CALL
RSTACK
?ELS5: PRINT YOU-CANT-SEE-ANY
PRINTR "phone here!"
.FUNCT V-PICK
CALL CANT-VERB-A-PRSO,STR?75
RSTACK
.FUNCT V-PICK-UP
CALL PERFORM,V?TAKE,PRSO,PRSI
RTRUE
.FUNCT V-PIN
ZERO? PRSI /?ELS5
PRINT HUH
RTRUE
?ELS5: CALL VISIBLE?,CLOTHES-PIN
ZERO? STACK /?ELS8
CALL PERFORM,V?PUT-ON,CLOTHES-PIN,PRSO
RTRUE
?ELS8: PRINTR "You have no pin."
.FUNCT V-POINT
PRINTR "That would be pointless."
.FUNCT PRE-POUR
CALL IN-SPACE?
ZERO? STACK /FALSE
PRINTR "There's no gravity!"
.FUNCT V-POUR
CALL IMPOSSIBLES
RSTACK
.FUNCT V-PUSH
CALL HACK-HACK,STR?76
RSTACK
.FUNCT V-PUSH-DIR
EQUAL? PRSI,INTDIR \?ELS5
CALL V-PUSH
RSTACK
?ELS5: CALL RECOGNIZE
RSTACK
.FUNCT V-PUSH-OFF
EQUAL? PRSO,RAFT,DOCK-OBJECT,ROOMS /?THN8
EQUAL? PRSO,BARGE \?ELS5
?THN8: IN? PROTAGONIST,HERE /?ELS5
LOC PROTAGONIST
CALL PERFORM,V?LAUNCH,STACK
RTRUE
?ELS5: PRINT HUH
RTRUE
.FUNCT PRE-PUT
EQUAL? PRSO,CUNT,TITS,COCK /FALSE
EQUAL? PRSI,GROUND \?ELS7
CALL NOUN-USED,W?STAIN,STAIN
ZERO? STACK \FALSE
EQUAL? PRSO,CREAM \?CND8
GET P-NAMW,0
EQUAL? STACK,W?JAR \FALSE
?CND8: CALL PERFORM,V?DROP,PRSO
RTRUE
?ELS7: EQUAL? PRSO,HANDS \?ELS16
EQUAL? PRSA,V?PUT,V?PUT-ON \?ELS21
FSET? PRSI,PARTBIT /FALSE
?ELS21: EQUAL? PRSA,V?PUT \?ELS25
CALL PERFORM,V?REACH-IN,PRSI
RTRUE
?ELS25: CALL IMPOSSIBLES
RSTACK
?ELS16: FSET? PRSI,PARTBIT /?ELS29
CALL PLAYER-CANT-SEE
ZERO? STACK \TRUE
?ELS29: CALL ULTIMATELY-IN?,PRSI,PRSO
ZERO? STACK /?ELS33
EQUAL? PRSO,BABY \?ELS38
EQUAL? PRSI,BLANKET \?ELS38
PRINT ALREADY-IS
RTRUE
?ELS38: PRINT YOU-CANT
PRINTI "put"
CALL TPRINT-PRSO
GET P-ITBL,P-PREP2
EQUAL? STACK,PR?ON \?ELS45
PRINTI " on"
JUMP ?CND43
?ELS45: PRINTI " in"
?CND43: CALL TPRINT-PRSI
PRINTI " when"
CALL TPRINT-PRSI
PRINTI " is already "
FSET? PRSO,SURFACEBIT \?ELS50
PRINTI "on"
JUMP ?CND48
?ELS50: PRINTI "in"
?CND48: CALL TPRINT-PRSO
PRINTR "!"
?ELS33: EQUAL? PRSA,V?PUT-ON \?ELS54
EQUAL? PRSO,SOD \?ELS54
EQUAL? PRSI,HOLE /FALSE
?ELS54: CALL UNTOUCHABLE?,PRSI
ZERO? STACK /?ELS58
CALL CANT-REACH,PRSI
RSTACK
?ELS58: CALL IDROP
ZERO? STACK \TRUE
RFALSE
.FUNCT V-PUT,?TMP1
FSET? PRSI,OPENBIT /?ELS5
FSET? PRSI,CONTBIT /?ELS5
FSET? PRSI,SURFACEBIT /?ELS5
FSET? PRSI,VEHBIT /?ELS5
PRINT YOU-CANT
PRINTI "put"
CALL TPRINT-PRSO
PRINTI " in"
CALL APRINT,PRSI
PRINTR "!"
?ELS5: EQUAL? PRSI,PRSO /?THN10
CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?ELS9
FSET? PRSO,TAKEBIT /?ELS9
?THN10: PRINTR "How can you do that?"
?ELS9: FSET? PRSI,DOORBIT \?ELS15
PRINT CANT-FROM-HERE
RTRUE
?ELS15: FSET? PRSI,OPENBIT /?ELS17
FSET? PRSI,SURFACEBIT /?ELS17
CALL THIS-IS-IT,PRSI
CALL DO-FIRST,STR?66,PRSI
RSTACK
?ELS17: IN? PRSO,PRSI \?ELS21
PRINTI "But"
CALL TPRINT-PRSO
PRINTI " is already in"
CALL TRPRINT,PRSI
RSTACK
?ELS21: FSET? PRSI,ACTORBIT /?THN24
EQUAL? PRSI,BABY,STALLION \?ELS23
?THN24: PRINT HUH
RTRUE
?ELS23: CALL WEIGHT,PRSI >?TMP1
CALL WEIGHT,PRSO
ADD ?TMP1,STACK >?TMP1
GETP PRSI,P?SIZE
SUB ?TMP1,STACK >?TMP1
GETP PRSI,P?CAPACITY
GRTR? ?TMP1,STACK \?ELS27
CALL ULTIMATELY-IN?,PRSO,PRSI
ZERO? STACK \?ELS27
PRINTI "There's no room "
FSET? PRSI,SURFACEBIT \?ELS32
PRINTI "on"
JUMP ?CND30
?ELS32: PRINTI "in"
?CND30: CALL TPRINT-PRSI
PRINTI " for"
CALL TRPRINT,PRSO
RSTACK
?ELS27: CALL ULTIMATELY-IN?,PRSO
ZERO? STACK \?ELS36
CALL ITAKE
EQUAL? STACK,M-FATAL,FALSE-VALUE /TRUE
?ELS36: EQUAL? PRSO,TORCH /?THN43
CALL ULTIMATELY-IN?,TORCH,PRSO
ZERO? STACK /?ELS40
?THN43: FSET? TORCH,ONBIT \?ELS40
EQUAL? PRSI,SACK,BASKET \?ELS40
CALL DO-FIRST,STR?77,TORCH
RSTACK
?ELS40: IN? PRSI,ODD-MACHINE \?ELS46
PRINT ONLY-ONE-THING-IN-COMPARTMENT
RTRUE
?ELS46: MOVE PRSO,PRSI
FSET PRSO,TOUCHBIT
PRINTR "Done."
.FUNCT V-PUT-AGAINST
CALL WASTES
RSTACK
.FUNCT V-PUT-BEHIND
CALL WASTES
RSTACK
.FUNCT V-PUT-NEAR
CALL WASTES
RSTACK
.FUNCT V-PUT-ON
EQUAL? PRSI,ME \?ELS5
CALL PERFORM,V?WEAR,PRSO
RTRUE
?ELS5: FSET? PRSI,SURFACEBIT \?ELS7
CALL V-PUT
RSTACK
?ELS7: PRINTI "There's no good surface on"
CALL TRPRINT,PRSI
RSTACK
.FUNCT V-PUT-THROUGH
FSET? PRSI,DOORBIT \?ELS5
FSET? PRSI,OPENBIT \?ELS10
CALL V-THROW
RSTACK
?ELS10: CALL DO-FIRST,STR?66,PRSI
RSTACK
?ELS5: LOC PROTAGONIST
EQUAL? PRSI,STACK \?ELS14
EQUAL? P-PRSA-WORD,W?THROW,W?TOSS,W?HURL \?ELS14
SET 'PRSI,FALSE-VALUE
CALL V-THROW
RSTACK
?ELS14: CALL IMPOSSIBLES
RSTACK
.FUNCT V-PUT-TO
CALL RECOGNIZE
RSTACK
.FUNCT V-PUT-UNDER
CALL WASTES
RSTACK
.FUNCT V-RAISE
CALL HACK-HACK,STR?78
RSTACK
.FUNCT PRE-RAKE
CALL ULTIMATELY-IN?,RAKE
ZERO? STACK \FALSE
PRINT ONLY-WITH-A-RAKE
RTRUE
.FUNCT V-RAKE
ZERO? PRSI \?CND1
SET 'PRSI,RAKE
?CND1: EQUAL? PRSI,RAKE \?ELS8
PRINTR "You'll never make it as a gardener."
?ELS8: PRINT ONLY-WITH-A-RAKE
RTRUE
.FUNCT V-RAPE
PRINTR "Unacceptably ungallant behavior."
.FUNCT V-REACH-IN,OBJ
FIRST? PRSO >OBJ /?KLU16
?KLU16: FSET? PRSO,ACTORBIT /?THN6
FSET? PRSO,SURFACEBIT /?THN6
FSET? PRSO,CONTBIT /?ELS5
?THN6: CALL YUKS
RSTACK
?ELS5: FSET? PRSO,OPENBIT /?ELS9
CALL DO-FIRST,STR?66,PRSO
RSTACK
?ELS9: ZERO? OBJ /?THN12
FSET? OBJ,INVISIBLE /?THN12
FSET? OBJ,TAKEBIT /?ELS11
?THN12: PRINT THERES-NOTHING
PRINTI "in"
CALL TRPRINT,PRSO
RSTACK
?ELS11: PRINTI "You feel something inside"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-READ
FSET? PRSO,READBIT \?ELS5
GETP PRSO,P?TEXT
PRINT STACK
CRLF
RTRUE
?ELS5: CALL CANT-VERB-A-PRSO,STR?79
RSTACK
.FUNCT V-RELIEVE
PRINT HUH
RTRUE
.FUNCT V-REMOVE
FSET? PRSO,WEARBIT \?ELS5
CALL PERFORM,V?TAKE-OFF,PRSO
RTRUE
?ELS5: EQUAL? PRSO,HANDS \?ELS7
ZERO? HAND-COVER /?ELS7
CALL PERFORM,V?UNCOVER,HAND-COVER
RTRUE
?ELS7: EQUAL? PRSO,HANDS \?ELS11
ZERO? RAFT-HELD /?ELS11
CALL PERFORM,V?DROP,RAFT
RTRUE
?ELS11: CALL PERFORM,V?TAKE,PRSO
RTRUE
.FUNCT V-RETURN,ACTOR
ZERO? PRSI \?ELS5
CALL FIND-IN,HERE,ACTORBIT,STR?80 >ACTOR
ZERO? ACTOR /?ELS10
CALL PERFORM,V?GIVE,PRSO,ACTOR
RTRUE
?ELS10: CALL NO-ONE-HERE,STR?81
RSTACK
?ELS5: FSET? PRSI,ACTORBIT \?ELS14
CALL PERFORM,V?GIVE,PRSO,PRSI
RTRUE
?ELS14: CALL PERFORM,V?PUT,PRSO,PRSI
RTRUE
.FUNCT V-RIP
EQUAL? PRSO,MATCHBOOK,CODED-MESSAGE,SCRAP-OF-PAPER /?THN6
EQUAL? PRSO,MAP \?ELS5
?THN6: CALL WASTES
RSTACK
?ELS5: PRINTR "Unrippable."
.FUNCT V-ROLL
PRINTI "A rolling "
CALL DPRINT,PRSO
PRINTR " gathers no moss."
.FUNCT V-RUB
CALL PERFORM,V?TOUCH,PRSI,PRSO
RTRUE
.FUNCT V-SAVE-SOMETHING
PRINTI "Sorry, but"
CALL TPRINT-PRSO
PRINTR " is beyond help."
.FUNCT V-SAY,V
ZERO? AWAITING-REPLY /?ELS5
GET P-LEXV,P-CONT
CALL YES-WORD,STACK
ZERO? STACK /?ELS5
CALL V-YES
CALL STOP
RSTACK
?ELS5: ZERO? AWAITING-REPLY /?ELS9
GET P-LEXV,P-CONT
CALL NO-WORD,STACK
ZERO? STACK /?ELS9
CALL V-NO
CALL STOP
RSTACK
?ELS9: CALL RUNNING?,I-SNEEZE
ZERO? STACK /?ELS13
CALL RIDDLE-ANSWER
RSTACK
?ELS13: IN? HAREM-GUARD,HERE \?ELS15
CALL PICK-WIFE
RSTACK
?ELS15: GET P-LEXV,P-CONT
EQUAL? STACK,W?KWEEPA \?ELS17
CALL V-KWEEPA
CALL STOP
RSTACK
?ELS17: GET P-LEXV,P-CONT
EQUAL? STACK,W?GIDDAP,W?GIDDYAP \?ELS19
IN? STALLION,HERE \?ELS19
CALL V-GIDDYAP
CALL STOP
RSTACK
?ELS19: CALL VISIBLE?,BEM
ZERO? STACK \?THN26
CALL VISIBLE?,FLYTRAP
ZERO? STACK /?ELS23
?THN26: GET P-LEXV,P-CONT
EQUAL? STACK,W?SCAT,W?BOO /?THN28
GET P-LEXV,P-CONT
EQUAL? STACK,W?SCRAM,W?SHOO \?ELS23
?THN28: CALL V-SCAT
CALL STOP
RSTACK
?ELS23: CALL FIND-IN,HERE,ACTORBIT >V
ZERO? V /?ELS31
PRINTI "You must address"
CALL TPRINT,V
PRINTI " directly."
CRLF
CALL STOP
RSTACK
?ELS31: CALL PERFORM,V?TELL,ME
CALL STOP
RSTACK
.FUNCT V-SCAT,SCATEE=0
CALL VISIBLE?,FLYTRAP
ZERO? STACK /?ELS3
SET 'SCATEE,FLYTRAP
JUMP ?CND1
?ELS3: CALL VISIBLE?,BEM
ZERO? STACK /?CND1
SET 'SCATEE,BEM
?CND1: ZERO? SCATEE /?ELS10
PRINTI "A weak attempt to scare away"
CALL ARPRINT,SCATEE
RSTACK
?ELS10: SET 'AWAITING-REPLY,2
CALL QUEUE,I-REPLY,2
PRINTR """Scat"" to you too!"
.FUNCT V-SCORE,ACTOR
ZERO? PRSO /?ELS5
CALL PERFORM,V?FUCK,PRSO
RTRUE
?ELS5: ZERO? NAUGHTY-LEVEL \?ELS8
CALL V-STATUS
RSTACK
?ELS8: LOC PROTAGONIST
CALL FIND-IN,STACK,ACTORBIT,STR?52 >ACTOR
ZERO? ACTOR /?ELS10
CALL PERFORM,V?FUCK,ACTOR
RTRUE
?ELS10: CALL NO-ONE-HERE,STR?82
RSTACK
.FUNCT V-SEARCH
FSET? PRSO,ACTORBIT \?ELS5
CALL V-SHAKE
RSTACK
?ELS5: IN? PROTAGONIST,PRSO \?ELS7
CALL DESCRIBE-VEHICLE
RSTACK
?ELS7: FSET? PRSO,CONTBIT \?ELS9
FSET? PRSO,OPENBIT /?ELS9
CALL DO-FIRST,STR?66,PRSO
RSTACK
?ELS9: FSET? PRSO,CONTBIT \?ELS13
PRINTI "You find"
CALL DESCRIBE-NOTHING
ZERO? STACK \TRUE
PRINT PERIOD-CR
RTRUE
?ELS13: CALL CANT-VERB-A-PRSO,STR?83
RSTACK
.FUNCT V-SET
EQUAL? PRSO,ROOMS \?ELS5
CALL WEE
RSTACK
?ELS5: EQUAL? PRSO,INTDIR \?ELS7
LOC PROTAGONIST
EQUAL? STACK,BARGE,RAFT \?ELS7
LOC PROTAGONIST
CALL PERFORM-PRSA,STACK,INTNUM
RTRUE
?ELS7: ZERO? PRSI \?ELS11
FSET? PRSO,TAKEBIT \?ELS16
CALL HACK-HACK,STR?84
RSTACK
?ELS16: PRINT YNH
CALL TRPRINT,PRSO
RSTACK
?ELS11: CALL IMPOSSIBLES
RSTACK
.FUNCT V-SGIVE
CALL PERFORM,V?GIVE,PRSI,PRSO
RTRUE
.FUNCT V-SHAKE
FSET? PRSO,ACTORBIT \?ELS5
PRINTR "That wouldn't be polite."
?ELS5: CALL HACK-HACK,STR?85
RSTACK
.FUNCT V-SHAKE-WITH
EQUAL? PRSO,HANDS /?ELS5
CALL RECOGNIZE
RSTACK
?ELS5: FSET? PRSI,ACTORBIT /?ELS7
PRINTI "I don't think"
CALL TPRINT-PRSI
PRINTR " even has hands."
?ELS7: CALL PERFORM,V?THANK,PRSI
RTRUE
.FUNCT V-SHIT,NUMBER-ONE=0
PRINTI "You don't have to go "
ZERO? NUMBER-ONE /?ELS3
PRINTI "wee-wee"
JUMP ?CND1
?ELS3: PRINTI "poo-poo"
?CND1: PRINTR " at the moment."
.FUNCT V-SHOW
PRINTI "It doesn't look like"
CALL TPRINT-PRSI
PRINTR " is interested."
.FUNCT V-SHUT-UP
EQUAL? PRSO,ROOMS \?ELS5
PRINTR "[I hope you're not addressing me...]"
?ELS5: CALL PERFORM,V?CLOSE,PRSO
RTRUE
.FUNCT V-SIGH
PRINTR """Ahhhh..."""
.FUNCT V-SINK
CALL IMPOSSIBLES
RSTACK
.FUNCT V-SIT,VEHICLE
CALL FIND-IN,HERE,VEHBIT >VEHICLE
ZERO? VEHICLE /?ELS5
CALL PERFORM,V?BOARD,VEHICLE
RTRUE
?ELS5: CALL WASTES
RSTACK
.FUNCT V-SKIP
CALL IN-CATACOMBS
ZERO? STACK /?ELS5
IN? PROTAGONIST,HERE \?ELS5
CALL QUEUE,I-CRABS,10
PRINTR "Splash."
?ELS5: CALL WEE
RSTACK
.FUNCT V-SLEEP
PRINTR "You're not tired."
.FUNCT PRE-SMELL
FSET? NOSE,MUNGBIT \FALSE
ZERO? GONE-APE \FALSE
PRINT YOU-CANT
PRINTI "smell a thing with "
PRINTD NOSE
PRINTR " blocked."
.FUNCT V-SMELL
ZERO? PRSO \?ELS5
CALL PERFORM-PRSA,ODOR
RTRUE
?ELS5: CALL SENSE-OBJECT,STR?86
RSTACK
.FUNCT SENSE-OBJECT,STRING
CALL PRONOUN
PRINTI " "
PRINT STRING
FSET? PRSO,PLURALBIT /?CND1
EQUAL? PRSO,ME /?CND1
PRINTI "s"
?CND1: PRINTI " just like"
CALL ARPRINT,PRSO
RSTACK
.FUNCT V-SPUT-ON
CALL PERFORM,V?PUT-ON,PRSI,PRSO
RTRUE
.FUNCT V-SRUB
CALL PERFORM,V?RUB,PRSI,PRSO
RTRUE
.FUNCT V-SSHOW
CALL PERFORM,V?SHOW,PRSI,PRSO
RTRUE
.FUNCT V-STAIN
ZERO? PRSI \?ELS5
CALL ULTIMATELY-IN?,STAIN
ZERO? STACK /?ELS10
FSET? STAIN,UNTEEDBIT /?ELS10
CALL APPLY-STAIN,PRSO
RSTACK
?ELS10: PRINTR "You have no stain."
?ELS5: EQUAL? PRSI,STAIN \?ELS16
CALL APPLY-STAIN,PRSO
RSTACK
?ELS16: CALL IMPOSSIBLES
RSTACK
.FUNCT V-STAND
EQUAL? P-PRSA-WORD,W?HOLD \?ELS5
CALL WASTES
RSTACK
?ELS5: EQUAL? P-PRSA-WORD,W?GET \?ELS7
EQUAL? PRSO,ROOMS \?ELS7
EQUAL? HERE,INNER-HAREM,BOUDOIR \?ELS7
EQUAL? NAUGHTY-LEVEL,2 \?ELS7
ZERO? MALE /?ELS7
PRINTR "You're already quite hard."
?ELS7: LOC PROTAGONIST
FSET? STACK,VEHBIT \?ELS11
LOC PROTAGONIST
EQUAL? STACK,TREE-HOLE,CAGE /?ELS11
LOC PROTAGONIST
CALL PERFORM,V?DISEMBARK,STACK
RTRUE
?ELS11: ZERO? PRSO /?ELS15
FSET? PRSO,TAKEBIT \?ELS15
CALL WASTES
RSTACK
?ELS15: EQUAL? HERE,INNER-HAREM \?ELS19
ZERO? NAUGHTY-LEVEL /?ELS19
CALL DPRINT,SULTANS-WIFE
PRINTR " tugs you back down."
?ELS19: PRINTR "You're already standing."
.FUNCT V-STAND-ON
EQUAL? PRSO,STOOL \?ELS5
CALL PERFORM,V?BOARD,STOOL
RTRUE
?ELS5: CALL WASTES
RSTACK
.FUNCT V-STELL
CALL PERFORM,V?TELL,PRSI
RTRUE
.FUNCT V-STHROW
CALL PERFORM,V?THROW-TO,PRSI,PRSO
RTRUE
.FUNCT V-SUCK
FSET? PRSO,ACTORBIT /?THN6
ZERO? NAUGHTY-LEVEL \?ELS5
?THN6: CALL PERFORM,V?EAT,PRSO
RTRUE
?ELS5: SET 'AWAITING-REPLY,2
CALL QUEUE,I-REPLY,2
PRINTR "Done. Some turn-on, huh?"
.FUNCT V-SUCKLE
CALL IMPOSSIBLES
RSTACK
.FUNCT V-SWIM
EQUAL? PRSO,WATER /?THN4
ZERO? PRSO \?ELS3
CALL GLOBAL-IN?,WATER,HERE
ZERO? STACK /?ELS3
?THN4: PRINTI "This is no time for"
JUMP ?CND1
?ELS3: PRINTI "Your head must be"
?CND1: PRINTR " swimming."
.FUNCT V-SWING
ZERO? PRSI /?ELS5
CALL PERFORM,V?KILL,PRSI,PRSO
RTRUE
?ELS5: PRINTR """Whoosh."""
.FUNCT V-SWRAP
CALL PERFORM,V?WRAP,PRSI,PRSO
RTRUE
.FUNCT PRE-TAKE
EQUAL? PRSO,HANDS \?ELS5
ZERO? PRSI /?ELS5
EQUAL? PRSI,HAND-COVER \?ELS5
CALL PERFORM,V?UNCOVER,HAND-COVER
RTRUE
?ELS5: EQUAL? PRSO,CLOTHES-PIN \?ELS13
EQUAL? PRSI,NOSE \?ELS13
FSET? CLOTHES-PIN,WORNBIT /?THN10
?ELS13: EQUAL? PRSO,COTTON-BALLS \?ELS15
EQUAL? PRSI,EARS \?ELS15
FSET? COTTON-BALLS,WORNBIT /?THN10
?ELS15: EQUAL? PRSO,LIP-BALM \?ELS9
EQUAL? PRSI,MOUTH \?ELS9
FSET? LIP-BALM,WORNBIT \?ELS9
?THN10: CALL PERFORM,V?REMOVE,PRSO
RTRUE
?ELS9: FSET? PRSO,PARTBIT /?ELS19
CALL PLAYER-CANT-SEE
ZERO? STACK \TRUE
?ELS19: CALL LOC-CLOSED
ZERO? STACK \TRUE
IN? PROTAGONIST,PRSO \?ELS25
PRINTI "You're "
FSET? PRSO,INBIT \?ELS28
PRINTI "i"
JUMP ?CND26
?ELS28: PRINTI "o"
?CND26: PRINTR "n it!"
?ELS25: IN? PRSO,PROTAGONIST /?THN33
CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /?ELS32
FSET? PRSO,TAKEBIT /?ELS32
?THN33: EQUAL? PRSO,COMIC-BOOK \?ELS39
EQUAL? PRSI,POCKET /FALSE
?ELS39: FSET? PRSO,WORNBIT \?ELS43
PRINTI "You're already wearing"
JUMP ?CND37
?ELS43: PRINTI "You already have"
?CND37: CALL TPRINT-PRSO
PRINT PERIOD-CR
RTRUE
?ELS32: ZERO? HAND-COVER /?ELS47
EQUAL? PRSO,NOSE,EARS,EYES /?ELS47
PRINT YOU-CANT
PRINTI "pick up anything while using "
PRINTD HANDS
PRINTI "s to cover"
CALL TRPRINT,HAND-COVER
RSTACK
?ELS47: IN? PRSO,TREE-HOLE \?ELS51
IN? FLYTRAP,TREE-HOLE \?ELS51
CALL PERFORM,V?REACH-IN,TREE-HOLE
RTRUE
?ELS51: ZERO? PRSI /FALSE
IN? PRSO,PRSI /FALSE
EQUAL? PRSO,ME \?ELS59
CALL PERFORM,V?DROP,PRSI
RTRUE
?ELS59: EQUAL? PRSO,SHEET \?ELS61
EQUAL? PRSI,WINDOW \?ELS61
ZERO? SHEET-HANGING /?ELS61
CALL PERFORM,V?MOVE,SHEET
RTRUE
?ELS61: EQUAL? PRSO,SHEET \?ELS65
EQUAL? PRSI,BED \?ELS65
FSET? SHEET,TOUCHBIT \FALSE
?ELS65: EQUAL? PRSO,BLANKET,BABY \?ELS69
EQUAL? PRSI,BLANKET,BABY \?ELS69
IN? BLANKET,BABY \?ELS69
CALL PERFORM,V?REMOVE,BABY
RTRUE
?ELS69: EQUAL? PRSO,BLANKET \?ELS73
EQUAL? PRSI,BABY \?ELS73
IN? BLANKET,BABY /FALSE
?ELS73: IN? PRSO,PRSI /?ELS77
CALL NOT-IN
RSTACK
?ELS77: SET 'PRSI,FALSE-VALUE
RFALSE
.FUNCT V-TAKE
CALL ITAKE
EQUAL? STACK,TRUE-VALUE \FALSE
EQUAL? PRSO,COTTON-BALLS \?ELS8
FSET? COTTON-BALLS,WORNBIT \?ELS8
FCLEAR COTTON-BALLS,WORNBIT
FCLEAR EARS,MUNGBIT
JUMP ?CND6
?ELS8: EQUAL? PRSO,CLOTHES-PIN \?CND6
FSET? CLOTHES-PIN,WORNBIT \?CND6
FCLEAR CLOTHES-PIN,WORNBIT
FCLEAR NOSE,MUNGBIT
?CND6: PRINTR "Taken."
.FUNCT V-TAKE-A-LEAK
EQUAL? PRSO,ROOMS \?ELS5
CALL V-PEE
RSTACK
?ELS5: CALL RECOGNIZE
RSTACK
.FUNCT V-TAKE-A-SHIT
EQUAL? PRSO,ROOMS \?ELS5
CALL V-SHIT
RSTACK
?ELS5: CALL RECOGNIZE
RSTACK
.FUNCT V-TAKE-OFF
EQUAL? PRSO,ROOMS \?ELS5
EQUAL? P-PRSA-WORD,W?GET \?ELS10
LOC PROTAGONIST
FSET? STACK,VEHBIT \?ELS15
PRINTI "[of"
LOC PROTAGONIST
CALL TPRINT,STACK
PRINTI "]"
CRLF
LOC PROTAGONIST
CALL PERFORM,V?DISEMBARK,STACK
RTRUE
?ELS15: ZERO? NAUGHTY-LEVEL \?ELS17
CALL V-STAND
RSTACK
?ELS17: CALL PERFORM,V?FUCK,ME
RTRUE
?ELS10: CALL PERFORM-PRSA,GARMENT
RTRUE
?ELS5: FSET? PRSO,WORNBIT \?ELS23
FCLEAR PRSO,WORNBIT
PRINTI "Okay, you're no longer wearing"
CALL TRPRINT,PRSO
RSTACK
?ELS23: FSET? PRSO,VEHBIT \?ELS25
CALL PERFORM,V?DISEMBARK,PRSO
RTRUE
?ELS25: PRINTI "You aren't wearing"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-TAKE-WITH
PRINTI "Sorry,"
CALL TPRINT-PRSI
PRINTI " is no help in getting"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-TASTE
CALL SENSE-OBJECT,STR?87
RSTACK
.FUNCT V-TELL
EQUAL? PRSO,STALLION \?ELS5
ZERO? P-CONT /?ELS5
SET 'CLOCK-WAIT,TRUE-VALUE
SET 'WINNER,STALLION
RTRUE
?ELS5: FSET? PRSO,ACTORBIT /?THN10
EQUAL? PRSO,INTNUM \?ELS9
IN? SULTANS-WIFE,HERE \?ELS9
?THN10: EQUAL? PRSO,INTNUM \?ELS18
EQUAL? P-NUMBER,CHOICE-NUMBER /?ELS18
PRINTI """That's not my number!"""
CRLF
CALL STOP
RSTACK
?ELS18: ZERO? P-CONT /?ELS22
EQUAL? PRSO,INTNUM \?ELS26
SET 'WINNER,SULTANS-WIFE
JUMP ?CND24
?ELS26: SET 'WINNER,PRSO
?CND24: SET 'CLOCK-WAIT,TRUE-VALUE
RTRUE
?ELS22: PRINTI "Hmmm ..."
CALL TPRINT-PRSO
PRINTR " looks at you expectantly, as if you seemed to be about to talk."
?ELS9: EQUAL? PRSO,BEM,FLYTRAP \?ELS32
GET P-LEXV,P-CONT
EQUAL? STACK,W?SCAT,W?BOO /?THN35
GET P-LEXV,P-CONT
EQUAL? STACK,W?SCRAM,W?SHOO \?ELS32
?THN35: CALL V-SCAT
CALL STOP
RSTACK
?ELS32: CALL CANT-VERB-A-PRSO,STR?88
CALL STOP
RSTACK
.FUNCT V-TELL-ABOUT
EQUAL? PRSO,ME \?ELS5
CALL PERFORM,V?WHAT,PRSI
RTRUE
?ELS5: CALL PERFORM,V?SHOW,PRSI,PRSO
RTRUE
.FUNCT V-THANK
ZERO? PRSO \?ELS5
PRINTR "[Just doing my job.]"
?ELS5: FSET? PRSO,ACTORBIT \?ELS7
PRINTR """You're welcome."""
?ELS7: CALL IMPOSSIBLES
RSTACK
.FUNCT V-THROW
CALL SPECIAL-DROP
ZERO? STACK \FALSE
EQUAL? HERE,CANAL \?ELS10
CALL PERFORM,V?PUT,PRSO,CANAL-OBJECT
RTRUE
?ELS10: ZERO? PRSI /?ELS12
MOVE PRSO,HERE
PRINTR "You missed."
?ELS12: MOVE PRSO,HERE
PRINTR "Thrown."
.FUNCT V-THROW-TO
FSET? PRSI,ACTORBIT \?ELS5
CALL PERFORM,V?GIVE,PRSO,PRSI
RTRUE
?ELS5: CALL PERFORM,V?THROW,PRSO,PRSI
RTRUE
.FUNCT V-THROW-UP
EQUAL? PRSO,ROOMS \?ELS5
CALL V-VOMIT
RSTACK
?ELS5: CALL PERFORM,V?THROW,PRSO
RTRUE
.FUNCT V-TIE
FSET? PRSO,ACTORBIT /?THN6
FSET? PRSI,ACTORBIT \?ELS3
?THN6: ZERO? NAUGHTY-LEVEL /?ELS3
PRINTR "Kinky!"
?ELS3: EQUAL? P-PRSA-WORD,W?TIE \?ELS9
PRINTI "You've tied"
CALL TPRINT-PRSO
PRINTI "! In the third quarter, with forty seconds on the clock, the score is "
CALL DPRINT,PRSO
PRINTI " 17, player 17!!! But seriously, folks, y"
JUMP ?CND1
?ELS9: PRINTI "Y"
?CND1: PRINTI "ou can't tie"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-TIE-TOGETHER
CALL IMPOSSIBLES
RSTACK
.FUNCT PRE-TOUCH
CALL UNTOUCHABLE?,PRSO
ZERO? STACK /FALSE
CALL CANT-REACH,PRSO
RSTACK
.FUNCT V-TOUCH
CALL LOC-CLOSED
ZERO? STACK \TRUE
ZERO? NAUGHTY-LEVEL \?ELS7
CALL HACK-HACK,STR?89
RSTACK
?ELS7: CALL HACK-HACK,STR?90
RSTACK
.FUNCT V-UNCOVER
EQUAL? PRSO,HAND-COVER \?ELS5
CALL SENSE-AGAIN,HAND-COVER
SET 'HAND-COVER,FALSE-VALUE
RTRUE
?ELS5: FSET? PRSO,ACTORBIT \?ELS7
CALL PERFORM,V?UNDRESS,OBJECT
RTRUE
?ELS7: FSET? PRSO,PLURALBIT \?ELS12
PRINTI "They're"
JUMP ?CND10
?ELS12: FSET? PRSO,FEMALEBIT \?ELS14
PRINTI "She's"
JUMP ?CND10
?ELS14: FSET? PRSO,ACTORBIT \?ELS16
PRINTI "He's"
JUMP ?CND10
?ELS16: PRINTI "It's"
?CND10: PRINTR " not covered!"
.FUNCT SENSE-AGAIN,BODY-PART
FCLEAR BODY-PART,MUNGBIT
PRINTI "You can once again sense with"
CALL TRPRINT,BODY-PART
RSTACK
.FUNCT V-UNDRESS
ZERO? PRSO /?ELS5
FSET? PRSO,ACTORBIT \?ELS11
CALL PERFORM,V?FUCK,PRSO
RTRUE
?ELS11: CALL IMPOSSIBLES
RSTACK
?ELS5: SET 'PRSO,ROOMS
CALL V-GET-UNDRESSED
RSTACK
.FUNCT V-UNLOCK
ZERO? PRSI /?ELS5
CALL IMPOSSIBLES
RSTACK
?ELS5: FSET? PRSO,LOCKEDBIT \?ELS8
SET 'AWAITING-REPLY,2
CALL QUEUE,I-REPLY,2
PRINTR "Your nose is key-shaped, I suppose?"
?ELS8: FSET? PRSO,DOORBIT \?ELS10
PRINTI "But"
CALL TPRINT-PRSO
PRINTR " isn't locked."
?ELS10: CALL YUKS
RSTACK
.FUNCT V-UNROLL
CALL IMPOSSIBLES
RSTACK
.FUNCT V-UNTIE
CALL IMPOSSIBLES
RSTACK
.FUNCT V-USE
PRINT YOULL-HAVE-TO
PRINTI "be more specific about how you want to use"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-USE-QUOTES
IN? HAREM-GUARD,HERE \?ELS5
CALL PICK-WIFE,PRSO
RSTACK
?ELS5: CALL SEE-MANUAL,STR?91
RSTACK
.FUNCT V-VOMIT
IN? PIZZA,HERE \?ELS5
FSET? PIZZA,TOUCHBIT \?ELS5
PRINTI "Just keep trying to eat that "
CALL DPRINT,PIZZA
PRINT PERIOD-CR
RTRUE
?ELS5: PRINTR "You stick a finger down your throat, but to no avail."
.FUNCT V-WALK,AV,VEHICLE,PT,PTS,STR,OBJ,RM
LOC PROTAGONIST >AV
ZERO? P-WALK-DIR \?ELS5
CALL PERFORM,V?WALK-TO,PRSO
RTRUE
?ELS5: EQUAL? PRSO,P?OUT \?ELS7
CALL IN-EXITABLE-VEHICLE?
ZERO? STACK \TRUE
?ELS7: EQUAL? PRSO,P?DOWN \?ELS11
EQUAL? AV,STOOL,STALLION \?ELS11
CALL PERFORM,V?DISEMBARK,AV
RTRUE
?ELS11: EQUAL? PRSO,P?IN \?ELS15
EQUAL? HERE,LABORATORY \?ELS15
CALL PERFORM,V?BOARD,CAGE
RTRUE
?ELS15: EQUAL? PRSO,P?IN \?ELS19
GETPT HERE,P?IN
ZERO? STACK \?ELS19
CALL FIND-IN,HERE,VEHBIT >VEHICLE
ZERO? VEHICLE /?ELS19
CALL ULTIMATELY-IN?,VEHICLE
ZERO? STACK \?ELS19
CALL PERFORM,V?BOARD,VEHICLE
RTRUE
?ELS19: ZERO? RAFT-HELD /?ELS23
IN? PROTAGONIST,RAFT /?ELS23
PRINTI "If you want to walk away, you'll either have to take the raft or let go of it!"
CRLF
RETURN 8
?ELS23: FSET? AV,VEHBIT \?ELS29
EQUAL? AV,STALLION /?ELS29
EQUAL? HERE,CELL \?ELS36
EQUAL? AV,STOOL \?ELS36
ZERO? HOLE-OPEN /?ELS36
EQUAL? PRSO,P?UP \?ELS36
CALL HOLE-ENTER-F
RTRUE
?ELS36: CALL NOT-GOING-ANYWHERE
RSTACK
?ELS29: FSET? EYES,MUNGBIT /?THN43
EQUAL? HAND-COVER,EYES \?ELS42
?THN43: CALL OPEN-YOUR-EYES
RETURN 8
?ELS42: GETPT HERE,PRSO >PT
ZERO? PT /?ELS48
PTSIZE PT >PTS
EQUAL? PTS,UEXIT \?ELS53
GETB PT,REXIT
CALL GOTO,STACK
RSTACK
?ELS53: EQUAL? PTS,NEXIT \?ELS55
GET PT,NEXITSTR
PRINT STACK
CRLF
RETURN 8
?ELS55: EQUAL? PTS,FEXIT \?ELS59
GET PT,FEXITFCN
CALL STACK >RM
ZERO? RM /?ELS64
EQUAL? RM,ROOMS /TRUE
CALL GOTO,RM
RSTACK
?ELS64: RETURN 8
?ELS59: EQUAL? PTS,CEXIT \?ELS73
GETB PT,CEXITFLAG
VALUE STACK
ZERO? STACK /?ELS78
GETB PT,REXIT
CALL GOTO,STACK
RSTACK
?ELS78: GET PT,CEXITSTR >STR
ZERO? STR /?ELS80
PRINT STR
CRLF
RETURN 8
?ELS80: PRINT CANT-GO
RETURN 8
?ELS73: EQUAL? PTS,DEXIT \FALSE
GETB PT,DEXITOBJ >OBJ
FSET? OBJ,OPENBIT \?ELS93
GETB PT,REXIT
CALL GOTO,STACK
RSTACK
?ELS93: GET PT,DEXITSTR >STR
ZERO? STR /?ELS95
CALL THIS-IS-IT,OBJ
PRINT STR
CRLF
RETURN 8
?ELS95: CALL THIS-IS-IT,OBJ
CALL DO-FIRST,STR?66,OBJ
RETURN 8
?ELS48: EQUAL? PRSO,P?IN,P?OUT \?ELS106
CALL V-WALK-AROUND
RETURN 8
?ELS106: EQUAL? HERE,WELL-BOTTOM,FORGOTTEN-STOREHOUSE /?THN109
EQUAL? HERE,BURIAL-CHAMBER,LADDER-ROOM \?ELS108
?THN109: PRINTI "You wade into the dark, but find no passage in that direction."
CRLF
RETURN 8
?ELS108: PRINT CANT-GO
RETURN 8
.FUNCT NOT-GOING-ANYWHERE,AV
LOC PROTAGONIST >AV
PRINTI "You're not going anywhere until you get "
CALL OFF-VEHICLE?,AV
ZERO? STACK /?ELS3
PRINTI "off"
JUMP ?CND1
?ELS3: PRINTI "out of"
?CND1: CALL TRPRINT,AV
RETURN 8
.FUNCT V-WALK-AROUND
SET 'AWAITING-REPLY,2
CALL QUEUE,I-REPLY,2
PRINTR "Did you have any particular direction in mind?"
.FUNCT V-WALK-TO
EQUAL? PRSO,INTDIR \?ELS5
CALL DO-WALK,P-DIRECTION
RSTACK
?ELS5: CALL V-WALK-AROUND
RSTACK
.FUNCT V-WAIT,NUM=3
PRINTI "Time passes..."
CRLF
?PRG1: DLESS? 'NUM,0 \?ELS5
JUMP ?REP2
?ELS5: CALL CLOCKER
ZERO? STACK /?PRG1
?REP2: SET 'CLOCK-WAIT,TRUE-VALUE
RETURN CLOCK-WAIT
.FUNCT V-WAIT-FOR
CALL VISIBLE?,PRSO
ZERO? STACK /?ELS5
CALL V-FOLLOW
RSTACK
?ELS5: PRINTR "You may be waiting quite a while."
.FUNCT V-WEAR
FSET? PRSO,WEARBIT /?ELS5
CALL CANT-VERB-A-PRSO,STR?92
RSTACK
?ELS5: PRINTI "You're "
FSET? PRSO,WORNBIT \?ELS10
PRINTI "already"
JUMP ?CND8
?ELS10: MOVE PRSO,PROTAGONIST
FSET PRSO,WORNBIT
PRINTI "now"
?CND8: PRINTI " wearing"
CALL TRPRINT,PRSO
RSTACK
.FUNCT V-WHAT
PRINTR "Good question."
.FUNCT V-WHERE
CALL V-FIND,TRUE-VALUE
RSTACK
.FUNCT V-WHIP
ZERO? NAUGHTY-LEVEL \?ELS5
CALL V-KILL
RSTACK
?ELS5: PRINTR "Oooo! S & M! Love it!!!"
.FUNCT V-WRAP
CALL WASTES
RSTACK
.FUNCT V-YELL
CALL SORE,STR?93
CALL STOP
RSTACK
.FUNCT I-REPLY
SET 'AWAITING-REPLY,FALSE-VALUE
RFALSE
.FUNCT V-YES
EQUAL? AWAITING-REPLY,1 \?ELS5
SET 'AWAITING-REPLY,FALSE-VALUE
SET 'AWAITING-FAKE-ORPHAN,TRUE-VALUE
SET 'SULTAN-COUNTER,0
CALL QUEUE,I-SNEEZE,2
CALL DEQUEUE,I-SULTAN
PRINTI """Here, then, is the riddle. Don't strain "
PRINTD HEAD
PRINTI "; no one's ever gotten it right."" You hear a growling snarl from somewhere nearby.
""Some say I'm pointless,
yet many are obsessed by me.
I have caused heroic gambles
and sown endless frustration.
Uncounted deaths have I caused.
What am I?"""
CRLF
IN? SIDEKICK,HERE \TRUE
PRINTI " "
CALL DPRINT-SIDEKICK
PRINTI " steps briskly forward. ""That's easy!"" "
CALL HE-SHE
PRINTI " yells. ""A grapefruit!"" As the eunuchs snicker behind their weapons, the "
CALL DPRINT,SULTAN
PRINTI " cries ""Wrongo!"" and "
CALL TIGER-EATS-SIDEKICK
PRINTI " ""Your turn to guess,"" says the "
CALL DPRINT,SULTAN
PRINTR ", looking gleeful."
?ELS5: EQUAL? AWAITING-REPLY,2 \?ELS10
PRINTR "That was just a rhetorical question."
?ELS10: EQUAL? AWAITING-REPLY,3 \?ELS12
CALL V-PEE-IN
RSTACK
?ELS12: CALL YOU-SOUND,STR?94
RSTACK
.FUNCT YOU-SOUND,STRING
PRINTI "You sound rather "
PRINT STRING
PRINTR "tive."
.FUNCT YES-WORD,WRD
EQUAL? WRD,W?YES,W?Y,W?YUP /TRUE
EQUAL? WRD,W?OK,W?OKAY,W?SURE \FALSE
RTRUE
.FUNCT ITAKE,VB=1,OBJ
FSET? PRSO,TAKEBIT /?ELS3
ZERO? VB /?CND4
CALL YUKS
?CND4: RETURN 8
?ELS3: CALL PRE-TOUCH
ZERO? STACK /?ELS11
RETURN 8
?ELS11: CALL CCOUNT,PROTAGONIST
GRTR? STACK,10 \?CND1
ZERO? VB /?CND16
PRINTI "You're already juggling as many items as you could possibly carry."
CRLF
?CND16: RETURN 8
?CND1: FSET PRSO,TOUCHBIT
FCLEAR PRSO,NDESCBIT
IN? PROTAGONIST,PRSO /FALSE
EQUAL? PRSO,RAFT \?CND22
ZERO? RAFT-HELD /?CND22
SET 'RAFT-HELD,FALSE-VALUE
?CND22: MOVE PRSO,PROTAGONIST
RTRUE
.FUNCT IDROP
EQUAL? PRSO,TITS,CUNT,COCK /FALSE
EQUAL? PRSO,HANDS \?ELS7
EQUAL? PRSA,V?GIVE,V?THROW,V?DROP \FALSE
CALL IMPOSSIBLES
RSTACK
?ELS7: EQUAL? PRSO,POWER-SWITCH \?ELS16
EQUAL? PRSA,V?THROW /FALSE
?ELS16: EQUAL? PRSO,HEAD \?ELS20
EQUAL? PRSA,V?PUT \?ELS20
EQUAL? PRSI,HOLE \?ELS20
PRINTR "Hey wow! Vertigo city!"
?ELS20: EQUAL? PRSO,ME \?ELS24
EQUAL? PRSA,V?PUT \?ELS24
FSET? PRSI,ACTORBIT \?ELS24
CALL PERFORM,V?BOARD,PRSI
RTRUE
?ELS24: EQUAL? PRSI,ME \?ELS28
EQUAL? PRSA,V?PUT \?ELS28
FSET? PRSO,ACTORBIT \?ELS28
CALL PERFORM,V?BOARD,PRSO
RTRUE
?ELS28: EQUAL? PRSA,V?PUT-THROUGH,V?PUT \?ELS32
EQUAL? PRSO,SHEET \?ELS32
EQUAL? PRSI,WINDOW /FALSE
?ELS32: EQUAL? PRSO,HAND-COVER \?ELS36
CALL PERFORM,V?UNCOVER,PRSO
RTRUE
?ELS36: EQUAL? PRSO,NOSE \?ELS38
EQUAL? PRSI,CLOTHES-PIN /FALSE
?ELS38: EQUAL? PRSO,COMIC-BOOK \?ELS42
EQUAL? PRSI,POCKET \?ELS47
PRINT ALREADY-IS
RTRUE
?ELS47: CALL PERFORM,V?REMOVE,COMIC-BOOK
RTRUE
?ELS42: CALL ULTIMATELY-IN?,PRSO
ZERO? STACK \?ELS51
EQUAL? PRSO,LEAVES /?ELS51
EQUAL? PRSO,RAFT \?THN54
ZERO? RAFT-HELD \?ELS51
?THN54: EQUAL? PRSO,ME /?THN59
FSET? PRSO,PARTBIT \?ELS58
?THN59: CALL IMPOSSIBLES
RETURN 8
?ELS58: EQUAL? PRSO,SOD \?ELS62
EQUAL? PRSI,HOLE /FALSE
?ELS62: PRINTI "That's easy for you to say since you don't even have"
CALL TRPRINT,PRSO
RETURN 8
?ELS51: IN? PRSO,PROTAGONIST /?ELS70
LOC PRSO
FSET? STACK,CONTBIT \?ELS70
LOC PRSO
FSET? STACK,OPENBIT /?ELS70
LOC PRSO
CALL DO-FIRST,STR?66,STACK
RSTACK
?ELS70: FSET? PRSO,WORNBIT \FALSE
EQUAL? PRSA,V?PUT-ON,V?PUT \?ELS79
EQUAL? PRSO,CLOTHES-PIN \?ELS85
EQUAL? PRSI,NOSE /?THN82
?ELS85: EQUAL? PRSO,COTTON-BALLS \?ELS87
EQUAL? PRSI,EARS /?THN82
?ELS87: EQUAL? PRSO,LIP-BALM \?ELS79
EQUAL? PRSI,MOUTH \?ELS79
?THN82: PRINT SENILITY-STRIKES
RTRUE
?ELS79: CALL DO-FIRST,STR?95,PRSO
RSTACK
.FUNCT CCOUNT,OBJ,CNT=0,X
FIRST? OBJ >X \?CND1
?PRG4: FSET? X,WORNBIT /?CND6
INC 'CNT
?CND6: NEXT? X >X /?PRG4
?CND1: RETURN CNT
.FUNCT WEIGHT,OBJ,CONT,WT=0
FIRST? OBJ >CONT \?CND1
?PRG4: CALL WEIGHT,CONT
ADD WT,STACK >WT
NEXT? CONT >CONT /?PRG4
?CND1: GETP OBJ,P?SIZE
ADD WT,STACK
RSTACK
.FUNCT DESCRIBE-ROOM,VERB-IS-LOOK=0,FIRST-VISIT=0,NUM=0
ZERO? LIT \?CND1
PRINT TOO-DARK
EQUAL? HERE,CLOSET \?CND4
FSET? NOSE,MUNGBIT /?CND4
PRINTI " There's a distinctive odor here, though."
?CND4: CRLF
RFALSE
?CND1: FSET? HERE,TOUCHBIT /?CND9
EQUAL? HERE,CANAL,CATACOMBS,LONG-CORRIDOR /?CND12
FSET HERE,TOUCHBIT
?CND12: SET 'FIRST-VISIT,TRUE-VALUE
?CND9: CALL DPRINT,HERE
CALL CANAL-LOC >NUM
EQUAL? NUM,10 \?CND15
PRINTI ", near the "
EQUAL? NEARER-DOCK,MY-KIND-OF-DOCK \?ELS20
PRINTI "ea"
JUMP ?CND18
?ELS20: PRINTI "we"
?CND18: PRINTI "st bank"
?CND15: LOC PROTAGONIST
FSET? STACK,VEHBIT \?CND23
ZERO? DONT-PRINT-VEHICLE \?CND23
PRINTI ", "
LOC PROTAGONIST
FSET? STACK,INBIT \?ELS30
PRINTI "i"
JUMP ?CND28
?ELS30: PRINTI "o"
?CND28: PRINTI "n"
LOC PROTAGONIST
CALL TPRINT,STACK
?CND23: CRLF
ZERO? VERB-IS-LOOK \?THN36
EQUAL? VERBOSITY,2 /?THN36
ZERO? FIRST-VISIT /TRUE
EQUAL? VERBOSITY,1 \TRUE
?THN36: PRINTI " "
GETP HERE,P?ACTION
CALL STACK,M-LOOK
ZERO? STACK \?CND40
GETP HERE,P?LDESC
PRINT STACK
?CND40: CRLF
RTRUE
.FUNCT DESCRIBE-OBJECTS,O,STR,1ST?=1,AV
LOC WINNER >AV
FIRST? HERE >O /?KLU48
?KLU48: ZERO? O /FALSE
?PRG4: ZERO? O \?ELS8
JUMP ?REP5
?ELS8: CALL DESCRIBABLE?,O
ZERO? STACK /?CND6
FSET? O,TOUCHBIT /?CND6
GETP O,P?FDESC >STR
ZERO? STR /?CND6
PRINTI " "
PRINT STR
FSET? O,CONTBIT \?CND13
ADD D-ALL?,D-PARA?
CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK
?CND13: CRLF
?CND6: NEXT? O >O /?KLU49
?KLU49: JUMP ?PRG4
?REP5: FIRST? HERE >O /?KLU50
?KLU50: SET '1ST?,TRUE-VALUE
?PRG16: ZERO? O \?ELS20
JUMP ?REP17
?ELS20: CALL DESCRIBABLE?,O
ZERO? STACK /?CND18
GETP O,P?FDESC
ZERO? STACK /?ELS22
FSET? O,TOUCHBIT /?ELS22
JUMP ?CND18
?ELS22: GETP O,P?DESCFCN >STR
ZERO? STR /?ELS28
CALL STR,M-OBJDESC >STR
ZERO? STR /?ELS28
FSET? O,CONTBIT \?CND31
EQUAL? STR,M-FATAL /?CND31
ADD D-ALL?,D-PARA?
CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK
?CND31: CRLF
JUMP ?CND18
?ELS28: GETP O,P?LDESC >STR
ZERO? STR /?CND18
PRINTI " "
PRINT STR
FSET? O,CONTBIT \?CND38
ADD D-ALL?,D-PARA?
CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK
?CND38: CRLF
?CND18: NEXT? O >O /?KLU51
?KLU51: JUMP ?PRG16
?REP17: CALL DESCRIBE-CONTENTS,HERE,FALSE-VALUE,0
ZERO? AV /FALSE
EQUAL? HERE,AV /FALSE
CALL DESCRIBE-CONTENTS,AV,FALSE-VALUE,0
RSTACK
.FUNCT DESCRIBE-CONTENTS,OBJ,LEVEL=-1,ALL?=D-ALL?,F=0,N,1ST?=1,IT?=0,START?=0,TWO?=0,PARA?=0
EQUAL? LEVEL,2 \?ELS3
SET 'LEVEL,TRUE-VALUE
SET 'PARA?,TRUE-VALUE
SET 'START?,TRUE-VALUE
JUMP ?CND1
?ELS3: BTST ALL?,D-PARA? \?CND1
SET 'PARA?,TRUE-VALUE
?CND1: FIRST? OBJ >N /?KLU153
?KLU153: ZERO? START? \?THN11
IN? OBJ,ROOMS /?THN11
FSET? OBJ,ACTORBIT /?THN11
FSET? OBJ,CONTBIT \FALSE
FSET? OBJ,OPENBIT /?THN15
FSET? OBJ,TRANSBIT \FALSE
?THN15: FSET? OBJ,SEARCHBIT \FALSE
ZERO? N /FALSE
?THN11:
?PRG17: ZERO? N /?THN26
CALL DESCRIBABLE?,N
ZERO? STACK /?CND19
BTST ALL?,D-ALL? /?THN26
CALL SIMPLE-DESC?,N
ZERO? STACK /?CND19
?THN26: ZERO? F /?CND28
ZERO? 1ST? /?ELS34
SET '1ST?,FALSE-VALUE
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?ELS38
ZERO? START? \?CND32
ZERO? PARA? \?ELS44
EQUAL? OBJ,PROTAGONIST /?CND45
PRINTI " "
?CND45: SET 'PARA?,TRUE-VALUE
JUMP ?CND42
?ELS44: EQUAL? LEVEL,TRUE-VALUE \?CND42
PRINTI " "
?CND42: EQUAL? OBJ,HERE \?ELS52
PRINT YOU-SEE
JUMP ?CND32
?ELS52: EQUAL? OBJ,PROTAGONIST \?ELS54
PRINTI "You have"
JUMP ?CND32
?ELS54: FSET? OBJ,SURFACEBIT \?ELS56
PRINTI "Sitting on"
CALL TPRINT,OBJ
PRINTI " is"
JUMP ?CND32
?ELS56: PRINT IT-SEEMS-THAT
CALL TPRINT,OBJ
FSET? OBJ,ACTORBIT \?ELS61
PRINTI " has"
JUMP ?CND32
?ELS61: PRINTI " contains"
JUMP ?CND32
?ELS38: EQUAL? LEVEL,-1 /?CND32
PRINT LEVEL
JUMP ?CND32
?ELS34: ZERO? N /?ELS70
PRINTI ","
JUMP ?CND32
?ELS70: PRINTI " and"
?CND32: CALL APRINT,F
FSET? F,WORNBIT \?ELS76
EQUAL? F,LIP-BALM \?ELS79
PRINTI " (smeared all over your lips)"
JUMP ?CND74
?ELS79: EQUAL? F,COTTON-BALLS \?ELS81
PRINTI " (stuffed in "
PRINTD EARS
PRINTI ")"
JUMP ?CND74
?ELS81: EQUAL? F,CLOTHES-PIN \?ELS83
PRINTI " (pinned to "
PRINTD NOSE
PRINTI ")"
JUMP ?CND74
?ELS83: PRINTI " (being worn)"
JUMP ?CND74
?ELS76: FSET? F,ONBIT \?ELS87
PRINTI " (providing light)"
JUMP ?CND74
?ELS87: EQUAL? F,COMIC-BOOK \?CND74
PRINTI " (stuck in your back pocket)"
?CND74: ZERO? IT? \?ELS92
ZERO? TWO? \?ELS92
SET 'IT?,F
JUMP ?CND28
?ELS92: SET 'TWO?,TRUE-VALUE
SET 'IT?,FALSE-VALUE
?CND28: SET 'F,N
?CND19: ZERO? N /?CND97
NEXT? N >N /?KLU154
?KLU154:
?CND97: ZERO? F \?PRG17
ZERO? N \?PRG17
ZERO? IT? /?CND106
ZERO? TWO? \?CND106
CALL THIS-IS-IT,IT?
?CND106: ZERO? 1ST? /?CND111
ZERO? START? /?CND111
PRINTI " nothing"
RFALSE
?CND111: ZERO? 1ST? \?REP18
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?REP18
EQUAL? OBJ,HERE \?CND121
PRINTI " here"
?CND121: PRINTI "."
?REP18: FIRST? OBJ >F /?KLU155
?KLU155:
?PRG124: ZERO? F \?ELS128
JUMP ?REP125
?ELS128: FSET? F,CONTBIT \?CND126
CALL DESCRIBABLE?,F,TRUE-VALUE
ZERO? STACK /?CND126
BTST ALL?,D-ALL? /?THN133
CALL SIMPLE-DESC?,F
ZERO? STACK /?CND126
?THN133: ZERO? PARA? /?ELS142
ADD D-ALL?,D-PARA?
JUMP ?CND138
?ELS142: PUSH D-ALL?
?CND138: CALL DESCRIBE-CONTENTS,F,TRUE-VALUE,STACK
ZERO? STACK /?CND126
SET '1ST?,FALSE-VALUE
SET 'PARA?,TRUE-VALUE
?CND126: NEXT? F >F /?KLU156
?KLU156: JUMP ?PRG124
?REP125: ZERO? 1ST? \?CND146
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND146
LOC WINNER
EQUAL? OBJ,HERE,STACK \?CND146
CRLF
?CND146: ZERO? 1ST? \FALSE
RTRUE
.FUNCT DESCRIBABLE?,OBJ,CONT?=0
FSET? OBJ,INVISIBLE /FALSE
EQUAL? OBJ,WINNER /FALSE
LOC WINNER
EQUAL? OBJ,STACK \?ELS9
LOC WINNER
EQUAL? HERE,STACK \FALSE
?ELS9: ZERO? CONT? \?ELS13
FSET? OBJ,NDESCBIT /FALSE
?ELS13: EQUAL? OBJ,RAFT,BARGE \TRUE
EQUAL? HERE,CANAL \TRUE
CALL ULTIMATELY-IN?,OBJ
ZERO? STACK \TRUE
IN? OBJ,BARGE /TRUE
EQUAL? RAFT-LOC-NUM,BARGE-LOC-NUM /TRUE
RFALSE
.FUNCT SIMPLE-DESC?,OBJ,STR
GETP OBJ,P?FDESC
ZERO? STACK /?ELS5
FSET? OBJ,TOUCHBIT \FALSE
?ELS5: GETP OBJ,P?DESCFCN >STR
ZERO? STR /?ELS9
CALL STR,M-OBJDESC?
ZERO? STACK \FALSE
?ELS9: GETP OBJ,P?LDESC
ZERO? STACK /TRUE
RFALSE
.FUNCT DESCRIBE-VEHICLE
EQUAL? PRSO,DIVAN \?ELS5
CALL NOT-ALONE-ON-DIVAN
CRLF
RTRUE
?ELS5: PRINTI "Other than yourself, you can see"
CALL DESCRIBE-NOTHING
ZERO? STACK \TRUE
FSET? PRSO,INBIT \?ELS13
PRINTI " in"
JUMP ?CND11
?ELS13: PRINTI " on"
?CND11: CALL TRPRINT,PRSO
RTRUE
.FUNCT DESCRIBE-NOTHING
CALL DESCRIBE-CONTENTS,PRSO,2
ZERO? STACK /FALSE
IN? PROTAGONIST,PRSO /TRUE
CRLF
RTRUE
.FUNCT GOTO,NEW-LOC,DONT-DESCRIBE-SIDEKICK=0,OLD-HERE
EQUAL? HERE,THRONE-ROOM \?CND1
FSET? THETA,MUNGBIT /?CND1
FSET THETA,MUNGBIT
FSET THETA,NDESCBIT
FCLEAR THETA,ACTORBIT
FCLEAR THETA,FEMALEBIT
FCLEAR THETA,NARTICLEBIT
PUTP THETA,P?SDESC,STR?96
PRINTI "As you leave, you hear behind you a sound like a"
PRINT 45-DEGREE-ANGLE
PRINTI " landing on a pile of"
PRINT 45-DEGREE-ANGLE
PRINTI "s."
CALL EXPLETIVE
PRINTI "Not again!"" you hear Mitre moan."
CRLF
CRLF
?CND1: SET 'OLD-HERE,HERE
CALL OPEN-EYES-AND-REMOVE-HANDS
MOVE PROTAGONIST,NEW-LOC
IN? NEW-LOC,ROOMS \?ELS8
SET 'HERE,NEW-LOC
JUMP ?CND6
?ELS8: LOC NEW-LOC >HERE
?CND6: CALL LIT?,HERE >LIT
GETP HERE,P?ACTION
CALL STACK,M-ENTER
CALL DESCRIBE-ROOM
ZERO? STACK /?CND11
ZERO? VERBOSITY /?CND11
CALL DESCRIBE-OBJECTS
?CND11: IN? SIDEKICK,OLD-HERE \?CND16
IN? PROTAGONIST,HERE \?CND16
ZERO? DONT-DESCRIBE-SIDEKICK \?CND16
CALL SIDEKICK-FOLLOWS-YOU
?CND16: SET 'HOLE-MOVE,FALSE-VALUE
RTRUE
.FUNCT SIDEKICK-FOLLOWS-YOU
EQUAL? HERE,BOUDOIR \?ELS3
MOVE SIDEKICK,HERE
JUMP ?CND1
?ELS3: LOC PROTAGONIST
MOVE SIDEKICK,STACK
?CND1: ZERO? HOLE-MOVE /?ELS10
PRINTI " A few seconds later, you "
CALL LIT?,HERE
ZERO? STACK /?ELS14
PRINTI "see "
JUMP ?CND12
?ELS14: PRINTI "feel "
?CND12: CALL DPRINT-SIDEKICK
PRINTI "'s "
CALL PICK-ONE,SIDEKICK-PARTS
PRINT STACK
PRINTI " appear, followed almost immediately by the rest of "
CALL HIM-HER
PRINT PERIOD-CR
RTRUE
?ELS10: CALL NORMAL-SIDEKICK-FOLLOW
RSTACK
.FUNCT NORMAL-SIDEKICK-FOLLOW
PRINTI " "
CALL DPRINT-SIDEKICK
CALL PICK-ONE,FOLLOWS
PRINT STACK
CRLF
RTRUE
.FUNCT JIGS-UP,DESC
PRINT DESC
CRLF
CRLF
PRINTI " **** You have died ****"
CRLF
CALL FINISH
RSTACK
.FUNCT ACCESSIBLE?,OBJ,L
ZERO? OBJ /FALSE
LOC OBJ >L
FSET? OBJ,INVISIBLE /FALSE
EQUAL? OBJ,PSEUDO-OBJECT \?ELS10
EQUAL? LAST-PSEUDO-LOC,HERE \FALSE
RTRUE
?ELS10: ZERO? L /FALSE
EQUAL? L,GLOBAL-OBJECTS /TRUE
EQUAL? L,LOCAL-GLOBALS \?ELS23
CALL GLOBAL-IN?,OBJ,HERE
ZERO? STACK \TRUE
?ELS23: CALL META-LOC,OBJ
EQUAL? STACK,HERE \FALSE
EQUAL? L,WINNER,HERE /TRUE
FSET? L,OPENBIT \FALSE
CALL ACCESSIBLE?,L
ZERO? STACK /FALSE
RTRUE
.FUNCT VISIBLE?,OBJ,L
ZERO? OBJ /FALSE
LOC OBJ >L
CALL ACCESSIBLE?,OBJ
ZERO? STACK \TRUE
CALL SEE-INSIDE?,L
ZERO? STACK /FALSE
CALL VISIBLE?,L
ZERO? STACK /FALSE
RTRUE
.FUNCT UNTOUCHABLE?,OBJ
ZERO? OBJ /FALSE
CALL ULTIMATELY-IN?,OBJ,SHELF
ZERO? STACK \?THN8
EQUAL? OBJ,SHELF \?ELS7
?THN8: IN? PROTAGONIST,STOOL \TRUE
RFALSE
?ELS7: CALL ULTIMATELY-IN?,OBJ,TREE-HOLE
ZERO? STACK /?ELS18
IN? PROTAGONIST,TREE-HOLE \TRUE
?ELS18: CALL ULTIMATELY-IN?,OBJ,CAGE
ZERO? STACK /?ELS22
IN? PROTAGONIST,CAGE \TRUE
?ELS22: IN? PROTAGONIST,FIRST-SLAB \?ELS26
CALL NOUN-USED,W?STRAP,PSEUDO-OBJECT
ZERO? STACK \FALSE
CALL NOUN-USED,W?STRAPS,PSEUDO-OBJECT
ZERO? STACK \FALSE
?ELS26: IN? PROTAGONIST,HERE /FALSE
LOC PROTAGONIST
CALL ULTIMATELY-IN?,OBJ,STACK
ZERO? STACK \FALSE
LOC PROTAGONIST
EQUAL? OBJ,STACK /FALSE
IN? OBJ,GLOBAL-OBJECTS /FALSE
EQUAL? OBJ,RAFT \?ELS38
ZERO? RAFT-HELD \FALSE
?ELS38: EQUAL? OBJ,CANAL-OBJECT,WATER,BARGE \?ELS42
LOC PROTAGONIST
EQUAL? STACK,BARGE,RAFT /FALSE
?ELS42: EQUAL? PRSO,SHEET \?ELS46
ZERO? SHEET-TIED \FALSE
?ELS46: EQUAL? PRSO,SHEET \TRUE
IN? PROTAGONIST,BED \TRUE
FSET? SHEET,TOUCHBIT /TRUE
RFALSE
.FUNCT META-LOC,OBJ
?PRG1: ZERO? OBJ /FALSE
IN? OBJ,GLOBAL-OBJECTS \?CND3
RETURN GLOBAL-OBJECTS
?CND3: IN? OBJ,ROOMS \?ELS10
RETURN OBJ
?ELS10: LOC OBJ >OBJ
JUMP ?PRG1
.FUNCT OTHER-SIDE,DOBJ,P=0,TEE
?PRG1: NEXTP HERE,P >P
LESS? P,LOW-DIRECTION /FALSE
GETPT HERE,P >TEE
PTSIZE TEE
EQUAL? STACK,DEXIT \?PRG1
GETB TEE,DEXITOBJ
EQUAL? STACK,DOBJ \?PRG1
RETURN P
.FUNCT ULTIMATELY-IN?,OBJ,CONT=0
ZERO? CONT \?CND1
SET 'CONT,WINNER
?CND1: ZERO? OBJ /FALSE
IN? OBJ,CONT /TRUE
IN? OBJ,ROOMS /FALSE
LOC OBJ
CALL ULTIMATELY-IN?,STACK,CONT
RSTACK
.FUNCT SEE-INSIDE?,OBJ
ZERO? OBJ /FALSE
FSET? OBJ,INVISIBLE /FALSE
FSET? OBJ,TRANSBIT /TRUE
FSET? OBJ,OPENBIT /TRUE
RFALSE
.FUNCT GLOBAL-IN?,OBJ1,OBJ2,TEE
GETPT OBJ2,P?GLOBAL >TEE
ZERO? TEE /FALSE
PTSIZE TEE
SUB STACK,1
CALL ZMEMQB,OBJ1,TEE,STACK
RSTACK
.FUNCT FIND-IN,WHERE,FLAG-IN-QUESTION,STRING=0,OBJ,RECURSIVE-OBJ
FIRST? WHERE >OBJ /?KLU19
?KLU19: ZERO? OBJ /FALSE
?PRG4: FSET? OBJ,FLAG-IN-QUESTION \?ELS8
FSET? OBJ,INVISIBLE /?ELS8
ZERO? STRING /?CND11
PRINTI "["
PRINT STRING
CALL TPRINT,OBJ
PRINTI "]"
CRLF
?CND11: RETURN OBJ
?ELS8: CALL FIND-IN,OBJ,FLAG-IN-QUESTION >RECURSIVE-OBJ
ZERO? RECURSIVE-OBJ /?ELS16
RETURN RECURSIVE-OBJ
?ELS16: NEXT? OBJ >OBJ /?PRG4
RFALSE
.FUNCT NOW-DARK?
ZERO? LIT /FALSE
CALL LIT?,HERE
ZERO? STACK \FALSE
SET 'LIT,FALSE-VALUE
PRINTR " It is now too dark to see."
.FUNCT NOW-LIT?
ZERO? LIT \FALSE
CALL LIT?,HERE
ZERO? STACK /FALSE
SET 'LIT,TRUE-VALUE
CRLF
CALL V-LOOK
RSTACK
.FUNCT LOC-CLOSED,L
LOC PRSO >L
FSET? L,CONTBIT \FALSE
FSET? L,OPENBIT /FALSE
FSET? PRSO,TAKEBIT \FALSE
CALL DO-FIRST,STR?66,L
RSTACK
.FUNCT DO-WALK,DIR
SET 'P-WALK-DIR,DIR
CALL PERFORM,V?WALK,DIR
RSTACK
.FUNCT STOP
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
RETURN 8
.FUNCT ROB,WHO,WHERE=0,N,X
FIRST? WHO >X /?KLU6
?KLU6:
?PRG1: ZERO? X /TRUE
NEXT? X >N /?KLU7
?KLU7: MOVE X,WHERE
SET 'X,N
JUMP ?PRG1
.FUNCT WRONG-SEX-WORD,OBJ,MALE-WORD,FEMALE-WORD
ZERO? SEX-CHOSEN /FALSE
ZERO? MALE /?ELS11
CALL NOUN-USED,FEMALE-WORD,OBJ
ZERO? STACK \?THN8
?ELS11: ZERO? MALE \FALSE
CALL NOUN-USED,MALE-WORD,OBJ
ZERO? STACK /FALSE
?THN8: PRINTI "There's no"
EQUAL? OBJ,SIDEKICK \?ELS16
PRINTI " one by that name"
JUMP ?CND14
?ELS16: EQUAL? PRSO,OBJ \?ELS18
CALL PRSO-PRINT
JUMP ?CND14
?ELS18: CALL PRSI-PRINT
?CND14: PRINTI " here."
ZERO? NAUGHTY-LEVEL /?CND21
PRINTI " [I see you've been playing both as a male and as a female! I guess you're the type who goes both ways, eh? Nudge, nudge, wink, wink!]"
?CND21: SET 'P-WON,FALSE-VALUE
CRLF
RTRUE
.FUNCT HACK-HACK,STR
PRINT STR
CALL TPRINT-PRSO
CALL HO-HUM
RSTACK
.FUNCT HO-HUM
CALL PICK-ONE,HO-HUM-LIST
PRINT STACK
CRLF
RTRUE
.FUNCT YUKS
CALL PICK-ONE,YUK-LIST
PRINT STACK
CRLF
RTRUE
.FUNCT IMPOSSIBLES
CALL PICK-ONE,IMPOSSIBLE-LIST
PRINT STACK
CRLF
RTRUE
.FUNCT WASTES
CALL PICK-ONE,WASTE-LIST
PRINT STACK
CRLF
RTRUE
.ENDI