shogun/verbs.zap
2019-04-16 09:37:36 -04:00

5035 lines
98 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.SEGMENT "0"
.FUNCT YOULL-HAVE-TO:ANY:1:1,STR
PRINT YOU-HAVE-TO
PRINT STR
PRINTR " first!"
.FUNCT TO-A-PRSO?:ANY:0:0
ICALL1 HOW-DO-YOU
CALL1 A-PRSO?
RSTACK
.FUNCT CANT-GO:ANY:0:0
PRINT YOU-CANT
PRINTR "go that way."
.FUNCT NOT-HOLDING:ANY:1:1,OBJ
ICALL2 THIS-IS-IT,OBJ
PRINT STR?61
PRINTI "holding "
ICALL2 THE-PRINT,OBJ
PRINT PERIOD
RTRUE
.FUNCT ITS-EMPTY:ANY:0:0
ICALL1 CTHE-PRINT-PRSO
PRINTI " is empty"
PRINT PERIOD
RTRUE
.FUNCT ITS-ALREADY-X:ANY:1:1,X
ICALL1 CTHE-PRINT-PRSO
PRINTI " is already "
PRINT X
PRINT PERIOD
RTRUE
.FUNCT ALREADY-OPEN:ANY:0:0
CALL2 ITS-ALREADY-X,STR?62
RSTACK
.FUNCT ALREADY-CLOSED:ANY:0:0
CALL2 ITS-ALREADY-X,STR?63
RSTACK
.FUNCT WITH-PRSI?:ANY:0:0
PRINTI "With "
CALL1 A-PRSI?
RSTACK
.FUNCT TELL-OPEN-CLOSED:ANY:0:1,OBJ
ZERO? OBJ /?CCL3
ICALL2 CTHE-PRINT,OBJ
JUMP ?CND1
?CCL3: SET 'OBJ,PRSO
ICALL1 THE-PRINT-PRSO
?CND1: ICALL2 PRINT-IS/ARE,OBJ
PRINTC 32
CALL2 OPEN-CLOSED,OBJ
RSTACK
.FUNCT OPEN-CLOSED:ANY:1:1,OBJ
FSET? OBJ,OPENBIT \?CCL3
PRINTI "open"
JUMP ?CND1
?CCL3: PRINTI "closed"
?CND1: PRINT PERIOD
RTRUE
.FUNCT THE-PRSO:ANY:0:0
ICALL1 THE-PRINT-PRSO
PRINT PERIOD
RTRUE
.FUNCT A-PRSO:ANY:0:0
ICALL1 PRINTA-PRSO
PRINT PERIOD
RTRUE
.FUNCT A-PRSO?:ANY:0:0
ICALL1 PRINTA-PRSO
PRINTR "?"
.FUNCT THE-PRSI:ANY:0:0
ICALL1 THE-PRINT-PRSI
PRINT PERIOD
RTRUE
.FUNCT A-PRSI?:ANY:0:0
ICALL1 PRINTA-PRSI
PRINTR "?"
.FUNCT YOU-CANT-X-THAT:ANY:0:1,STR
PRINT YOU-CANT
ZERO? STR /?CCL3
PUSH STR
JUMP ?CND1
?CCL3: PUSH STR?64
?CND1: PRINT STACK
PRINTC 32
ZERO? STR /?CTR5
ZERO? PRSO /?CTR5
FSET? PRSO,PERSON /?CCL6
?CTR5: PRINTR "that!"
?CCL6: ICALL2 PRINT-HIM/HER,PRSO
PRINTR "!"
.FUNCT YOU-CANT-X-PRSO:ANY:1:1,STR
PRINT YOU-CANT
PRINT STR
PRINTC 32
ZERO? PRSO /?CCL3
ICALL1 THE-PRINT-PRSO
JUMP ?CND1
?CCL3: PRINTI "that"
?CND1: PRINT PERIOD
RTRUE
.FUNCT UNINTERESTED:ANY:1:1,OBJ
FSET? OBJ,DEAD \?CCL3
PRINT YOU-CANT
PRINT STR?65
CRLF
RTRUE
?CCL3: EQUAL? OBJ,ME \?CCL5
CALL1 TELL-YUKS
RSTACK
?CCL5: ICALL2 CTHE-PRINT,OBJ
ICALL2 PRINT-IS/ARE,OBJ
PRINTR " uninterested."
.FUNCT PLURAL?:ANY:1:1,OBJ
FSET? OBJ,PLURAL /TRUE
RFALSE
.FUNCT CANT-REACH-THAT:ANY:0:0
CALL2 YOU-CANT-X-THAT,STR?66
RSTACK
.FUNCT V-VERBOSE:ANY:0:0
SET 'VERBOSITY,2
PRINTI "Verbose"
PRINT DESCRIPTIONS
PRINT PERIOD
CRLF
CALL1 V-LOOK
RSTACK
.FUNCT V-BRIEF:ANY:0:0
SET 'VERBOSITY,1
PRINTI "Brief"
PRINT DESCRIPTIONS
PRINT PERIOD
RTRUE
.FUNCT V-SUPER-BRIEF:ANY:0:0
SET 'VERBOSITY,FALSE-VALUE
PRINTI "Super-brief"
PRINT DESCRIPTIONS
PRINT PERIOD
RTRUE
.FUNCT V-DIAGNOSE:ANY:0:0
FSET? MARIKO,RMUNGBIT \?CCL3
PRINTR "You are still in shock, your ears ringing, eyes hardly seeing, your face a mass of bruises and powder burns."
?CCL3: PRINTI "You are "
GETP BLACKTHORNE,P?HEALTH
GET HEALTH-TELL,STACK
PRINT STACK
PRINT PERIOD
RTRUE
.FUNCT V-INVENTORY:ANY:0:0
SUB 0,WEARBIT >D-BIT
CALL DESCRIBE-CONTENTS,WINNER,FALSE-VALUE,3
ZERO? STACK \?CND1
PRINTI "You are empty-handed."
?CND1: SET 'D-BIT,WEARBIT
ICALL DESCRIBE-CONTENTS,WINNER,FALSE-VALUE,3
SET 'D-BIT,FALSE-VALUE
CRLF
RTRUE
.FUNCT V-QUIT:ANY:0:2,ASK?,SCORE?,SCOR
ASSIGNED? 'ASK? /?CND1
SET 'ASK?,TRUE-VALUE
?CND1: ASSIGNED? 'SCORE? /?CND3
SET 'SCORE?,TRUE-VALUE
?CND3: ZERO? SCORE? /?CND5
ICALL1 V-SCORE
?CND5: ZERO? ASK? /?PRD11
PRINT STR?74
PRINTI "leave the game"
CALL1 YES?
ZERO? STACK \?CTR8
?PRD11: ZERO? ASK? \?CCL9
?CTR8: QUIT
RTRUE
?CCL9: PRINT OKAY
RTRUE
.FUNCT V-CHOOSE:ANY:0:0
CALL2 ACCESSIBLE?,STRAW
ZERO? STACK /?CCL3
ICALL PERFORM,V?PICK,STRAW
RTRUE
?CCL3: PRINTR "There's nothing to draw here."
.FUNCT V-RESTART:ANY:0:0
ICALL2 V-SCORE,TRUE-VALUE
PRINT STR?74
PRINTI "restart"
CALL1 YES?
ZERO? STACK /FALSE
PRINTI "Restarting."
CRLF
RESTART
PRINT FAILED
RTRUE
.FUNCT FINISH:ANY:0:1,EOG?
ICALL1 UPDATE-STATUS-LINE
ICALL1 V-SCORE
ZERO? EOG? \?CND1
ICALL1 SETUP-TEXT-AND-STATUS
?CND1: CRLF
SET 'GAME-OVER?,TRUE-VALUE
ZERO? EOG? \?CTR4
GET 0,8
BTST STACK,16 /?CCL5
?CTR4: PUSH 4
JUMP ?CND3
?CCL5: PUSH 5
?CND3: PUT FINISH-MENU,0,STACK
CALL GET-FROM-MENU,STR?78,FINISH-MENU,FINISH-MENU-F
RSTACK
.FUNCT FINISH-MENU-F:ANY:2:2,WHICH,MENU
EQUAL? WHICH,1 \?CCL3
RESTORE
ZERO? STACK /?CCL6
PRINT OKAY
JUMP ?CND1
?CCL6: ICALL1 RESET-MARGIN
CLEAR S-TEXT
PRINT FAILED
JUMP ?CND1
?CCL3: EQUAL? WHICH,2 \?CCL8
RESTART
ICALL1 RESET-MARGIN
CLEAR S-TEXT
PRINT FAILED
JUMP ?CND1
?CCL8: EQUAL? WHICH,3 \?CCL10
ZERO? GAME-OVER? /?CCL13
QUIT
JUMP ?CND11
?CCL13: ICALL1 V-QUIT
?CND11: ICALL1 RESET-MARGIN
CLEAR S-TEXT
JUMP ?CND1
?CCL10: EQUAL? WHICH,4 \?CCL15
ICALL1 V-HINT
JUMP ?CND1
?CCL15: EQUAL? WHICH,5 \?CND1
ICALL1 V-UNDO
ICALL1 RESET-MARGIN
CLEAR S-TEXT
?CND1: ICALL1 TYPE-ANY-KEY
RFALSE
.FUNCT V-RESTORE:ANY:0:0
RESTORE
ZERO? STACK \TRUE
PRINT FAILED
RTRUE
.FUNCT V-SAVE:ANY:0:0,X,LCNT,CRC
PUTB G-INBUF,2,0
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CND1
WINGET S-TEXT,WCRCNT >CRC
ZERO? CRC /?CND1
WINGET S-TEXT,WLCNT >LCNT
?CND1: SAVE >X
SET 'RESTORED?,FALSE-VALUE
CALL2 QUEUED?,I-SETUP-ANSWER
ZERO? STACK /?CND5
ICALL1 I-SETUP-ANSWER
?CND5: EQUAL? X,0,1 \?CCL9
ZERO? CRC /?CND10
WINGET S-TEXT,WLCNT
SUB STACK,LCNT >LCNT
LESS? LCNT,0 /?CTR13
GRTR? LCNT,CRC \?CCL14
?CTR13: WINGET S-TEXT,WCRFUNC
EQUAL? STACK,RESET-MARGIN \?CCL19
ICALL1 RESET-MARGIN
JUMP ?CND10
?CCL19: ICALL1 RESET-MARGIN-1
JUMP ?CND10
?CCL14: SUB CRC,LCNT
WINPUT S-TEXT,WCRCNT,STACK
?CND10: ZERO? X \?CCL22
PRINT FAILED
RTRUE
?CCL22: EQUAL? X,1 \FALSE
PRINT OKAY
RTRUE
?CCL9: EQUAL? X,2,3 \FALSE
WINGET S-FULL,WHIGH
ZERO? STACK \?CND27
SET 'X,3
?CND27: SET 'RESTORED?,X
EQUAL? X,2 /?CCL31
PUSH 0
JUMP ?CND29
?CCL31: PUSH TRUE-VALUE
?CND29: ICALL2 REPAINT-DISPLAY,STACK
ICALL1 RESET-MARGIN
CRLF
CALL1 V-FIRST-LOOK
RSTACK
.FUNCT V-UNDO:ANY:0:0,VAL
GET 0,8
BTST STACK,16 /?CCL3
PRINTR "[UNDO not available.]"
?CCL3: IRESTORE >VAL
ZERO? VAL /?CCL5
CALL1 INIT-STATUS-LINE
RSTACK
?CCL5: RETURN FAILED
.FUNCT V-SCORE:ANY:0:1,ASK?,S
ASSIGNED? 'ASK? /?CND1
SET 'ASK?,TRUE-VALUE
?CND1: GET SCENE-LOCS,SCENE
GETPT STACK,P?SCORE >S
PRINTI "Your score is "
GETB S,0
MUL SCORE-FACTOR,STACK
PRINTN STACK
PRINTI " of a possible "
GETB S,1
MUL SCORE-FACTOR,STACK
PRINTN STACK
PRINTI " in this scene, and "
MUL SCORE-FACTOR,SCORE
PRINTN STACK
PRINTI " out of "
PRINTN 420
PRINTI " overall, in "
PRINTN MOVES
PRINTI " move"
EQUAL? MOVES,1 /?CND3
PRINTC 115
?CND3: MUL SCORE,SCORE-FACTOR
DIV STACK,42 >S
PRINTI ". You have now achieved a rank of "
ADD 1,S
GET RANKINGS,STACK
PRINT STACK
PRINT PERIOD
RTRUE
.FUNCT V-SCRIPT:ANY:0:0
DIROUT D-PRINTER-ON
GET 0,8
BTST STACK,1 \FALSE
DIROUT D-SCREEN-OFF
CRLF
PRINTI "Start of a transcript of "
PRINT SHOGUN-NAME
PRINT PERIOD
ICALL1 V-VERSION
DIROUT D-SCREEN-ON
RTRUE
.FUNCT V-UNSCRIPT:ANY:0:0
GET 0,8
BTST STACK,1 \?CND1
DIROUT D-SCREEN-OFF
PRINTI "End of transcript"
PRINT PERIOD
DIROUT D-SCREEN-ON
?CND1: DIROUT D-PRINTER-OFF
RTRUE
.FUNCT V-VERSION:ANY:0:1,C?,IDX
SET 'IDX,18
ZERO? C? /?CND1
MUL 3,FONT-Y
ADD 1,STACK
CURSET STACK,1
?CND1: HLIGHT H-BOLD
ZERO? C? /?CND3
DIROUT D-TABLE-ON,DIROUT-TABLE
?CND3: PRINT SHOGUN-NAME
ZERO? C? /?CND5
ICALL1 PRINT-CENTER-TABLE
?CND5: HLIGHT H-NORMAL
CRLF
ZERO? C? /?CND7
DIROUT D-TABLE-ON,DIROUT-TABLE
?CND7: PRINTI "A Story of Japan"
ZERO? C? /?CND9
ICALL1 PRINT-CENTER-TABLE
?CND9: CRLF
ZERO? C? /?CND11
DIROUT D-TABLE-ON,DIROUT-TABLE
?CND11: PRINTI "Copyright (c) 1988 by Infocom"
ZERO? C? /?CND13
ICALL1 PRINT-CENTER-TABLE
?CND13: CRLF
ZERO? C? /?CND15
DIROUT D-TABLE-ON,DIROUT-TABLE
?CND15: PRINTI "All rights reserved."
ZERO? C? /?CND17
ICALL1 PRINT-CENTER-TABLE
?CND17: CRLF
ZERO? C? /?CND19
DIROUT D-TABLE-ON,DIROUT-TABLE
?CND19: PRINT SHOGUN-NAME
PRINTI " is a trademark of James Clavell"
ZERO? C? /?CND21
ICALL1 PRINT-CENTER-TABLE
?CND21: CRLF
ZERO? C? /?CND23
DIROUT D-TABLE-ON,DIROUT-TABLE
?CND23: PRINTI "Original Literary Work Copyright 1975 by James Clavell"
ZERO? C? /?CND25
ICALL1 PRINT-CENTER-TABLE
?CND25: CRLF
ZERO? C? /?CND27
DIROUT D-TABLE-ON,DIROUT-TABLE
?CND27: PRINTI "Licensed by Noble House Trading Limited, London."
ZERO? C? /?CND29
ICALL1 PRINT-CENTER-TABLE
?CND29: CRLF
ZERO? C? /?CND31
DIROUT D-TABLE-ON,DIROUT-TABLE
?CND31: PRINTI "Release "
GET 0,1
PRINTN STACK
PICINF 0,YX-TBL \?CND33
GET YX-TBL,1
ZERO? STACK /?CND33
PRINTI " / Pix "
GET YX-TBL,1
PRINTN STACK
?CND33: PRINTI " / Serial number "
?PRG37: GETB 0,IDX
PRINTC STACK
IGRTR? 'IDX,23 \?PRG37
ZERO? C? /?CND41
ICALL1 PRINT-CENTER-TABLE
?CND41: CRLF
ZERO? C? /?CND43
DIROUT D-TABLE-ON,DIROUT-TABLE
?CND43: GET MACHINES,MACHINE
PRINT STACK
PRINTI " Interpreter version "
GETB 0,0
PRINTN STACK
PRINTC 46
GETB 0,31
PRINTN STACK
ZERO? C? /?CND45
ICALL1 PRINT-CENTER-TABLE
?CND45: CRLF
RTRUE
.FUNCT PCENTER:ANY:1:3,STR,STR1,STR2
DIROUT D-TABLE-ON,DIROUT-TABLE
PRINT STR
ZERO? STR1 /?CND1
PRINT STR1
?CND1: ZERO? STR2 /?CND3
PRINT STR2
?CND3: ICALL1 PRINT-CENTER-TABLE
CRLF
RTRUE
.FUNCT V-CREDITS:ANY:0:0
HLIGHT H-BOLD
ICALL2 PCENTER,SHOGUN-NAME
HLIGHT H-NORMAL
ICALL2 PCENTER,STR?99
CRLF
ICALL2 PCENTER,STR?100
CRLF
ICALL2 PCENTER,STR?101
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CCL3
ICALL2 PCENTER,STR?102
JUMP ?CND1
?CCL3: EQUAL? MACHINE,IBM \?CND1
ICALL2 PCENTER,STR?103
?CND1: CRLF
ICALL2 PCENTER,STR?104
ICALL2 PCENTER,STR?105
CRLF
ICALL2 PCENTER,STR?106
CRLF
ICALL2 PCENTER,STR?107
ICALL2 PCENTER,STR?108
ICALL2 PCENTER,STR?109
CRLF
RTRUE
.FUNCT V-$VERIFY:ANY:0:0
EQUAL? PRSO,INTNUM \?CCL3
EQUAL? P-NUMBER,1564 \?CCL3
PRINTN SERIAL
CRLF
RTRUE
?CCL3: ZERO? PRSO /?CCL7
CALL1 DONT-UNDERSTAND
RSTACK
?CCL7: PRINTI "Verifying..."
CRLF
VERIFY \?CCL10
PRINTR "The disk is correct."
?CCL10: CRLF
PRINTR "** Disk Failure **"
.FUNCT V-WAKE:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
ICALL2 NEW-PRSO,ME
RTRUE
?CCL3: PRINT I-DONT-THINK-THAT
ICALL1 THE-PRINT-PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR " sleeping."
.FUNCT V-ANSWER:ANY:0:0
ZERO? OMI-QUESTION \?CTR2
ZERO? YABU-QUESTION \?CTR2
ZERO? QCONTEXT /?CCL3
CALL2 ACCESSIBLE?,QCONTEXT
ZERO? STACK /?CCL3
?CTR2: ZERO? OMI-QUESTION /?CCL11
ICALL2 CTHE-PRINT,OMI
JUMP ?CND9
?CCL11: ZERO? YABU-QUESTION /?CCL13
ICALL2 CTHE-PRINT,YABU
JUMP ?CND9
?CCL13: ICALL2 CTHE-PRINT,QCONTEXT
?CND9: PRINTR " seems to be expecting a more responsive answer."
?CCL3: PRINTI "Nobody is awaiting your answer."
CRLF
CALL1 END-QUOTE
RSTACK
.FUNCT PRE-ASK-ABOUT:ANY:0:0,P
ZERO? QCONTEXT /?CCL3
IN? QCONTEXT,HERE \?CCL3
EQUAL? PRSO,QCONTEXT /?CCL3
ZERO? PRSI \?CCL3
ICALL PERFORM,PRSA,QCONTEXT,PRSO
RTRUE
?CCL3: ZERO? PRSI \FALSE
CALL FIND-IN,HERE,PERSON >P
ZERO? P /FALSE
EQUAL? P,WINNER /FALSE
ICALL PERFORM-PRSA,P,PRSO
RTRUE
.FUNCT V-ASK-ABOUT:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
EQUAL? PRSO,ME \?CCL5
ICALL2 NEW-VERB,V?TELL
RTRUE
?CCL5: FSET? PRSO,PERSON \?CCL7
ICALL NEW-WINNER-PRSO,V?TELL-ME-ABOUT,PRSI
RTRUE
?CCL7: ICALL2 NEW-VERB,V?TELL
RTRUE
.FUNCT FIND-IN:ANY:2:3,WHERE,WHAT,WHAT-NOT,W,?PR-W
FIRST? WHERE >?PR-W \FALSE
?PRG6: FSET? ?PR-W,WHAT \?CND8
CALL2 VISIBLE?,?PR-W
ZERO? STACK /?CND8
EQUAL? WHAT,PERSON \?CCL13
EQUAL? ?PR-W,WINNER /?CND8
?CCL13: ZERO? WHAT-NOT \?PRD18
RETURN ?PR-W
?PRD18: FSET? ?PR-W,WHAT-NOT /?CND8
RETURN ?PR-W
?CND8: NEXT? ?PR-W >?PR-W /?PRG6
RFALSE
.FUNCT PRE-ASK-FOR:ANY:0:0
CALL1 PRE-ASK-ABOUT
RSTACK
.FUNCT V-ASK-FOR:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
EQUAL? PRSO,ME,PLAYER \?CCL5
ICALL PERFORM,V?TAKE,PRSI
RTRUE
?CCL5: FSET? PRSO,PERSON \?CCL7
ICALL NEW-WINNER-PRSO,V?GIVE,PRSI,ME
RTRUE
?CCL7: PRINTI "It's unlikely that "
ICALL1 THE-PRINT-PRSO
PRINTR " will oblige."
.FUNCT PRE-ATTACK:ANY:0:0,W
ZERO? PRSI \FALSE
CALL FIND-IN,WINNER,WEAPONBIT,WEARBIT >W
ZERO? W /FALSE
ICALL PERFORM,PRSA,PRSO,W
RTRUE
.FUNCT V-ATTACK:ANY:0:0
CALL2 IKILL,STR?110
RSTACK
.FUNCT V-HIT:ANY:0:0
CALL2 IKILL,STR?111
RSTACK
.FUNCT V-BITE:ANY:0:0
CALL2 HACK-HACK,STR?112
RSTACK
.FUNCT PRE-BOARD:ANY:0:0,AV,DIR
LOC WINNER >AV
EQUAL? PRSO,ROOMS /FALSE
FSET? PRSO,VEHBIT \?CCL5
CALL2 HELD?,PRSO
ZERO? STACK /?CCL8
PRINT YOU-HAVE-TO
PRINTI "put "
ICALL1 THE-PRINT-PRSO
PRINTI " down first."
CRLF
RETURN M-FATAL
?CCL8: EQUAL? AV,PRSO \?CCL10
ICALL2 YOU-ARE-IN,AV
RETURN M-FATAL
?CCL10: FSET? AV,VEHBIT \FALSE
CALL HELD?,PRSO,AV
ZERO? STACK /FALSE
PRINT YOU-HAVE-TO
PRINTI "leave "
ICALL2 THE-PRINT,AV
PRINTI " first"
PRINT PERIOD
RETURN M-FATAL
?CCL5: IN? PRSO,ROOMS \?CCL16
CALL2 NEXT-ROOM?,PRSO >DIR
ZERO? DIR /?CCL16
ICALL2 DO-WALK,DIR
RTRUE
?CCL16: PRINT YOU-CANT
PRINTI "get "
FSET? PRSO,PERSON \?CCL21
PRINTI "onto "
JUMP ?CND19
?CCL21: PRINTI "into "
?CND19: ICALL1 THE-PRINT-PRSO
PRINTC 33
CRLF
RETURN M-FATAL
.FUNCT YOU-ARE-IN:ANY:1:1,AV
PRINT YOU-ARE
FSET? AV,SURFACEBIT \?CCL3
PUSH STR?113
JUMP ?CND1
?CCL3: PUSH STR?114
?CND1: PRINT STACK
ICALL2 THE-PRINT,AV
PRINTR "!"
.FUNCT V-BOARD:ANY:0:0,AV
PRINT YOU-ARE-NOW
FSET? PRSO,SURFACEBIT \?CCL3
PRINTI "on "
JUMP ?CND1
?CCL3: PRINTI "in "
?CND1: ICALL1 THE-PRSO
MOVE WINNER,PRSO
GETP PRSO,P?ACTION
ICALL STACK,M-ENTER
RTRUE
.FUNCT V-BURN:ANY:0:0
ZERO? PRSI \?CCL3
PRINTR "Your gaze is insufficient."
?CCL3: CALL1 WITH-PRSI?
RSTACK
.FUNCT V-CHASTISE:ANY:0:0
PRINTR "Use prepositions instead: LOOK AT the object, LOOK INSIDE it, LOOK UNDER it, etc."
.FUNCT V-CLIMB-DOWN:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL2 DO-WALK,P?DOWN
RSTACK
?CCL3: PRINT WASTE-OF-TIME
RTRUE
.FUNCT V-CLIMB-FOO:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL2 DO-WALK,P?UP
RSTACK
?CCL3: PRINT WASTE-OF-TIME
RTRUE
.FUNCT V-CLIMB-ON:ANY:0:0
FSET? PRSO,VEHBIT \?CCL3
FSET? PRSO,SURFACEBIT \?CCL3
ICALL2 NEW-VERB,V?BOARD
RTRUE
?CCL3: PRINT YOU-CANT
PRINTI "climb onto "
CALL1 A-PRSO
RSTACK
.FUNCT V-CLIMB-OVER:ANY:0:0
CALL1 YOU-CANT-X-THAT
RSTACK
.FUNCT V-CLIMB-UP:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL2 DO-WALK,P?UP
RSTACK
?CCL3: PRINT WASTE-OF-TIME
RTRUE
.FUNCT V-CLOSE:ANY:0:0
FSET? PRSO,OPENBIT /?CCL3
FSET? PRSO,OPENABLE \?CCL3
CALL1 ALREADY-CLOSED
RSTACK
?CCL3: FSET? PRSO,SURFACEBIT /?CTR6
FSET? PRSO,CONTBIT /?CCL7
FSET? PRSO,DOORBIT /?CCL7
?CTR6: PRINTI "There's no way to close "
CALL1 THE-PRSO
RSTACK
?CCL7: FSET? PRSO,PERSON \?CCL13
PRINTR "Huh?"
?CCL13: GETP PRSO,P?CAPACITY
ZERO? STACK /?CCL15
FSET? PRSO,OPENBIT \?CCL18
FCLEAR PRSO,OPENBIT
PRINTI "Closed"
CALL1 IN-DARK?
RSTACK
?CCL18: CALL1 ALREADY-CLOSED
RSTACK
?CCL15: FSET? PRSO,DOORBIT \?CCL20
CALL1 CLOSE-A-DOOR
RSTACK
?CCL20: CALL2 YOU-CANT-X-THAT,STR?115
RSTACK
.FUNCT CLOSE-A-DOOR:ANY:0:0
FSET? PRSO,OPENBIT \?CCL3
ICALL2 OKAY-THE-PRSO-IS-NOW,STR?63
FCLEAR PRSO,OPENBIT
RTRUE
?CCL3: CALL1 ALREADY-CLOSED
RSTACK
.FUNCT IN-DARK?:ANY:0:1,DIE?,OLIT
SET 'OLIT,LIT
CALL2 LIT?,HERE >LIT
PRINT PERIOD
RTRUE
.FUNCT OKAY-THE-PRSO-IS-NOW:ANY:1:1,STR
ICALL1 CTHE-PRINT-PRSO
PRINTI " is now "
PRINT STR
PRINT PERIOD
RTRUE
.FUNCT V-COMPARE-MANY:ANY:0:0,?TMP1
GET P-PRSO,0
EQUAL? STACK,2 \?CCL3
SET 'P-MULT,FALSE-VALUE
GET P-PRSO,1 >?TMP1
GET P-PRSO,2
ICALL PERFORM,V?COMPARE,?TMP1,STACK
RETURN M-FATAL
?CCL3: PRINTR "You can only compare two things."
.FUNCT V-WASTE-OF-TIME:ANY:0:0
PRINT WASTE-OF-TIME
RTRUE
.FUNCT V-COMPARE:ANY:0:0
PRINT WASTE-OF-TIME
RTRUE
.FUNCT V-CROSS:ANY:0:0
CALL2 YOU-CANT-X-THAT,STR?116
RSTACK
.FUNCT V-CURSE:ANY:0:0
EQUAL? PRSO,FALSE-VALUE,ROOMS,YOU \?CCL3
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
?CCL3: FSET? PRSO,DUTCHBIT \?CCL7
PRINTD PRSO
PRINTR " makes an anatomically impossible suggestion."
?CCL7: PRINTR "Fortunately, your swearing is incomprehensible. Your manners are very bad, even for a barbarian."
.FUNCT V-CUT:ANY:0:0
FSET? PRSO,PERSON \?CCL3
ICALL2 NEW-VERB,V?KILL
RTRUE
?CCL3: ZERO? PRSI /?CTR4
FSET? PRSI,WEAPONBIT /?CCL5
?CTR4: ZERO? PRSI /?CTR9
CALL2 INTRINSIC?,PRSI
ZERO? STACK /?CCL10
?CTR9: PRINTI "Your body"
JUMP ?CND8
?CCL10: ICALL1 CTHE-PRINT-PRSI
?CND8: PRINTR " has an inadequate ""cutting edge."""
?CCL5: CALL1 TO-A-PRSO?
RSTACK
.FUNCT V-DIG:ANY:0:0
ZERO? PRSI /?CCL3
FSET? PRSI,TOOLBIT \?CCL3
PRINTI "Digging with "
ICALL1 THE-PRINT-PRSI
PRINTR " would be slow, tiring, and tedious."
?CCL3: EQUAL? PRSO,GROUND \?CCL7
PRINTR "You don't have anything to dig with."
?CCL7: PRINT WASTE-OF-TIME
RTRUE
.FUNCT V-DISEMBARK:ANY:0:0,AV
LOC WINNER >AV
ZERO? PRSO /?CTR2
EQUAL? PRSO,ROOMS \?CCL3
?CTR2: ZERO? AV /?CCL8
FSET? AV,VEHBIT \?CCL8
ICALL2 NEW-PRSO,AV
RTRUE
?CCL8: PRINT STR?61
PRINTR "in anything."
?CCL3: IN? WINNER,PRSO /?CCL12
PRINTI "You aren't in "
ICALL1 THE-PRINT-PRSO
PRINTR "."
?CCL12: ZERO? AV /?CCL14
FSET? AV,VEHBIT \?CCL14
EQUAL? AV,PRSO /?CCL19
CALL HELD?,AV,PRSO
ZERO? STACK \?CCL19
ICALL2 YOU-ARE-IN,AV
RETURN M-FATAL
?CCL19: LOC PRSO
MOVE WINNER,STACK
ICALL1 B-STAND
PRINT YOU-ARE-NOW
PRINTR "on your feet."
?CCL14: IN? PRSO,ROOMS \?CCL23
ICALL2 DO-WALK,P?OUT
RTRUE
?CCL23: LOC PRSO
ZERO? STACK /?CCL25
ICALL2 NEW-VERB,V?TAKE
RTRUE
?CCL25: PRINT STR?117
CRLF
RTRUE
.FUNCT V-DRINK:ANY:0:0,S
CALL2 YOU-CANT-X-THAT,STR?118
RSTACK
.FUNCT V-DRINK-FROM:ANY:0:0,X
CALL1 TO-A-PRSO?
RSTACK
.FUNCT PRE-DROP:ANY:0:0
LOC WINNER
EQUAL? PRSO,STACK \FALSE
ICALL2 NEW-VERB,V?DISEMBARK
RTRUE
.FUNCT V-DROP:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
PRINT STR?61
PRINT STR?119
CRLF
RTRUE
?CCL3: CALL1 IDROP
ZERO? STACK /TRUE
PRINTR "Dropped."
.FUNCT V-EAT:ANY:0:0,H
FSET? PRSO,PERSON \?CCL3
PRINTR "Cannibalism is not the solution."
?CCL3: PRINTI "Much as you may miss meat, bread, and grog, there is little likelihood that "
ICALL1 PRINTA-PRSO
PRINTR " will satisfy you."
.FUNCT V-ENTER:ANY:0:0
GETPT HERE,P?IN
ZERO? STACK /?CCL3
CALL2 DO-WALK,P?IN
RSTACK
?CCL3: CALL1 V-WALK-AROUND
RSTACK
.FUNCT PRE-EXAMINE:ANY:0:0,P
ZERO? LIT \?CCL3
PRINT TOO-DARK
RTRUE
?CCL3: EQUAL? HERE,MAZE /FALSE
EQUAL? HERE,SECRET-REDOUBT \?PRD8
EQUAL? PRSO,MARIKO /FALSE
?PRD8: EQUAL? HERE,CLIFF-PATH \?CCL5
EQUAL? PRSO,YABU,RODRIGUES \?CCL5
IN? PRSO,HERE \FALSE
?CCL5: GETP PRSO,P?PICTURE >P
ZERO? P /FALSE
ICALL2 MARGINAL-PIC,P
RFALSE
.FUNCT V-EXAMINE:ANY:0:0,H
EQUAL? PRSO,HERE \?CCL3
ICALL2 PERFORM,V?LOOK
RTRUE
?CCL3: FSET? PRSO,READBIT \?CCL5
GETP PRSO,P?TEXT
ZERO? STACK /?CCL5
ICALL2 NEW-VERB,V?READ
RTRUE
?CCL5: FSET? PRSO,DOORBIT \?CCL9
CALL1 V-LOOK-INSIDE
RSTACK
?CCL9: FSET? PRSO,CONTBIT \?CCL11
FSET? PRSO,OPENBIT \?CCL14
CALL1 V-LOOK-INSIDE
RSTACK
?CCL14: ICALL2 THIS-IS-IT,PRSO
PRINT STR?120
RTRUE
?CCL11: FSET? PRSO,DEAD \?CCL16
ICALL1 CTHE-PRINT-PRSO
PRINTR " is dead."
?CCL16: FSET? PRSO,ABSTRACTBIT \?CCL18
PRINTR "You can't see that from here!"
?CCL18: CALL1 PRSO-NOTHING-SPECIAL
RSTACK
.FUNCT PRSO-NOTHING-SPECIAL:ANY:0:0
PRINT STR?121
CALL1 THE-PRSO
RSTACK
.FUNCT V-EXIT:ANY:0:0
ZERO? PRSO /?CCL3
FSET? PRSO,VEHBIT \?CCL6
ICALL2 NEW-VERB,V?DISEMBARK
RTRUE
?CCL6: PRINT YOU-CANT
PRINTI "exit "
ICALL1 THE-PRINT-PRSO
PRINTR "."
?CCL3: LOC WINNER
FSET? STACK,VEHBIT \?CCL8
LOC WINNER
ICALL PERFORM,V?DISEMBARK,STACK
RTRUE
?CCL8: GETPT HERE,P?OUT
ZERO? STACK /?CCL10
CALL2 DO-WALK,P?OUT
RSTACK
?CCL10: CALL1 V-WALK-AROUND
RSTACK
.FUNCT V-FILL:ANY:0:0
ZERO? PRSI \?CCL3
PRINT THERES-NOTHING-TO
PRINTI "fill it with"
PRINT PERIOD
RTRUE
?CCL3: CALL1 TELL-YUKS
RSTACK
.FUNCT V-FIND:ANY:0:1,WHERE,L
ZERO? PRSO \?CCL3
ICALL PERFORM,V?WHERE,ME
RTRUE
?CCL3: EQUAL? PRSO,PLAYER \?CCL5
PRINTI "As close as the hairs of your beard"
JUMP ?CND1
?CCL5: CALL2 INTRINSIC?,PRSO
ZERO? STACK /?CCL7
PRINTI "Nearby, I'm sure"
JUMP ?CND1
?CCL7: IN? PRSO,PLAYER \?CCL9
PRINTI "You have it"
JUMP ?CND1
?CCL9: IN? PRSO,HERE /?CTR10
EQUAL? PRSO,PSEUDO-OBJECT \?CCL11
?CTR10: PRINTI "Right in front of you"
JUMP ?CND1
?CCL11: IN? PRSO,LOCAL-GLOBALS /?CTR14
IN? PRSO,GLOBAL-OBJECTS \?CCL15
?CTR14: ICALL2 CPRINT-HE/SHE,PRSO
PRINTI " could be nearby"
JUMP ?CND1
?CCL15: LOC PRSO >L
ZERO? L /?CCL19
FSET? L,PERSON \?CCL22
CALL2 VISIBLE?,L
ZERO? STACK /?CCL22
PRINTI "I think "
ICALL2 THE-PRINT,L
PRINTI " has it"
JUMP ?CND1
?CCL22: CALL2 ACCESSIBLE?,PRSO
ZERO? STACK /?CCL26
PRINTI "It's in "
ICALL2 THE-PRINT,L
JUMP ?CND1
?CCL26: ZERO? WHERE /?CCL28
PRINTI "Beats me"
JUMP ?CND1
?CCL28: PRINT YOU-HAVE-TO
PRINTI "find "
ICALL2 PRINT-HIM/HER,PRSO
PRINTI " yourself"
JUMP ?CND1
?CCL19: PRINTI "You have no idea where to find "
ICALL1 THE-PRINT-PRSO
?CND1: PRINT PERIOD
RTRUE
.FUNCT V-FOLLOW:ANY:0:0,TMP,LP,DIR
ZERO? PRSO \?CCL3
PRINT YOU-HAVE-TO
PRINTR " be more specific about whom you want to follow."
?CCL3: LOC PRSO >LP
ZERO? LP /?CCL5
IN? LP,ROOMS \?CCL5
CALL2 NEXT-ROOM?,LP >DIR
ZERO? DIR /?CCL5
CALL2 DO-WALK,DIR
RSTACK
?CCL5: IN? WINNER,LP \?CCL10
PRINT YOU-CANT
PRINTI "follow "
ICALL1 THE-PRINT-PRSO
PRINTI ", because "
ICALL2 PRINT-HE/SHE,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR " right here!"
?CCL10: IN? WINNER,HERE \?CCL13
IN? LP,HERE \?CCL13
FSET? LP,VEHBIT \?CCL13
ICALL PERFORM,V?BOARD,LP
RTRUE
?CCL13: PRINT WASTE-OF-TIME
RTRUE
.FUNCT PRE-GIVE:ANY:0:0
EQUAL? WINNER,PLAYER \FALSE
CALL2 HELD?,PRSO
ZERO? STACK \FALSE
FSET? PRSO,PERSON /FALSE
CALL2 YOULL-HAVE-TO,STR?122
RSTACK
.FUNCT V-GIVE:ANY:0:0
FSET? PRSI,PERSON \?CTR2
FSET? PRSO,PERSON \?CCL3
?CTR2: PRINT YOU-CANT
PRINTI "give "
ICALL1 PRINTA-PRSO
PRINTI " to "
ICALL1 PRINTA-PRSI
PRINTR "!"
?CCL3: CALL2 UNINTERESTED,PRSI
RSTACK
.FUNCT V-GOODBYE:ANY:0:0,OWINNER
ZERO? PRSO /?CCL3
FSET? PRSO,DEAD \?CCL6
PRINT YOU-CANT
PRINT STR?65
CRLF
RTRUE
?CCL6: FSET? PRSO,PERSON \?CCL8
ICALL2 NEW-WINNER-PRSO,PRSA
RTRUE
?CCL8: PRINT STR?123
PRINTI """Goodbye"" to "
ICALL1 PRINTA-PRSO
PRINTR " are considered barbarians."
?CCL3: PRINTR "Leaving so soon?"
.FUNCT V-HELLO:ANY:0:0,OWINNER
ZERO? PRSO /?CCL3
FSET? PRSO,DEAD \?CCL6
PRINT YOU-CANT
PRINT STR?65
CRLF
RTRUE
?CCL6: FSET? PRSO,PERSON \?CCL8
ICALL2 NEW-WINNER-PRSO,PRSA
RTRUE
?CCL8: PRINT STR?123
PRINTI """Hello"" to "
ICALL1 PRINTA-PRSO
PRINTR " are considered crazed."
?CCL3: CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
PRINTR "In good spirits, aren't you?"
.FUNCT V-HELP:ANY:0:0
ZERO? PRSO /?CCL3
FSET? PRSO,PERSON \?CCL6
ICALL1 CTHE-PRINT-PRSO
PRINT STR?124
PRINTR "need help."
?CCL6: PRINTI "There doesn't seem to be any way to help "
ICALL1 THE-PRINT-PRSO
PRINTR "."
?CCL3: EQUAL? P-PRSA-WORD,W?HINT /?CCL8
PRINT YOU-HAVE-TO
PRINT STR?125
PRINTR "whom you want to help."
?CCL8: CALL1 V-HINT
RSTACK
.FUNCT V-HIDE:ANY:0:0
ZERO? PRSO \?CCL3
PRINTI "There's no place to hide here."
CRLF
RETURN M-FATAL
?CCL3: FSET? PRSO,PERSON \?CCL5
PRINTI "There doesn't seem any way to hide "
ICALL1 THE-PRINT-PRSO
PRINTR "."
?CCL5: ZERO? PRSI /?CCL7
FSET? PRSI,PERSON \?CCL7
CALL2 UNINTERESTED,PRSI
RSTACK
?CCL7: ZERO? PRSI \FALSE
PRINT WASTE-OF-TIME
RTRUE
.FUNCT V-HIDE-BEHIND:ANY:0:1,STR
PRINTI "There doesn't seem to be enough room "
ZERO? STR /?CCL3
PRINT STR
JUMP ?CND1
?CCL3: PRINTI "behind"
?CND1: PRINTC 32
ICALL1 THE-PRINT-PRSO
PRINTR "."
.FUNCT V-HIDE-UNDER:ANY:0:0
CALL2 V-HIDE-BEHIND,STR?126
RSTACK
.FUNCT V-HIDE-FROM:ANY:0:0
PRINT YOU-HAVE-TO
PRINTR "decide where."
.FUNCT V-KICK:ANY:0:0
FSET? PRSO,PERSON \?CTR2
FSET? PRSO,DEAD \?CCL3
?CTR2: PRINTI "Kicking "
ICALL1 PRINTA-PRSO
PRINTR " seems a waste of time."
?CCL3: FSET? PRSO,FEMALE \?CCL7
PRINT STR?127
CRLF
RTRUE
?CCL7: PRINTR "A potentially dangerous course of action!"
.FUNCT V-KILL:ANY:0:0
CALL1 PAST-TENSE?
ZERO? STACK /?CCL3
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
?CCL3: CALL2 IKILL,STR?128
RSTACK
.FUNCT IKILL:ANY:1:1,STR
EQUAL? PRSO,ROOMS \?CCL3
ZERO? OPPONENT /?CCL3
ICALL PERFORM,PRSA,OPPONENT
RTRUE
?CCL3: EQUAL? PRSO,FALSE-VALUE,ROOMS \?CCL7
PRINT THERES-NOTHING-TO
PRINT STR
PRINTR " here."
?CCL7: FSET? PRSO,DOORBIT \?CCL9
PRINTR "Pounding on a door is of little use."
?CCL9: FSET? PRSO,PERSON \?CTR10
FSET? PRSO,DEAD \?CCL11
?CTR10: PRINTI "Attacking "
ICALL1 PRINTA-PRSO
PRINTR " seems a waste of time."
?CCL11: FSET? PRSO,FEMALE \?CCL15
PRINT STR?127
CRLF
RTRUE
?CCL15: EQUAL? PRSI,FALSE-VALUE,HANDS /?CTR16
FSET? PRSI,WEAPONBIT /?CCL17
?CTR16: CALL2 HELD?,SWORDS
ZERO? STACK /?CCL22
ICALL PERFORM,V?ATTACK,PRSO,SWORDS
RTRUE
?CCL22: PRINTI "Trying to "
PRINT STR
PRINTC 32
ICALL1 THE-PRINT-PRSO
PRINTI " with "
EQUAL? PRSI,FALSE-VALUE,HANDS /?CCL25
ICALL1 PRINTA-PRSI
JUMP ?CND23
?CCL25: PRINTI "your bare hands"
?CND23: PRINTR " is suicidal."
?CCL17: IN? PRSI,WINNER /?CCL27
CALL2 NOT-HOLDING,PRSI
RSTACK
?CCL27: EQUAL? PRSI,PISTOL \?CCL29
ICALL PERFORM,V?SHOOT,PRSI,PRSO
RTRUE
?CCL29: EQUAL? PRSI,SWORDS \?CCL31
PRINTI "You swing your sword at "
ICALL1 THE-PRINT-PRSO
EQUAL? PRSO,GRAY-LEADER,GRAY-CAPTAIN,SECOND-GRAY /?CTR33
EQUAL? PRSO,GRAYS,BROWNS \?CCL34
?CTR33: PRINTR ", but he parries your attack with little difficulty."
?CCL34: PRINTI ", but "
ICALL2 PRINT-HE/SHE,PRSI
PRINTI " dodge"
ICALL2 PRINT-PLURAL,PRSI
PRINTR "."
?CCL31: CALL1 NOT-TRAINED
RSTACK
.FUNCT NOT-TRAINED:ANY:0:1,WHO
ASSIGNED? 'WHO /?CND1
SET 'WHO,PRSO
?CND1: PRINTI "Your lack of training prevents you from successfully hitting "
ICALL2 THE-PRINT,WHO
PRINTR "."
.FUNCT V-KNOCK:ANY:0:0
FSET? PRSO,DOORBIT \?CCL3
FSET? BLACKTHORNE,SITTING \?CCL6
CALL2 YOULL-HAVE-TO,STR?129
RSTACK
?CCL6: PRINTR "Nobody's home."
?CCL3: PRINTI "Why knock on "
CALL1 A-PRSO?
RSTACK
.FUNCT V-KISS:ANY:0:0
CALL2 CREWMAN?,PRSO
ZERO? STACK /?CCL3
PRINTR "You've heard that sort of tale about some of the crew, but you've never been tempted to find out the truth."
?CCL3: FSET? PRSO,PERSON \?CCL5
PRINTR "In Japan, kissing is not commonly practiced. It is considered somewhat unclean and barbaric."
?CCL5: CALL1 TELL-YUKS
RSTACK
.FUNCT V-LAMP-OFF:ANY:0:0
CALL1 TO-A-PRSO?
RSTACK
.FUNCT V-LAMP-ON:ANY:0:0
CALL1 TO-A-PRSO?
RSTACK
.FUNCT V-LEAN-ON:ANY:0:0
PRINTR "Tired?"
.FUNCT V-LEAP:ANY:0:0
FSET? BLACKTHORNE,SITTING \?CCL3
CALL2 YOULL-HAVE-TO,STR?129
RSTACK
?CCL3: ZERO? PRSO /?CCL5
IN? PRSO,HERE \?CCL5
EQUAL? PRSO,OPPONENT \?CCL10
ICALL PERFORM,V?KICK,PRSO
RTRUE
?CCL10: CALL1 V-SKIP
RSTACK
?CCL5: ZERO? PRSO \?CCL12
ZERO? OPPONENT /?CCL12
ICALL2 PERFORM,V?DODGE
RTRUE
?CCL12: PRINTR "You jump a little ways, but then fall back to the ground."
.FUNCT V-LEAVE:ANY:0:0
EQUAL? P-PRSA-WORD,W?WALK \?CCL3
PRINTR "Please specify which way you want to walk. Use compass directions."
?CCL3: CALL2 DO-WALK,P?OUT
RSTACK
.FUNCT V-LISTEN:ANY:0:0
ZERO? PRSO /?CCL3
FSET? PRSO,PERSON \?CCL3
PRINTI "Right now, "
ICALL1 THE-PRINT-PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR "n't saying anything."
?CCL3: ZERO? PRSO /?CCL7
EQUAL? PRSO,NOISE /?CCL7
PRINTI "At the moment, "
ICALL1 THE-PRINT-PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR " quiet and peaceful."
?CCL7: PRINTR "You hear nothing unusual."
.FUNCT CANT-X-WITH-PRSI:ANY:1:1,STR
PRINTI "You can't "
PRINT STR
PRINTI " anything with "
ICALL1 PRINTA-PRSI
PRINTR "."
.FUNCT V-LOCK:ANY:0:0
EQUAL? PRSI,FALSE-VALUE,KEY /?CCL3
CALL2 CANT-X-WITH-PRSI,STR?130
RSTACK
?CCL3: FSET? PRSO,LOCKED \?CCL5
PRINT STR?131
CRLF
RTRUE
?CCL5: FSET? PRSO,LOCKABLE \?CCL7
IN? KEY,WINNER \?CCL10
FSET PRSO,LOCKED
PRINTR "Done."
?CCL10: PRINT STR?132
CRLF
RTRUE
?CCL7: CALL1 NO-LOCK
RSTACK
.FUNCT NO-LOCK:ANY:0:0
ICALL1 CTHE-PRINT-PRSO
PRINTR " doesn't have a lock."
.FUNCT V-INTRODUCE:ANY:0:0,TMP
FSET? HERE,TOUCHBIT /FALSE
FSET? HERE,RMUNGBIT /?CCL3
GETPT HERE,P?SCENE >TMP
ZERO? TMP /FALSE
GETB TMP,0
EQUAL? SCENE,STACK \FALSE
?CCL3: GETP HERE,P?PICTURE >TMP
ZERO? TMP /?CND10
ICALL2 MARGINAL-PIC,TMP
?CND10: GETP HERE,P?FDESC >TMP
ZERO? TMP /TRUE
PRINT TMP
CRLF
CRLF
RTRUE
.FUNCT V-AFTER:ANY:0:0,TMP,RM
ZERO? SCENE /FALSE
GET SCENE-LOCS,SCENE
GETP STACK,P?AFTER >TMP
ZERO? TMP /FALSE
CRLF
ICALL1 TYPE-ANY-KEY
CRLF
ICALL1 INTERLUDE-STATUS-LINE
ICALL1 TIME-PASSES
ICALL TMP
CALL1 TIME-PASSES
RSTACK
.FUNCT TIME-PASSES:ANY:0:0
CRLF
ICALL2 CENTER-PIC-X,P-TIME
CRLF
RTRUE
.FUNCT NEXT-SCENE:ANY:0:0
ADD SCENE,1
CALL2 NEW-SCENE,STACK
RSTACK
.FUNCT FAILED-SCENE:ANY:0:0
CALL2 NEW-SCENE,FALSE-VALUE
RSTACK
.FUNCT NEW-SCENE:ANY:0:1,SC,S,SA,SP
ICALL1 UPDATE-STATUS-LINE
CRLF
PRINTC 91
GET SCENE-LOCS,SCENE
GETPT STACK,P?SCORE >S
GETB S,0 >SA
GETB S,1 >SP
ZERO? SC /?CCL3
PRINTI "Congratulations, you have finished this scene with a score of "
MUL SCORE-FACTOR,SA
PRINTN STACK
PRINTI " out of a possible "
MUL SCORE-FACTOR,SP
PRINTN STACK
JUMP ?CND1
?CCL3: PRINTI "Sorry, this scene is no longer winnable"
?CND1: PRINTI ".]"
CRLF
CRLF
ZERO? SC /?CCL6
ICALL1 V-AFTER
ICALL1 DEQUEUE-ALL
SET 'NEW-SCENE-NUMBER,SC
RETURN NEW-SCENE-NUMBER
?CCL6: CALL1 FINISH
RSTACK
.FUNCT I-NEW-SCENE:ANY:0:0,SC,?TMP1
ZERO? NEW-SCENE-NUMBER /FALSE
SET 'SC,NEW-SCENE-NUMBER
SET 'NEW-SCENE-NUMBER,0
CALL1 SCORE-HAVE >?TMP1
CALL1 SCORE-MAX
EQUAL? ?TMP1,STACK \?CCL6
PUSH CONTINUE-MENU
JUMP ?CND4
?CCL6: PUSH CONTINUE-AND-HINT-MENU
?CND4: ICALL GET-FROM-MENU,STR?78,STACK,CONTINUE-MENU-F
ICALL1 RESET-MARGIN
ICALL2 GOTO-SCENE,SC
RTRUE
.FUNCT SCORE-HAVE:ANY:0:0
GET SCENE-LOCS,SCENE
GETPT STACK,P?SCORE
GETB STACK,0
RSTACK
.FUNCT SCORE-MAX:ANY:0:0
GET SCENE-LOCS,SCENE
GETPT STACK,P?SCORE
GETB STACK,1
RSTACK
.FUNCT CONTINUE-MENU-F:ANY:2:2,WHICH,MENU
EQUAL? WHICH,1 /TRUE
EQUAL? WHICH,2 \?CCL5
ICALL1 V-SAVE
JUMP ?CND1
?CCL5: EQUAL? WHICH,3 \?CCL7
ICALL1 V-QUIT
JUMP ?CND1
?CCL7: EQUAL? WHICH,4 \?CND1
ICALL1 V-HINT
?CND1: ICALL1 TYPE-ANY-KEY
RFALSE
.FUNCT V-FIRST-LOOK:ANY:0:0
GRTR? VERBOSITY,1 /?PRD4
PUSH 0
JUMP ?PRD5
?PRD4: PUSH 1
?PRD5: CALL2 DESCRIBE-ROOM,STACK
ZERO? STACK /FALSE
ZERO? VERBOSITY /FALSE
CALL1 DESCRIBE-OBJECTS
RSTACK
.FUNCT V-LOOK:ANY:0:0
CALL2 DESCRIBE-ROOM,TRUE-VALUE
ZERO? STACK /FALSE
CALL1 DESCRIBE-OBJECTS
RSTACK
.FUNCT V-LOOK-BEHIND:ANY:0:0
EQUAL? PRSO,ME \?CCL3
PRINTI "You look back over your shoulder. "
PRINT STR?133
PRINTR "there."
?CCL3: FSET? PRSO,OPENBIT /?CCL5
FSET? PRSO,SURFACEBIT /?CCL5
FSET? PRSO,CONTBIT /?CTR4
FSET? PRSO,DOORBIT \?CCL5
?CTR4: CALL2 INSPECTION-REVEALS,PRSO
RSTACK
?CCL5: PRINT THERE-IS-NOTHING
PRINTI "behind "
CALL1 THE-PRSO
RSTACK
.FUNCT V-LOOK-DOWN:ANY:0:0
ZERO? LIT \?CCL3
PRINT TOO-DARK
RTRUE
?CCL3: EQUAL? PRSO,FALSE-VALUE,ROOMS,LG-HOLE \?CCL5
CALL GLOBAL-IN?,LG-HOLE,HERE
ZERO? STACK /?CCL8
ICALL PERFORM,V?LOOK-INSIDE,LG-HOLE
RTRUE
?CCL8: ICALL PERFORM,V?EXAMINE,GROUND
RTRUE
?CCL5: CALL1 PRSO-NOTHING-SPECIAL
RSTACK
.FUNCT WHAT-CONTENTS:ANY:0:0
CALL2 DESCRIBE-CONTENTS,PRSO
ZERO? STACK \?CND1
PRINTI "nothing"
IN? PLAYER,PRSO \?CND1
PRINTI " (other than you)"
?CND1: PRINT PERIOD
RTRUE
.FUNCT V-LOOK-INSIDE:ANY:0:0
FSET? PRSO,PERSON \?CCL3
CALL1 PRSO-NOTHING-SPECIAL
RSTACK
?CCL3: FSET? PRSO,DOORBIT \?CCL5
ICALL2 THIS-IS-IT,PRSO
PRINTI "All you can tell is that "
CALL1 TELL-OPEN-CLOSED
RSTACK
?CCL5: FSET? PRSO,CONTBIT \?CCL7
LOC WINNER
EQUAL? PRSO,STACK \?CCL10
MOVE PLAYER,ROOMS
PRINTI "Aside from you, there's "
ICALL1 WHAT-CONTENTS
MOVE PLAYER,PRSO
RTRUE
?CCL10: CALL2 SEE-INSIDE?,PRSO
ZERO? STACK /?CCL12
ICALL1 CTHE-PRINT-PRSO
PRINTI " contains "
CALL1 WHAT-CONTENTS
RSTACK
?CCL12: FSET? PRSO,OPENBIT /?CCL14
FIRST? PRSO \?CCL14
ICALL2 NEW-VERB,V?OPEN
RTRUE
?CCL14: ICALL2 THIS-IS-IT,PRSO
PRINTI "It seems "
CALL1 TELL-OPEN-CLOSED
RSTACK
?CCL7: CALL2 YOU-CANT-X-PRSO,STR?134
RSTACK
.FUNCT V-LOOK-ON:ANY:0:0
FSET? PRSO,PERSON \?CCL3
CALL1 PRSO-NOTHING-SPECIAL
RSTACK
?CCL3: FSET? PRSO,SURFACEBIT /?CTR4
FSET? PRSO,FURNITURE \?CCL5
?CTR4: PRINTI "On "
ICALL1 THE-PRINT-PRSO
PRINTI " is "
CALL1 WHAT-CONTENTS
RSTACK
?CCL5: PRINTI "You don't see anything on "
ICALL1 THE-PRINT-PRSO
PRINTR "."
.FUNCT V-LOOK-UNDER:ANY:0:0
CALL2 HELD?,PRSO
ZERO? STACK /?CCL3
PRINTR "You see your hand."
?CCL3: PRINT THERE-IS-NOTHING
PRINTR "there."
.FUNCT V-LOWER:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
ICALL2 PERFORM,V?SIT
RTRUE
?CCL3: FSET? PRSO,TAKEBIT /?CCL5
CALL2 YOU-CANT-X-THAT,STR?135
RSTACK
?CCL5: CALL2 HACK-HACK,STR?136
RSTACK
.FUNCT V-MELT:ANY:0:0
CALL1 WITH-PRSI?
RSTACK
.FUNCT V-MOVE:ANY:0:0
EQUAL? PRSO,FALSE-VALUE,ROOMS \?CCL3
PRINTR "What moves!"
?CCL3: CALL2 HELD?,PRSO
ZERO? STACK /?CCL5
FSET? PRSO,BODY-PART /?CCL5
PRINTI "You're holding "
ICALL2 PRINT-HIM/HER,PRSO
PRINTI ". Are you planning to juggle "
ICALL2 PRINT-HIM/HER,PRSO
PRINTR "?"
?CCL5: FSET? PRSO,TAKEBIT \?CCL9
CALL2 DEAD?,PRSO
ZERO? STACK /?CCL9
CALL1 V-TURN-OVER
RSTACK
?CCL9: FSET? PRSO,DOORBIT \?CCL13
ICALL PERFORM,V?OPEN,PRSO
RTRUE
?CCL13: CALL2 YOU-CANT-X-PRSO,STR?137
RSTACK
.FUNCT MOTION-VERB?:ANY:0:0
EQUAL? PRSA,V?WALK,V?WALK-TO,V?WALK-AROUND /TRUE
EQUAL? PRSA,V?ENTER,V?EXIT,V?DODGE /TRUE
EQUAL? PRSA,V?AVOID,V?LEAP,V?DIVE /TRUE
EQUAL? PRSA,V?DANCE,V?TURN-AROUND,V?HIDE /TRUE
EQUAL? PRSA,V?HIDE-BEHIND,V?HIDE-UNDER,V?MOVE /TRUE
EQUAL? PRSA,V?BOARD,V?CLIMB-DOWN,V?CLIMB-FOO /TRUE
EQUAL? PRSA,V?CLIMB-UP /TRUE
RFALSE
.FUNCT HOSTILE-VERB?:ANY:0:0
EQUAL? PRSA,V?ATTACK,V?BITE,V?CUT /TRUE
EQUAL? PRSA,V?HIT,V?KICK,V?KILL /TRUE
EQUAL? PRSA,V?MOVE,V?MUNG,V?PISS /TRUE
EQUAL? PRSA,V?PUSH,V?PUSH-OUT,V?RUB /TRUE
EQUAL? PRSA,V?SHAKE,V?SHOOT,V?SPIT /TRUE
EQUAL? PRSA,V?SWING,V?THROW,V?TRIP /TRUE
EQUAL? PRSA,V?TAKE \?CCL11
EQUAL? P-PRSA-WORD,W?GRAB,W?TACKLE,W?LUNGE \?CCL11
FSET? PRSO,PERSON /TRUE
?CCL11: EQUAL? PRSA,V?FUCK \FALSE
FSET? PRSO,PERSON \FALSE
FSET? PERSON,FEMALE \TRUE
RFALSE
.FUNCT JAPANESE-VERB?:ANY:0:0
EQUAL? PRSA,V?DOMO,V?DOZO,V?GENKI-DESU /TRUE
EQUAL? PRSA,V?GOMEN-NASAI,V?HAI,V?ISOGI /TRUE
EQUAL? PRSA,V?IYE,V?KINJIRU,V?KONNICHI-WA /TRUE
EQUAL? PRSA,V?KONBANWA,V?MIZU,V?NIHON-GO-GA /TRUE
EQUAL? PRSA,V?TEKI,V?WAKARIMASU /TRUE
RFALSE
.FUNCT ACT-CRAZY?:ANY:0:0
EQUAL? PRSA,V?YELL,V?YELL-AT,V?DANCE /TRUE
EQUAL? PRSA,V?SING,V?LAUGH,V?BABBLE /TRUE
EQUAL? PRSA,V?ACT \FALSE
EQUAL? PRSO,CRAZY /TRUE
RFALSE
.FUNCT ABSTRACT-VERB?:ANY:0:0,?TMP1
CALL1 EVERYWHERE-VERB? >?TMP1
ZERO? ?TMP1 /?PRD3
RETURN ?TMP1
?PRD3: CALL1 PAST-TENSE?
RSTACK
.FUNCT PASSIVE-VERB?:ANY:0:0,?TMP1
CALL1 ABSTRACT-VERB? >?TMP1
ZERO? ?TMP1 /?PRD3
RETURN ?TMP1
?PRD3: EQUAL? PRSA,V?ASK-ABOUT,V?BOW,V?COMPARE /TRUE
EQUAL? PRSA,V?COUNT,V?CURSE,V?DIE /TRUE
EQUAL? PRSA,V?DISEMBARK,V?EXAMINE,V?HELLO /TRUE
EQUAL? PRSA,V?LAUGH,V?LISTEN,V?LOOK /TRUE
EQUAL? PRSA,V?LOOK-BEHIND,V?LOOK-DOWN,V?LOOK-INSIDE /TRUE
EQUAL? PRSA,V?LOOK-UNDER,V?POINT,V?READ /TRUE
EQUAL? PRSA,V?REPLY,V?SAY,V?SCARE /TRUE
EQUAL? PRSA,V?SHOW,V?SPEAK,V?TELL /TRUE
EQUAL? PRSA,V?TELL-ABOUT,V?THANK,V?THOU /TRUE
EQUAL? PRSA,V?WAIT,V?WAIT-FOR,V?WALK /TRUE
EQUAL? PRSA,V?WAVE-AT,V?YAWN,V?YELL /TRUE
EQUAL? PRSA,V?YELL-AT /TRUE
RFALSE
.FUNCT V-MUNG:ANY:0:0
CALL2 HACK-HACK,STR?138
RSTACK
.FUNCT PRE-OPEN:ANY:0:0
CALL1 PAST-TENSE?
ZERO? STACK /?CCL3
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
?CCL3: ZERO? PRSI /FALSE
CALL2 HELD?,PRSI
ZERO? STACK \FALSE
CALL2 NOT-HOLDING,PRSI
RSTACK
.FUNCT V-OPEN:ANY:0:0,F,STR
FSET? PRSO,DOORBIT \?CND1
SET 'P-LAST-OPEN,PRSO
?CND1: FSET? PRSO,PERSON \?CCL5
PRINT YOU-CANT
PRINTR "open a person, at least not without making a mess."
?CCL5: FSET? PRSO,OPENBIT \?CCL7
FSET? PRSO,OPENABLE \?CCL10
CALL1 ALREADY-OPEN
RSTACK
?CCL10: PRINTR "It looks open from here."
?CCL7: FSET? PRSO,CONTBIT /?PRD14
FSET? PRSO,DOORBIT \?CTR11
?PRD14: FSET? PRSO,SURFACEBIT \?CCL12
?CTR11: IN? PRSO,ROOMS \?CCL19
PRINT YOU-HAVE-TO
PRINTR "specify a door to open."
?CCL19: CALL1 TO-A-PRSO?
RSTACK
?CCL12: GETP PRSO,P?CAPACITY
ZERO? STACK /?CCL21
FSET? PRSO,OPENBIT /FALSE
FSET PRSO,OPENBIT
FSET PRSO,TOUCHBIT
FIRST? PRSO \?CTR26
FSET? PRSO,TRANSBIT \?CCL27
?CTR26: PRINTR "Opened."
?CCL27: FIRST? PRSO >F \?CCL31
NEXT? F /?CCL31
GETP F,P?FDESC >STR
ZERO? STR /?CCL31
ICALL2 OKAY-THE-PRSO-IS-NOW,STR?62
PRINT STR
CRLF
RTRUE
?CCL31: PRINTI "Opening "
ICALL1 THE-PRINT-PRSO
PRINTI " reveals "
CALL1 WHAT-CONTENTS
RSTACK
?CCL21: FSET? PRSO,OPENBIT \?CCL37
CALL1 ALREADY-OPEN
RSTACK
?CCL37: FSET? PRSO,LOCKED \?CCL39
PRINTR "It's locked."
?CCL39: FSET PRSO,OPENBIT
CALL2 OKAY-THE-PRSO-IS-NOW,STR?62
RSTACK
.FUNCT V-PICK:ANY:0:0
CALL2 YOU-CANT-X-THAT,STR?139
RSTACK
.FUNCT V-PLUG:ANY:0:0
CALL1 NO-EFFECT
RSTACK
.FUNCT V-POINT:ANY:0:0
EQUAL? SCENE,S-ANJIRO \?CCL3
IN? ONNA,HERE \?CCL3
EQUAL? PRSO,ONNA /?CCL3
ICALL PERFORM,V?SHOW,PRSO,ONNA
RTRUE
?CCL3: FSET? PRSO,PERSON \?CCL8
PRINTR "It is considered impolite to point."
?CCL8: PRINTI "You are now pointing at "
ICALL1 PRINTA-PRSO
PRINTR "."
.FUNCT V-POUR-FROM:ANY:0:0
IN? PRSO,PRSI \?CCL3
ICALL PERFORM,V?POUR,PRSO
RTRUE
?CCL3: PRINTR "It's not in that!"
.FUNCT PRE-POUR:ANY:0:0
EQUAL? PRSO,PRSI \FALSE
CALL1 TELL-YUKS
RSTACK
.FUNCT V-POUR:ANY:0:0
FSET? PRSO,CONTBIT \?CCL3
CALL2 HELD?,PRSO
ZERO? STACK /?CCL3
CALL EMPTY-ALL,PRSO,PRSI
RSTACK
?CCL3: CALL2 YOU-CANT-X-THAT,STR?140
RSTACK
.FUNCT EMPTY-ALL:ANY:2:2,FROM,TO,F,N,R,1ST?,?PR-F,?PR-N
FIRST? FROM >?PR-F /?PRG4
?PRG4: ZERO? ?PR-F /?REP2
NEXT? ?PR-F >?PR-N /?BOGUS8
?BOGUS8: FSET? ?PR-F,TAKEBIT \?CND9
SET '1ST?,TRUE-VALUE
ICALL2 DPRINT,?PR-F
PRINTI ": "
ZERO? TO /?CCL13
CALL PERFORM,V?PUT,?PR-F,TO >R
JUMP ?CND11
?CCL13: CALL PERFORM,V?DROP,?PR-F >R
?CND11: EQUAL? R,M-FATAL /TRUE
?CND9: SET '?PR-F,?PR-N
JUMP ?PRG4
?REP2: ZERO? 1ST? \TRUE
ICALL2 CTHE-PRINT,FROM
PRINTR " is empty."
.FUNCT V-PUSH:ANY:0:0
CALL2 HACK-HACK,STR?141
RSTACK
.FUNCT V-PUSH-TO:ANY:0:0
EQUAL? PRSI,INTDIR \?CCL3
ICALL PERFORM,V?MOVE,PRSO
RTRUE
?CCL3: PRINT YOU-CANT
PRINTI "push "
ICALL1 THE-PRINT-PRSO
PRINTI " into "
ICALL1 THE-PRINT-PRSI
PRINTR "!"
.FUNCT PRE-PUT:ANY:0:0,L
LOC PRSO >L
IN? PRSO,GLOBAL-OBJECTS /?CTR2
FSET? PRSO,TAKEBIT /?CCL3
?CTR2: PRINTR "Nice try."
?CCL3: EQUAL? PRSA,V?PUT \?CCL7
FSET? PRSO,WEAPONBIT \?CCL7
FSET? PRSI,PERSON \?CCL7
ICALL2 SWAP-VERB,V?ATTACK
RTRUE
?CCL7: IN? PRSO,PRSI \?CCL12
CALL TAKE-OUT-FIRST,PRSO,PRSI
RSTACK
?CCL12: IN? PRSI,PRSO \?CCL14
CALL TAKE-OUT-FIRST,PRSI,PRSO
RSTACK
?CCL14: FSET? L,PERSON /FALSE
FSET? L,CONTBIT \FALSE
FSET? L,OPENBIT /FALSE
CALL TAKE-OUT-FIRST,PRSO,L
RSTACK
.FUNCT TAKE-OUT-FIRST:ANY:2:2,OBJ,CONT
PRINTI "You should take "
ICALL2 THE-PRINT,OBJ
PRINTI " out of "
ICALL2 THE-PRINT,CONT
PRINTR " first."
.FUNCT V-PUT:ANY:0:0,W
FSET? PRSI,OPENBIT /?CCL3
FSET? PRSI,DOORBIT /?CCL3
FSET? PRSI,CONTBIT /?CCL3
FSET? PRSI,SURFACEBIT /?CCL3
FSET? PRSI,VEHBIT /?CCL3
ICALL1 YOU-CANT-X-THAT
RTRUE
?CCL3: FSET? PRSI,OPENBIT /?CCL10
FSET? PRSI,SURFACEBIT /?CCL10
CALL2 INSPECTION-REVEALS,PRSI
RSTACK
?CCL10: EQUAL? PRSI,PRSO \?CCL14
CALL1 TO-A-PRSO?
RSTACK
?CCL14: IN? PRSO,PRSI \?CCL16
PRINTI "I think "
ICALL1 THE-PRINT-PRSO
PRINTI " is already in "
CALL1 THE-PRSI
RSTACK
?CCL16: FSET? PRSI,PERSON /?CTR17
LOC PRSI >W
FSET? W,PERSON \?CCL18
EQUAL? W,WINNER /?CCL18
?CTR17: ZERO? W \?CND23
SET 'W,PRSI
?CND23: PRINTI "Don't you think you should ask "
ICALL2 THE-PRINT,W
PRINTR " first?"
?CCL18: CALL1 PRSO-TOO-BIG?
ZERO? STACK /?CCL26
PRINT NO-ROOM
CRLF
RTRUE
?CCL26: CALL2 HELD?,PRSO
ZERO? STACK \?CCL28
CALL1 ITAKE
EQUAL? STACK,TRUE-VALUE \TRUE
?CCL28: FSET? PRSO,WEARBIT \?CCL32
CALL1 HAVE-TO-TAKE-OFF
RSTACK
?CCL32: FCLEAR PRSO,WEARBIT
MOVE PRSO,PRSI
FSET PRSO,TOUCHBIT
PRINTR "Done."
.FUNCT PRSO-TOO-BIG?:ANY:0:0,?TMP1,?TMP2,?TMP3
CALL2 WEIGHT,PRSI >?TMP3
CALL2 WEIGHT,PRSO
ADD ?TMP3,STACK >?TMP2
GETP PRSI,P?SIZE
SUB ?TMP2,STACK >?TMP1
GETP PRSI,P?CAPACITY
GRTR? ?TMP1,STACK /TRUE
RFALSE
.FUNCT INSPECTION-REVEALS:ANY:1:1,OBJ
ICALL2 THIS-IS-IT,OBJ
PRINTI "Inspection reveals that "
ICALL2 THE-PRINT,OBJ
PRINTR " isn't open."
.FUNCT V-PUT-BEHIND:ANY:0:0
PRINT YOU-CANT
PRINTR "be sure what's behind there already."
.FUNCT V-PUT-ON:ANY:0:0
EQUAL? PRSI,ME \?CCL3
FSET? PRSO,WEARBIT \?CCL6
PRINTI "You already have "
ICALL1 THE-PRINT-PRSO
PRINTR " on."
?CCL6: ICALL PERFORM,V?WEAR,PRSO
RTRUE
?CCL3: EQUAL? PRSI,GROUND \?CCL8
ICALL PERFORM,V?DROP,PRSO
RTRUE
?CCL8: FSET? PRSI,SURFACEBIT \?CCL10
CALL1 V-PUT
RSTACK
?CCL10: FSET? PRSI,PERSON \?CCL12
FSET? PRSO,DEAD /?CCL12
FSET? PRSO,WEARABLE \?CCL17
PRINTI "Presumably, "
ICALL1 THE-PRINT-PRSI
PRINTI " would prefer to dress "
ICALL2 PRINT-HIM/HER,PRSO
PRINTR "self."
?CCL17: ICALL1 CTHE-PRINT-PRSI
PRINTR " doesn't look like a table to me."
?CCL12: CALL1 NO-GOOD-SURFACE
RSTACK
.FUNCT NO-GOOD-SURFACE:ANY:0:0
PRINTI "There's no good surface on "
CALL1 THE-PRSI
RSTACK
.FUNCT V-PUT-UNDER:ANY:0:0
CALL2 YOU-CANT-X-THAT,STR?142
RSTACK
.FUNCT V-RAISE:ANY:0:0,?TMP1
FSET? PRSO,PERSON \?CCL3
EQUAL? PRSO,WINNER,ME /?CCL3
ICALL PERFORM,V?TAKE,PRSO
RTRUE
?CCL3: FSET? PRSO,TAKEBIT /?CCL7
PRINT YOU-CANT
PRINTR "raise that."
?CCL7: LOC PRSO
IN? STACK,WINNER /?CCL9
CALL2 WEIGHT,PRSO >?TMP1
CALL2 WEIGHT,WINNER
ADD ?TMP1,STACK
GRTR? STACK,LOAD-ALLOWED \?CCL9
ICALL1 CTHE-PRINT-PRSO
PRINTR " is too heavy."
?CCL9: CALL2 HACK-HACK,STR?143
RSTACK
.FUNCT V-REACH-IN:ANY:0:0,OBJ
FSET? PRSO,CONTBIT \?CTR2
FSET? PRSO,PERSON \?CCL3
?CTR2: CALL1 TO-A-PRSO?
RSTACK
?CCL3: FSET? PRSO,OPENBIT /?CCL7
PRINTR "It's not open."
?CCL7: FIRST? PRSO >OBJ \?CTR8
FSET? OBJ,INVISIBLE /?CTR8
FSET? OBJ,TAKEBIT /?CCL9
?CTR8: CALL1 ITS-EMPTY
RSTACK
?CCL9: PRINT STR?144
PRINTI "in "
ICALL1 THE-PRINT-PRSO
PRINTR "!"
.FUNCT PRE-READ:ANY:0:0
ZERO? LIT \?CCL3
PRINT YOU-CANT
PRINTR "read in the dark."
?CCL3: ZERO? PRSI /FALSE
FSET? PRSI,TRANSBIT /FALSE
ICALL1 HOW-DO-YOU
CALL1 A-PRSI?
RSTACK
.FUNCT HOW-DO-YOU:ANY:0:0
PRINTI "How do you do that with "
RTRUE
.FUNCT V-READ:ANY:0:0
FSET? PRSO,READBIT \?CCL3
GETP PRSO,P?TEXT
ZERO? STACK /?CCL3
GETP PRSO,P?TEXT
PRINT STACK
CRLF
RTRUE
?CCL3: CALL1 TO-A-PRSO?
RSTACK
.FUNCT V-REPLY:ANY:0:0
ICALL1 END-QUOTE
EQUAL? PRSO,INTQUOTE \?CCL3
PRINTR "[Please answer without using quotes.]"
?CCL3: EQUAL? PRSO,QCONTEXT \?CCL5
ZERO? PRSI \?CCL8
ICALL2 PERFORM,V?ANSWER
RTRUE
?CCL8: ICALL PERFORM,V?REPLY,PRSI
RTRUE
?CCL5: ZERO? PRSI \?CCL10
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
?CCL10: PRINTR "You are ignored."
.FUNCT PRE-SRUB:ANY:0:0
ICALL2 SWAP-VERB,V?RUB
RTRUE
.FUNCT V-SRUB:ANY:0:0
RTRUE
.FUNCT V-RUB:ANY:0:0,H
EQUAL? PRSO,AIR \?CCL3
PRINTI "It's "
FSET? HERE,OUTSIDE \?CCL6
PRINTR "cold."
?CCL6: PRINTR "warm."
?CCL3: CALL2 HACK-HACK,STR?145
RSTACK
.FUNCT V-SAY:ANY:0:0,V
EQUAL? PRSO,INTQUOTE \?CCL3
ZERO? OMI-QUESTION \?CTR2
ZERO? YABU-QUESTION \?CTR2
ZERO? RODRIGUES-QUESTION \?CTR2
ZERO? AFTERMATH-QUESTION /?CCL3
?CTR2: CALL2 HOW-TO-USE-TELL,PRSI
RSTACK
?CCL3: CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
EQUAL? PRSO,ENGLISH,PORTUGUESE,SPANISH /?CTR12
EQUAL? PRSO,DUTCH,LATIN,JAPANESE \?CCL13
?CTR12: ICALL PERFORM,V?SPEAK,PRSO,PRSI
RTRUE
?CCL13: ZERO? PRSI \FALSE
PRINTI "If you wish to speak to someone, you should say (for example) """
CALL FIND-IN,HERE,PERSON >V
ZERO? V /?CCL20
ICALL2 DPRINT,V
JUMP ?CND18
?CCL20: ICALL2 PRINTUNDER,STR?146
?CND18: PRINTI ", "
ICALL2 PRINTUNDER,STR?147
PRINTC 34
CRLF
CALL1 END-QUOTE
RSTACK
.FUNCT HOW-TO-USE-TELL:ANY:1:1,WHO
PRINTI "[The correct way to speak to others is to use their name followed by a comma, and then what you want to say to them. For example:
>"
ZERO? WHO /?CCL3
ICALL2 DPRINT,WHO
JUMP ?CND1
?CCL3: ZERO? QCONTEXT /?CCL5
IN? QCONTEXT,HERE \?CCL5
ICALL2 DPRINT,QCONTEXT
JUMP ?CND1
?CCL5: ICALL2 PRINTUNDER,STR?146
?CND1: PRINTI ", "
ICALL1 PRINT-INTQUOTE
PRINTI " ]"
CRLF
CALL1 END-QUOTE
RSTACK
.FUNCT V-SEARCH:ANY:0:0
ZERO? PRSI /?CCL3
FSET? PRSI,PERSON \?CCL3
ICALL PERFORM,V?FIND,PRSI
RTRUE
?CCL3: FSET? PRSO,DEAD \?CCL7
ICALL1 CTHE-PRINT-PRSO
PRINTR " can't object, being dead, but you find nothing interesting."
?CCL7: FSET? PRSO,PERSON \?CCL9
ICALL1 CTHE-PRINT-PRSO
PRINTI " refuse"
ICALL2 PRINT-PLURAL,PRSO
PRINTR "."
?CCL9: CALL DESCRIBE-CONTENTS,PRSO,FALSE-VALUE,3
ZERO? STACK \FALSE
PRINT THERE-IS-NOTHING
PRINTI "there"
PRINT PERIOD
RTRUE
.FUNCT V-SEND:ANY:0:0
CALL1 PAST-TENSE?
ZERO? STACK /?CCL3
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
?CCL3: FSET? PRSO,PERSON \?CCL7
ZERO? PRSI /?CCL7
FSET? PRSI,PERSON \?CCL7
ICALL1 DPRINT-PRSO
PRINTI " isn't interested in seeing "
ICALL1 DPRINT-PRSI
PRINTR "."
?CCL7: FSET? PRSO,PERSON \?CCL12
EQUAL? PRSI,FALSE-VALUE,INTDIR \?CCL12
ICALL1 DPRINT-PRSO
PRINT STR?148
CRLF
RTRUE
?CCL12: ZERO? PRSI /?CCL16
FSET? PRSI,PERSON \?CCL16
EQUAL? PRSO,INTDIR \?CCL16
ICALL1 DPRINT-PRSI
PRINT STR?148
CRLF
RTRUE
?CCL16: CALL1 TELL-YUKS
RSTACK
.FUNCT V-SEND-UNDER:ANY:0:0
FSET? PRSO,PERSON \?CCL3
ICALL1 CTHE-PRINT-PRSO
PRINTR " refuses."
?CCL3: PRINTI "Look again, you're giving orders to "
ICALL1 PRINTA-PRSO
PRINTR "!"
.FUNCT PRE-SGIVE:ANY:0:0
ICALL2 SWAP-VERB,V?GIVE
RTRUE
.FUNCT V-SGIVE:ANY:0:0
RTRUE
.FUNCT V-SHAKE:ANY:0:0,X
EQUAL? PRSO,HEAD \?CCL3
ICALL2 PERFORM,V?NO
RTRUE
?CCL3: FSET? PRSO,PERSON \?CCL5
PRINTR "Be real."
?CCL5: PRINTI "There's no point in shaking "
ICALL2 THAT/THEM,PRSO
PRINTR "."
.FUNCT THAT/THEM:ANY:1:1,OBJ
FSET? OBJ,PLURAL \?CCL3
PRINTI "them"
RTRUE
?CCL3: PRINTI "that"
RTRUE
.FUNCT V-SHARPEN:ANY:0:0
PRINTI "You'll never sharpen anything with "
ICALL2 THAT/THEM,PRSI
PRINTR "!"
.FUNCT V-SHOOT-WITH:ANY:0:0
ICALL PERFORM,V?SHOOT,PRSI,PRSO
RTRUE
.FUNCT PRE-SHOOT:ANY:0:0
EQUAL? PRSO,PISTOL \?CCL3
FSET? PISTOL,RMUNGBIT \?CCL3
PRINTR "You fire, but the pistol just goes ""click!"" It isn't loaded!"
?CCL3: ZERO? PRSI \FALSE
EQUAL? PRSO,PISTOL \?CCL10
FSET PISTOL,RMUNGBIT
PRINTI "You fire "
ICALL1 THE-PRINT-PRSO
PRINTR " into the air, to little effect."
?CCL10: CALL2 HELD?,PISTOL
ZERO? STACK /?CCL12
ICALL PERFORM,V?SHOOT,PISTOL,PRSO
RTRUE
?CCL12: CALL2 HELD?,PRSO
ZERO? STACK /?CCL14
PRINTI "Few would consider "
ICALL1 PRINTA-PRSO
PRINTR " to be an adequate firearm."
?CCL14: PRINTI "You don't have a weapon to shoot "
ICALL1 THE-PRINT-PRSO
PRINTR " with."
.FUNCT V-SHOOT:ANY:0:0
EQUAL? PRSO,PISTOL \?CCL3
EQUAL? PRSI,PISTOL \?CND4
PRINTR "A difficult maneuver, in fact an impossible one."
?CND4: EQUAL? PRSI,MARIKO,ETSU,CHIMMOKO /?PRD10
EQUAL? PRSI,ACHIKO,YABU,KIRITSUBO \?CTR7
?PRD10: FSET? PRSI,DEAD /?CTR7
CALL JIGS-UP?,J-SHOOT-FRIEND,STR?149
ZERO? STACK /TRUE
?CTR7: FSET PISTOL,RMUNGBIT
PRINTI "You fire the pistol at "
ICALL1 THE-PRINT-PRSI
FSET? PRSI,DEAD \?CCL16
PRINTI ", who was already dead."
CRLF
JUMP ?CND14
?CCL16: FSET? PRSI,PERSON \?CCL18
GETPT PRSI,P?OWNER
ZERO? STACK /?CND19
PUTP PRSI,P?OWNER,BLACKTHORNE
?CND19: PRINTI ", killing "
FSET? PRSI,PLURAL /?CCL23
FSET PRSI,DEAD
ICALL2 PRINT-HIM/HER,PRSI
JUMP ?CND21
?CCL23: PRINTI "one of them"
?CND21: PRINTI " instantly."
CRLF
JUMP ?CND14
?CCL18: EQUAL? PRSI,GROUND,WALL \?CCL25
PRINTI ", to no useful effect."
CRLF
JUMP ?CND14
?CCL25: PRINTI ", missing by a mile."
CRLF
?CND14: EQUAL? PRSI,MARIKO,ETSU,CHIMMOKO /?CTR27
EQUAL? PRSI,ACHIKO,YABU \TRUE
?CTR27: CRLF
CALL2 JIGS-UP,STR?150
RSTACK
?CCL3: PRINTR "If you had a weapon, you might be able to shoot it. Alas, you don't."
.FUNCT V-SHOW:ANY:0:0
FSET? PRSI,PERSON \?CCL3
CALL2 UNINTERESTED,PRSI
RSTACK
?CCL3: CALL1 TELL-YUKS
RSTACK
.FUNCT V-SKIP:ANY:0:0
PRINTR "Anyone who saw you would be unfavorably impressed."
.FUNCT V-SLEEP:ANY:0:0
ZERO? OPPONENT /?CCL3
PRINTR "If you can sleep at a time like this, you have nerves of steel!"
?CCL3: PRINTR "You try to sleep, but you can't let yourself relax now."
.FUNCT LIKE-A-PRSO:ANY:1:1,V
ICALL2 CPRINT-HE/SHE,PRSO
PRINTC 32
PRINT V
PRINTI " just like "
ICALL1 PRINTA-PRSO
PRINTR "."
.FUNCT V-SMELL:ANY:0:0
ZERO? PRSO /?CCL3
CALL2 LIKE-A-PRSO,STR?151
RSTACK
?CCL3: LOC WINNER
FSET? STACK,VEHBIT \?CCL5
LOC WINNER
ICALL2 PERFORM-PRSA,STACK
RTRUE
?CCL5: PRINTR "There's no noticeable smell here."
.FUNCT PRE-SSHOW:ANY:0:0
ICALL2 SWAP-VERB,V?SHOW
RTRUE
.FUNCT V-SSHOW:ANY:0:0
RTRUE
.FUNCT V-SWING:ANY:0:0
ZERO? PRSI \?CCL3
PRINTR "Whoosh!"
?CCL3: ICALL PERFORM,V?HIT,PRSI,PRSO
RTRUE
.FUNCT V-SWIM:ANY:0:0
CALL1 TELL-YUKS
RSTACK
.FUNCT V-SWIM-TO:ANY:0:0
ICALL PERFORM,V?WALK-TO,PRSO
RTRUE
.FUNCT PRE-TAKE:ANY:0:0
IN? PRSO,WINNER \?CCL3
FSET? PRSO,WEARBIT /FALSE
?CCL3: IN? PRSO,WINNER \?CCL7
CALL NOUN-USED?,PRSO,W?WATER
ZERO? STACK \?CCL7
PRINT YOU-HAVE
ICALL1 THE-PRINT-PRSO
PRINTR "."
?CCL7: LOC WINNER
FSET? STACK,VEHBIT /?CCL11
LOC PRSO
ZERO? STACK /?CCL11
LOC PRSO
FSET? STACK,CONTBIT \?CCL11
LOC PRSO
FSET? STACK,OPENBIT /?CCL11
ICALL1 CANT-REACH-THAT
RTRUE
?CCL11: ZERO? PRSI /?CCL17
EQUAL? PRSO,ME \?CCL20
ICALL PERFORM,V?DROP,PRSI
RTRUE
?CCL20: CALL HELD?,PRSO,PRSI
ZERO? STACK \?CTR21
GETP PRSO,P?OWNER
EQUAL? PRSI,STACK \?CCL22
?CTR21: SET 'PRSI,FALSE-VALUE
RFALSE
?CCL22: FSET? PRSI,PERSON \?CCL26
ICALL1 CTHE-PRINT-PRSI
PRINTI " doesn't seem to have "
ICALL1 THE-PRINT-PRSO
PRINTR "."
?CCL26: ICALL1 CTHE-PRINT-PRSO
PRINTR " isn't there."
?CCL17: LOC WINNER
EQUAL? PRSO,STACK \FALSE
PRINTI "You are "
FSET? PRSO,PERSON \?CCL31
PRINTI "being carried by"
JUMP ?CND29
?CCL31: FSET? PRSO,SURFACEBIT \?CCL33
PRINTI "on"
JUMP ?CND29
?CCL33: PRINTI "in"
?CND29: PRINTR " it!"
.FUNCT V-TAKE:ANY:0:0,SIZ
CALL1 ITAKE
EQUAL? STACK,TRUE-VALUE \FALSE
GETP PRSO,P?SIZE >SIZ
PRINTI "Taken"
LESS? SIZ,20 /?CND4
PRINTI ", but it's "
LESS? SIZ,100 /?CCL8
PRINTI "extremely"
JUMP ?CND6
?CCL8: LESS? SIZ,50 /?CND6
PRINTI "very"
?CND6: PRINTI " heavy"
?CND4: PRINTR "."
.FUNCT PUT-ON:ANY:1:2,OBJ,WHO
ASSIGNED? 'WHO /?CND1
SET 'WHO,WINNER
?CND1: MOVE OBJ,WHO
FSET OBJ,WEARBIT
RTRUE
.FUNCT TAKE-OFF:ANY:1:1,OBJ
MOVE OBJ,HERE
FCLEAR OBJ,WEARBIT
RTRUE
.FUNCT V-TAKE-OFF:ANY:0:0
FSET? PRSO,VEHBIT \?CCL3
ICALL2 NEW-VERB,V?DISEMBARK
RTRUE
?CCL3: FSET? PRSO,WEARABLE \?CCL5
FSET? PRSO,WEARBIT \?CCL8
IN? PRSO,WINNER \?CCL8
FCLEAR PRSO,WEARBIT
PRINTI "You're no longer wearing "
ICALL1 THE-PRINT-PRSO
PRINT PERIOD
RTRUE
?CCL8: PRINT STR?61
PRINTR "wearing it."
?CCL5: ICALL2 NEW-VERB,V?TAKE
RTRUE
.FUNCT V-HOLD:ANY:0:0,O
FSET? PRSO,BODY-PART \?CCL3
CALL2 GET-OWNER,PRSO >O
EQUAL? O,ME,BLACKTHORNE,FALSE-VALUE /?CCL6
PRINTR "It seems unavailable at the moment."
?CCL6: EQUAL? PRSO,HEAD \?CCL8
PRINTR "Do you have a headache?"
?CCL8: PRINTI "You hold your "
ICALL1 DPRINT-PRSO
PRINTR " as best you can."
?CCL3: CALL2 HELD?,PRSO
ZERO? STACK /?CCL10
IN? PRSO,WINNER \?CCL13
FSET? PRSO,WEARBIT \?CCL16
FSET? PRSO,WEAPONBIT \?CCL16
FCLEAR PRSO,WEARBIT
PRINTI "You take "
ICALL1 THE-PRINT-PRSO
PRINTI " and prepare to use "
ICALL2 PRINT-HIM/HER,PRSO
PRINTR "."
?CCL16: PRINTI "You hold "
ICALL2 PRINT-HIM/HER,PRSO
PRINTR " tightly."
?CCL13: PRINTI "You take "
ICALL1 THE-PRINT-PRSO
PRINTI " out of "
LOC PRSO
ICALL2 THE-PRINT,STACK
PRINTI " and hold "
ICALL2 PRINT-HIM/HER,PRSO
PRINTC 46
CRLF
MOVE PRSO,WINNER
RTRUE
?CCL10: PRINTI "You don't have "
ICALL1 THE-PRINT-PRSO
PRINTR "."
.FUNCT V-TELL:ANY:0:0
FSET? PRSO,PERSON \?CCL3
FSET? PRSO,DEAD \?CCL6
EQUAL? PRSO,MARIKO /?CCL6
PRINT YOU-CANT
PRINT STR?65
CRLF
ICALL1 END-QUOTE
RETURN M-FATAL
?CCL6: ZERO? P-CONT /?CCL10
SET 'WINNER,PRSO
RTRUE
?CCL10: ICALL1 CTHE-PRINT-PRSO
PRINTI " wait"
FSET? PRSO,PLURAL /?CND11
PRINTC 115
?CND11: PRINTI " for you to say something."
CRLF
ICALL1 END-QUOTE
RETURN M-FATAL
?CCL3: ICALL2 YOU-CANT-X-PRSO,STR?152
ICALL1 END-QUOTE
RETURN M-FATAL
.FUNCT V-THANK:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
ZERO? PRSO /?CTR4
EQUAL? PRSO,YOU,ME \?CCL5
?CTR4: FSET? JAPANESE,SCOREBIT \?CCL10
PRINTR "You're welcome."
?CCL10: PRINTR "Domo."
?CCL5: FSET? PRSO,PERSON \?CCL12
FSET? PRSO,DEAD \?CCL15
ICALL1 CTHE-PRINT-PRSO
PRINTR " is beyond all politeness now."
?CCL15: EQUAL? PRSO,RODRIGUES \?CCL17
PRINTR """You're welcome, Ingeles."""
?CCL17: EQUAL? PRSO,SEBASTIO,OPPONENT \?CCL19
PRINTR "He ignores your politeness."
?CCL19: FSET? PRSO,JAPANESEBIT /?CCL21
ICALL1 CTHE-PRINT-PRSO
PRINTR " is surprised by your politeness."
?CCL21: FSET? PRSO,PLURAL \?CCL24
ICALL1 CPRINTA-PRSO
JUMP ?CND22
?CCL24: ICALL1 CTHE-PRINT-PRSO
?CND22: PRINTI " bows and responds """
ICALL2 PRINTUNDER,STR?153
PRINTR """"
?CCL12: CALL1 TO-A-PRSO?
RSTACK
.FUNCT V-DOMO:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
PRINTR "How very kind!"
.FUNCT V-DOZO:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
PRINTR "There is no response."
.FUNCT PRE-THROUGH:ANY:0:0
EQUAL? PRSO,ROOMS /FALSE
IN? PRSO,ROOMS /FALSE
CALL2 ACCESSIBLE?,PRSO
ZERO? STACK \FALSE
PRINTI "You can't see any "
ICALL1 DPRINT-PRSO
PRINTR " here."
.FUNCT V-THROUGH:ANY:0:0,M
IN? PRSO,ROOMS \?CCL3
ICALL PERFORM,V?WALK-TO,PRSO
RTRUE
?CCL3: EQUAL? PRSO,ROOMS \?CCL5
CALL2 DO-WALK,P?IN
RSTACK
?CCL5: FSET? PRSO,VEHBIT \?CCL7
ICALL2 NEW-VERB,V?BOARD
RTRUE
?CCL7: FSET? PRSO,DOORBIT \?CCL9
CALL2 FIND-DOOR,PRSO >M
ZERO? M /?CCL12
CALL2 DO-WALK,M
RSTACK
?CCL12: PRINT YOU-HAVE-TO
PRINT STR?125
PRINTR "the direction you are going."
?CCL9: FSET? PRSO,PERSON \?CCL14
PRINT GOOD-TRICK
RTRUE
?CCL14: FSET? PRSO,TAKEBIT /?CCL16
PRINTI "You hit your head against "
ICALL1 THE-PRINT-PRSO
PRINTR " as you attempt this feat."
?CCL16: IN? PRSO,WINNER \?CCL18
PRINTR "That would involve quite a contortion!"
?CCL18: CALL1 TELL-YUKS
RSTACK
.FUNCT FIND-DOOR:ANY:1:1,DOOR,DIR,PT,PTS,?PR-DIR,?PR-PT
SET '?PR-DIR,65
?PRG1: DLESS? '?PR-DIR,LOW-DIRECTION /TRUE
GETPT HERE,?PR-DIR >?PR-PT
ZERO? ?PR-PT /?PRG1
PTSIZE ?PR-PT
EQUAL? STACK,DEXIT \?PRG1
GET ?PR-PT,DEXITOBJ
EQUAL? STACK,DOOR \?PRG1
RETURN ?PR-DIR
.FUNCT PRE-THROW:ANY:0:0
EQUAL? PRSO,ANCHOR,ERASMUS-ANCHOR,MARIKO /FALSE
EQUAL? PRSO,SAFETY-LINE,OAR,LIFE-RING /FALSE
CALL2 HELD?,PRSO
ZERO? STACK \?CCL7
PRINTI "You're not carrying "
ICALL1 THE-PRINT-PRSO
PRINTR "."
?CCL7: EQUAL? PRSO,LARGE-KNIFE,SMALL-KNIFE /FALSE
FSET? PRSO,WEARBIT \FALSE
CALL2 YOULL-HAVE-TO,STR?154
RSTACK
.FUNCT V-THROW:ANY:0:0
ZERO? PRSI /?CCL3
FSET? PRSI,PERSON \?CCL3
IN? PRSO,WINNER \?CCL8
CALL1 IDROP
ZERO? STACK /FALSE
CALL2 NOT-TRAINED,PRSI
RSTACK
?CCL8: ICALL2 SWAP-VERB,V?HIT
RTRUE
?CCL3: ZERO? PRSI /?CCL13
EQUAL? PRSI,PSEUDO-OBJECT /?CCL13
FSET? PRSO,WEAPONBIT \?CCL13
ICALL2 SWAP-VERB,V?HIT
RTRUE
?CCL13: ZERO? PRSI /?CCL18
FSET? PRSI,DOORBIT /?CCL18
FSET? PRSI,CONTBIT \?CCL18
GETP PRSI,P?CAPACITY
ZERO? STACK /?CCL18
ICALL2 NEW-VERB,V?PUT
RTRUE
?CCL18: CALL1 IDROP
ZERO? STACK /FALSE
PRINTR "Thrown."
.FUNCT V-THROW-OFF:ANY:0:0
CALL GLOBAL-IN?,LG-SEA,HERE
ZERO? STACK /?CCL3
REMOVE PRSO
PRINTI "Splash! "
ICALL1 CTHE-PRINT-PRSO
PRINTR " is gone for good now!"
?CCL3: CALL2 YOU-CANT-X-THAT,STR?155
RSTACK
.FUNCT V-TIE:ANY:0:0
ZERO? PRSI \?CCL3
EQUAL? PRSO,YABU-KIMONO /?CCL3
CALL2 HELD?,YABU-KIMONO
ZERO? STACK /?CCL3
ICALL PERFORM,V?TIE,PRSO,YABU-KIMONO
RTRUE
?CCL3: EQUAL? PRSO,MURA-ROPE \?CCL8
PRINTR "You can't get it away from Mura."
?CCL8: CALL1 TO-A-PRSO?
RSTACK
.FUNCT V-TIE-UP:ANY:0:0
CALL1 TO-A-PRSO?
RSTACK
.FUNCT V-TIME:ANY:0:0,X
PRINTR "You have no easy way to tell time."
.FUNCT V-TORTURE:ANY:0:0
PRINTR "An appalling idea!"
.FUNCT NO-EFFECT:ANY:0:0
PRINTR "This has no effect."
.FUNCT V-TURN:ANY:0:0
EQUAL? PRSO,INTDIR \?CCL3
EQUAL? SCENE,S-ERASMUS,S-VOYAGE \?CCL3
PRINTR "You must be on the bridge to steer!"
?CCL3: ZERO? PRSI \?CCL7
EQUAL? PRSO,FORESAILS \?CCL7
ICALL PERFORM,V?RAISE,PRSO
RTRUE
?CCL7: CALL1 NO-EFFECT
RSTACK
.FUNCT V-TURN-OVER:ANY:0:0
PRINTI "Moving "
ICALL1 THE-PRINT-PRSO
PRINTR " reveals nothing."
.FUNCT V-TURN-AROUND:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
ICALL PERFORM,V?LOOK-BEHIND,ME
RTRUE
?CCL3: FSET? PRSO,PERSON \?CCL5
PRINTI "I wouldn't do that, "
ICALL1 THE-PRINT-PRSO
PRINTR " might get dizzy."
?CCL5: FSET? PRSO,TAKEBIT /?CCL7
PRINT YOU-CANT
PRINTI "turn "
ICALL1 THE-PRINT-PRSO
PRINTR " around."
?CCL7: PRINTI "Turning "
ICALL1 THE-PRINT-PRSO
PRINTR " around gives you a new perspective on it, but reveals no new information."
.FUNCT V-UNLOCK:ANY:0:0
CALL1 PAST-TENSE?
ZERO? STACK /?CCL3
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
?CCL3: EQUAL? PRSI,FALSE-VALUE,KEY /?CCL7
CALL2 CANT-X-WITH-PRSI,STR?156
RSTACK
?CCL7: FSET? PRSO,LOCKABLE \?CCL9
FSET? PRSO,LOCKED /?CCL12
PRINT STR?131
CRLF
RTRUE
?CCL12: IN? KEY,WINNER \?CCL14
FCLEAR PRSO,LOCKED
PRINTR "Done."
?CCL14: PRINT STR?132
CRLF
RTRUE
?CCL9: CALL1 NO-LOCK
RSTACK
.FUNCT V-UNTIE:ANY:0:0
CALL1 TO-A-PRSO?
RSTACK
.FUNCT V-WALK:ANY:0:0,PT,PTS,STR,OBJ,RM
ZERO? QCONTEXT /?CCL3
CALL1 PAST-TENSE?
ZERO? STACK /?CCL3
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
?CCL3: CALL1 PAST-TENSE?
ZERO? STACK /?CCL8
PRINTR "An interesting fact, indeed."
?CCL8: ZERO? P-WALK-DIR \?CCL10
ICALL2 NEW-VERB,V?WALK-TO
RTRUE
?CCL10: FSET? BLACKTHORNE,SITTING \?CCL12
CALL2 YOULL-HAVE-TO,STR?129
RSTACK
?CCL12: GETPT HERE,PRSO >PT
ZERO? PT /?CCL14
PTSIZE PT >PTS
EQUAL? PTS,NEXIT \?CCL17
GET PT,NEXITSTR
PRINT STACK
CRLF
RETURN M-FATAL
?CCL17: EQUAL? PTS,UEXIT \?CCL19
GETB PT,REXIT >RM
JUMP ?CND15
?CCL19: EQUAL? PTS,FEXIT \?CCL21
GET PT,FEXITFCN
CALL STACK >RM
ZERO? RM \?CND15
RETURN M-FATAL
?CCL21: EQUAL? PTS,CEXIT \?CCL25
GETB PT,CEXITFLAG
VALUE STACK
ZERO? STACK /?CCL28
GETB PT,REXIT >RM
JUMP ?CND15
?CCL28: GET PT,CEXITSTR >STR
ZERO? STR /?CCL30
PRINT STR
CRLF
RETURN M-FATAL
?CCL30: ICALL1 CANT-GO
RETURN M-FATAL
?CCL25: EQUAL? PTS,DEXIT \?CND15
GET PT,DEXITOBJ >OBJ
FSET? OBJ,INVISIBLE \?CCL34
ICALL1 CANT-GO
RETURN M-FATAL
?CCL34: FSET? OBJ,OPENBIT /?CTR35
FSET? OBJ,LOCKED /?CCL36
FSET? OBJ,TRYTAKEBIT /?CCL36
?CTR35: GETB PT,DEXITRM >RM
FSET? OBJ,OPENBIT /?CND15
FSET OBJ,OPENBIT
PRINTI "You open "
ICALL2 THE-PRINT,OBJ
PRINTI " and go through."
CRLF
CRLF
?CND15: EQUAL? SCENE,S-NINJA \?CND45
ZERO? AVOID-CALTROPS? \?CCL49
IN? CALTROPS,HERE \?CCL49
RANDOM 100
LESS? 35,STACK /?CCL54
ICALL2 JIGS-UP,STR?157
RETURN M-FATAL
?CCL36: GET PT,DEXITSTR >STR
ZERO? STR /?CCL44
PRINT STR
CRLF
ICALL2 THIS-IS-IT,OBJ
RETURN M-FATAL
?CCL44: ICALL2 TELL-OPEN-CLOSED,OBJ
ICALL2 THIS-IS-IT,OBJ
RETURN M-FATAL
?CCL54: PRINTI "As you hurry along, you narrowly miss stepping on a caltrop!"
CRLF
CRLF
?CND45: CALL2 GOTO,RM
RSTACK
?CCL49: IN? SMOKE-BOMB,HERE \?CCL56
PRINTI "You try to advance, but the acrid, choking smoke prevents you."
CRLF
RETURN M-FATAL
?CCL56: IN? FIRE-BOMB,HERE \?CND45
PRINTI "The floor is covering with burning pitch which sticks to your feet and drives you back."
CRLF
RETURN M-FATAL
?CCL14: EQUAL? PRSO,P?IN,P?OUT \?CCL59
ZERO? P-LAST-OPEN /?CCL59
CALL GLOBAL-IN?,P-LAST-OPEN,HERE
ZERO? STACK /?CCL59
ICALL PERFORM,V?THROUGH,P-LAST-OPEN
RTRUE
?CCL59: ICALL1 CANT-GO
RETURN M-FATAL
.FUNCT V-WALK-AROUND:ANY:0:0
PRINTR "Please use compass directions instead."
.FUNCT V-WALK-TO:ANY:0:0,DIR,TMP
ZERO? PRSO /?CCL3
ZERO? QCONTEXT /?CCL6
CALL1 PAST-TENSE?
ZERO? STACK /?CCL6
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
?CCL6: EQUAL? PRSO,INTDIR \?CCL11
ICALL2 DO-WALK,P-DIRECTION
RTRUE
?CCL11: IN? PRSO,ROOMS \?CCL13
CALL2 NEXT-ROOM?,PRSO >DIR
ZERO? DIR /?CCL16
CALL2 DO-WALK,DIR
RSTACK
?CCL16: PRINT YOU-HAVE-TO
PRINT STR?158
CRLF
RTRUE
?CCL13: IN? PRSO,HERE /?CTR17
CALL GLOBAL-IN?,PRSO,HERE
ZERO? STACK /?CCL18
?CTR17: FSET? PRSO,PERSON \?CCL23
FSET? PRSO,PLURAL \?CCL26
PRINTI "They're"
JUMP ?CND21
?CCL26: FSET? PRSO,FEMALE \?CCL28
PRINTI "She's"
JUMP ?CND21
?CCL28: PRINTI "He's"
JUMP ?CND21
?CCL23: PRINTI "It's"
?CND21: PRINTR " here!"
?CCL18: CALL2 META-LOC,PRSO >TMP
ZERO? TMP /?CCL30
IN? TMP,ROOMS \?CCL30
ICALL PERFORM,PRSA,TMP
RTRUE
?CCL30: PRINTI "I'm not sure how to get to "
FSET? PRSO,PERSON \?CCL35
FSET? PRSO,PLURAL \?CCL38
PRINTI "them"
JUMP ?CND33
?CCL38: FSET? PRSO,FEMALE \?CCL40
PRINTI "her"
JUMP ?CND33
?CCL40: PRINTI "him"
JUMP ?CND33
?CCL35: PRINTI "that"
?CND33: PRINTR "."
?CCL3: CALL1 V-WALK-AROUND
RSTACK
.FUNCT NEXT-ROOM?:ANY:1:2,RM,STRICT?,DIR,PT,PTS,OBJ,?PR-DIR,?PR-PT
SET '?PR-DIR,65
?PRG1: DLESS? '?PR-DIR,LOW-DIRECTION /FALSE
GETPT HERE,?PR-DIR >?PR-PT
ZERO? ?PR-PT /?PRG1
PTSIZE ?PR-PT >PTS
EQUAL? PTS,NEXIT /?PRG1
EQUAL? PTS,UEXIT \?CCL10
GETB ?PR-PT,REXIT
EQUAL? STACK,RM \?CCL10
RETURN ?PR-DIR
?CCL10: EQUAL? PTS,CEXIT \?CCL14
GETB ?PR-PT,REXIT
EQUAL? STACK,RM \?CCL14
ZERO? STRICT? \?PRD20
RETURN ?PR-DIR
?PRD20: GETB ?PR-PT,CEXITFLAG
VALUE STACK
ZERO? STACK /?PRG1
RETURN ?PR-DIR
?CCL14: EQUAL? PTS,DEXIT \?CCL22
GETB ?PR-PT,DEXITRM
EQUAL? STACK,RM \?CCL22
GET ?PR-PT,DEXITOBJ >OBJ
ZERO? STRICT? \?PRD28
RETURN ?PR-DIR
?PRD28: FSET? OBJ,INVISIBLE /?PRG1
FSET? OBJ,OPENBIT \?PRG1
RETURN ?PR-DIR
?CCL22: EQUAL? PTS,FEXIT \?PRG1
GET ?PR-PT,FEXITFCN
CALL STACK,M-ENTER,STRICT?
EQUAL? STACK,RM \?PRG1
RETURN ?PR-DIR
.FUNCT V-WAIT:ANY:0:0,NUM
SET 'NUM,3
EQUAL? PRSO,INTNUM \?CND1
GRTR? P-NUMBER,100 \?CCL5
PRINTI "Too long!"
CRLF
JUMP ?CND1
?CCL5: SET 'NUM,P-NUMBER
?CND1: PRINTI "Time passes..."
CRLF
?PRG6: DLESS? 'NUM,0 /?REP7
CALL1 CLOCKER
ZERO? STACK /?PRG6
?REP7: SET 'CLOCK-WAIT,TRUE-VALUE
RTRUE
.FUNCT V-WAIT-FOR:ANY:0:0
EQUAL? PRSO,INTNUM \?CCL3
ICALL2 NEW-VERB,V?WAIT
RTRUE
?CCL3: LOC PRSO
EQUAL? STACK,HERE,WINNER \?CCL5
ICALL2 CPRINT-HE/SHE,PRSO
PRINTR "'s already here!"
?CCL5: PRINTR "You may well wait quite a while."
.FUNCT V-WAVE:ANY:0:0
CALL2 HELD?,PRSO
ZERO? STACK \?CCL3
FSET? PRSO,BODY-PART \?CCL3
CALL1 YOU-ARENT-HOLDING
RSTACK
?CCL3: CALL2 HACK-HACK,STR?159
RSTACK
.FUNCT YOU-ARENT-HOLDING:ANY:0:0
PRINTI "You aren't holding "
ICALL1 THE-PRINT-PRSO
PRINTR "."
.FUNCT V-WAVE-AT:ANY:0:0
CALL2 HELD?,PRSO
ZERO? STACK \?CCL3
FSET? PRSO,BODY-PART \?CCL3
CALL1 YOU-ARENT-HOLDING
RSTACK
?CCL3: EQUAL? PRSO,HEAD \?CCL7
ZERO? PRSI \?CCL10
ICALL2 PERFORM,V?NO
RTRUE
?CCL10: FSET? PRSI,PERSON \?CCL12
SET 'WINNER,PRSI
ICALL2 PERFORM,V?NO
SET 'WINNER,PLAYER
RTRUE
?CCL12: PRINTI "Shaking one's head at "
ICALL1 PRINTA-PRSI
PRINTR " accomplishes little."
?CCL7: ZERO? PRSI /?CCL14
FSET? PRSI,PERSON \?CCL14
ICALL PERFORM,V?WAVE-AT,PRSI
RTRUE
?CCL14: EQUAL? PRSO,ME \?CCL18
PRINTR "What a peculiar idea!"
?CCL18: ICALL1 CTHE-PRINT-PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR "n't likely to respond."
.FUNCT V-DRESS:ANY:0:0,OBJ,LAST
?PRG1: SET 'LAST,OBJ
SET 'OBJ,FALSE-VALUE
CALL2 HELD?,CLOTHES
ZERO? STACK /?CCL5
FSET? CLOTHES,WEARBIT /?CCL5
SET 'OBJ,CLOTHES
JUMP ?CND3
?CCL5: CALL2 HELD?,BOOTS
ZERO? STACK /?CCL9
FSET? BOOTS,WEARBIT /?CCL9
SET 'OBJ,BOOTS
JUMP ?CND3
?CCL9: CALL2 HELD?,KIMONO
ZERO? STACK /?CCL13
FSET? KIMONO,WEARBIT /?CCL13
SET 'OBJ,KIMONO
JUMP ?CND3
?CCL13: CALL2 HELD?,SOCKS
ZERO? STACK /?CCL17
FSET? SOCKS,WEARBIT /?CCL17
SET 'OBJ,SOCKS
JUMP ?CND3
?CCL17: CALL2 ACCESSIBLE?,SANDALS
ZERO? STACK /?CND3
FSET? SANDALS,WEARBIT /?CND3
SET 'OBJ,SANDALS
?CND3: ZERO? OBJ /?CCL25
FSET OBJ,RMUNGBIT
ICALL PERFORM,V?WEAR,OBJ
FCLEAR OBJ,RMUNGBIT
FSET? OBJ,WEARBIT /?PRG1
RTRUE
?CCL25: ZERO? LAST \TRUE
PRINTR "You don't have anything to wear!"
.FUNCT V-WEAR:ANY:0:0
FSET? PRSO,WEARBIT \?CCL3
PRINT YOU-ARE
PRINT PERIOD
RTRUE
?CCL3: FSET? PRSO,WEARABLE \?CCL5
GETP PRSO,P?OWNER
EQUAL? PLAYER,STACK \?CCL8
CALL2 HELD?,PRSO
ZERO? STACK \?CCL11
CALL2 ITAKE,TRUE-VALUE
ZERO? STACK /TRUE
?CCL11: FSET PRSO,WEARBIT
PRINTI "You put on "
ICALL1 THE-PRINT-PRSO
PRINTR "."
?CCL8: PRINTR "They don't fit you."
?CCL5: CALL2 YOU-CANT-X-PRSO,STR?160
RSTACK
.FUNCT V-YAWN:ANY:0:0
CALL1 V-LEAN-ON
RSTACK
.FUNCT V-YELL-AT:ANY:0:0
FSET? PRSO,PERSON \FALSE
FSET? PRSO,DEAD /FALSE
PRINTI "You yell at "
ICALL1 DPRINT-PRSO
PRINTI " for a while, which improves your disposition, but not "
ICALL2 PRINT-HIS/HER,PRSO
PRINTR "."
.FUNCT V-YELL:ANY:0:0
EQUAL? PRSO,INTQUOTE \?CND1
PRINTI "You yell at out, loud and strong. "
?CND1: PRINTR "Raising one's voice is very bad manners and very unsettling to the harmony of those around you."
.FUNCT V-LAUGH:ANY:0:0
ZERO? PRSO \?CCL3
PRINTR "Very funny."
?CCL3: FSET? PRSO,PERSON \?CCL5
FSET? PRSO,DEAD /?CCL5
ICALL1 CTHE-PRINT-PRSO
PRINTR " doesn't seem to get the joke."
?CCL5: PRINTR "Your brand of humor is unusual."
.FUNCT ITAKE:ANY:0:2,VB,OBJ,CNT,?TMP1
ASSIGNED? 'VB /?CND1
SET 'VB,TRUE-VALUE
?CND1: ZERO? OBJ \?CND3
SET 'OBJ,PRSO
?CND3: FSET? BLACKTHORNE,SITTING \?CCL7
FSET? PRSO,TAKEBIT \?CCL7
EQUAL? PRSO,CLOTHES,QUILT,TRAY /?CCL7
EQUAL? PRSO,FOOD,CHOPSTICKS,CUP /?CCL7
EQUAL? PRSO,GRUEL,GROUND,SWORDS /?CCL7
ZERO? VB /FALSE
PRINTI "You are "
FSET? WINNER,SURFACEBIT \?CCL18
PRINTI "lying"
JUMP ?CND16
?CCL18: PRINTI "sitting"
?CND16: PRINTI " down, and "
ICALL1 THE-PRINT-PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTI " out of reach."
CRLF
RFALSE
?CCL7: FSET? OBJ,TAKEBIT /?CCL20
ZERO? VB /FALSE
FSET? OBJ,PERSON \?CCL25
FSET? OBJ,DEAD /?CCL25
ICALL2 CPRINT-HE/SHE,OBJ
PRINTI " twist"
ICALL2 PRINT-PLURAL,OBJ
PRINTI " away from you."
CRLF
RFALSE
?CCL25: ICALL1 TELL-YUKS
RFALSE
?CCL20: IN? OBJ,WINNER \?CCL29
PRINT YOU-HAVE
ICALL2 THE-PRINT,OBJ
PRINT PERIOD
RFALSE
?CCL29: IN? WINNER,OBJ \?CCL31
PRINTI "You are "
FSET? OBJ,SURFACEBIT \?CCL34
PRINTI "on"
JUMP ?CND32
?CCL34: PRINTI "in"
?CND32: PRINTR " it."
?CCL31: LOC OBJ
IN? STACK,WINNER /?CCL36
CALL2 WEIGHT,OBJ >?TMP1
CALL2 WEIGHT,WINNER
ADD ?TMP1,STACK
GRTR? STACK,LOAD-ALLOWED \?CCL36
ZERO? VB \?CCL40
RETURN M-FATAL
?CCL40: CALL2 CCOUNT,WINNER
ZERO? STACK \?CCL43
PRINTI "It's too heavy to carry"
JUMP ?CND41
?CCL43: PRINTI "Your load is too heavy"
?CND41: GETP WINNER,P?HEALTH
LESS? STACK,4 \?CCL46
PRINTI ", especially in light of your exhaustion."
JUMP ?CND44
?CCL46: PRINTC 46
?CND44: CRLF
RETURN M-FATAL
?CCL36: CALL2 CCOUNT,WINNER >CNT
GRTR? CNT,FUMBLE-NUMBER \?CCL48
ZERO? VB \?CCL50
RETURN M-FATAL
?CCL50: PRINTI "You're holding too many things and can't quite get them all arranged to take it as well."
CRLF
RETURN M-FATAL
?CCL48: MOVE OBJ,WINNER
FSET OBJ,TOUCHBIT
FCLEAR OBJ,WEARBIT
FCLEAR OBJ,NDESCBIT
RTRUE
.FUNCT V-NOTIFY:ANY:0:0
ZERO? NOTIFY-FLAG /?PRT1
SET 'NOTIFY-FLAG,0
JUMP ?PRE3
?PRT1: SET 'NOTIFY-FLAG,1
?PRE3: ZERO? NOTIFY-FLAG /?CCL6
PRINTR "Notifying when points are scored."
?CCL6: PRINTR "Keeping quiet when points are scored."
.FUNCT SCORE-OBJECT:ANY:0:2,OBJ1,OBJ2
CALL2 SCORE-OBJECT?,OBJ1 >OBJ1
ZERO? OBJ2 /?CND1
CALL2 SCORE-OBJECT?,OBJ2 >OBJ2
?CND1: ZERO? OBJ1 \?CCL4
ZERO? OBJ2 /TRUE
?CCL4: ZERO? NOTIFY-FLAG /TRUE
CRLF
PRINTR "[Your score just went up.]"
.FUNCT SCORE-OBJECT?:ANY:1:1,OBJ
FSET? OBJ,SCOREBIT \FALSE
INC 'SCORE
FCLEAR OBJ,SCOREBIT
GET SCENE-LOCS,SCENE >OBJ
ZERO? OBJ /TRUE
GETPT OBJ,P?SCORE >OBJ
ZERO? OBJ /TRUE
GETB OBJ,0
ADD 1,STACK
PUTB OBJ,0,STACK
RTRUE
.FUNCT IDROP:ANY:0:0
FSET? PRSO,BODY-PART /?CTR2
CALL2 HELD?,PRSO
ZERO? STACK \?CCL3
?CTR2: PRINT STR?61
PRINTI "carrying "
ICALL1 THE-PRSO
RFALSE
?CCL3: IN? PRSO,WINNER /?CCL7
LOC PRSO
FSET? STACK,OPENBIT /?CCL7
ICALL2 THIS-IS-IT,PRSO
LOC PRSO
ICALL2 TELL-OPEN-CLOSED,STACK
RFALSE
?CCL7: FSET? PRSO,WEARBIT \?CCL11
ICALL1 HAVE-TO-TAKE-OFF
RFALSE
?CCL11: FCLEAR PRSO,WEARBIT
LOC WINNER
MOVE PRSO,STACK
RTRUE
.FUNCT HAVE-TO-TAKE-OFF:ANY:0:1,OBJ
ASSIGNED? 'OBJ /?CND1
SET 'OBJ,PRSO
?CND1: PRINT YOU-HAVE-TO
PRINT STR?161
ICALL2 THE-PRINT,OBJ
PRINTR " first."
.FUNCT CCOUNT:ANY:1:1,OBJ,CNT,X,?PR-X
FIRST? OBJ >?PR-X \FALSE
?PRG6: FSET? ?PR-X,WEARBIT /?CND8
INC 'CNT
?CND8: NEXT? ?PR-X >?PR-X /?PRG6
RETURN CNT
.FUNCT WEIGHT:ANY:1:1,OBJ,CONT,WT,?PR-CONT
FSET? OBJ,WEARBIT /FALSE
FIRST? OBJ >?PR-CONT \?REP5
?PRG8: CALL2 WEIGHT,?PR-CONT
ADD WT,STACK >WT
NEXT? ?PR-CONT >?PR-CONT /?PRG8
?REP5: GETP OBJ,P?SIZE
ADD WT,STACK
RSTACK
.FUNCT GOTO:ANY:1:2,RM,V?,OLIT
ASSIGNED? 'V? /?CND1
SET 'V?,TRUE-VALUE
?CND1: SET 'OHERE,RM
ZERO? HERE /?CND3
GETP HERE,P?ACTION
ICALL STACK,M-LEAVE
?CND3: SET 'OHERE,HERE
SET 'OLIT,LIT
EQUAL? OHERE,RM /?CND5
ICALL1 B-STAND
?CND5: LOC WINNER
IN? STACK,ROOMS /?CCL9
LOC WINNER
MOVE STACK,RM
JUMP ?CND7
?CCL9: MOVE WINNER,RM
?CND7: SET 'HERE,RM
CALL2 LIT?,HERE >LIT
ICALL1 V-INTRODUCE
GETP HERE,P?ACTION
CALL STACK,M-ENTER
EQUAL? STACK,M-FATAL /TRUE
EQUAL? HERE,RM \TRUE
ZERO? V? /TRUE
ICALL1 V-FIRST-LOOK
RTRUE
.FUNCT I-STUPID-MOVE:ANY:0:0
SET 'STUPID-MOVE,FALSE-VALUE
RETURN STUPID-MOVE
.FUNCT JIGS-UP?:ANY:1:2,N,DESC
EQUAL? STUPID-MOVE,N /TRUE
ICALL QUEUE,I-STUPID-MOVE,2
SET 'STUPID-MOVE,N
ZERO? DESC /?CCL6
PRINT DESC
CRLF
RFALSE
?CCL6: PRINTI "At the last second, you stop and try to think of something to do that's less likely to be fatal."
CRLF
RFALSE
.FUNCT JIGS-UP:ANY:0:1,DESC
INC 'MOVES
SET 'WINNER,PLAYER
ZERO? DESC /?CND1
PRINT DESC
?CND1: PRINTI "
**** You have died ****
"
EQUAL? SCENE,S-ERASMUS \?CCL5
PRINTI "Are the Japans ahead? Now you will never know. All pilots fear death by drowning more than any other death, and most die by drowning. A terrible fate."
CRLF
JUMP ?CND3
?CCL5: PRINTI "Perhaps in a future existence you will be reborn samurai. Perhaps, as Father Sebastio would predict, you will burn in hell. Perhaps you will ascend to heaven. Perhaps none of these things will happen. "
ICALL2 PRINTUNDER,STR?162
CRLF
?CND3: CRLF
CALL1 FINISH
RSTACK
.FUNCT MOVE-ALL:ANY:1:2,FROM,TO,F,N,1ST?
FIRST? FROM >F /?PRG2
?PRG2: ZERO? F /?REP3
NEXT? F >N /?BOGUS7
?BOGUS7: SET '1ST?,F
ZERO? TO /?CCL10
MOVE F,TO
JUMP ?CND8
?CCL10: REMOVE F
?CND8: FCLEAR F,WEARBIT
SET 'F,N
JUMP ?PRG2
?REP3: RETURN 1ST?
.FUNCT THIS-IS-IT:ANY:1:1,OBJ
FSET? OBJ,DONT-IT /FALSE
EQUAL? OBJ,IT,HIM,HER /TRUE
EQUAL? OBJ,WHAT,ROOMS /TRUE
FSET? OBJ,PERSON /?CTR8
EQUAL? OBJ,LG-ERASMUS \?CCL9
?CTR8: EQUAL? OBJ,LG-RODRIGUES \?PRD15
IN? RODRIGUES,IN-THE-SEA /?CCL13
?PRD15: FSET? OBJ,DEAD \?CND12
?CCL13: EQUAL? P-IT-OBJECT,OBJ /?CND18
FCLEAR IT,TOUCHBIT
?CND18: SET 'P-IT-OBJECT,OBJ
?CND12: FSET? OBJ,PLURAL /?CTR21
EQUAL? OBJ,GRAYS,BROWNS \?CCL22
?CTR21: EQUAL? P-THEM-OBJECT,OBJ /?CND25
FCLEAR THEM,TOUCHBIT
?CND25: SET 'P-THEM-OBJECT,OBJ
RTRUE
?CCL22: FSET? OBJ,FEMALE \?CCL28
EQUAL? P-HER-OBJECT,OBJ /?CND29
FCLEAR HER,TOUCHBIT
?CND29: SET 'P-HER-OBJECT,OBJ
RTRUE
?CCL28: EQUAL? P-HIM-OBJECT,OBJ /?CND31
FCLEAR HIM,TOUCHBIT
?CND31: SET 'P-HIM-OBJECT,OBJ
RTRUE
?CCL9: FSET? OBJ,PLURAL \?CCL34
EQUAL? P-THEM-OBJECT,OBJ /?CND35
FCLEAR THEM,TOUCHBIT
?CND35: SET 'P-THEM-OBJECT,OBJ
RTRUE
?CCL34: EQUAL? P-IT-OBJECT,OBJ /?CND37
FCLEAR IT,TOUCHBIT
?CND37: SET 'P-IT-OBJECT,OBJ
RTRUE
.FUNCT INTRINSIC?:ANY:1:1,OBJ
EQUAL? OBJ,ME,HANDS,HEAD /TRUE
EQUAL? OBJ,EYES,FEET /TRUE
RFALSE
.FUNCT ACCESSIBLE?:ANY:1:1,OBJ,L,?TMP1
LOC OBJ >L
FSET? OBJ,INVISIBLE /FALSE
EQUAL? OBJ,PSEUDO-OBJECT \?CCL5
EQUAL? LAST-PSEUDO-LOC,HERE /TRUE
RFALSE
?CCL5: ZERO? L /FALSE
EQUAL? L,GLOBAL-OBJECTS,WINNER,HERE /TRUE
LOC WINNER
EQUAL? L,STACK /TRUE
CALL GLOBAL-IN?,OBJ,HERE
ZERO? STACK \TRUE
CALL2 META-LOC,OBJ >?TMP1
LOC WINNER
EQUAL? ?TMP1,HERE,STACK \FALSE
FSET? L,OPENBIT \FALSE
CALL2 ACCESSIBLE?,L
ZERO? STACK /FALSE
RTRUE
.FUNCT VISIBLE?:ANY:1:1,OBJ,L
LOC OBJ >L
CALL2 ACCESSIBLE?,OBJ
ZERO? STACK \TRUE
CALL2 SEE-INSIDE?,L
ZERO? STACK /FALSE
CALL2 VISIBLE?,L
ZERO? STACK /FALSE
RTRUE
.FUNCT HELD?:ANY:1:2,OBJ,WHO
ZERO? WHO \?CND1
SET 'WHO,PLAYER
?CND1: ZERO? OBJ /FALSE
EQUAL? PRSA,V?GIVE \?CCL7
FSET? OBJ,CANT-HOLD /TRUE
?CCL7: EQUAL? OBJ,WHO,ME /TRUE
FSET? OBJ,BODY-PART /TRUE
IN? OBJ,WHO /TRUE
IN? OBJ,ROOMS /FALSE
IN? OBJ,GLOBAL-OBJECTS /FALSE
LOC OBJ
CALL HELD?,STACK,WHO
RSTACK
.FUNCT SEE-INSIDE?:ANY:1:1,OBJ
ZERO? OBJ /FALSE
FSET? OBJ,INVISIBLE /FALSE
FSET? OBJ,TRANSBIT /TRUE
FSET? OBJ,OPENBIT /TRUE
RFALSE
.FUNCT GLOBAL-IN?:ANY:2:2,OBJ1,OBJ2,TEE
ZERO? OBJ2 /FALSE
GETPT OBJ2,P?GLOBAL >TEE
ZERO? TEE /FALSE
PTSIZE TEE
DIV STACK,2
INTBL? OBJ1,TEE,STACK /?CND1
?CND1: RSTACK
.FUNCT DO-WALK:ANY:1:1,DIR
SET 'P-WALK-DIR,DIR
CALL PERFORM,V?WALK,DIR
RSTACK
.FUNCT HACK-HACK:ANY:1:1,STR
PRINT STR
PRINTC 32
ICALL1 THE-PRINT-PRSO
PRINTR " has no effect."
.FUNCT TELL-YUKS:ANY:0:0
CALL2 PICK-ONE,YUKS
PRINT STACK
CRLF
RTRUE
.FUNCT PRE-PRY:ANY:0:0
ZERO? PRSI /FALSE
CALL2 INTRINSIC?,PRSI
ZERO? STACK \FALSE
CALL2 HELD?,PRSI
ZERO? STACK \FALSE
IN? WINNER,PRSI /FALSE
FSET? PRSI,VEHBIT /FALSE
CALL2 NOT-HOLDING,PRSI
RSTACK
.FUNCT V-PRY:ANY:0:0
CALL1 NO-EFFECT
RSTACK
.FUNCT V-BURY:ANY:0:0
FSET? PRSO,PERSON \?CCL3
FSET? PRSO,DEAD \?CCL6
PRINTR "Cremation is more normal here."
?CCL6: PRINTI "Bury "
ICALL2 PRINT-HIM/HER,PRSO
PRINTR " alive? How barbaric."
?CCL3: PRINTR "You might not be able to find it again."
.FUNCT V-YES:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
ZERO? PRSO /?CCL5
EQUAL? PRSO,HEAD /?CCL5
PRINTR "You aren't making much sense."
?CCL5: PRINTR "No question was asked that required an answer."
.FUNCT V-NO:ANY:0:0
CALL1 V-YES
RSTACK
.FUNCT V-BUY:ANY:0:0
CALL2 UNINTERESTED,PRSI
RSTACK
.FUNCT PRE-SSELL:ANY:0:0
ICALL2 SWAP-VERB,V?SELL
RTRUE
.FUNCT V-SSELL:ANY:0:0
RTRUE
.FUNCT V-SELL:ANY:0:0
CALL2 UNINTERESTED,PRSI
RSTACK
.FUNCT PRE-TELL-ABOUT:ANY:0:0
EQUAL? PRSO,ME \FALSE
ICALL PERFORM,V?TELL-ME-ABOUT,PRSI
RTRUE
.FUNCT V-TELL-ABOUT:ANY:0:0
CALL2 HELD?,PRSI
ZERO? STACK /?CCL3
ICALL2 SWAP-VERB,V?SHOW
RTRUE
?CCL3: FSET? PRSO,JAPANESEBIT \?CCL5
EQUAL? PRSO,MARIKO /?CCL5
CALL2 DIFFICULTY,PRSO
RSTACK
?CCL5: CALL2 UNINTERESTED,PRSO
RSTACK
.FUNCT DIFFICULTY:ANY:1:1,WHO
PRINTI "You have a great deal of difficulty making yourself understood. "
ICALL2 CTHE-PRINT,WHO
PRINTR " doesn't seem to understand you very well."
.FUNCT V-TELL-ME-ABOUT:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
EQUAL? WINNER,PLAYER \?CCL5
ICALL PERFORM,V?WHAT,PRSO
RTRUE
?CCL5: FSET? WINNER,JAPANESEBIT \?CCL7
EQUAL? WINNER,MARIKO /?CCL7
CALL2 DIFFICULTY,WINNER
RSTACK
?CCL7: ICALL2 CTHE-PRINT,WINNER
PRINTR " doesn't seem to have anything to say about that."
.FUNCT V-TRADE:ANY:0:0
ZERO? PRSI /?CCL3
FSET? PRSI,PERSON \?CCL3
CALL2 UNINTERESTED,PRSI
RSTACK
?CCL3: EQUAL? WINNER,PLAYER \?CCL7
ZERO? PRSI /?CCL7
FSET? PRSO,PERSON /?CCL7
PRINTR "No one here is interested in trading."
?CCL7: CALL1 V-BARGAIN
RSTACK
.FUNCT V-ERASE:ANY:0:0
CALL1 TELL-YUKS
RSTACK
.FUNCT V-ADMIRE:ANY:0:0
PRINTR "Your taste is unusual."
.FUNCT V-BARGAIN:ANY:0:0
PRINTR "A preoccupation with money and trading is inappropriate in this society, very uncultured."
.FUNCT V-REPAIR:ANY:0:0
FSET? PRSO,RMUNGBIT \?CCL3
PRINTR "You don't know how."
?CCL3: FSET? PRSO,PERSON \?CCL5
PRINTR "You're a pilot, not a doctor."
?CCL5: ICALL1 CTHE-PRINT-PRSO
PRINTR " isn't broken."
.FUNCT V-LOOK-UP:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
PRINTR "Don't get a sore neck."
?CCL3: EQUAL? PRSO,INTQUOTE \?CCL5
CALL2 ACCESSIBLE?,DICTIONARY
ZERO? STACK /?CCL5
ICALL PERFORM,PRSA,PRSO,DICTIONARY
RTRUE
?CCL5: ICALL2 NEW-VERB,V?WHAT
RTRUE
.FUNCT V-PLUG-IN:ANY:0:0
CALL2 YOU-CANT-X-THAT,STR?166
RSTACK
.FUNCT V-UNPLUG:ANY:0:0
CALL2 YOU-CANT-X-THAT,STR?167
RSTACK
.FUNCT V-WALK-UNDER:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL2 DO-WALK,P?DOWN
RSTACK
?CCL3: PRINTI "Only a snake could get under "
ICALL1 PRINTA-PRSO
PRINTR "!"
.FUNCT V-SCARE:ANY:0:0
PRINTI "I don't think you scared "
ICALL1 THE-PRINT-PRSO
PRINTR " very much."
.FUNCT V-WEDGE:ANY:0:0
PRINT YOU-CANT
PRINTI "wedge open "
ICALL1 PRINTA-PRSO
PRINTI " with "
ICALL1 PRINTA-PRSI
PRINT PERIOD
RTRUE
.FUNCT PRE-SWEDGE:ANY:0:0
ICALL2 SWAP-VERB,V?WEDGE
RTRUE
.FUNCT V-SWEDGE:ANY:0:0
RTRUE
.FUNCT V-PUT-BETWEEN:ANY:0:0
PRINT YOU-CANT
PRINTI "put "
ICALL1 PRINTA-PRSO
PRINTI " between "
ICALL1 PRINTA-PRSI
PRINT PERIOD
RTRUE
.FUNCT V-TASTE:ANY:0:0
FSET? PRSO,PERSON \?CCL3
PRINTR "You have got to be kidding."
?CCL3: PRINTI "It tastes exactly as you'd expect "
ICALL1 PRINTA-PRSO
PRINTR " to taste, only worse."
.FUNCT V-DIE:ANY:0:0
ICALL PERFORM,V?KILL,ME
RTRUE
.FUNCT V-COOK:ANY:0:0
PRINTR "Most people cook things in ovens."
.FUNCT V-DRIVE-ON:ANY:0:0
FSET? PRSI,PERSON \?CCL3
ICALL1 CTHE-PRINT-PRSI
PRINTR " moves out of the way."
?CCL3: PRINT GOOD-TRICK
RTRUE
.FUNCT V-DRIVE-TO:ANY:0:0
IN? WINNER,PRSO \?CCL3
EQUAL? PRSI,INTDIR \?CCL3
CALL2 DO-WALK,P-DIRECTION
RSTACK
?CCL3: PRINT GOOD-TRICK
RTRUE
.FUNCT V-STEP-ON:ANY:0:0
FSET? PRSO,VEHBIT \?CCL3
ICALL2 NEW-VERB,V?BOARD
RTRUE
?CCL3: PRINT WASTE-OF-TIME
RTRUE
.FUNCT V-STOP:ANY:0:0
PRINT NOTHING-HAPPENS
RTRUE
.FUNCT V-RELEASE:ANY:0:0
ICALL2 NEW-VERB,V?DROP
RTRUE
.FUNCT V-PUSH-DOWN:ANY:0:0
CALL2 PUSH-FOO,STR?168
RSTACK
.FUNCT V-PUSH-UP:ANY:0:0
CALL2 PUSH-FOO,STR?169
RSTACK
.FUNCT V-PUSH-OUT:ANY:0:0
CALL2 PUSH-FOO,STR?170
RSTACK
.FUNCT PUSH-FOO:ANY:1:1,DIR
EQUAL? PRSI,ROOMS \?CCL3
PRINTI "You push "
ICALL1 THE-PRINT-PRSO
PRINTR ", but nothing happens."
?CCL3: PRINT YOU-CANT
PRINTI "push "
ICALL1 THE-PRINT-PRSO
PRINTC 32
PRINT DIR
PRINTC 32
ICALL1 THE-PRINT-PRSI
PRINTR "."
.FUNCT V-PRAY:ANY:0:0
PRINTR "You know that in any Catholic court in the world you would have been damned long since for heresy. And in most, if not all, Protestant courts. But you pray anyway."
.FUNCT PRE-SPUT-ON:ANY:0:0
ICALL2 SWAP-VERB,V?PUT-ON
RTRUE
.FUNCT V-SPUT-ON:ANY:0:0
RTRUE
.FUNCT V-LOVE:ANY:0:0
PRINTR "Your feelings aren't reciprocated."
.FUNCT V-THOU:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
PRINTR "How formal."
.FUNCT V-WRITE:ANY:0:0
CALL2 YOU-CANT-X-THAT,STR?171
RSTACK
.FUNCT V-RING:ANY:0:0
CALL2 YOU-CANT-X-THAT,STR?172
RSTACK
.FUNCT V-BOW:ANY:0:0,W
CALL1 B-LYING?
ZERO? STACK /?CCL3
PRINTR "You can't bow while lying down!"
?CCL3: EQUAL? PRSO,FALSE-VALUE,ROOMS,HEAD \?CCL5
ZERO? OPPONENT /?CCL8
IN? OPPONENT,HERE \?CCL8
SET 'W,OPPONENT
JUMP ?CND6
?CCL8: ZERO? QCONTEXT /?CCL12
IN? QCONTEXT,HERE \?CCL12
SET 'W,QCONTEXT
JUMP ?CND6
?CCL12: CALL FIND-IN,HERE,JAPANESEBIT >W
?CND6: ZERO? W /?CCL17
ICALL PERFORM,V?BOW,W
RTRUE
?CCL17: PRINTR "Good practice!"
?CCL5: EQUAL? PRSO,ME \?CCL19
PRINTR "An action not unlike clapping with one hand."
?CCL19: FSET? PRSO,PERSON \?CCL21
FSET? PRSO,DEAD \?CCL24
PRINTI "You show your respect for the dead "
ICALL1 DPRINT-PRSO
PRINTR "."
?CCL24: FSET? PRSO,DUTCHBIT \?CCL26
PRINTI """What are you, Pilot? Some kind of God-cursed courtier?"" grumbles "
ICALL1 THE-PRINT-PRSO
PRINTR "."
?CCL26: ICALL1 CTHE-PRINT-PRSO
PRINTR " returns your bow, instinctively knowing exactly the correct degree of deference to show."
?CCL21: PRINTI "You show "
ICALL1 THE-PRINT-PRSO
PRINTR " all due respect."
.FUNCT V-SORRY:ANY:0:0
ZERO? PRSO /?CCL3
FSET? PRSO,PERSON \?CCL3
ICALL2 NEW-WINNER-PRSO,PRSA
RTRUE
?CCL3: PRINTR "I'd be sorry, too."
.FUNCT V-PISS:ANY:0:0
ZERO? PRSO /?CCL3
FSET? PRSO,PERSON /?CTR2
FSET? PRSO,BODY-PART \?CCL3
?CTR2: PRINTI "You decide not to do that to "
ICALL1 THE-PRINT-PRSO
PRINTR ". It's very bad manners."
?CCL3: FSET? PRSO,FOODBIT /?CTR8
EQUAL? PRSO,FLAGON,CUP \?CCL9
?CTR8: PRINTR "What a disgusting idea."
?CCL9: EQUAL? SCENE,S-ERASMUS \?CCL13
PRINTR "You feel much better, now."
?CCL13: FSET? HERE,OUTSIDE \?CCL15
PRINTR "As you have seen the Japanese do, you turn politely away from any possible watchers and then do your business."
?CCL15: PRINTR "What a barbaric idea! You decide to hold on a little longer."
.FUNCT V-LOAD:ANY:0:0
ZERO? PRSO \?CCL3
CALL2 HELD?,PISTOL
ZERO? STACK /?CCL3
ICALL PERFORM,V?LOAD,PISTOL
RTRUE
?CCL3: PRINTR "You can't load that."
.FUNCT V-STRAIGHTEN:ANY:0:0
PRINTR "You can't straighten that!"
.FUNCT V-LAUNCH:ANY:0:0
PRINTR "You can't launch anything here."
.FUNCT V-BLESS:ANY:0:0
FSET? PRSO,DEAD \?CCL3
PRINTR "You can't be sure it does any good, but you pray that it's at least the right thing to do."
?CCL3: PRINTR "What an odd thing to do."
.FUNCT V-MAKE:ANY:0:0
EQUAL? PRSO,SIGN-OF-CROSS \?CCL3
ZERO? PRSI \?CCL6
PRINTR "An unusual gesture for someone of your religious beliefs."
?CCL6: FSET? PRSI,PERSON \?CCL8
ICALL PERFORM,V?BLESS,PRSI
RTRUE
?CCL8: PRINTI "It's generally considered blasphemous to make the sign of the cross over "
ICALL1 PRINTA-PRSI
PRINTR "."
?CCL3: PRINTI "You can't make "
ICALL1 PRINTA-PRSO
PRINTR "!"
.FUNCT V-ACT:ANY:0:0
FSET? PRSO,PERSON \?CCL3
PRINTR "Your imitation is unconvincing."
?CCL3: PRINTI "You will never make it in "
ICALL2 PRINTUNDER,STR?173
PRINTR " plays, that's certain."
.FUNCT V-DANCE:ANY:0:0
ZERO? PRSO /?CCL3
ICALL1 CTHE-PRINT-PRSO
PRINTR " doesn't seem to want to dance."
?CCL3: PRINTR "You dance foolishly for a while, then stop, embarrassed."
.FUNCT V-TEAR:ANY:0:0
CALL2 YOU-CANT-X-THAT,STR?174
RSTACK
.FUNCT V-SHIP:ANY:0:0
CALL2 YOU-CANT-X-THAT,STR?175
RSTACK
.FUNCT V-SORT:ANY:0:0
ICALL1 CTHE-PRINT-PRSO
PRINTR " seems pretty well sorted already."
.FUNCT V-ROW:ANY:0:0
EQUAL? HERE,MAIN-DECK,GALLEY \?CCL3
PRINTI "You could as easily sail the "
ICALL2 PRINTUNDER,STR?7
PRINTR " by blowing on the sails."
?CCL3: LOC WINNER
FSET? STACK,VEHBIT /?CCL5
PRINTR "You aren't in a boat!"
?CCL5: EQUAL? PRSI,INTDIR \?CCL7
IN? WINNER,PRSO \?CCL10
ICALL2 DO-WALK,P-DIRECTION
RTRUE
?CCL10: PRINTI "You aren't in "
ICALL1 THE-PRINT-PRSO
PRINTR "!"
?CCL7: EQUAL? PRSO,INTDIR \?CCL12
ICALL2 DO-WALK,P-DIRECTION
RTRUE
?CCL12: ZERO? PRSI /?CCL14
IN? WINNER,PRSO \?CCL17
ICALL PERFORM,V?WALK-TO,PRSI
RTRUE
?CCL17: PRINTI "You aren't in "
ICALL1 THE-PRINT-PRSO
PRINTR "!"
?CCL14: ZERO? PRSO \?CCL19
PRINTR "Gently down the stream..."
?CCL19: FSET? PRSO,VEHBIT \?CCL21
IN? WINNER,PRSO /?CCL24
PRINTI "You aren't in "
ICALL1 THE-PRINT-PRSO
PRINTR "!"
?CCL24: PRINT YOU-HAVE-TO
PRINT STR?158
CRLF
RTRUE
?CCL21: ZERO? PRSO /FALSE
PRINTR "You can't row that!"
.FUNCT V-TAKE-OVER:ANY:0:0
PRINTR "There's nothing to take over here!"
.FUNCT V-SHUT-UP:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
PRINTR "You stifle yourself."
?CCL3: ICALL1 CTHE-PRINT-PRSO
PRINTR " doesn't respond."
.FUNCT V-USE:ANY:0:0
PRINT YOU-HAVE-TO
PRINT STR?125
PRINTI "how you want to use "
ICALL1 THE-PRINT-PRSO
PRINTR "."
.FUNCT V-STEER-BY:ANY:0:0
PRINTR "You'll get nowhere that way!"
.FUNCT FORMAL-SCENE?:ANY:0:0
EQUAL? SCENE,S-TORANAGA,S-MARIKO,S-ESCAPE /TRUE
EQUAL? SCENE,S-OCHIBA,S-DEPARTURE,S-SEPPUKU /TRUE
EQUAL? SCENE,S-AFTERMATH /TRUE
RFALSE
.FUNCT V-STRIP:ANY:0:0,F,N,1ST?,LAST
FIRST? WINNER >F /?BOGUS1
?BOGUS1: SET '1ST?,TRUE-VALUE
CALL1 FORMAL-SCENE?
ZERO? STACK /?PRG5
PRINTR "You would expose yourself to ridicule."
?PRG5: ZERO? F /?CCL9
NEXT? F >N /?BOGUS10
?BOGUS10: FSET? F,WEARBIT \?CND11
ZERO? LAST /?CND13
ZERO? 1ST? /?CCL17
SET '1ST?,FALSE-VALUE
PRINT STR?176
JUMP ?CND15
?CCL17: PRINTC 44
?CND15: PRINTC 32
ICALL2 THE-PRINT,LAST
?CND13: SET 'LAST,F
FCLEAR F,WEARBIT
?CND11: SET 'F,N
JUMP ?PRG5
?CCL9: ZERO? LAST /?CCL20
ZERO? 1ST? /?CCL23
SET '1ST?,FALSE-VALUE
PRINT STR?176
JUMP ?CND21
?CCL23: PRINTI ", and"
?CND21: PRINTC 32
ICALL2 THE-PRINT,LAST
PRINTR "."
?CCL20: PRINTR "You aren't wearing anything."
.FUNCT V-TRANSLATE:ANY:0:0
CALL2 HELD?,DICTIONARY
ZERO? STACK /?CCL3
ICALL PERFORM,V?LOOK-UP,PRSO,DICTIONARY
RTRUE
?CCL3: LOC DICTIONARY
ZERO? STACK /?CCL5
PRINTR "You should use the dictionary."
?CCL5: PRINTR "It's still unintelligible."
.FUNCT SETUP-ANSWER:ANY:1:1,STR
EQUAL? STR,ORPHAN-ANSWER /?CND1
SET 'ORPHAN-ANSWER,STR
ZERO? STR /?CND1
ICALL2 SETUP-ORPHAN,ORPHAN-ANSWER
?CND1: ZERO? STR /?CCL7
CALL QUEUE,I-SETUP-ANSWER,-1,TRUE-VALUE
RSTACK
?CCL7: CALL2 DEQUEUE,I-SETUP-ANSWER
RSTACK
.FUNCT I-SETUP-ANSWER:ANY:0:0
ZERO? ORPHAN-ANSWER /?CCL3
ICALL2 SETUP-ORPHAN,ORPHAN-ANSWER
RFALSE
?CCL3: ICALL2 DEQUEUE,I-SETUP-ANSWER
RFALSE
.FUNCT V-SMILE:ANY:0:0
PRINTI "You smile"
ZERO? PRSO /?CND1
PRINTI " at "
ICALL1 THE-PRINT-PRSO
?CND1: PRINTR ", showing your bad teeth and rotten gums."
.FUNCT V-WINK:ANY:0:0
PRINTI "You wink"
ZERO? PRSO /?CND1
PRINTI " at "
ICALL1 THE-PRINT-PRSO
?CND1: PRINTR ", but get no reaction."
.FUNCT V-CLEAR:ANY:0:0
FSET? PRSO,FURNITURE \?CCL3
FSET? PRSO,SURFACEBIT \?CCL3
LOC WINNER
CALL EMPTY-ALL,PRSO,STACK
RSTACK
?CCL3: PRINTR "I don't see how you propose to do that."
.FUNCT V-TURN-TOWARD:ANY:0:0
CALL1 V-TURN-AWAY
RSTACK
.FUNCT V-TURN-AWAY:ANY:0:0
PRINT YOU-HAVE-TO
PRINT STR?177
CRLF
RTRUE
.FUNCT V-REACH-FOR:ANY:0:0
PRINT STR?178
ICALL1 THE-PRINT-PRSO
PRINTI " with "
ICALL1 THE-PRINT-PRSI
PRINTR "."
.FUNCT V-HUG:ANY:0:0
FSET? PRSO,PERSON \?CCL3
FSET? PRSO,DEAD /?CCL3
FSET? PRSO,DUTCHBIT \?CCL8
PRINTI """I'm no god-cursed sodomite!"" growls "
ICALL1 THE-PRINT-PRSO
PRINTR "."
?CCL8: PRINTR "Such public displays of affection are considered barbaric in Japan."
?CCL3: PRINTI "Only a barbarian would try to hug "
ICALL1 PRINTA-PRSO
PRINTR "!"
.FUNCT V-SOOTHE:ANY:0:0
FSET? PRSO,PERSON \?CCL3
PRINTR "Your efforts don't seem to have much effect."
?CCL3: PRINTI "You can't soothe "
ICALL1 PRINTA-PRSO
PRINTR "."
.FUNCT V-HAI:ANY:0:0
CALL1 V-IYE
RSTACK
.FUNCT V-IYE:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
PRINTR "Your accent is atrocious."
.FUNCT V-HOLD-ON:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
PRINTR "There's nothing to hold onto here!"
?CCL3: ICALL PERFORM,V?TAKE,PRSO
RTRUE
.FUNCT V-RINSE:ANY:0:0
CALL1 V-BATHE
RSTACK
.FUNCT V-BATHE:ANY:0:0
PRINTR "A fine idea, but there are no facilities here."
.FUNCT V-REPLACE:ANY:0:0
CALL2 HELD?,PRSO
ZERO? STACK /?CCL3
ICALL PERFORM,V?DROP,PRSO
RTRUE
?CCL3: ICALL1 CTHE-PRINT-PRSO
PRINTR " is irreplaceable."
.FUNCT V-ESCAPE:ANY:0:0
PRINTR "A fine idea, but the details of your plan seem rather sketchy."
.FUNCT V-PLEAD:ANY:0:0
ZERO? PRSO /?CCL3
ICALL1 CTHE-PRINT-PRSO
PRINTR " ignores your pleas."
?CCL3: PRINTR "Your pleas seem to fall on deaf ears."
.FUNCT V-COMMIT:ANY:0:0
EQUAL? PRSO,SUICIDE \?CCL3
ICALL PERFORM,V?KILL,ME
RTRUE
?CCL3: PRINTR "It's you that should be committed."
.FUNCT V-ACCUSE:ANY:0:0
FSET? PRSO,PERSON \?CCL3
PRINTR """Never!"""
?CCL3: PRINTR "You are obviously going a bit paranoid."
.FUNCT V-SPIT:ANY:0:0
PRINTR "What an uncouth idea."
.FUNCT V-TEKI:ANY:0:0
FSET? TEKI,RMUNGBIT \?CCL3
PRINTI "In Japanese, "
ICALL2 PRINTUNDER,STR?179
PRINTR " means 'enemy.'"
?CCL3: PRINTR "That's not a word you know."
.FUNCT GET-INTQUOTE:ANY:1:1,N,NP,LEN,?TMP1
CALL2 GET-NP,INTQUOTE >NP
GET NP,8 >?TMP1
GET NP,7
SUB ?TMP1,STACK
DIV STACK,4
SUB STACK,1 >LEN
MUL N,2 >N
GRTR? N,LEN /FALSE
GET NP,7
ADD STACK,4
GET STACK,N
RSTACK
.FUNCT PRE-SSPEAK:ANY:0:0
ICALL2 SWAP-VERB,V?SPEAK
RTRUE
.FUNCT V-SSPEAK:ANY:0:0
RTRUE
.FUNCT V-SPEAK:ANY:0:0
EQUAL? PRSO,ENGLISH \?CCL3
PRINTR "English is your native tongue. You speak the English of London, and have fond memories of the plays of Jonson and Shakespeare."
?CCL3: EQUAL? PRSO,DUTCH \?CCL5
PRINTR "Your mother was Dutch, and your men are mostly Dutch, so you speak it fluently. Holland is England's only ally against the treacherous Spanish."
?CCL5: EQUAL? PRSO,PORTUGUESE \?CCL7
PRINTR "Your Portuguese is excellent."
?CCL7: EQUAL? PRSO,SPANISH \?CCL9
PRINTR "You can speak the language of the hated Spaniards like a native."
?CCL9: EQUAL? PRSO,LATIN \?CCL11
PRINTR "Like all educated men, you speak Latin."
?CCL11: EQUAL? PRSO,JAPANESE \?CCL13
EQUAL? SCENE,S-ERASMUS,S-ANJIRO \?CCL16
PRINTR "You don't know any Japanese."
?CCL16: PRINTR "Your accent is atrocious, and your vocabulary small, but you are learning fast."
?CCL13: PRINTR "That's not a language you know."
.FUNCT V-AIM:ANY:0:0,W
ZERO? PRSI \?CCL3
FSET? PRSO,PERSON \?CCL6
CALL FIND-IN,WINNER,WEAPONBIT >W
ZERO? W /?CCL9
ICALL PERFORM,PRSA,W,PRSO
RTRUE
?CCL9: PRINTR "You sight carefully along your finger..."
?CCL6: PRINTR "How strange."
?CCL3: PRINTI "You aim "
ICALL1 THE-PRINT-PRSO
PRINTI " at "
ICALL1 THE-PRINT-PRSI
PRINTR "."
.FUNCT V-EXPLODE:ANY:0:0
ZERO? PRSI /?CCL3
PRINTI "A "
PRINT PRSI
PRINTR " doesn't make a very good explosive!"
?CCL3: PRINT YOU-HAVE-TO
PRINTR "use an explosive."
.ENDSEG
.SEGMENT "0"
.FUNCT V-HINT:ANY:0:0
EQUAL? HINTS-OFF,-1 \?CCL3
SET 'HINTS-OFF,0
PRINTI "Warning: We strongly recommend that you not use hints unless you're definitely stuck. Peeking at hints prematurely will invariably make you enjoy the story less. If you want to avoid reading any hints for the rest of this session, you may at any time during the story type HINTS OFF.
Do you still want a hint"
CALL1 YES?
ZERO? STACK \?CND1
RETURN M-FATAL
?CCL3: ZERO? HINTS-OFF /?CND1
ICALL PERFORM,V?HINTS-OFF,ROOMS
RETURN M-FATAL
?CND1: GRTR? SCENE,S-ESCAPE \?CCL9
ADD SCENE,1 >H-CHAPT-NUM
JUMP ?CND7
?CCL9: SET 'H-CHAPT-NUM,SCENE
?CND7: ICALL2 TOUCH-SEG,P-HINT-BORDER
ICALL1 DO-HINTS
ICALL1 REPAINT-DISPLAY
PRINTR "Back to the story..."
.FUNCT V-HINTS-OFF:ANY:0:0
EQUAL? PRSO,ROOMS /?CCL3
PRINTR "[Sorry, I don't understand.]"
?CCL3: GRTR? HINTS-OFF,0 \?CCL5
PRINTI "[You've already deactivated"
JUMP ?CND1
?CCL5: SET 'HINTS-OFF,TRUE-VALUE
PRINTI "[Okay, you will no longer have access to"
?CND1: PRINTR " help in this session.]"
.FUNCT V-PICK-UP:ANY:0:0
ICALL1 CTHE-PRINT-PRSI
PRINTI " doesn't seem to be much help in getting "
ICALL1 THE-PRINT-PRSO
PRINTR "."
.FUNCT V-COME-FROM:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
PRINTI "So, you c"
CALL1 PAST-TENSE?
ZERO? STACK /?CCL6
PRINTC 97
JUMP ?CND4
?CCL6: PRINTC 111
?CND4: PRINTI "me from "
ICALL1 DPRINT-PRSO
PRINTR "."
.FUNCT PAST-TENSE?:ANY:0:0,X,?TMP1
ADD WORD-FLAG-TABLE,2 >?TMP1
GET WORD-FLAG-TABLE,0
INTBL? P-PRSA-WORD,?TMP1,STACK,132 >X \?CCL3
GET X,1
JUMP ?CND1
?CCL3: PUSH FALSE-VALUE
?CND1: BAND PAST-TENSE,STACK
RSTACK
.FUNCT PRE-COME-TO-FROM:ANY:0:0
EQUAL? PRSO,GLOBAL-HERE,JAPAN \FALSE
ICALL PERFORM,V?COME-FROM,PRSI
RTRUE
.FUNCT V-COME-TO-FROM:ANY:0:0
PRINTR "That's very interesting."
.FUNCT V-PARRY:ANY:0:0
PRINTR "There doesn't seem to be anything to parry."
.FUNCT V-TEACH:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
FSET? PRSO,PERSON \?CCL5
PRINTI "You do your best to teach "
ICALL1 THE-PRINT-PRSO
PRINTR "."
?CCL5: PRINTI "You can't teach "
ICALL1 PRINTA-PRSO
PRINTR "!"
.FUNCT V-LEARN:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
PRINTR "Perhaps you should ask someone to teach you."
.FUNCT V-LOOK-OUT:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
FSET? HERE,OUTSIDE \?CCL6
PRINTR "You are outside already!"
?CCL6: PRINT YOU-HAVE-TO
PRINTR "go outside to look outside."
?CCL3: ICALL PERFORM,V?EXAMINE,PRSO
RTRUE
.FUNCT B-STAND:ANY:0:0
FCLEAR BLACKTHORNE,SITTING
FCLEAR BLACKTHORNE,TRANSBIT
FCLEAR BLACKTHORNE,SURFACEBIT
RTRUE
.FUNCT B-SITTING?:ANY:0:0
FSET? BLACKTHORNE,SITTING \FALSE
FSET? BLACKTHORNE,TRANSBIT /FALSE
FSET? BLACKTHORNE,SURFACEBIT /FALSE
RTRUE
.FUNCT B-SIT:ANY:0:0
FSET BLACKTHORNE,SITTING
FCLEAR BLACKTHORNE,TRANSBIT
FCLEAR BLACKTHORNE,SURFACEBIT
RTRUE
.FUNCT B-KNEELING?:ANY:0:0
FSET? BLACKTHORNE,SITTING \FALSE
FSET? BLACKTHORNE,TRANSBIT /TRUE
RFALSE
.FUNCT B-KNEEL:ANY:0:0
FSET BLACKTHORNE,SITTING
FSET BLACKTHORNE,TRANSBIT
FCLEAR BLACKTHORNE,SURFACEBIT
RTRUE
.FUNCT B-LYING?:ANY:0:0
FSET? BLACKTHORNE,SITTING \FALSE
FSET? BLACKTHORNE,SURFACEBIT /TRUE
RFALSE
.FUNCT B-LIE-DOWN:ANY:0:0
FSET BLACKTHORNE,SITTING
FCLEAR BLACKTHORNE,TRANSBIT
FSET BLACKTHORNE,SURFACEBIT
RTRUE
.FUNCT V-STAND:ANY:0:0,AV
EQUAL? PRSO,FALSE-VALUE,ROOMS \?CCL3
LOC WINNER >AV
FSET? AV,VEHBIT \?CCL6
EQUAL? AV,QUILT /?CCL6
PRINTI "You shouldn't stand up inside "
ICALL2 PRINTA,AV
PRINTR "."
?CCL6: FSET? BLACKTHORNE,SITTING \?CCL10
ICALL1 B-STAND
PRINTR "You stand up."
?CCL10: PRINT YOU-ARE
PRINTR " standing."
?CCL3: CALL2 HACK-HACK,STR?180
RSTACK
.FUNCT V-SIT:ANY:0:0
EQUAL? PRSO,FALSE-VALUE,ROOMS /?CCL3
PRINT WASTE-OF-TIME
RTRUE
?CCL3: FSET? BLACKTHORNE,SITTING \?CCL5
CALL1 B-SITTING?
ZERO? STACK /?CCL8
PRINT STR?181
CRLF
RTRUE
?CCL8: ICALL1 B-SIT
PRINTR "You sit up."
?CCL5: ICALL1 B-SIT
PRINTR "You sit down."
.FUNCT V-KNEEL:ANY:0:0
CALL1 B-KNEELING?
ZERO? STACK /?CCL3
PRINT STR?181
CRLF
RTRUE
?CCL3: ICALL1 B-KNEEL
PRINT STR?182
CRLF
RTRUE
.FUNCT V-KNEEL-ON:ANY:0:0
EQUAL? PRSO,GROUND /?CTR2
FSET? PRSO,FURNITURE \?CCL3
?CTR2: ICALL2 PERFORM,V?KNEEL
RTRUE
?CCL3: PRINTR "You can't kneel on that!"
.FUNCT V-LIE-DOWN:ANY:0:0
EQUAL? PRSO,ROOMS,GROUND \?CCL3
CALL1 B-LYING?
ZERO? STACK /?CCL6
PRINT STR?181
CRLF
RTRUE
?CCL6: ICALL1 B-LIE-DOWN
PRINTR "You lie down."
?CCL3: FSET? PRSO,VEHBIT \FALSE
ICALL PERFORM,V?BOARD,PRSO
RTRUE
.FUNCT V-LIE:ANY:0:0
PRINTR "A duplicitous idea, but you'll have to be more specific."
.FUNCT V-AVOID:ANY:0:0
EQUAL? PRSO,OPPONENT \?CCL3
ICALL2 PERFORM,V?DODGE
RTRUE
?CCL3: PRINTR "You're doing the best you can."
.FUNCT V-FUCK:ANY:0:0
EQUAL? PRSO,YOU \?CCL3
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
?CCL3: FSET? PRSO,PERSON \?CCL7
FSET? PRSO,FEMALE \?CCL10
PRINTR "What an indelicate, even coarse, suggestion!"
?CCL10: PRINTR "Your predelictions are unusual, even given the local attitudes on these matters."
?CCL7: PRINTR "An unusual idea."
.FUNCT V-KNOW:ANY:0:0
PRINTR "I don't know."
.FUNCT V-TRAIN:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
PRINTR "It'll take a lot of training."
.FUNCT V-BETRAY:ANY:0:0
CALL1 PAST-TENSE?
ZERO? STACK /?CCL3
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
?CCL3: PRINTI "There's no one to betray "
ICALL1 THE-PRINT-PRSO
PRINTR " to."
.FUNCT V-LET-IN:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
PRINT YOU-HAVE-TO
PRINT STR?125
PRINTR "how you are doing that."
.FUNCT V-PUT-AWAY:ANY:0:0
EQUAL? PRSI,ROOMS \?CCL3
PRINT YOU-HAVE-TO
PRINT STR?125
PRINTI "where you want to put "
ICALL1 THE-PRINT-PRSO
PRINTR "."
?CCL3: ICALL PERFORM,V?PUT,PRSO,PRSI
RTRUE
.FUNCT V-DODGE:ANY:0:0
EQUAL? PRSO,ROOMS,FALSE-VALUE,OPPONENT \?CCL3
ZERO? OPPONENT /?CCL3
PRINTI "You try to get out of the way of "
ICALL2 THE-PRINT,OPPONENT
PRINTR "'s attack."
?CCL3: EQUAL? PRSO,ROOMS,FALSE-VALUE \?CCL7
PRINTR "There's nothing to duck."
?CCL7: PRINTI "You don't need to dodge "
ICALL1 THE-PRINT-PRSO
PRINTR "."
.FUNCT V-WAKARIMASU:ANY:0:0
PRINTR "That's nice."
.FUNCT V-MIZU:ANY:0:0
LESS? SCENE,S-PRISON /?CCL3
PRINTR "That's Japanese for 'water.'"
?CCL3: PRINTR "What's that mean?"
.FUNCT V-QUIET:ANY:0:0
PRINTR "There doesn't seem to be anyone paying attention."
.FUNCT V-COLOR:ANY:0:0,DEFAULT,FG,BG
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CCL3
PRINTR "[Sorry, the Apple II doesn't support color selection.]"
?CCL3: ZERO? COLOR-NOTE \?CND1
EQUAL? MACHINE,MACINTOSH \?CND1
CALL1 MAC-II?
ZERO? STACK /?CND1
SET 'COLOR-NOTE,TRUE-VALUE
PRINTI "If your Mac II displays fewer than 256 colors, you probably won't get the color you ask for. Do you still want to go ahead"
CALL1 YES?
ZERO? STACK /TRUE
?CND1: CRLF
SET 'FG,FG-COLOR
SET 'BG,BG-COLOR
?PRG10: ICALL1 DO-COLOR
PRINTI "You will get "
GET COLOR-TABLE,FG-COLOR
PRINT STACK
PRINTI " text on a "
GET COLOR-TABLE,BG-COLOR
PRINT STACK
PRINTI " background.
Is that what you want"
CALL1 YES?
ZERO? STACK /?CCL14
ICALL1 NORMAL-COLOR
SCREEN S-FULL
ICALL1 NORMAL-COLOR
SCREEN S-TEXT
ICALL1 V-$REFRESH
RTRUE
?CCL14: SET 'FG-COLOR,FG
SET 'BG-COLOR,BG
CRLF
PRINTI "Do you want to pick again"
CALL1 YES?
ZERO? STACK /TRUE
CRLF
JUMP ?PRG10
.FUNCT MAC-II?:ANY:0:0
EQUAL? MACHINE,MACINTOSH \FALSE
WINGET S-FULL,WWIDE
EQUAL? STACK,640 /TRUE
RFALSE
.FUNCT DO-COLOR:ANY:0:0
EQUAL? MACHINE,AMIGA \?CCL3
PUSH 11
JUMP ?CND1
?CCL3: EQUAL? MACHINE,IBM \?CCL5
GET 0,17
EQUAL? STACK,320 \?CCL5
PUSH 9
JUMP ?CND1
?CCL5: PUSH 8
?CND1: PUT COLOR-MENU,0,STACK
GET 0,8
BTST STACK,F-COLOR \?CTR9
EQUAL? MACHINE,MACINTOSH \?CCL10
CALL1 MAC-II?
ZERO? STACK \?CCL10
?CTR9: EQUAL? BG-COLOR,C-BLACK \?CCL17
SET 'BG-COLOR,C-WHITE
SET 'FG-COLOR,C-BLACK
RTRUE
?CCL17: SET 'BG-COLOR,C-BLACK
SET 'FG-COLOR,C-WHITE
RTRUE
?CCL10: CALL PICK-COLOR,FG-COLOR,STR?183,TRUE-VALUE >FG-COLOR
CALL PICK-COLOR,BG-COLOR,STR?184 >BG-COLOR
RTRUE
.FUNCT PICK-COLOR:ANY:2:3,WHICH,STRING,SETTING-FG,CHAR
PRINTI "The current "
PRINT STRING
PRINTI " color is "
GET COLOR-TABLE,WHICH
PRINT STACK
PRINTC 46
CRLF
EQUAL? WHICH,1 \?PRG6
ZERO? SETTING-FG /?CCL5
SET 'WHICH,C-BLACK
JUMP ?PRG6
?CCL5: SET 'WHICH,C-WHITE
?PRG6: CALL2 COLOR-OFFSET,WHICH
CALL GET-FROM-MENU,STR?185,COLOR-MENU,COLOR-MENU-F,STACK >CHAR
ZERO? SETTING-FG \?REP7
EQUAL? CHAR,FG-COLOR \?REP7
CRLF
PRINTI "You can't make the background the same color as the text! Pick another color."
CRLF
JUMP ?PRG6
?REP7: CRLF
CRLF
RETURN CHAR
.FUNCT COLOR-OFFSET:ANY:1:1,TMP
EQUAL? TMP,C-WHITE \?CCL3
SET 'TMP,1
RETURN TMP
?CCL3: GRTR? TMP,C-WHITE /?CCL4
RETURN TMP
?CCL4: DEC 'TMP
RETURN TMP
.FUNCT COLOR-MENU-F:ANY:2:2,TMP,M
EQUAL? TMP,1 \?CCL3
SET 'TMP,C-WHITE
RETURN TMP
?CCL3: GRTR? TMP,8 /?CCL4
RETURN TMP
?CCL4: INC 'TMP
RETURN TMP
.FUNCT V-SHRUG:ANY:0:0
PRINTR "An eloquent gesture."
.FUNCT V-SING:ANY:0:0
EQUAL? PRSO,FALSE-VALUE,ME \?CCL3
PRINTI "You sing an old sea chanty."
GRTR? SCENE,1 \?CND4
PRINTR " It's a good thing no Japanese understand English."
?CND4: CRLF
RTRUE
?CCL3: FSET? PRSO,PERSON \?CCL7
ICALL1 CTHE-PRINT-PRSO
PRINTR " doesn't seem impressed."
?CCL7: PRINTR "You can't sing that."
.FUNCT V-DISTRACT:ANY:0:0
PRINTR "You are unsuccessful."
.FUNCT V-JOIN:ANY:0:0
FSET? PRSO,PERSON \?CCL3
ICALL PERFORM,V?WALK-TO,PRSO
RTRUE
?CCL3: ICALL PERFORM,V?BOARD,PRSO
RTRUE
.FUNCT OUTSIDE-TUB?:ANY:1:1,TUB
CALL1 GAME-VERB?
ZERO? STACK \FALSE
CALL1 PASSIVE-VERB?
ZERO? STACK \FALSE
ZERO? PRSO /FALSE
CALL2 HELD?,PRSO
ZERO? STACK \FALSE
EQUAL? PRSO,TUB,ME,ROOMS /FALSE
IN? PRSO,TUB /FALSE
FSET? PRSO,BODY-PART /FALSE
EQUAL? PRSO,LATIN,SPANISH,PORTUGUESE /FALSE
EQUAL? PRSO,DUTCH /FALSE
RTRUE
.FUNCT V-DRAW:ANY:0:0
FSET? PRSO,WEAPONBIT \?CCL3
CALL2 HELD?,PRSO
ZERO? STACK /?CCL3
ICALL PERFORM,V?USE,PRSO
RTRUE
?CCL3: PRINTR "The result reveals that it's a good thing you became a Pilot instead of an artist."
.FUNCT V-DIVE:ANY:0:0
ZERO? PRSO /?CCL3
FSET? PRSO,VEHBIT \?CCL6
ICALL PERFORM,V?BOARD,PRSO
RTRUE
?CCL6: FSET? PRSO,DOORBIT \?CCL8
ICALL PERFORM,V?THROUGH,PRSO
RTRUE
?CCL8: IN? PRSO,ROOMS \?CCL10
ICALL PERFORM,V?WALK-TO,PRSO
RTRUE
?CCL10: PRINTI "You can't dive into "
ICALL1 THE-PRINT-PRSO
PRINTR "."
?CCL3: PRINTR "Taking a dive, eh?"
.FUNCT V-BABBLE:ANY:0:0
PRINTR "You babble nonsense for a while."
.FUNCT V-TRIP:ANY:0:0
PRINTR "You are unsuccessful."
.FUNCT V-NIHON-GO-GA:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
EQUAL? PRSO,HANASE-MASEN \?CCL5
PRINTR "True enough, but you're getting better."
?CCL5: PRINT STR?199
CRLF
RTRUE
.FUNCT V-GENKI-DESU:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
EQUAL? PRSO,ROOMS \?CCL5
PRINTR "It's good to know you're feeling well."
?CCL5: PRINT STR?199
CRLF
RTRUE
.FUNCT V-GOMEN-NASAI:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
EQUAL? PRSO,ROOMS \?CCL5
PRINTR "No one seems to be expecting an apology."
?CCL5: PRINT STR?199
CRLF
RTRUE
.FUNCT V-ISOGI:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
PRINTR "No one seems to be listening."
.FUNCT V-KONBANWA:ANY:0:0
ICALL PERFORM,V?KONNICHI-WA,ROOMS
RTRUE
.FUNCT V-KONNICHI-WA:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
EQUAL? PRSO,ROOMS \?CCL5
PRINTR "Good practice! Your accent is getting better."
?CCL5: PRINT STR?199
CRLF
RTRUE
.FUNCT V-KINJIRU:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
PRINT STR?200
CRLF
RTRUE
.FUNCT V-DRY:ANY:0:0
ICALL1 CTHE-PRINT-PRSO
PRINTR " doesn't seem to want to be dried."
.FUNCT V-WARN:ANY:0:0
FSET? PRSO,PERSON /?CCL3
CALL2 YOU-CANT-X-PRSO,STR?201
RSTACK
?CCL3: FSET? PRSO,DEAD \?CCL5
PRINT YOU-CANT
PRINT STR?65
CRLF
RTRUE
?CCL5: ZERO? PRSI /?CCL7
ICALL1 CTHE-PRINT-PRSO
PRINTI " doesn't seem worried about "
ICALL1 THE-PRINT-PRSI
PRINTR "."
?CCL7: ZERO? OPPONENT /?CCL9
ICALL PERFORM,V?WARN,PRSO,OPPONENT
RTRUE
?CCL9: ICALL1 CTHE-PRINT-PRSO
PRINTR " doesn't seem worried."
.FUNCT V-PULL-BEHIND:ANY:0:0
CALL2 YOU-CANT-X-PRSO,STR?202
RSTACK
.FUNCT V-TOMO:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
PRINT STR?200
CRLF
RTRUE
.FUNCT V-NEH:ANY:0:0
PRINTR """Neh."""
.ENDSEG
.ENDI