4062 lines
76 KiB
Plaintext
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
|