mirror of
https://github.com/historicalsource/cutthroats
synced 2024-04-26 05:59:24 +03:00
3566 lines
68 KiB
Plaintext
3566 lines
68 KiB
Plaintext
|
|
|
|
.FUNCT V-VERBOSE
|
|
SET 'VERBOSE,TRUE-VALUE
|
|
SET 'SUPER-BRIEF,FALSE-VALUE
|
|
PRINTI "Maximum verbosity."
|
|
CRLF
|
|
CRLF
|
|
CALL V-LOOK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BRIEF
|
|
SET 'VERBOSE,FALSE-VALUE
|
|
SET 'SUPER-BRIEF,FALSE-VALUE
|
|
PRINTR "Brief descriptions."
|
|
|
|
|
|
.FUNCT V-SUPER-BRIEF
|
|
SET 'SUPER-BRIEF,TRUE-VALUE
|
|
PRINTR "Super-brief descriptions."
|
|
|
|
|
|
.FUNCT V-LOOK
|
|
CALL DESCRIBE-ROOM,TRUE-VALUE
|
|
ZERO? STACK /FALSE
|
|
CALL DESCRIBE-OBJECTS,TRUE-VALUE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-FIRST-LOOK
|
|
CALL DESCRIBE-ROOM
|
|
ZERO? STACK /FALSE
|
|
ZERO? SUPER-BRIEF \FALSE
|
|
CALL DESCRIBE-OBJECTS
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-EXAMINE
|
|
ZERO? LIT \FALSE
|
|
FSET? PRSO,READBIT \FALSE
|
|
CALL PERFORM,V?READ,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-EXAMINE
|
|
GETP PRSO,P?TEXT
|
|
ZERO? STACK /?ELS5
|
|
GETP PRSO,P?TEXT
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?ELS5: FSET? PRSO,CONTBIT /?THN10
|
|
FSET? PRSO,DOORBIT \?ELS9
|
|
?THN10: CALL PERFORM,V?LOOK-INSIDE,PRSO
|
|
RTRUE
|
|
?ELS9: PRINTI "I see nothing special about "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT DESCRIBE-ROOM,LOOK?=0,V?,STR,AV=0
|
|
ZERO? LOOK? /?ORP4
|
|
PUSH LOOK?
|
|
JUMP ?THN1
|
|
?ORP4: PUSH VERBOSE
|
|
?THN1: POP 'V?
|
|
ZERO? LIT \?CND5
|
|
CALL TELL-TOO-DARK
|
|
RETURN FALSE-VALUE
|
|
?CND5: FSET? HERE,TOUCHBIT /?CND8
|
|
FSET HERE,TOUCHBIT
|
|
SET 'V?,TRUE-VALUE
|
|
?CND8: IN? HERE,ROOMS \?CND11
|
|
CALL DPRINT,HERE
|
|
LOC WINNER >AV
|
|
FSET? AV,VEHBIT \?CND16
|
|
PRINTI ", "
|
|
CALL VEHPREP,AV
|
|
PRINT STACK
|
|
PRINTI " the "
|
|
CALL DPRINT,AV
|
|
?CND16: CRLF
|
|
?CND11: ZERO? LOOK? \?THN24
|
|
ZERO? SUPER-BRIEF \?CND21
|
|
?THN24: ZERO? V? /?ELS28
|
|
GETP HERE,P?ACTION
|
|
CALL STACK,M-LOOK
|
|
ZERO? STACK \TRUE
|
|
?ELS28: ZERO? V? /?CND26
|
|
GETP HERE,P?LDESC >STR
|
|
ZERO? STR /?CND26
|
|
PRINT STR
|
|
CRLF
|
|
?CND26: GETP HERE,P?ACTION
|
|
CALL STACK,M-FLASH
|
|
ZERO? AV /?CND21
|
|
EQUAL? HERE,AV /?CND21
|
|
FSET? AV,VEHBIT \?CND21
|
|
GETP AV,P?ACTION
|
|
CALL STACK,M-LOOK
|
|
?CND21: GETP HERE,P?CORRIDOR
|
|
ZERO? STACK /TRUE
|
|
CALL CORRIDOR-LOOK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT VEHPREP,VEH
|
|
FSET? VEH,SURFACEBIT \?ELS5
|
|
RETURN STR?56
|
|
?ELS5: RETURN STR?57
|
|
|
|
|
|
.FUNCT DESCRIBE-OBJECTS,V?=0
|
|
ZERO? LIT /?ELS5
|
|
FIRST? HERE \FALSE
|
|
ZERO? V? /?ORP15
|
|
PUSH V?
|
|
JUMP ?THN12
|
|
?ORP15: PUSH VERBOSE
|
|
?THN12: POP 'V?
|
|
CALL PRINT-CONT,HERE,V?,-1
|
|
RSTACK
|
|
?ELS5: PRINTR "I can't see anything in the dark."
|
|
|
|
|
|
.FUNCT DESCRIBE-OBJECT,OBJ,V?,LEVEL,STR=0,AV
|
|
SET 'DESC-OBJECT,OBJ
|
|
ZERO? LEVEL \?ELS3
|
|
GETP OBJ,P?DESCFCN
|
|
CALL STACK,M-OBJDESC
|
|
ZERO? STACK \TRUE
|
|
?ELS3: ZERO? LEVEL \?ELS7
|
|
FSET? OBJ,TOUCHBIT /?ELS13
|
|
GETP OBJ,P?FDESC >STR
|
|
ZERO? STR \?THN10
|
|
?ELS13: GETP OBJ,P?LDESC >STR
|
|
ZERO? STR /?ELS7
|
|
?THN10: PRINT STR
|
|
JUMP ?CND1
|
|
?ELS7: ZERO? LEVEL \?ELS17
|
|
PRINTI "There is "
|
|
CALL APRINT,OBJ
|
|
PRINTI " here."
|
|
JUMP ?CND1
|
|
?ELS17: GET INDENTS,LEVEL
|
|
PRINT STACK
|
|
PRINTI "A"
|
|
CALL VOWEL?,OBJ
|
|
CALL DPRINT,OBJ
|
|
FSET? OBJ,WORNBIT \?CND1
|
|
IN? OBJ,WINNER \?CND1
|
|
PRINTI " (being worn)"
|
|
?CND1: CRLF
|
|
CALL SEE-INSIDE?,OBJ
|
|
ZERO? STACK /FALSE
|
|
FIRST? OBJ \FALSE
|
|
CALL PRINT-CONT,OBJ,V?,LEVEL
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRINT-CONT,OBJ,V?=0,LEVEL=0,Y,1ST?,AV,STR,PV?=0,INV?=0,FLG=0
|
|
FIRST? OBJ >Y \TRUE
|
|
LOC WINNER >AV
|
|
ZERO? AV /?ELS6
|
|
FSET? AV,VEHBIT \?ELS6
|
|
JUMP ?CND4
|
|
?ELS6: SET 'AV,FALSE-VALUE
|
|
?CND4: SET '1ST?,TRUE-VALUE
|
|
LOC OBJ
|
|
EQUAL? WINNER,OBJ,STACK \?ELS13
|
|
SET 'INV?,TRUE-VALUE
|
|
JUMP ?CND11
|
|
?ELS13:
|
|
?PRG16: ZERO? Y \?ELS20
|
|
JUMP ?CND11
|
|
?ELS20: EQUAL? Y,AV \?ELS22
|
|
SET 'PV?,TRUE-VALUE
|
|
JUMP ?CND18
|
|
?ELS22: EQUAL? Y,WINNER \?ELS24
|
|
JUMP ?CND18
|
|
?ELS24: FSET? Y,INVISIBLE /?CND18
|
|
FSET? Y,TOUCHBIT /?CND18
|
|
GETP Y,P?FDESC >STR
|
|
ZERO? STR /?CND18
|
|
GETP Y,P?DESCFCN
|
|
ZERO? STACK \?CND18
|
|
FSET? Y,NDESCBIT /?CND29
|
|
PRINT STR
|
|
CRLF
|
|
SET 'FLG,TRUE-VALUE
|
|
?CND29: CALL SEE-INSIDE?,Y
|
|
ZERO? STACK /?CND18
|
|
LOC Y
|
|
GETP STACK,P?DESCFCN
|
|
ZERO? STACK \?CND18
|
|
FIRST? Y \?CND18
|
|
CALL PRINT-CONT,Y,V?,0
|
|
?CND18: NEXT? Y >Y /?KLU74
|
|
?KLU74: JUMP ?PRG16
|
|
?CND11: FIRST? OBJ >Y /?KLU75
|
|
?KLU75:
|
|
?PRG39: ZERO? Y \?ELS43
|
|
ZERO? PV? /?REP40
|
|
ZERO? AV /?REP40
|
|
FIRST? AV \?REP40
|
|
CALL PRINT-CONT,AV,V?,LEVEL
|
|
RETURN FLG
|
|
?ELS43: EQUAL? Y,AV,ADVENTURER \?ELS50
|
|
JUMP ?CND41
|
|
?ELS50: FSET? Y,INVISIBLE /?CND41
|
|
ZERO? INV? \?THN55
|
|
FSET? Y,TOUCHBIT /?THN55
|
|
GETP Y,P?DESCFCN
|
|
ZERO? STACK \?THN55
|
|
GETP Y,P?FDESC
|
|
ZERO? STACK \?CND41
|
|
?THN55: FSET? Y,NDESCBIT /?ELS59
|
|
ZERO? 1ST? /?CND60
|
|
CALL FIRSTER,OBJ,LEVEL
|
|
ZERO? STACK /?CND64
|
|
SET 'FLG,TRUE-VALUE
|
|
LESS? LEVEL,0 \?CND64
|
|
SET 'LEVEL,0
|
|
?CND64: INC 'LEVEL
|
|
SET '1ST?,FALSE-VALUE
|
|
?CND60: CALL DESCRIBE-OBJECT,Y,V?,LEVEL
|
|
JUMP ?CND41
|
|
?ELS59: GETP Y,P?DESCFCN
|
|
ZERO? STACK \?CND41
|
|
FIRST? Y \?CND41
|
|
CALL SEE-INSIDE?,Y
|
|
ZERO? STACK /?CND41
|
|
CALL PRINT-CONT,Y,V?,LEVEL
|
|
?CND41: NEXT? Y >Y /?KLU76
|
|
?KLU76: JUMP ?PRG39
|
|
?REP40: RETURN FLG
|
|
|
|
|
|
.FUNCT FIRSTER,OBJ,LEVEL,F
|
|
EQUAL? OBJ,WINNER \?ELS5
|
|
PRINTR "You are carrying:"
|
|
?ELS5: IN? OBJ,ROOMS /FALSE
|
|
GRTR? LEVEL,0 \?CND10
|
|
GET INDENTS,LEVEL
|
|
PRINT STACK
|
|
?CND10: EQUAL? OBJ,MAGNET \?ELS17
|
|
PRINTI "The "
|
|
CALL DPRINT,OBJ
|
|
PRINTI " is touching"
|
|
JUMP ?CND15
|
|
?ELS17: FSET? OBJ,SURFACEBIT \?ELS21
|
|
PRINTI "Sitting on the "
|
|
CALL DPRINT,OBJ
|
|
FIRST? OBJ >F /?KLU39
|
|
?KLU39: NEXT? F \?ELS26
|
|
PRINTI " are"
|
|
JUMP ?CND15
|
|
?ELS26: PRINTI " is"
|
|
JUMP ?CND15
|
|
?ELS21: PRINTI "The "
|
|
CALL DPRINT,OBJ
|
|
PRINTI " contains"
|
|
?CND15: PRINTR ":"
|
|
|
|
|
|
.FUNCT RATING-UPD,NUM
|
|
ADD BASE-RATING,NUM >BASE-RATING
|
|
ADD RATING,NUM >RATING
|
|
RTRUE
|
|
|
|
|
|
.FUNCT RATING-OBJ,OBJ,TEMP
|
|
GETP OBJ,P?VALUE
|
|
ZERO? STACK /TRUE
|
|
GETP OBJ,P?VALUE >TEMP
|
|
GRTR? TEMP,0 \FALSE
|
|
CALL RATING-UPD,TEMP
|
|
PUTP OBJ,P?VALUE,0
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SCORE,ASK?=1
|
|
PRINTI "Your score is "
|
|
PRINTN RATING
|
|
PRINTI " out of a possible "
|
|
PRINTN RATING-MAX
|
|
PRINTI "."
|
|
CRLF
|
|
PRINTI "This score gives you the rank of a "
|
|
GRTR? RATING,245 \?ELS9
|
|
PRINTI "rich diver"
|
|
JUMP ?CND7
|
|
?ELS9: GRTR? RATING,190 \?ELS13
|
|
PRINTI "good adventurer"
|
|
JUMP ?CND7
|
|
?ELS13: GRTR? RATING,125 \?ELS17
|
|
PRINTI "decent diver"
|
|
JUMP ?CND7
|
|
?ELS17: GRTR? RATING,45 \?ELS21
|
|
PRINTI "so-so sailor"
|
|
JUMP ?CND7
|
|
?ELS21: PRINTI "chicken of the sea"
|
|
?CND7: PRINTI "."
|
|
CRLF
|
|
RETURN RATING
|
|
|
|
|
|
.FUNCT FINISH
|
|
CRLF
|
|
CALL V-SCORE
|
|
USL
|
|
CRLF
|
|
?PRG1: PRINTI "Would you like to restart the game from the beginning, restore a saved game position, or end this session of the game? (Type RESTART, RESTORE, or QUIT): >"
|
|
READ P-INBUF,P-LEXV
|
|
GET P-LEXV,1
|
|
EQUAL? STACK,W?RESTART \?ELS7
|
|
RESTART
|
|
CALL TELL-FAILED
|
|
JUMP ?PRG1
|
|
?ELS7: GET P-LEXV,1
|
|
EQUAL? STACK,W?RESTORE \?ELS9
|
|
RESTORE \?ELS12
|
|
CALL TELL-OKAY
|
|
JUMP ?PRG1
|
|
?ELS12: CALL TELL-FAILED
|
|
JUMP ?PRG1
|
|
?ELS9: GET P-LEXV,1
|
|
EQUAL? STACK,W?QUIT,W?Q \?PRG1
|
|
QUIT
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT V-QUIT,ASK?=1,SCOR
|
|
CALL V-SCORE
|
|
ZERO? ASK? /?ELS9
|
|
PRINTI "Do you wish to leave the game? (Y is affirmative): "
|
|
CALL YES?
|
|
ZERO? STACK \?THN6
|
|
?ELS9: ZERO? ASK? \?ELS5
|
|
?THN6: USL
|
|
QUIT
|
|
RTRUE
|
|
?ELS5: CALL TELL-OKAY
|
|
RSTACK
|
|
|
|
|
|
.FUNCT YES?
|
|
PRINTI ">"
|
|
READ Y-INBUF,Y-LEXV
|
|
GET Y-LEXV,1
|
|
EQUAL? STACK,W?YES,W?Y \FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-VERSION,CNT=17,V
|
|
GET 0,1
|
|
BAND STACK,2047 >V
|
|
PRINTI "CUTTHROATS
|
|
Copyright (c) 1984 by Infocom, Inc. All rights reserved.
|
|
"
|
|
GETB 0,1
|
|
BAND STACK,8
|
|
ZERO? STACK /?CND3
|
|
PRINTI "Licensed to Tandy Corporation. Version 00.00."
|
|
PRINTN V
|
|
CRLF
|
|
?CND3: PRINTI "CUTTHROATS is a trademark of Infocom, Inc.
|
|
Release "
|
|
PRINTN V
|
|
PRINTI " / Serial number "
|
|
?PRG10: IGRTR? 'CNT,23 \?ELS14
|
|
JUMP ?REP11
|
|
?ELS14: GETB 0,CNT
|
|
PRINTC STACK
|
|
JUMP ?PRG10
|
|
?REP11: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-AGAIN,OBJ,N=0
|
|
EQUAL? L-PRSO,NOT-HERE-OBJECT \?ELS3
|
|
ZERO? P-MOBY-FOUND /?ELS3
|
|
SET 'N,TRUE-VALUE
|
|
SET 'L-PRSO,P-MOBY-FOUND
|
|
JUMP ?CND1
|
|
?ELS3: EQUAL? L-PRSI,NOT-HERE-OBJECT \?CND1
|
|
ZERO? P-MOBY-FOUND /?CND1
|
|
SET 'N,TRUE-VALUE
|
|
SET 'L-PRSI,P-MOBY-FOUND
|
|
?CND1: ZERO? L-PRSA \?ELS14
|
|
PRINTR "Not until you do something."
|
|
?ELS14: EQUAL? L-PRSA,V?WALK,V?FOLLOW \?ELS18
|
|
CALL PERFORM,L-PRSA,L-PRSO
|
|
RSTACK
|
|
?ELS18: ZERO? L-PRSO /?ELS25
|
|
CALL VISIBLE?,L-PRSO
|
|
ZERO? STACK \?ELS25
|
|
PUSH L-PRSO
|
|
JUMP ?CND21
|
|
?ELS25: ZERO? L-PRSI /?PRD23
|
|
CALL VISIBLE?,L-PRSI
|
|
ZERO? STACK \?PRD23
|
|
PUSH L-PRSI
|
|
JUMP ?CND21
|
|
?PRD23: PUSH 0
|
|
?CND21: SET 'OBJ,STACK
|
|
ZERO? OBJ /?ELS36
|
|
EQUAL? OBJ,ROOMS /?ELS36
|
|
ZERO? N /?ELS41
|
|
CALL TELL-YOU-CANT,STR?58,FALSE-VALUE
|
|
EQUAL? OBJ,WEASEL /?CND43
|
|
PRINTI "any "
|
|
?CND43: CALL DPRINT,OBJ
|
|
PRINTI " here."
|
|
CRLF
|
|
JUMP ?CND39
|
|
?ELS41: PRINTI "I can't see "
|
|
CALL THE?,OBJ
|
|
CALL DPRINT,OBJ
|
|
PRINTI " anymore."
|
|
CRLF
|
|
?CND39: SET 'CLOCK-WAIT,TRUE-VALUE
|
|
RETURN 2
|
|
?ELS36: EQUAL? L-WINNER,PLAYER /?THN65
|
|
CALL CONTACT-ESTABLISHED
|
|
EQUAL? STACK,M-FATAL /FALSE
|
|
?THN65: SET 'P-WALK-DIR,L-WALK-DIR
|
|
SET 'P-MERGED,TRUE-VALUE
|
|
SET 'P-MULT,FALSE-VALUE
|
|
CALL PERFORM,L-PRSA,L-PRSO,L-PRSI >N
|
|
ZERO? N \?CND67
|
|
SET 'N,TRUE-VALUE
|
|
?CND67: SET 'P-MERGED,FALSE-VALUE
|
|
RETURN N
|
|
|
|
|
|
.FUNCT CONTACT-ESTABLISHED,OCONT,V
|
|
SET 'OCONT,P-CONT
|
|
SET 'P-CONT,TRUE-VALUE
|
|
SET 'P-MERGED,TRUE-VALUE
|
|
CALL PERFORM,V?TELL,L-WINNER >V
|
|
SET 'P-CONT,OCONT
|
|
SET 'P-MERGED,FALSE-VALUE
|
|
RETURN V
|
|
|
|
|
|
.FUNCT JIGS-UP,DESC,PLAYER?=0
|
|
PRINT DESC
|
|
CRLF
|
|
PRINTI "
|
|
**** You have died ****
|
|
|
|
"
|
|
PRINTI "Too bad."
|
|
CRLF
|
|
CRLF
|
|
CALL FINISH
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-RESTORE
|
|
RESTORE \?ELS5
|
|
CALL TELL-OKAY
|
|
CALL V-FIRST-LOOK
|
|
RSTACK
|
|
?ELS5: CALL TELL-FAILED
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-FAILED
|
|
PRINTR "Failed."
|
|
|
|
|
|
.FUNCT TELL-OKAY
|
|
PRINTR "Okay."
|
|
|
|
|
|
.FUNCT V-SAVE
|
|
SAVE \?ELS5
|
|
CALL TELL-OKAY
|
|
RSTACK
|
|
?ELS5: CALL TELL-FAILED
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-RESTART
|
|
CALL V-SCORE,TRUE-VALUE
|
|
PRINTI "Do you wish to restart? (Y is affirmative): "
|
|
CALL YES?
|
|
ZERO? STACK /FALSE
|
|
PRINTI "Restarting."
|
|
CRLF
|
|
RESTART
|
|
CALL TELL-FAILED
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WALK-AROUND
|
|
CALL TELL-SHD-DIR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LAUNCH
|
|
PRINTR "How does one launch that?"
|
|
|
|
|
|
.FUNCT V-WALK,PT,PTS,STR,OBJ,RM
|
|
ZERO? P-WALK-DIR \?ELS5
|
|
CALL PERFORM,V?WALK-TO,PRSO
|
|
RTRUE
|
|
?ELS5: GETPT HERE,PRSO >PT
|
|
ZERO? PT /?ELS7
|
|
PTSIZE PT >PTS
|
|
EQUAL? PTS,UEXIT \?ELS12
|
|
GETB PT,REXIT
|
|
CALL GOTO,STACK
|
|
RSTACK
|
|
?ELS12: EQUAL? PTS,NEXIT \?ELS14
|
|
GET PT,NEXITSTR
|
|
PRINT STACK
|
|
CRLF
|
|
RETURN 2
|
|
?ELS14: EQUAL? PTS,FEXIT \?ELS20
|
|
GET PT,FEXITFCN
|
|
CALL STACK >RM
|
|
ZERO? RM /?ELS25
|
|
CALL GOTO,RM
|
|
RSTACK
|
|
?ELS25: RETURN 2
|
|
?ELS20: EQUAL? PTS,CEXIT \?ELS31
|
|
GETB PT,CEXITFLAG
|
|
VALUE STACK
|
|
ZERO? STACK /?ELS36
|
|
GETB PT,REXIT
|
|
CALL GOTO,STACK
|
|
RSTACK
|
|
?ELS36: GET PT,CEXITSTR >STR
|
|
ZERO? STR /?ELS38
|
|
PRINT STR
|
|
CRLF
|
|
RETURN 2
|
|
?ELS38: CALL TELL-NO-GO,TRUE-VALUE
|
|
RETURN 2
|
|
?ELS31: EQUAL? PTS,DEXIT \FALSE
|
|
GETB PT,DEXITOBJ >OBJ
|
|
FSET? OBJ,OPENBIT \?ELS53
|
|
GETB PT,REXIT
|
|
CALL GOTO,STACK
|
|
RSTACK
|
|
?ELS53: GET PT,DEXITSTR >STR
|
|
ZERO? STR /?ELS55
|
|
PRINT STR
|
|
CRLF
|
|
SET 'P-IT-OBJECT,OBJ
|
|
RETURN 2
|
|
?ELS55: CALL TELL-CLOSED,OBJ,FALSE-VALUE
|
|
SET 'P-IT-OBJECT,OBJ
|
|
RETURN 2
|
|
?ELS7: ZERO? LIT \?ELS65
|
|
RANDOM 100
|
|
GRTR? 90,STACK \?ELS65
|
|
CALL JIGS-UP,STR?59
|
|
RSTACK
|
|
?ELS65: CALL TELL-NO-GO,TRUE-VALUE
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-INVENTORY
|
|
FIRST? WINNER \?ELS3
|
|
CALL PRINT-CONT,WINNER
|
|
JUMP ?CND1
|
|
?ELS3: PRINTI "You are empty-handed."
|
|
CRLF
|
|
?CND1: EQUAL? WINNER,PLAYER \FALSE
|
|
GRTR? POCKET-CHANGE,0 \FALSE
|
|
FSET? WET-SUIT,WORNBIT /FALSE
|
|
FSET? DEEP-SUIT,WORNBIT /FALSE
|
|
PRINTI "You have $"
|
|
PRINTN POCKET-CHANGE
|
|
PRINTR " in your pocket."
|
|
|
|
|
|
.FUNCT PRE-TAKE
|
|
EQUAL? PRSO,NOT-HERE-OBJECT /FALSE
|
|
EQUAL? PRSO,OCEAN \?ELS5
|
|
EQUAL? PRSI,GLASS-CASE /FALSE
|
|
?ELS5: EQUAL? PRSI,GLOBAL-ROOM \?ELS9
|
|
CALL TELL-YOURE-NOT,STR?65
|
|
RTRUE
|
|
?ELS9: EQUAL? PRSO,RIDICULOUS-MONEY-KLUDGE,GLOBAL-MONEY /?THN12
|
|
EQUAL? PRSO,INTNUM \?ELS11
|
|
ZERO? P-DOLLAR-FLAG /?ELS11
|
|
?THN12: CALL TELL-NOT-EASY
|
|
RTRUE
|
|
?ELS11: IN? PRSO,MAGNET \?CND1
|
|
ZERO? PRSI /FALSE
|
|
EQUAL? PRSI,MAGNET /FALSE
|
|
?CND1: IN? PRSO,WINNER \?ELS26
|
|
FSET? PRSO,WORNBIT \?ELS31
|
|
GET P-VTBL,0
|
|
EQUAL? STACK,W?REMOVE \?ELS36
|
|
CALL PERFORM,V?DISEMBARK,PRSO
|
|
RTRUE
|
|
?ELS36: PRINTR "You are already wearing it."
|
|
?ELS31: CALL TELL-YOU-ALREADY,STR?66
|
|
RSTACK
|
|
?ELS26: LOC PRSO
|
|
FSET? STACK,CONTBIT \?ELS44
|
|
LOC PRSO
|
|
FSET? STACK,OPENBIT /?ELS44
|
|
EQUAL? PRSO,PUTTY /FALSE
|
|
CALL TELL-CANT-REACH,STR?67
|
|
RTRUE
|
|
?ELS44: ZERO? PRSI /?ELS55
|
|
LOC PRSO
|
|
EQUAL? PRSI,STACK /?ELS61
|
|
EQUAL? PRSO,NOT-HERE-OBJECT \?ELS66
|
|
FSET? PRSI,CONTBIT \?ELS66
|
|
FSET? PRSI,OPENBIT /?ELS66
|
|
CALL TELL-YOUD-BETTER,STR?68,FALSE-VALUE,FALSE-VALUE
|
|
CALL DPRINT,PRSI
|
|
PRINTI " first."
|
|
CRLF
|
|
SET 'P-IT-OBJECT,PRSI
|
|
RTRUE
|
|
?ELS66: EQUAL? PRSO,PRSI \?ELS72
|
|
CALL TELL-SERIOUS
|
|
RSTACK
|
|
?ELS72: FSET? PRSI,VICBIT \?ELS74
|
|
CALL PERFORM,V?ASK-FOR,PRSI,PRSO
|
|
RTRUE
|
|
?ELS74: EQUAL? PRSO,RIDICULOUS-MONEY-KLUDGE,GLOBAL-MONEY /?ELS82
|
|
EQUAL? PRSO,INTNUM \?ELS82
|
|
ZERO? P-DOLLAR-FLAG /?ELS76
|
|
?ELS82: EQUAL? PRSI,POCKET \?ELS76
|
|
CALL TELL-WHY-BOTHER
|
|
RSTACK
|
|
?ELS76: EQUAL? PRSO,AIR \?ELS84
|
|
EQUAL? PRSI,AIR-TANK \?ELS84
|
|
CALL PERFORM,V?EMPTY,AIR-TANK
|
|
RTRUE
|
|
?ELS84: CALL START-SENTENCE,PRSO
|
|
PRINTI " isn't in "
|
|
CALL THE?,PRSI
|
|
CALL DPRINT,PRSI
|
|
PRINTR "."
|
|
?ELS61: SET 'PRSI,FALSE-VALUE
|
|
RFALSE
|
|
?ELS55: LOC WINNER
|
|
EQUAL? PRSO,STACK \FALSE
|
|
PRINTI "You are "
|
|
LOC WINNER
|
|
CALL VEHPREP,STACK
|
|
PRINT STACK
|
|
PRINTR " it, loser!"
|
|
|
|
|
|
.FUNCT TELL-YOURE-NOT,STR,DONE?=1
|
|
PRINTI "You're not "
|
|
PRINT STR
|
|
ZERO? DONE? /FALSE
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TELL-NOT-EASY
|
|
PRINTR "It's not that easy."
|
|
|
|
|
|
.FUNCT V-TAKE
|
|
CALL ITAKE
|
|
ZERO? STACK /FALSE
|
|
PRINTR "Taken."
|
|
|
|
|
|
.FUNCT ITAKE,VB=1,CNT,OBJ,TEMP,?TMP1
|
|
FSET? PRSO,TAKEBIT /?ELS5
|
|
ZERO? VB /FALSE
|
|
CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RFALSE
|
|
?ELS5: EQUAL? PRSO,ENVELOPE \?ELS13
|
|
EQUAL? HERE,MCGINTY-HQ \?ELS13
|
|
IN? MCGINTY,MCGINTY-HQ \?ELS13
|
|
SET 'TEMP,PRSA
|
|
SET 'PRSA,V?TAKE
|
|
CALL ENVELOPE-F
|
|
SET 'PRSA,TEMP
|
|
RFALSE
|
|
?ELS13: LOC PRSO
|
|
IN? STACK,WINNER /?ELS17
|
|
CALL WEIGHT,PRSO >?TMP1
|
|
CALL WEIGHT,WINNER
|
|
ADD ?TMP1,STACK
|
|
GRTR? STACK,LOAD-ALLOWED \?ELS17
|
|
ZERO? VB /FALSE
|
|
PRINTI "Your load is too heavy."
|
|
CRLF
|
|
RFALSE
|
|
?ELS17: CALL CCOUNT,WINNER >CNT
|
|
GRTR? CNT,FUMBLE-NUMBER \?ELS27
|
|
PRINTI "You're carrying too many things already!"
|
|
CRLF
|
|
RFALSE
|
|
?ELS27: EQUAL? PRSO,MINE \?ELS31
|
|
CALL BOOM
|
|
RSTACK
|
|
?ELS31: MOVE PRSO,WINNER
|
|
FSET PRSO,TOUCHBIT
|
|
FCLEAR PRSO,NDESCBIT
|
|
CALL RATING-OBJ,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PUT-ACROSS
|
|
CALL TELL-NO-NO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PUT-ON
|
|
FSET? PRSI,SURFACEBIT \?ELS5
|
|
CALL V-PUT
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSI,ME \?ELS7
|
|
PRINTR "Sounds kinky."
|
|
?ELS7: FSET? PRSI,VICBIT \?ELS11
|
|
PRINTR "I don't think he'd appreciate it."
|
|
?ELS11: PRINTI "There's no good surface on "
|
|
CALL THE?,PRSI
|
|
CALL DPRINT,PRSI
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT PRE-PUT,OBJ
|
|
ZERO? PRSI \?ELS5
|
|
PRINTR "Huh?"
|
|
?ELS5: EQUAL? PRSO,MAGNET,GLOBAL-SELF,NOT-HERE-OBJECT /FALSE
|
|
EQUAL? PRSI,OCEAN \?ELS11
|
|
CALL PERFORM,V?THROW,PRSO,OCEAN
|
|
RTRUE
|
|
?ELS11: EQUAL? PRSA,V?PUT \?ELS13
|
|
EQUAL? PRSO,ME \?ELS13
|
|
CALL PERFORM,V?WEAR,PRSI
|
|
RTRUE
|
|
?ELS13: EQUAL? PRSA,V?PUT-ON \?ELS17
|
|
EQUAL? PRSI,ME \?ELS17
|
|
CALL PERFORM,V?WEAR,PRSO
|
|
RTRUE
|
|
?ELS17: EQUAL? PRSO,RIDICULOUS-MONEY-KLUDGE,GLOBAL-MONEY /?THN22
|
|
ZERO? P-DOLLAR-FLAG /?ELS21
|
|
EQUAL? PRSO,INTNUM \?ELS21
|
|
?THN22: EQUAL? PRSI,POCKET /FALSE
|
|
CALL TELL-YOU-CANT,STR?53
|
|
RSTACK
|
|
?ELS21: EQUAL? PRSO,AIR-HOSE \?ELS34
|
|
EQUAL? PRSI,DEEP-SUIT /FALSE
|
|
?ELS34: CALL HELD?,PRSO
|
|
ZERO? STACK \?ELS38
|
|
CALL TELL-DONT-HAVE,FALSE-VALUE
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
?ELS38: IN? PRSO,GLOBAL-OBJECTS /?THN43
|
|
FSET? PRSO,TAKEBIT /FALSE
|
|
?THN43: PRINTR "Nice try."
|
|
|
|
|
|
.FUNCT V-PUT,?TMP1
|
|
FSET? PRSI,OPENBIT /?CND1
|
|
FSET? PRSI,DOORBIT /?THN6
|
|
FSET? PRSI,CONTBIT /?CND1
|
|
?THN6: FSET? PRSI,VEHBIT \?ELS3
|
|
JUMP ?CND1
|
|
?ELS3: CALL TELL-NO-NO
|
|
RTRUE
|
|
?CND1: FSET? PRSI,OPENBIT /?ELS14
|
|
PRINTI "The "
|
|
CALL DPRINT,PRSI
|
|
PRINTR " isn't open."
|
|
?ELS14: EQUAL? PRSI,PRSO \?ELS18
|
|
CALL TELL-HOW-THAT,STR?10
|
|
RSTACK
|
|
?ELS18: IN? PRSO,PRSI \?ELS20
|
|
CALL START-SENTENCE,PRSO
|
|
PRINTI " is already in "
|
|
CALL THE?,PRSI
|
|
CALL DPRINT,PRSI
|
|
PRINTR "."
|
|
?ELS20: CALL WEIGHT,PRSI >?TMP1
|
|
CALL WEIGHT,PRSO
|
|
ADD ?TMP1,STACK >?TMP1
|
|
GETP PRSI,P?SIZE
|
|
SUB ?TMP1,STACK >?TMP1
|
|
GETP PRSI,P?CAPACITY
|
|
GRTR? ?TMP1,STACK \?ELS26
|
|
PRINTR "There's no room."
|
|
?ELS26: CALL HELD?,PRSO
|
|
ZERO? STACK \?ELS30
|
|
CALL ITAKE
|
|
ZERO? STACK /TRUE
|
|
?ELS30: MOVE PRSO,PRSI
|
|
FSET PRSO,TOUCHBIT
|
|
FCLEAR PRSO,WORNBIT
|
|
PRINTR "Done."
|
|
|
|
|
|
.FUNCT PRE-DROP
|
|
LOC WINNER
|
|
EQUAL? PRSO,STACK \FALSE
|
|
CALL PERFORM,V?DISEMBARK,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-GIVE
|
|
ZERO? PRSI \?ELS5
|
|
PRINTR "Huh?"
|
|
?ELS5: EQUAL? PRSO,ME,NOT-HERE-OBJECT /FALSE
|
|
FSET? PRSI,VICBIT /?ELS11
|
|
PRINTI "To "
|
|
CALL APRINT,PRSI
|
|
PRINTR "???"
|
|
?ELS11: EQUAL? WINNER,PLAYER \?ELS15
|
|
EQUAL? PRSI,ME \?ELS15
|
|
ZERO? QCONTEXT /?ELS15
|
|
EQUAL? HERE,QCONTEXT-ROOM \?ELS15
|
|
CALL META-LOC,QCONTEXT
|
|
EQUAL? HERE,STACK \?ELS15
|
|
SET 'WINNER,QCONTEXT
|
|
CALL PERFORM,V?GIVE,PRSO,PRSI
|
|
SET 'WINNER,PLAYER
|
|
RTRUE
|
|
?ELS15: EQUAL? PRSI,WINNER /?THN20
|
|
EQUAL? WINNER,PLAYER \?ELS19
|
|
EQUAL? PRSI,ME \?ELS19
|
|
?THN20: CALL TELL-CHARITY
|
|
RSTACK
|
|
?ELS19: EQUAL? PRSO,INTNUM,RIDICULOUS-MONEY-KLUDGE,GLOBAL-MONEY /FALSE
|
|
EQUAL? PRSO,DRINKING-WATER \?ELS27
|
|
EQUAL? HERE,SHANTY \?ELS27
|
|
EQUAL? PRSI,SPEAR-CARRIER /FALSE
|
|
?ELS27: EQUAL? PRSO,DRINK-OBJECT \?ELS31
|
|
IN? DRINK-OBJECT,TABLE-OBJECT /FALSE
|
|
?ELS31: CALL HELD?,PRSO
|
|
ZERO? STACK \FALSE
|
|
EQUAL? WINNER,PLAYER \?ELS40
|
|
PRINTR "That's easy for you to say since you don't even have it."
|
|
?ELS40: PRINTI """I don't have "
|
|
CALL APRINT,PRSO
|
|
PRINTI " to give!"" exclaims "
|
|
CALL THE?,WINNER
|
|
CALL DPRINT,WINNER
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT TELL-CHARITY
|
|
PRINTR "I know charity begins at home, but this is ridiculous."
|
|
|
|
|
|
.FUNCT PRE-SGIVE
|
|
CALL PERFORM,V?GIVE,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT HELD?,OBJ
|
|
ZERO? OBJ /FALSE
|
|
IN? OBJ,WINNER /TRUE
|
|
EQUAL? OBJ,ME,GLOBAL-SELF /TRUE
|
|
LOC OBJ
|
|
CALL HELD?,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-GIVE
|
|
EQUAL? PRSI,SPEAR-CARRIER \?ELS5
|
|
EQUAL? PRSO,INTNUM \?ELS5
|
|
ZERO? P-DOLLAR-FLAG /?ELS5
|
|
PRINTR """If you want to buy something, be specific."""
|
|
?ELS5: FSET? PRSI,VICBIT \?ELS11
|
|
CALL START-SENTENCE,PRSI
|
|
PRINTR " declines your generous offer."
|
|
?ELS11: CALL TELL-YOU-CANT,STR?69,FALSE-VALUE
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTI " to "
|
|
CALL APRINT,PRSI
|
|
PRINTR "!"
|
|
|
|
|
|
.FUNCT V-SGIVE
|
|
PRINTR "Bug."
|
|
|
|
|
|
.FUNCT V-DROP,SUPPRESS=0
|
|
CALL IDROP
|
|
ZERO? STACK /FALSE
|
|
ZERO? SUPPRESS \FALSE
|
|
PRINTR "Dropped."
|
|
|
|
|
|
.FUNCT PRE-THROW
|
|
EQUAL? PRSO,NOT-HERE-OBJECT /FALSE
|
|
IN? PRSO,WINNER /FALSE
|
|
CALL TELL-YOURE-NOT,STR?70,FALSE-VALUE
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-THROW
|
|
ZERO? PRSI /?CND1
|
|
FSET? PRSI,CONTBIT /?THN8
|
|
FSET? PRSI,CLIMBBIT \?ELS7
|
|
?THN8: CALL PERFORM,V?PUT,PRSO,PRSI
|
|
RTRUE
|
|
?ELS7: EQUAL? PRSI,ME \?ELS11
|
|
PRINTR "You'd probably miss."
|
|
?ELS11: EQUAL? PRSI,FIELD \?ELS15
|
|
CALL START-SENTENCE,PRSO
|
|
PRINTI " bounces off the weeds."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS15: CALL START-SENTENCE,PRSI
|
|
FSET? PRSI,VICBIT \?ELS22
|
|
PRINTI " ducks"
|
|
JUMP ?CND20
|
|
?ELS22: PRINTI " doesn't duck"
|
|
?CND20: PRINTI " as the "
|
|
CALL DPRINT,PRSO
|
|
PRINTI " flies by."
|
|
CRLF
|
|
?CND1: CALL IDROP
|
|
ZERO? PRSI \TRUE
|
|
PRINTR "Thrown."
|
|
|
|
|
|
.FUNCT IDROP
|
|
IN? PRSO,WINNER /?ELS5
|
|
LOC PRSO
|
|
IN? STACK,WINNER /?ELS5
|
|
CALL TELL-YOURE-NOT,STR?70,FALSE-VALUE
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTI "."
|
|
CRLF
|
|
RFALSE
|
|
?ELS5: IN? PRSO,WINNER /?ELS11
|
|
LOC PRSO
|
|
FSET? STACK,OPENBIT /?ELS11
|
|
LOC PRSO
|
|
CALL TELL-CLOSED,STACK,FALSE-VALUE
|
|
RFALSE
|
|
?ELS11: LOC PLAYER
|
|
FSET? STACK,VEHBIT \?ELS18
|
|
IN? PLAYER,BED /?ELS18
|
|
CALL META-LOC,PLAYER
|
|
MOVE PRSO,STACK
|
|
JUMP ?CND16
|
|
?ELS18: LOC WINNER
|
|
MOVE PRSO,STACK
|
|
?CND16: FCLEAR PRSO,WORNBIT
|
|
EQUAL? PRSO,SAFETY-LINE \TRUE
|
|
CALL QUEUE,I-PENDULUM,3
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-OPEN
|
|
ZERO? PRSI /FALSE
|
|
FSET? PRSI,TOOLBIT /FALSE
|
|
CALL PRE-BURN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-OPEN,F,STR
|
|
FSET? PRSO,CONTBIT /?ELS5
|
|
CALL SAY-MUST-TELL
|
|
RSTACK
|
|
?ELS5: GETP PRSO,P?CAPACITY
|
|
ZERO? STACK /?ELS7
|
|
FSET? PRSO,OPENBIT \?ELS12
|
|
CALL TELL-ALREADY,STR?25
|
|
RSTACK
|
|
?ELS12: FSET PRSO,OPENBIT
|
|
FIRST? PRSO /?ELS19
|
|
PRINTR "Opened."
|
|
?ELS19: FIRST? PRSO >F \?ELS23
|
|
NEXT? F /?ELS23
|
|
GETP F,P?FDESC >STR
|
|
ZERO? STR /?ELS23
|
|
CALL TELL-OPENS
|
|
PRINT STR
|
|
CRLF
|
|
RTRUE
|
|
?ELS23: PRINTI "Opening the "
|
|
CALL DPRINT,PRSO
|
|
PRINTI " reveals "
|
|
CALL PRINT-CONTENTS,PRSO
|
|
PRINTR "."
|
|
?ELS7: FSET? PRSO,DOORBIT \?ELS35
|
|
FSET? PRSO,OPENBIT \?ELS40
|
|
CALL TELL-ALREADY,STR?25
|
|
RSTACK
|
|
?ELS40: CALL TELL-OPENS
|
|
FSET PRSO,OPENBIT
|
|
RTRUE
|
|
?ELS35: PRINTI "The "
|
|
CALL DPRINT,PRSO
|
|
PRINTR " fails to open."
|
|
|
|
|
|
.FUNCT TELL-OPENS
|
|
PRINTI "The "
|
|
CALL DPRINT,PRSO
|
|
PRINTR " opens."
|
|
|
|
|
|
.FUNCT SAY-MUST-TELL
|
|
PRINTI "You must tell me how to do that to "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT PRINT-CONTENTS,OBJ,F,N,1ST?=1,2ND=0
|
|
FIRST? OBJ >F \FALSE
|
|
NEXT? F /?CND6
|
|
SET 'P-IT-OBJECT,F
|
|
?CND6:
|
|
?PRG9: NEXT? F >N /?KLU36
|
|
?KLU36: ZERO? 1ST? /?ELS13
|
|
SET '1ST?,FALSE-VALUE
|
|
SET '2ND,TRUE-VALUE
|
|
JUMP ?CND11
|
|
?ELS13: ZERO? N \?THN20
|
|
ZERO? 2ND \?CND17
|
|
?THN20: SET '2ND,FALSE-VALUE
|
|
PRINTI ","
|
|
?CND17: PRINTI " "
|
|
ZERO? N \?CND11
|
|
PRINTI "and "
|
|
?CND11: CALL APRINT,F
|
|
SET 'F,N
|
|
ZERO? F \?PRG9
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-ASK-ABOUT
|
|
EQUAL? PRSO,ME,PLAYER \?ELS5
|
|
CALL TELL-NO-INFO
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,VICBIT /?ELS7
|
|
CALL SUDDENLY-REALIZE-TALKING,PRSO
|
|
RTRUE
|
|
?ELS7: PRINTI "After a moment's thought, "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR " disavows any knowledge of that."
|
|
|
|
|
|
.FUNCT SUDDENLY-REALIZE-TALKING,OBJ
|
|
PRINTI "You suddenly realize that you're talking to "
|
|
CALL APRINT,OBJ
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT TELL-NO-INFO
|
|
PRINTI "You find that you can provide "
|
|
CALL DPRINT,GLOBAL-SELF
|
|
PRINTR " with no new information."
|
|
|
|
|
|
.FUNCT PRE-ASK-CONTEXT-ABOUT,P
|
|
ZERO? QCONTEXT /FALSE
|
|
EQUAL? HERE,QCONTEXT-ROOM \FALSE
|
|
CALL META-LOC,QCONTEXT
|
|
EQUAL? HERE,STACK \FALSE
|
|
PRINTI "(said to "
|
|
CALL DPRINT,QCONTEXT
|
|
PRINTI ")"
|
|
CRLF
|
|
CALL PERFORM,V?ASK-ABOUT,QCONTEXT,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-ASK-CONTEXT-ABOUT
|
|
CALL V-ASK-CONTEXT-FOR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-ASK-FOR
|
|
EQUAL? PRSO,ME,PLAYER \?ELS5
|
|
CALL TELL-NO-INFO
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,VICBIT \?ELS7
|
|
EQUAL? PRSO,PLAYER \?ELS12
|
|
IN? PRSI,PLAYER \?ELS17
|
|
CALL TELL-YOU-ALREADY,STR?66
|
|
RSTACK
|
|
?ELS17: CALL TELL-DONT-HAVE,STR?21
|
|
RSTACK
|
|
?ELS12: EQUAL? PRSI,RIDICULOUS-MONEY-KLUDGE,GLOBAL-MONEY,KNIFE /?THN22
|
|
EQUAL? PRSI,INTNUM \?ELS21
|
|
ZERO? P-DOLLAR-FLAG /?ELS21
|
|
?THN22: CALL START-SENTENCE,PRSO
|
|
PRINTR " refuses."
|
|
?ELS21: EQUAL? PRSO,SPEAR-CARRIER \?ELS29
|
|
GETP PRSI,P?NORTH
|
|
GRTR? STACK,0 \?ELS29
|
|
CALL TELL-CHARITY
|
|
RSTACK
|
|
?ELS29: CALL START-SENTENCE,PRSO
|
|
IN? PRSI,PRSO \?ELS38
|
|
PRINTI " hands you the "
|
|
CALL DPRINT,PRSI
|
|
PRINTI "."
|
|
CRLF
|
|
MOVE PRSI,WINNER
|
|
RTRUE
|
|
?ELS38: PRINTR " doesn't have that."
|
|
?ELS7: CALL SUDDENLY-REALIZE-TALKING,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-ASK-CONTEXT-FOR,P
|
|
ZERO? QCONTEXT /FALSE
|
|
EQUAL? HERE,QCONTEXT-ROOM \FALSE
|
|
CALL META-LOC,QCONTEXT
|
|
EQUAL? HERE,STACK \FALSE
|
|
PRINTI "(said to "
|
|
CALL DPRINT,QCONTEXT
|
|
PRINTI ")"
|
|
CRLF
|
|
CALL PERFORM,V?ASK-FOR,QCONTEXT,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-ASK-CONTEXT-FOR
|
|
CALL TELL-YOURE-NOT,STR?71
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CALL
|
|
FSET? PRSO,PERSON \?ELS5
|
|
CALL PERFORM,V?$CALL,PRSO
|
|
RTRUE
|
|
?ELS5: FSET? PRSO,VICBIT \?ELS7
|
|
SET 'QCONTEXT,PRSO
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
PRINTI "The "
|
|
CALL DPRINT,PRSO
|
|
CALL TELL-LISTENING
|
|
RSTACK
|
|
?ELS7: PRINTR "There's no response."
|
|
|
|
|
|
.FUNCT V-CALL-LOSE
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTR "You must use a verb!"
|
|
|
|
|
|
.FUNCT PRE-$CALL
|
|
EQUAL? PRSO,INTDIR \?ELS5
|
|
CALL PERFORM,V?WALK,P-WALK-DIR
|
|
RTRUE
|
|
?ELS5: FSET? PRSO,VICBIT /FALSE
|
|
CALL V-CALL-LOSE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-$CALL,MOT=0
|
|
EQUAL? PRSO,PLAYER,ME \?ELS5
|
|
CALL V-CALL-LOSE
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,PERSON \?ELS7
|
|
CALL IN-MOTION?,PRSO
|
|
ZERO? STACK /?CND8
|
|
SET 'MOT,TRUE-VALUE
|
|
?CND8: CALL META-LOC,PRSO
|
|
EQUAL? STACK,HERE /?THN16
|
|
CALL CORRIDOR-LOOK,PRSO
|
|
ZERO? STACK /?ELS15
|
|
?THN16: CALL START-SENTENCE,PRSO
|
|
CALL GRAB-ATTENTION,PRSO
|
|
ZERO? STACK /?ELS22
|
|
FSET PRSO,TOUCHBIT
|
|
CALL META-LOC,PRSO >QCONTEXT-ROOM
|
|
ZERO? MOT /?ELS27
|
|
PRINTR " stops and turns toward you."
|
|
?ELS27: CALL TELL-LISTENING
|
|
RSTACK
|
|
?ELS22: PRINTR " ignores you."
|
|
?ELS15: PRINTI "You don't see "
|
|
CALL DPRINT,PRSO
|
|
PRINTR " here."
|
|
?ELS7: EQUAL? PRSO,SPEAR-CARRIER \?ELS42
|
|
IN? SPEAR-CARRIER,HERE \?ELS42
|
|
SET 'QCONTEXT,SPEAR-CARRIER
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
PRINTI "The "
|
|
CALL DPRINT,PRSO
|
|
CALL TELL-LISTENING
|
|
RSTACK
|
|
?ELS42: CALL V-CALL-LOSE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-LISTENING
|
|
PRINTR " is listening."
|
|
|
|
|
|
.FUNCT V-CLOSE
|
|
FSET? PRSO,CONTBIT /?ELS5
|
|
CALL SAY-MUST-TELL
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,SURFACEBIT /?ELS7
|
|
GETP PRSO,P?CAPACITY
|
|
ZERO? STACK /?ELS7
|
|
FSET? PRSO,OPENBIT \?ELS14
|
|
FCLEAR PRSO,OPENBIT
|
|
PRINTR "Closed."
|
|
?ELS14: CALL TELL-ALREADY,STR?26
|
|
RSTACK
|
|
?ELS7: FSET? PRSO,DOORBIT \?ELS20
|
|
FSET? PRSO,OPENBIT \?ELS25
|
|
CALL TELL-NOW,PRSO,STR?26
|
|
FCLEAR PRSO,OPENBIT
|
|
RTRUE
|
|
?ELS25: CALL TELL-ALREADY,STR?26
|
|
RSTACK
|
|
?ELS20: CALL TELL-YOU-CANT,STR?72
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CCOUNT,OBJ,CNT=0,X
|
|
FIRST? OBJ >X \?CND1
|
|
?PRG4: FSET? X,WORNBIT /?CND6
|
|
INC 'CNT
|
|
?CND6: NEXT? X >X /?PRG4
|
|
?CND1: RETURN CNT
|
|
|
|
|
|
.FUNCT WEIGHT,OBJ,CONT,WT=0
|
|
FIRST? OBJ >CONT \?CND1
|
|
?PRG4: EQUAL? OBJ,WINNER \?ELS8
|
|
FSET? CONT,WEARBIT \?ELS8
|
|
INC 'WT
|
|
JUMP ?CND6
|
|
?ELS8: CALL WEIGHT,CONT
|
|
ADD WT,STACK >WT
|
|
?CND6: NEXT? CONT >CONT /?PRG4
|
|
?CND1: GETP OBJ,P?SIZE
|
|
ADD WT,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BREATHE
|
|
ZERO? PRSO /?ELS5
|
|
EQUAL? PRSO,AIR /?ELS5
|
|
PRINTR "Stick to air."
|
|
?ELS5: PRINTR "If you stop breathing, I'll let you know."
|
|
|
|
|
|
.FUNCT V-SCRIPT
|
|
GET 0,8
|
|
BOR STACK,1
|
|
PUT 0,8,STACK
|
|
PRINTI "Here begins"
|
|
PRINT COPR-NOTICE
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-UNSCRIPT
|
|
PRINTI "Here ends"
|
|
PRINT COPR-NOTICE
|
|
CRLF
|
|
GET 0,8
|
|
BAND STACK,-2
|
|
PUT 0,8,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-MOVE
|
|
EQUAL? PRSO,SAFETY-LINE /FALSE
|
|
IN? PLAYER,PRSO \?ELS7
|
|
CALL TELL-CONTORT
|
|
RSTACK
|
|
?ELS7: CALL HELD?,PRSO
|
|
ZERO? STACK /FALSE
|
|
PRINTR "I don't juggle objects!"
|
|
|
|
|
|
.FUNCT V-MOVE
|
|
FSET? PRSO,TAKEBIT \?ELS5
|
|
PRINTI "Moving the "
|
|
CALL DPRINT,PRSO
|
|
PRINTR " reveals nothing."
|
|
?ELS5: FSET? PRSO,PUSHBIT \?ELS9
|
|
CALL TELL-MOVES-BIT
|
|
RSTACK
|
|
?ELS9: CALL TELL-YOU-CANT,STR?74,FALSE-VALUE
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-LAMP-ON
|
|
FSET? PRSO,VICBIT \?ELS5
|
|
PRINTR "Restrain yourself."
|
|
?ELS5: CALL TELL-YOU-CANT,STR?75
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LAMP-OFF
|
|
CALL TELL-YOU-CANT,STR?76
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-PASSES
|
|
PRINTR "Time passes..."
|
|
|
|
|
|
.FUNCT V-WAIT,NUM=10,NOT-INT?=1,WHO=0,INTERRUPTED=0
|
|
ZERO? NOT-INT? /?CND1
|
|
CALL TELL-PASSES
|
|
GRTR? I-WAIT-DURATION,0 /FALSE
|
|
?CND1:
|
|
?PRG8: DLESS? 'NUM,0 \?ELS12
|
|
JUMP ?REP9
|
|
?ELS12: CALL CLOCKER
|
|
ZERO? STACK /?ELS14
|
|
SET 'INTERRUPTED,TRUE-VALUE
|
|
JUMP ?REP9
|
|
?ELS14: ZERO? WHO /?CND10
|
|
IN? WHO,HERE \?CND10
|
|
SET 'INTERRUPTED,TRUE-VALUE
|
|
JUMP ?REP9
|
|
?CND10: USL
|
|
JUMP ?PRG8
|
|
?REP9: ZERO? NOT-INT? /?ELS23
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
RETURN CLOCK-WAIT
|
|
?ELS23: RETURN INTERRUPTED
|
|
|
|
|
|
.FUNCT V-WAIT-FOR
|
|
EQUAL? PRSO,INTNUM \?ELS5
|
|
GRTR? P-NUMBER,180 \?ELS10
|
|
PRINTR "That's too long to wait."
|
|
?ELS10: CALL V-WAIT,P-NUMBER
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSO,PLAYER,ME \?ELS16
|
|
PRINTR "You're already here!"
|
|
?ELS16: FSET? PRSO,PERSON /?THN21
|
|
EQUAL? PRSO,DELIVERY-BOY \?ELS20
|
|
?THN21: IN? PRSO,HERE \?ELS27
|
|
PRINTR "He's already here!"
|
|
?ELS27: CALL TELL-PASSES
|
|
?PRG32: CALL V-WAIT,30,FALSE-VALUE,PRSO
|
|
ZERO? STACK /?CND34
|
|
IN? PRSO,HERE \?CND34
|
|
FSET PRSO,TOUCHBIT
|
|
CALL START-SENTENCE,PRSO
|
|
PRINTI ", for whom you were waiting, has arrived."
|
|
CRLF
|
|
SET 'P-IT-OBJECT,PRSO
|
|
JUMP ?REP33
|
|
?CND34: CALL START-SENTENCE,PRSO
|
|
PRINTI " isn't here yet. Do you want to keep waiting? (YES or NO?)"
|
|
CALL YES?
|
|
ZERO? STACK \?PRG32
|
|
PRINTI "If you say so..."
|
|
CRLF
|
|
?REP33: SET 'CLOCK-WAIT,TRUE-VALUE
|
|
RETURN CLOCK-WAIT
|
|
?ELS20: FSET? PRSO,VICBIT \?ELS50
|
|
PRINTR "I don't think he's going anywhere."
|
|
?ELS50: PRINTR "Why? It's not going anywhere."
|
|
|
|
|
|
.FUNCT PRE-BOARD,AV
|
|
LOC WINNER >AV
|
|
FSET? PRSO,VEHBIT \?ELS3
|
|
FSET? AV,VEHBIT \FALSE
|
|
PRINTI "You are already "
|
|
CALL VEHPREP,AV
|
|
PRINT STACK
|
|
PRINTI " the "
|
|
CALL DPRINT,AV
|
|
PRINTI "!"
|
|
CRLF
|
|
RETURN 2
|
|
?ELS3: FSET? PRSO,WEARBIT \?ELS12
|
|
CALL PERFORM,V?WEAR,PRSO
|
|
RETURN 2
|
|
?ELS12: EQUAL? PRSO,FIELD,CLOSET,NOT-HERE-OBJECT /FALSE
|
|
EQUAL? PRSO,BACK-WINDOW,REDS-BUNK,OCEAN /FALSE
|
|
PRINTI "I suppose you have a theory on getting into "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTI "."
|
|
CRLF
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-BOARD
|
|
PRINTI "You are now "
|
|
CALL VEHPREP,PRSO
|
|
PRINT STACK
|
|
PRINTI " the "
|
|
CALL DPRINT,PRSO
|
|
PRINTI "."
|
|
CRLF
|
|
MOVE WINNER,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DISEMBARK
|
|
FSET? PRSO,WORNBIT \?ELS5
|
|
CALL UNWEAR
|
|
RTRUE
|
|
?ELS5: LOC WINNER
|
|
EQUAL? STACK,PRSO /?ELS7
|
|
CALL TELL-YOURE-NOT,STR?77
|
|
RETURN 2
|
|
?ELS7: FSET? HERE,RLANDBIT \?ELS11
|
|
ZERO? STOOD-UP \?ELS14
|
|
PRINTI "You get out of bed."
|
|
CRLF
|
|
SET 'STOOD-UP,TRUE-VALUE
|
|
JUMP ?CND12
|
|
?ELS14: PRINTI "You are on your feet again."
|
|
CRLF
|
|
?CND12: MOVE WINNER,HERE
|
|
RTRUE
|
|
?ELS11: PRINTI "A bad idea."
|
|
CRLF
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT PRE-BUY
|
|
EQUAL? PRSO,DRINKING-WATER /FALSE
|
|
FSET? WET-SUIT,WORNBIT /?THN8
|
|
FSET? DEEP-SUIT,WORNBIT \FALSE
|
|
?THN8: CALL TELL-YOU-CANT,STR?78
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BUY,RENT=0,COST,?TMP1
|
|
IN? PRSO,ROOMS /?ELS5
|
|
GETP PRSO,P?NORTH >COST
|
|
ZERO? COST /?ELS5
|
|
GRTR? COST,0 \?ELS5
|
|
CALL ENABLED?,I-EQUIP
|
|
ZERO? STACK /?ELS12
|
|
IN? MCGINTY,OUTFITTERS-HQ /?ELS12
|
|
PRINTR "The salesman is too busy with Johnny right now."
|
|
?ELS12: FSET? PRSO,RENTBIT \?ELS18
|
|
ZERO? RENT \?ELS18
|
|
PRINTR "That's not for sale, but you might try renting it."
|
|
?ELS18: GRTR? COST,POCKET-CHANGE \?ELS24
|
|
CALL TELL-NO-AFFORD
|
|
RSTACK
|
|
?ELS24: SUB POCKET-CHANGE,COST >POCKET-CHANGE
|
|
PUTP PRSO,P?NORTH,-1
|
|
ZERO? JOHNNY-MADE-DEAL /?ELS29
|
|
ZERO? DELIVERY-MADE \?ELS29
|
|
FSET PRSO,TRYTAKEBIT
|
|
PUT DELIVERY-TABLE,DT-PTR,PRSO
|
|
ADD DT-PTR,2 >DT-PTR
|
|
JUMP ?CND27
|
|
?ELS29: FSET PRSO,TAKEBIT
|
|
FCLEAR PRSO,NDESCBIT
|
|
CALL WEIGHT,PRSO >?TMP1
|
|
CALL WEIGHT,WINNER
|
|
ADD ?TMP1,STACK
|
|
GRTR? STACK,LOAD-ALLOWED /?THN37
|
|
CALL CCOUNT,WINNER
|
|
GRTR? STACK,FUMBLE-NUMBER \?ELS36
|
|
?THN37: MOVE PRSO,GLOBAL-SURFACE
|
|
JUMP ?CND27
|
|
?ELS36: MOVE PRSO,WINNER
|
|
?CND27: PRINTI "You have "
|
|
ZERO? RENT /?ELS45
|
|
PRINTI "rented"
|
|
JUMP ?CND43
|
|
?ELS45: PRINTI "purchased"
|
|
?CND43: PRINTI " "
|
|
CALL APRINT,PRSO
|
|
PRINTI " for $"
|
|
PRINTN COST
|
|
IN? PRSO,GLOBAL-SURFACE \?CND55
|
|
PRINTI ". Since you can't currently carry it, the salesman leaves it on the counter"
|
|
?CND55: PRINTR "."
|
|
?ELS5: EQUAL? COST,-1 \?ELS63
|
|
FSET? PRSO,RENTBIT \?ELS68
|
|
PRINTR "You've already rented it."
|
|
?ELS68: CALL TELL-ONLY-ONCE,STR?79
|
|
RSTACK
|
|
?ELS63: EQUAL? PRSO,DRINKING-WATER \?ELS74
|
|
EQUAL? HERE,MM-GALLEY,NW-GALLEY \?ELS79
|
|
PRINTI "Get it "
|
|
CALL DPRINT,GLOBAL-SELF
|
|
PRINTR "."
|
|
?ELS79: CALL PERFORM,V?ASK-FOR,SPEAR-CARRIER,DRINKING-WATER
|
|
SET 'P-IT-OBJECT,DRINKING-WATER
|
|
RTRUE
|
|
?ELS74: PRINTR "That's not for sale."
|
|
|
|
|
|
.FUNCT TELL-ONLY-ONCE,STR
|
|
PRINTI "You only "
|
|
PRINT STR
|
|
PRINTR " it once."
|
|
|
|
|
|
.FUNCT V-RENT,COST
|
|
IN? PRSO,ROOMS /?ELS5
|
|
GETP PRSO,P?NORTH >COST
|
|
ZERO? COST /?ELS5
|
|
GRTR? COST,0 \?ELS5
|
|
FSET? PRSO,RENTBIT /?ELS12
|
|
PRINTR "That's not available for rental. You might try buying it."
|
|
?ELS12: CALL V-BUY,TRUE-VALUE
|
|
RSTACK
|
|
?ELS5: EQUAL? COST,-1 \?ELS18
|
|
FSET? PRSO,RENTBIT \?ELS23
|
|
CALL TELL-ONLY-ONCE,STR?80
|
|
RSTACK
|
|
?ELS23: CALL TELL-YOU-ALREADY,STR?81
|
|
RSTACK
|
|
?ELS18: CALL TELL-YOU-CANT,STR?82
|
|
RSTACK
|
|
|
|
|
|
.FUNCT GOTO,RM,V?=1,LB,WLOC,AV=0,OLIT,F,N
|
|
FSET? RM,RLANDBIT /?PRD1
|
|
PUSH 0
|
|
JUMP ?PRD2
|
|
?PRD1: PUSH 1
|
|
?PRD2: SET 'LB,STACK
|
|
LOC WINNER >WLOC
|
|
SET 'OLIT,LIT
|
|
FSET? WLOC,VEHBIT \?CND3
|
|
CALL TELL-YOUD-BETTER,STR?83,FALSE-VALUE,FALSE-VALUE
|
|
FSET? WLOC,SURFACEBIT \?ELS8
|
|
PRINTI "off"
|
|
JUMP ?CND6
|
|
?ELS8: PRINTI "out"
|
|
?CND6: PRINTI " of the "
|
|
CALL DPRINT,WLOC
|
|
PRINTI " first."
|
|
CRLF
|
|
RETURN 2
|
|
?CND3: MOVE WINNER,RM
|
|
SET 'HERE,RM
|
|
CALL LIT?,HERE >LIT
|
|
ZERO? OLIT \?CND24
|
|
ZERO? LIT \?CND24
|
|
RANDOM 100
|
|
GRTR? 90,STACK \?CND24
|
|
CALL JIGS-UP,STR?84
|
|
?CND24: GETP HERE,P?ACTION
|
|
CALL STACK,M-ENTER
|
|
CALL RATING-OBJ,RM
|
|
EQUAL? HERE,RM \TRUE
|
|
EQUAL? ADVENTURER,WINNER /?ELS33
|
|
CALL START-SENTENCE,WINNER
|
|
PRINTI " leaves the room."
|
|
CRLF
|
|
RETURN 2
|
|
?ELS33: ZERO? V? /TRUE
|
|
CALL V-FIRST-LOOK
|
|
IN? MAGNET,PLAYER \TRUE
|
|
ZERO? MAGNET-ON /?ELS46
|
|
CALL ATTRACTION
|
|
RTRUE
|
|
?ELS46: FIRST? MAGNET >F \TRUE
|
|
MOVE F,WLOC
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-BACK
|
|
PRINTI "Sorry, my memory isn't that good. "
|
|
CALL TELL-SHD-DIR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT POURABLE?,OBJ
|
|
EQUAL? OBJ,DRINKING-WATER,DRINK-OBJECT \FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-POUR
|
|
EQUAL? PRSO,OCEAN \?ELS5
|
|
CALL TELL-YOURE-NOT,STR?85
|
|
RSTACK
|
|
?ELS5: CALL POURABLE?,PRSO
|
|
ZERO? STACK \?ELS7
|
|
CALL TELL-YOU-CANT,STR?86
|
|
RTRUE
|
|
?ELS7: EQUAL? HERE,SHANTY \?ELS9
|
|
IN? PRSO,TABLE-OBJECT /?ELS9
|
|
CALL TELL-BUY-FIRST
|
|
RSTACK
|
|
?ELS9: MOVE PRSO,HERE
|
|
FSET PRSO,NDESCBIT
|
|
PRINTR "It evaporates immediately."
|
|
|
|
|
|
.FUNCT V-POUR-IN,L
|
|
CALL POURABLE?,PRSO
|
|
ZERO? STACK \?ELS5
|
|
PRINTI "I don't think you can pour "
|
|
CALL APRINT,PRSO
|
|
PRINTI "."
|
|
RTRUE
|
|
?ELS5: FSET? PRSI,CONTBIT /?ELS9
|
|
PRINTI "You'd have a lot of trouble pouring the "
|
|
CALL DPRINT,PRSO
|
|
PRINTI " into "
|
|
CALL THE?,PRSI
|
|
CALL DPRINT,PRSI
|
|
PRINTR "."
|
|
?ELS9: CALL TELL-WHY-BOTHER
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-POUR-ON
|
|
CALL POURABLE?,PRSO
|
|
ZERO? STACK /?ELS5
|
|
CALL TELL-WHY-BOTHER
|
|
RSTACK
|
|
?ELS5: CALL TELL-YOU-CANT,STR?86
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SHOW
|
|
ZERO? PRSI \?ELS5
|
|
PRINTR "Huh?"
|
|
?ELS5: EQUAL? PRSI,ME,PLAYER \?ELS9
|
|
PRINTI "Do you often talk to "
|
|
CALL DPRINT,GLOBAL-SELF
|
|
PRINTR "?"
|
|
?ELS9: FSET? PRSI,VICBIT /?ELS13
|
|
PRINTI "Don't wait for "
|
|
CALL THE?,PRSI
|
|
CALL DPRINT,PRSI
|
|
PRINTR " to applaud."
|
|
?ELS13: EQUAL? PRSI,PRSO \?ELS19
|
|
PRINTR "He's already aware of his own presence."
|
|
?ELS19: PRINTI "Although "
|
|
CALL THE?,PRSI
|
|
CALL DPRINT,PRSI
|
|
PRINTR " takes a look, he seems disinterested."
|
|
|
|
|
|
.FUNCT PRE-SSHOW
|
|
SET 'P-MERGED,TRUE-VALUE
|
|
CALL PERFORM,V?SHOW,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SSHOW
|
|
PRINTI "Bug."
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SPRAY
|
|
CALL V-SQUEEZE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SSPRAY
|
|
CALL PERFORM,V?SPRAY,PRSI,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SQUEEZE
|
|
PRINTR "How singularly useless."
|
|
|
|
|
|
.FUNCT V-OIL
|
|
PRINTR "That's not very useful."
|
|
|
|
|
|
.FUNCT V-FILL
|
|
CALL TELL-NO-NO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-DRILL
|
|
ZERO? PRSI \?CND1
|
|
SET 'PRSI,DRILL
|
|
?CND1: EQUAL? PRSI,DRILL /?ELS8
|
|
CALL PRE-BURN
|
|
RSTACK
|
|
?ELS8: IN? DRILL,PLAYER /FALSE
|
|
CALL TELL-YOURE-NOT,STR?87
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DRILL
|
|
CALL TELL-YOU-CANT,STR?88
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-DRILL-IN
|
|
IN? DRILL,PLAYER /?ELS5
|
|
PRINTR "A drill might help."
|
|
?ELS5: EQUAL? PRSO,HOLE-2,HOLE-1,HOLE /?THN10
|
|
EQUAL? PRSO,CEILING-HOLE-2,CEILING-HOLE-1,JAGGED-HOLE /?THN10
|
|
EQUAL? PRSO,FLOOR-HOLE-2,FLOOR-HOLE-1 \?ELS9
|
|
?THN10: PRINTI "(with the "
|
|
CALL DPRINT,DRILL
|
|
PRINTI ")"
|
|
CRLF
|
|
CALL PERFORM,V?DRILL,PRSI,DRILL
|
|
RTRUE
|
|
?ELS9: SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTR "I can't figure out what you mean."
|
|
|
|
|
|
.FUNCT V-DRILL-IN
|
|
PRINTR "Bug."
|
|
|
|
|
|
.FUNCT PRE-DRINK
|
|
EQUAL? WINNER,PLAYER /?ELS5
|
|
PRINTR """I'm not thirsty."""
|
|
?ELS5: FSET? PRSO,DRINKBIT \?ELS9
|
|
FSET? DEEP-SUIT,WORNBIT \?ELS14
|
|
CALL TELL-IN-WAY
|
|
RSTACK
|
|
?ELS14: FSET? MASK,WORNBIT \FALSE
|
|
CALL TELL-IN-WAY,FALSE-VALUE
|
|
RSTACK
|
|
?ELS9: CALL TELL-YOU-CANT,STR?89
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DRINK
|
|
PRINTI "I don't think "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR " would go down very well."
|
|
|
|
|
|
.FUNCT TELL-IN-WAY,HOOD?=1
|
|
PRINTI "The "
|
|
ZERO? HOOD? /?ELS5
|
|
PRINTI "hood"
|
|
JUMP ?CND3
|
|
?ELS5: CALL DPRINT,MASK
|
|
?CND3: PRINTR " would get in the way."
|
|
|
|
|
|
.FUNCT PRE-EAT
|
|
EQUAL? WINNER,PLAYER /?ELS5
|
|
PRINTR """I'm not hungry."""
|
|
?ELS5: ZERO? SOUPS-ON /?ELS9
|
|
FSET? PRSO,FOODBIT \?ELS9
|
|
FSET? DEEP-SUIT,WORNBIT \?ELS16
|
|
CALL TELL-IN-WAY
|
|
RSTACK
|
|
?ELS16: FSET? MASK,WORNBIT \FALSE
|
|
CALL TELL-IN-WAY,FALSE-VALUE
|
|
RSTACK
|
|
?ELS9: EQUAL? HERE,SHANTY \?ELS22
|
|
FSET? PRSO,FOODBIT \?ELS22
|
|
PRINTR "You'll have to buy it first."
|
|
?ELS22: FSET? PRSO,DRINKBIT \FALSE
|
|
PRINTR "Try drinking it."
|
|
|
|
|
|
.FUNCT V-EAT
|
|
FSET? PRSO,PERSON \?ELS5
|
|
PRINTR "Cannibalism isn't a good idea. Especially when you're more likely to be the dinner than the diner."
|
|
?ELS5: PRINTI "I don't think that "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR " would agree with you."
|
|
|
|
|
|
.FUNCT V-CURSES
|
|
ZERO? PRSO /?ELS5
|
|
FSET? PRSO,VICBIT \?ELS11
|
|
PRINTR "Insults of this nature won't help you."
|
|
?ELS11: PRINTI "And to think that "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR " never said anything bad about you..."
|
|
?ELS5: PRINTR "You really don't have to swear like a sailor."
|
|
|
|
|
|
.FUNCT V-LISTEN
|
|
FSET? PRSO,VICBIT \?ELS5
|
|
PRINTI "If "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR " says anything useful, I'll let you know."
|
|
?ELS5: CALL START-SENTENCE,PRSO
|
|
PRINTR " makes no sound."
|
|
|
|
|
|
.FUNCT V-FOLLOW,CN,CHR,COR,PCOR,L
|
|
SET 'L-PRSO,PRSO
|
|
SET 'L-PRSA,PRSA
|
|
EQUAL? WINNER,PLAYER /?ELS5
|
|
CALL TELL-FREE-WILL
|
|
RETURN 2
|
|
?ELS5: EQUAL? PRSO,PLAYER \?ELS9
|
|
PRINTR "It's not clear whom you're talking to."
|
|
?ELS9: FSET? PRSO,PERSON /?ELS13
|
|
EQUAL? PRSO,DELIVERY-BOY /?ELS13
|
|
PRINTR "That doesn't sound very exciting."
|
|
?ELS13: LOC PRSO >L
|
|
EQUAL? HERE,L \?ELS19
|
|
PRINTI "You're in the same place as "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR "!"
|
|
?ELS19: GETP HERE,P?CORRIDOR >COR
|
|
ZERO? COR /?ELS25
|
|
GETP L,P?CORRIDOR >PCOR
|
|
ZERO? PCOR /?ELS25
|
|
BAND COR,PCOR
|
|
ZERO? STACK /?ELS25
|
|
CALL COR-DIR,HERE,L >PRSO
|
|
SET 'P-WALK-DIR,PRSO
|
|
CALL V-WALK
|
|
RSTACK
|
|
?ELS25: IN? PRSO,FERRY \?ELS29
|
|
CALL TELL-CANT-BOARD
|
|
RSTACK
|
|
?ELS29: PRINTI "You seem to have lost track of "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT TELL-FREE-WILL
|
|
PRINTR """I'll go where I want!"""
|
|
|
|
|
|
.FUNCT V-STAY
|
|
EQUAL? WINNER,PLAYER \?ELS5
|
|
PRINTR "I'm not going anywhere."
|
|
?ELS5: CALL TELL-FREE-WILL
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-PRAY
|
|
PRINTR "If you pray enough, your prayers may be answered."
|
|
|
|
|
|
.FUNCT V-LEAP,Z,S
|
|
ZERO? PRSO /?ELS5
|
|
EQUAL? PRSO,INTDIR /?ELS5
|
|
CALL PERFORM,V?BOARD,PRSO
|
|
RTRUE
|
|
?ELS5: GETPT HERE,P?DOWN >Z
|
|
ZERO? Z /?ELS9
|
|
PTSIZE Z >S
|
|
EQUAL? S,2 /?THN15
|
|
EQUAL? S,4 \?ELS14
|
|
GETB Z,1
|
|
VALUE STACK
|
|
ZERO? STACK \?ELS14
|
|
?THN15: CALL JIGS-UP,STR?90
|
|
RSTACK
|
|
?ELS14: CALL V-SKIP
|
|
RSTACK
|
|
?ELS9: CALL V-SKIP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SKIP
|
|
LOC PLAYER
|
|
FSET? STACK,VEHBIT \?ELS5
|
|
PRINTR "That would be tough from your current position."
|
|
?ELS5: CALL PICK-ONE,WHEEEEE
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LEAVE
|
|
CALL DO-WALK,P?OUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-HELLO
|
|
ZERO? PRSO /?ELS5
|
|
CALL TELL-NO-RESPONSE
|
|
RSTACK
|
|
?ELS5: CALL PICK-ONE,HELLOS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-GOODBYE
|
|
CALL V-HELLO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-NO-RESPONSE
|
|
CALL START-SENTENCE,PRSO
|
|
PRINTR " fails to respond."
|
|
|
|
|
|
.FUNCT PRE-READ
|
|
ZERO? LIT \?ELS5
|
|
PRINTR "It is impossible to read in the dark."
|
|
?ELS5: ZERO? PRSI /FALSE
|
|
PRINTI "How does one look through "
|
|
CALL APRINT,PRSI
|
|
PRINTR "?"
|
|
|
|
|
|
.FUNCT V-READ
|
|
FSET? PRSO,READBIT /?ELS5
|
|
PRINTI "How can I read "
|
|
CALL APRINT,PRSO
|
|
PRINTR "?"
|
|
?ELS5: FSET PRSO,TOUCHBIT
|
|
GETP PRSO,P?TEXT
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-UNDER
|
|
FSET? PRSO,VICBIT \?ELS5
|
|
PRINTR "His feet are on the floor."
|
|
?ELS5: EQUAL? PRSO,LIGHTHOUSE,DRINK-OBJECT,FOOD /?THN10
|
|
EQUAL? PRSO,OCEAN,GROUND,CLOSET \?ELS9
|
|
?THN10: CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?ELS9: IN? PRSO,PLAYER \?ELS15
|
|
PRINTR "You have it."
|
|
?ELS15: CALL TELL-NOTHING,STR?100
|
|
GETP HERE,P?LINE
|
|
EQUAL? STACK,UNDERWATER-LINE-C \?ELS22
|
|
PRINTI "seaweed"
|
|
JUMP ?CND20
|
|
?ELS22: EQUAL? PRSO,FERRY,SALVAGER,TRAWLER /?THN27
|
|
EQUAL? PRSO,GLOBAL-FERRY \?ELS26
|
|
?THN27: PRINTI "water"
|
|
JUMP ?CND20
|
|
?ELS26: PRINTI "dust"
|
|
?CND20: PRINTR " there."
|
|
|
|
|
|
.FUNCT V-LOOK-BEHIND
|
|
CALL TELL-NOTHING,STR?101
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT TELL-NOTHING,STR,DONE?=0
|
|
PRINTI "There's nothing "
|
|
PRINT STR
|
|
ZERO? DONE? /FALSE
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT PRE-LOOK-IN
|
|
FSET? PRSO,SURFACEBIT \FALSE
|
|
PRINTR "It's solid."
|
|
|
|
|
|
.FUNCT PRE-LOOK-ON
|
|
FSET? PRSO,CONTBIT \FALSE
|
|
FSET? PRSO,SURFACEBIT /FALSE
|
|
CALL TELL-NOTHING,STR?102
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-LOOK-INSIDE,REACH?=0
|
|
FSET? PRSO,DOORBIT \?ELS5
|
|
PRINTI "The "
|
|
CALL DPRINT,PRSO
|
|
PRINTI " is "
|
|
FSET? PRSO,OPENBIT \?ELS10
|
|
PRINTI "open, but you can't tell what's beyond it"
|
|
JUMP ?CND8
|
|
?ELS10: PRINTI "closed"
|
|
?CND8: PRINTR "."
|
|
?ELS5: FSET? PRSO,CONTBIT \?ELS20
|
|
FSET? PRSO,VICBIT \?ELS25
|
|
CALL TELL-NOTHING,STR?103
|
|
ZERO? REACH? /?ELS28
|
|
PRINTI "felt"
|
|
JUMP ?CND26
|
|
?ELS28: PRINTI "seen"
|
|
?CND26: PRINTR "."
|
|
?ELS25: CALL SEE-INSIDE?,PRSO
|
|
ZERO? STACK /?ELS39
|
|
FIRST? PRSO \?ELS44
|
|
CALL PRINT-CONT,PRSO
|
|
ZERO? STACK \TRUE
|
|
?ELS44: FSET? PRSO,WORNBIT \?ELS48
|
|
PRINTR "You're wearing it."
|
|
?ELS48: FSET? PRSO,SURFACEBIT \?ELS52
|
|
IN? WINNER,PRSO \?ELS57
|
|
PRINTR "You're on it!"
|
|
?ELS57: CALL TELL-NOTHING,STR?104
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
?ELS52: PRINTI "The "
|
|
CALL DPRINT,PRSO
|
|
PRINTR " is empty."
|
|
?ELS39: CALL TELL-CLOSED,PRSO,FALSE-VALUE
|
|
RSTACK
|
|
?ELS20: PRINTR "I don't know how to do that."
|
|
|
|
|
|
.FUNCT SEE-INSIDE?,OBJ
|
|
FSET? OBJ,INVISIBLE /FALSE
|
|
FSET? OBJ,OPENBIT /TRUE
|
|
FSET? OBJ,TRANSBIT /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT PRE-BURN
|
|
ZERO? PRSI \?ELS5
|
|
PRINTR "Huh?"
|
|
?ELS5: PRINTI "With "
|
|
CALL APRINT,PRSI
|
|
PRINTR "??!?"
|
|
|
|
|
|
.FUNCT V-BURN
|
|
CALL TELL-NO-NO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-TURN
|
|
EQUAL? PRSO,NOT-HERE-OBJECT /FALSE
|
|
EQUAL? PRSO,PSEUDO-OBJECT \?ELS7
|
|
EQUAL? HERE,MM-WHEELHOUSE,NW-WHEELHOUSE /FALSE
|
|
?ELS7: FSET? PRSO,TURNBIT /?ELS11
|
|
CALL TELL-WHY-BOTHER
|
|
RSTACK
|
|
?ELS11: ZERO? PRSI /FALSE
|
|
EQUAL? PRSI,INTDIR \FALSE
|
|
CALL TELL-YOU-CANT,STR?105
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TURN
|
|
CALL TELL-NO-EFFECT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-NO-EFFECT
|
|
PRINTR "This has no effect."
|
|
|
|
|
|
.FUNCT V-PUMP
|
|
PRINTR "I really don't see how."
|
|
|
|
|
|
.FUNCT V-INFLATE
|
|
CALL TELL-HOW-THAT,STR?106
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DEFLATE
|
|
PRINTR "Come on, now!"
|
|
|
|
|
|
.FUNCT V-LOCK
|
|
PRINTR "It doesn't seem to work."
|
|
|
|
|
|
.FUNCT V-PICK
|
|
CALL TELL-YOU-CANT,STR?107
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-UNLOCK
|
|
EQUAL? PRSO,SAFE /FALSE
|
|
ZERO? PRSI \FALSE
|
|
IN? KEY,PLAYER \FALSE
|
|
SET 'PRSI,KEY
|
|
PRINTI "(with the room key)"
|
|
CRLF
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-UNLOCK
|
|
FSET? PRSO,DOORBIT \?ELS5
|
|
PRINTR "It's not locked."
|
|
?ELS5: CALL V-LOCK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CUT
|
|
ZERO? PRSI \?ELS5
|
|
PRINTR "Huh?"
|
|
?ELS5: FSET? PRSI,WEAPONBIT /?ELS9
|
|
PRINTI "Not with "
|
|
CALL APRINT,PRSI
|
|
PRINTR "!"
|
|
?ELS9: FSET? PRSO,VICBIT /?THN14
|
|
EQUAL? PRSO,SQUID \?ELS13
|
|
?THN14: CALL IKILL,STR?108
|
|
RSTACK
|
|
?ELS13: PRINTI "Strange concept, cutting "
|
|
CALL APRINT,PRSO
|
|
PRINTR "..."
|
|
|
|
|
|
.FUNCT V-KILL
|
|
CALL IKILL,STR?109
|
|
RSTACK
|
|
|
|
|
|
.FUNCT IKILL,STR
|
|
ZERO? PRSO \?ELS5
|
|
CALL TELL-NOTHING,STR?110
|
|
PRINT STR
|
|
PRINTR "."
|
|
?ELS5: EQUAL? PRSO,SQUID \?ELS9
|
|
CALL JIGS-UP,STR?111
|
|
RSTACK
|
|
?ELS9: FSET? PRSO,VICBIT /?ELS11
|
|
PRINTI "I've known strange people, but fighting "
|
|
CALL APRINT,PRSO
|
|
PRINTR "?"
|
|
?ELS11: ZERO? PRSI /?THN16
|
|
EQUAL? PRSI,GLOBAL-SELF,ME \?ELS15
|
|
?THN16: PRINTI "Trying to "
|
|
PRINT STR
|
|
PRINTI " "
|
|
CALL APRINT,PRSO
|
|
PRINTR " with your bare hands is suicidal."
|
|
?ELS15: IN? PRSI,WINNER /?ELS21
|
|
PRINTI "You aren't even holding "
|
|
CALL THE?,PRSI
|
|
CALL DPRINT,PRSI
|
|
PRINTR "."
|
|
?ELS21: FSET? PRSI,WEAPONBIT /?ELS27
|
|
PRINTI "Trying to "
|
|
PRINT STR
|
|
PRINTI " "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTI " with "
|
|
CALL APRINT,PRSI
|
|
PRINTR " is suicidal."
|
|
?ELS27: CALL TELL-NOT-SMART
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-ATTACK
|
|
CALL IKILL,STR?112
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SWING
|
|
CALL HELD?,PRSO
|
|
ZERO? STACK \?ELS5
|
|
CALL TELL-YOURE-NOT,STR?113
|
|
RSTACK
|
|
?ELS5: PRINTR "Whoosh!"
|
|
|
|
|
|
.FUNCT V-KICK
|
|
FSET? PRSO,PERSON \?ELS5
|
|
CALL TELL-NOT-SMART
|
|
RSTACK
|
|
?ELS5: CALL HACK-HACK,STR?114
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-NOT-SMART
|
|
PRINTR "That wouldn't be too smart."
|
|
|
|
|
|
.FUNCT V-WAVE
|
|
CALL HACK-HACK,STR?115
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WAVE-AT
|
|
ZERO? PRSO /?ELS5
|
|
FSET? PRSO,VICBIT \?ELS5
|
|
CALL START-SENTENCE,PRSO
|
|
PRINTR " acknowledges your greeting."
|
|
?ELS5: CALL TELL-NO-RESPONSE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOWER
|
|
CALL HACK-HACK,STR?116
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-RUB
|
|
FSET? PRSO,PERSON \?ELS5
|
|
CALL TELL-HANDS-OFF
|
|
RSTACK
|
|
?ELS5: CALL HACK-HACK,STR?117
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-HANDS-OFF
|
|
PRINTR """Get your hands off me!"""
|
|
|
|
|
|
.FUNCT V-PUSH
|
|
FSET? PRSO,PERSON \?ELS5
|
|
CALL TELL-HANDS-OFF
|
|
RSTACK
|
|
?ELS5: IN? WINNER,PRSO \?ELS7
|
|
CALL TELL-CONTORT
|
|
RSTACK
|
|
?ELS7: FSET? PRSO,PUSHBIT \?ELS9
|
|
CALL TELL-MOVES-BIT
|
|
RSTACK
|
|
?ELS9: CALL HACK-HACK,STR?118
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-MOVES-BIT
|
|
CALL START-SENTENCE,PRSO
|
|
PRINTR " moves a bit."
|
|
|
|
|
|
.FUNCT V-PUSH-OFF
|
|
FSET? PRSI,SURFACEBIT \?ELS5
|
|
IN? PRSO,PRSI \?ELS5
|
|
LOC PRSI
|
|
MOVE PRSO,STACK
|
|
CALL TELL-NOW,PRSO,STR?119
|
|
RSTACK
|
|
?ELS5: PRINTR "A ludicrous idea at best."
|
|
|
|
|
|
.FUNCT V-PUSH-TO,FALLEN=0,OH,F
|
|
IN? WINNER,PRSO \?ELS5
|
|
CALL TELL-CONTORT
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,PUSHBIT /?ELS7
|
|
FSET? PRSO,TAKEBIT \?ELS12
|
|
PRINTR "There's no need for that. Why not just pick it up and then carry it there?"
|
|
?ELS12: EQUAL? PRSO,ME \?ELS16
|
|
PRINTR "Do it yourself."
|
|
?ELS16: FSET? PRSO,VICBIT \?ELS20
|
|
CALL TELL-HANDS-OFF
|
|
RSTACK
|
|
?ELS20: PRINTI "You push and strain, but can't budge "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
?ELS7: EQUAL? PRSI,INTDIR /?ELS28
|
|
CALL TELL-YOU-CANT,STR?120
|
|
RTRUE
|
|
?ELS28: SET 'OH,HERE
|
|
ZERO? OH /FALSE
|
|
CALL DO-WALK,P-WALK-DIR
|
|
EQUAL? STACK,M-FATAL /FALSE
|
|
?PRG33: FIRST? PRSO >F \?REP34
|
|
MOVE F,OH
|
|
SET 'FALLEN,TRUE-VALUE
|
|
JUMP ?PRG33
|
|
?REP34: MOVE PRSO,HERE
|
|
FSET PRSO,TOUCHBIT
|
|
PRINTI "You bring the "
|
|
CALL DPRINT,PRSO
|
|
PRINTI " along with you."
|
|
ZERO? FALLEN /?CND42
|
|
CALL TELL-ALL-FALL
|
|
?CND42: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TELL-CONTORT
|
|
PRINTR "That would require some impressive contortions."
|
|
|
|
|
|
.FUNCT TELL-ALL-FALL
|
|
PRINTI " Everything that was on it falls off."
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-CHIP
|
|
GET P-VTBL,0
|
|
EQUAL? STACK,W?CHIP \?ELS3
|
|
IN? SPEAR-CARRIER,HERE \?ELS3
|
|
EQUAL? PRSO,INTNUM \?ELS3
|
|
ZERO? P-DOLLAR-FLAG /?ELS3
|
|
CALL PERFORM,V?GIVE,PRSO,SPEAR-CARRIER
|
|
RTRUE
|
|
?ELS3: CALL PERFORM,V?MUNG,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-CHIP
|
|
PRINTR "Bug."
|
|
|
|
|
|
.FUNCT PRE-MUNG
|
|
EQUAL? PRSO,WINNER,ME,NOT-HERE-OBJECT /FALSE
|
|
EQUAL? PRSO,MIRROR,GLOBAL-BANK,ADVENTURER /FALSE
|
|
ZERO? PRSI /?ELS7
|
|
FSET? PRSI,WEAPONBIT /FALSE
|
|
?ELS7: FSET? PRSO,VICBIT /?CND1
|
|
EQUAL? PRSO,SQUID /?CND1
|
|
CALL HACK-HACK,STR?121
|
|
RTRUE
|
|
?CND1: PRINTI "Trying to destroy "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTI " with "
|
|
ZERO? PRSI \?ELS20
|
|
PRINTI "your bare hands is suicidal"
|
|
JUMP ?CND18
|
|
?ELS20: CALL APRINT,PRSI
|
|
PRINTI " is insane"
|
|
?CND18: PRINTR "."
|
|
|
|
|
|
.FUNCT V-MUNG
|
|
FSET? PRSO,VICBIT /?THN6
|
|
EQUAL? PRSO,SQUID \?ELS5
|
|
?THN6: CALL IKILL,STR?112
|
|
RSTACK
|
|
?ELS5: PRINTR "Nothing much happens."
|
|
|
|
|
|
.FUNCT HACK-HACK,STR
|
|
IN? PRSO,GLOBAL-OBJECTS \?ELS5
|
|
EQUAL? PRSA,V?LOWER,V?WAVE \?ELS5
|
|
PRINTI "Unfortunately, "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR " isn't here."
|
|
?ELS5: PRINT STR
|
|
PRINTI " "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
CALL PICK-ONE,HO-HUM
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-KNOCK
|
|
FSET? PRSO,DOORBIT \?ELS5
|
|
CALL TELL-NO-ANSWER
|
|
RSTACK
|
|
?ELS5: PRINTI "Why knock on "
|
|
CALL APRINT,PRSO
|
|
PRINTR "?"
|
|
|
|
|
|
.FUNCT V-CHOMP
|
|
PRINTR "I don't know how to do that. I win in all cases!"
|
|
|
|
|
|
.FUNCT V-WIN
|
|
PRINTR "Naturally!"
|
|
|
|
|
|
.FUNCT V-YELL
|
|
ZERO? PRSO /?ELS5
|
|
PRINTR "You could be more polite and lower your voice."
|
|
?ELS5: PRINTR "Aarrrrrgggggggghhhhhhhhhhh!"
|
|
|
|
|
|
.FUNCT V-PLUG
|
|
CALL TELL-NO-EFFECT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LATITUDE,LAT=1,STR,NEW=0
|
|
ZERO? LAT /?ELS3
|
|
SET 'STR,STR?126
|
|
JUMP ?CND1
|
|
?ELS3: SET 'STR,STR?127
|
|
?CND1: EQUAL? WINNER,PLAYER \?ELS11
|
|
PRINTI "Why don't you tell someone who cares?"
|
|
CRLF
|
|
RETURN 2
|
|
?ELS11: LESS? MEETINGS-COMPLETED,2 \?ELS17
|
|
CALL START-SENTENCE,WINNER
|
|
PRINTI " looks bewildered. ""What does that have to do with anything?"" he asks."
|
|
CRLF
|
|
RETURN 2
|
|
?ELS17: EQUAL? WINNER,JOHNNY /?ELS23
|
|
CALL START-SENTENCE,WINNER
|
|
PRINTI " says, ""That's nice. Why don't you let the captain know?"""
|
|
CRLF
|
|
RETURN 2
|
|
?ELS23: EQUAL? PRSO,INTNUM /?ELS29
|
|
PRINTI "Johnny looks at you strangely. ""What kind of a "
|
|
PRINT STR
|
|
PRINTR " is that?"""
|
|
?ELS29: GRTR? P-NUMBER,59 \?ELS33
|
|
PRINTR """There are 60 minutes in a degree."""
|
|
?ELS33: ZERO? LAT /?ELS40
|
|
ZERO? LATITUDE-SET /?CND42
|
|
EQUAL? LATITUDE-SET,P-NUMBER \?ELS48
|
|
SET 'NEW,M-FATAL
|
|
JUMP ?CND42
|
|
?ELS48: SET 'NEW,TRUE-VALUE
|
|
?CND42: SET 'LATITUDE-SET,P-NUMBER
|
|
JUMP ?CND38
|
|
?ELS40: ZERO? LONGITUDE-SET /?CND53
|
|
EQUAL? LONGITUDE-SET,P-NUMBER \?ELS59
|
|
SET 'NEW,M-FATAL
|
|
JUMP ?CND53
|
|
?ELS59: SET 'NEW,TRUE-VALUE
|
|
?CND53: SET 'LONGITUDE-SET,P-NUMBER
|
|
?CND38: EQUAL? NEW,M-FATAL \?ELS66
|
|
CALL TELL-YOU-ALREADY,STR?128,TRUE-VALUE
|
|
RSTACK
|
|
?ELS66: ZERO? NEW /?ELS68
|
|
PRINTI """Now the "
|
|
PRINT STR
|
|
PRINTI " is "
|
|
PRINTN P-NUMBER
|
|
PRINTR ", huh?"""
|
|
?ELS68: PRINTI """Okay. The "
|
|
PRINT STR
|
|
PRINTI " is "
|
|
PRINTN P-NUMBER
|
|
PRINTR "."""
|
|
|
|
|
|
.FUNCT V-LONGITUDE
|
|
CALL V-LATITUDE,FALSE-VALUE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-EMPTY,X
|
|
FSET? PRSO,CONTBIT /?ELS5
|
|
CALL TELL-YOU-CANT,STR?129
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,OPENBIT /?ELS7
|
|
CALL TELL-YOU-CANT,STR?130
|
|
RSTACK
|
|
?ELS7: FIRST? PRSO \?ELS9
|
|
?PRG10: FIRST? PRSO >X \?REP11
|
|
MOVE X,HERE
|
|
JUMP ?PRG10
|
|
?REP11: CALL TELL-NOW,PRSO,STR?131
|
|
RSTACK
|
|
?ELS9: CALL TELL-NOTHING,STR?132
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-SHAKE,X
|
|
FSET? PRSO,VICBIT \?ELS5
|
|
CALL TELL-NO-EFFECT
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,TAKEBIT /?ELS7
|
|
CALL TELL-YOU-CANT,STR?133
|
|
RSTACK
|
|
?ELS7: FSET? PRSO,OPENBIT /?ELS9
|
|
FIRST? PRSO \?ELS9
|
|
PRINTI "It sounds as if there is something inside the "
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
?ELS9: FSET? PRSO,OPENBIT \?ELS15
|
|
FIRST? PRSO \?ELS15
|
|
?PRG18: FIRST? PRSO >X \?REP19
|
|
MOVE X,HERE
|
|
JUMP ?PRG18
|
|
?REP19: PRINTI "All of the objects spill onto the "
|
|
CALL SPILL-WHERE?
|
|
RSTACK
|
|
?ELS15: CALL TELL-NOTHING,STR?132
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT SPILL-WHERE?
|
|
IN? WINNER,BED \?ELS3
|
|
PRINTI "floor by your bed."
|
|
JUMP ?CND1
|
|
?ELS3: GETP HERE,P?LINE
|
|
GRTR? STACK,BACK-ALLEY-LINE-C \?ELS7
|
|
PRINTI "deck by your feet."
|
|
JUMP ?CND1
|
|
?ELS7: PRINTI "floor."
|
|
?CND1: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DIAGNOSE
|
|
PRINTI "You are "
|
|
GRTR? HOW-HUNGRY,3 \?ELS5
|
|
PRINTI "extremely"
|
|
JUMP ?CND3
|
|
?ELS5: ZERO? HOW-HUNGRY \?ELS9
|
|
PRINTI "not"
|
|
JUMP ?CND3
|
|
?ELS9: EQUAL? HOW-HUNGRY,1 \?ELS13
|
|
PRINTI "a bit"
|
|
JUMP ?CND3
|
|
?ELS13: EQUAL? HOW-HUNGRY,2 \?ELS17
|
|
PRINTI "pretty"
|
|
JUMP ?CND3
|
|
?ELS17: EQUAL? HOW-HUNGRY,3 \?CND3
|
|
PRINTI "very"
|
|
?CND3: PRINTI " hungry, "
|
|
ZERO? HOW-THIRSTY \?ELS28
|
|
PRINTI "not thirsty"
|
|
JUMP ?CND26
|
|
?ELS28: EQUAL? HOW-THIRSTY,1 \?ELS32
|
|
PRINTI "a little thirsty"
|
|
JUMP ?CND26
|
|
?ELS32: EQUAL? HOW-THIRSTY,2 \?ELS36
|
|
PRINTI "fairly thirsty"
|
|
JUMP ?CND26
|
|
?ELS36: EQUAL? HOW-THIRSTY,3 \?ELS40
|
|
PRINTI "very thirsty"
|
|
JUMP ?CND26
|
|
?ELS40: GRTR? HOW-THIRSTY,3 \?CND26
|
|
PRINTI "utterly parched"
|
|
?CND26: PRINTI ", and "
|
|
ZERO? HOW-TIRED \?ELS51
|
|
PRINTI "half-awake"
|
|
JUMP ?CND49
|
|
?ELS51: LESS? HOW-TIRED,3 \?ELS55
|
|
PRINTI "wide-awake"
|
|
JUMP ?CND49
|
|
?ELS55: EQUAL? HOW-TIRED,3 \?ELS59
|
|
PRINTI "a bit drowsy"
|
|
JUMP ?CND49
|
|
?ELS59: EQUAL? HOW-TIRED,4 \?ELS63
|
|
PRINTI "fairly tired"
|
|
JUMP ?CND49
|
|
?ELS63: EQUAL? HOW-TIRED,5 \?ELS67
|
|
PRINTI "very sleepy"
|
|
JUMP ?CND49
|
|
?ELS67: EQUAL? HOW-TIRED,6 \?CND49
|
|
PRINTI "dead on your feet"
|
|
?CND49: PRINTR "."
|
|
|
|
|
|
.FUNCT PRE-DIG
|
|
EQUAL? PRSO,NOT-HERE-OBJECT /FALSE
|
|
ZERO? PRSI \?ELS7
|
|
PRINTR "Huh?"
|
|
?ELS7: FSET? PRSI,TOOLBIT /FALSE
|
|
PRINTI "Digging with "
|
|
CALL THE?,PRSI
|
|
CALL DPRINT,PRSI
|
|
PRINTR " is very silly."
|
|
|
|
|
|
.FUNCT V-AIM
|
|
PRINTR "That would be pointless."
|
|
|
|
|
|
.FUNCT V-DIG
|
|
CALL TELL-YOU-CANT,STR?134
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-SMELL
|
|
FSET? MASK,WORNBIT /?THN6
|
|
FSET? DEEP-SUIT,WORNBIT \FALSE
|
|
?THN6: CALL TELL-YOU-CANT,STR?135
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SMELL
|
|
FSET? PRSO,VICBIT \?ELS5
|
|
PRINTR "Nothing a good deodorant couldn't fix."
|
|
?ELS5: PRINTI "It smells just like "
|
|
CALL APRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT GLOBAL-IN?,OBJ1,OBJ2,Z
|
|
GETPT OBJ2,P?GLOBAL >Z
|
|
ZERO? Z /FALSE
|
|
PTSIZE Z
|
|
SUB STACK,1
|
|
CALL ZMEMQB,OBJ1,Z,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SWIM
|
|
GETP HERE,P?LINE
|
|
EQUAL? STACK,UNDERWATER-LINE-C \?ELS5
|
|
EQUAL? PRSO,INTDIR \?ELS10
|
|
CALL DO-WALK,P-WALK-DIR
|
|
RSTACK
|
|
?ELS10: CALL TELL-SHD-DIR
|
|
RSTACK
|
|
?ELS5: PRINTR "I think you're all wet."
|
|
|
|
|
|
.FUNCT V-DIVE
|
|
ZERO? PRSO /?ELS5
|
|
EQUAL? PRSO,OCEAN /?ELS5
|
|
PRINTR "This isn't a circus!"
|
|
?ELS5: GETP HERE,P?LINE
|
|
EQUAL? STACK,UNDERWATER-LINE-C \?ELS11
|
|
CALL DO-WALK,P?DOWN
|
|
RTRUE
|
|
?ELS11: LOC PLAYER
|
|
CALL GLOBAL-IN?,OCEAN,STACK
|
|
ZERO? STACK /?ELS13
|
|
EQUAL? HERE,MM-WHEELHOUSE,NW-WHEELHOUSE /?ELS13
|
|
GETP HERE,P?LINE
|
|
LESS? STACK,TRAWLER-LINE-C \?ELS20
|
|
EQUAL? HERE,FERRY-LANDING,WHARF /?ELS20
|
|
CALL PERFORM,V?BOARD,OCEAN
|
|
RTRUE
|
|
?ELS20: FSET? DEEP-SUIT,WORNBIT /?ELS24
|
|
FSET? WET-SUIT,WORNBIT \?THN27
|
|
IN? AIR-TANK,PLAYER \?THN27
|
|
FSET? MASK,WORNBIT \?THN27
|
|
FSET? FLIPPERS,WORNBIT /?ELS24
|
|
?THN27: CALL JIGS-UP,STR?136
|
|
RSTACK
|
|
?ELS24: FSET? DEEP-SUIT,WORNBIT \?ELS30
|
|
IN? AIR-HOSE,DEEP-SUIT \?THN33
|
|
FSET? MM-COMPRESSOR,ONBIT /?ELS30
|
|
?THN33: CALL JIGS-UP,STR?137
|
|
RSTACK
|
|
?ELS30: ZERO? AT-SEA \?ELS36
|
|
CALL JIGS-UP,STR?138
|
|
RSTACK
|
|
?ELS36: EQUAL? OCEAN-BOTTOM,50 \?ELS41
|
|
SET 'HERE,OCEAN-FLOOR
|
|
MOVE PLAYER,OCEAN-FLOOR
|
|
JUMP ?CND39
|
|
?ELS41: MOVE PLAYER,UNDERWATER
|
|
SET 'HERE,UNDERWATER
|
|
CALL UNDERWATER-F,M-ENTER
|
|
?CND39: FCLEAR OCEAN,VEHBIT
|
|
CALL INT,I-ENDIT
|
|
PUT STACK,0,0
|
|
SET 'DEPTH,50
|
|
IN? PASSBOOK,PLAYER \?CND44
|
|
FSET PASSBOOK,RMUNGBIT
|
|
?CND44: IN? DIVING-BOOK,PLAYER \?CND47
|
|
FSET DIVING-BOOK,RMUNGBIT
|
|
?CND47: IN? NOTE,PLAYER \?CND50
|
|
FSET NOTE,RMUNGBIT
|
|
?CND50: IN? BOOK,PLAYER \?CND53
|
|
FSET BOOK,RMUNGBIT
|
|
?CND53: IN? ENVELOPE,PLAYER \?CND56
|
|
FSET ENVELOPE,RMUNGBIT
|
|
?CND56: IN? BATTERY,PLAYER /?THN62
|
|
IN? BATTERY,DRILL \?CND59
|
|
FSET? DRILL,OPENBIT \?CND59
|
|
?THN62: FSET BATTERY,RMUNGBIT
|
|
SET DRILL-POWERED,FALSE-VALUE
|
|
?CND59: IN? DRY-CELL,PLAYER /?THN69
|
|
IN? DRY-CELL,DETECTOR-COMPARTMENT \?CND66
|
|
FSET? DETECTOR-COMPARTMENT,OPENBIT \?CND66
|
|
?THN69: FSET DRY-CELL,RMUNGBIT
|
|
SET DETECTOR-POWERED,FALSE-VALUE
|
|
?CND66: IN? AIR-TANK,PLAYER \?ELS75
|
|
FSET? DEEP-SUIT,WORNBIT /?ELS75
|
|
CALL QUEUE,I-AIR-SUPPLY,-1
|
|
PUT STACK,0,1
|
|
JUMP ?CND73
|
|
?ELS75: CALL INT,I-MM-COMPRESSOR
|
|
GET STACK,C-TICK
|
|
GRTR? STACK,0 \?ELS79
|
|
CALL INT,I-MM-COMPRESSOR
|
|
PUT STACK,0,1
|
|
JUMP ?CND73
|
|
?ELS79: CALL INT,I-LAST-GASP
|
|
PUT STACK,0,1
|
|
?CND73: CALL V-LOOK
|
|
RSTACK
|
|
?ELS13: PRINTR "Consulting your years of experience, you come to the conclusion that the lack of water here would make this a lousy place to try diving."
|
|
|
|
|
|
.FUNCT V-UNTIE
|
|
FSET? PRSO,PERSON \?ELS5
|
|
CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?ELS5: PRINTR "This cannot be tied, so it cannot be untied!"
|
|
|
|
|
|
.FUNCT PRE-TIE
|
|
EQUAL? PRSO,AIR-HOSE /FALSE
|
|
EQUAL? PRSO,ROPE,SAFETY-LINE /?ELS7
|
|
EQUAL? PRSI,ROPE,SAFETY-LINE /?ELS7
|
|
PRINTR "Even if I knew how to do that, I wouldn't."
|
|
?ELS7: EQUAL? PRSI,WINNER /?THN14
|
|
EQUAL? PRSO,WINNER \FALSE
|
|
?THN14: CALL TELL-YOU-CANT,STR?139
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TIE
|
|
PRINTR "Don't bother."
|
|
|
|
|
|
.FUNCT V-TIE-UP
|
|
PRINTR "You could certainly never tie it with that!"
|
|
|
|
|
|
.FUNCT V-MELT
|
|
PRINTI "I'm not sure that "
|
|
CALL APRINT,PRSO
|
|
PRINTR " can be melted."
|
|
|
|
|
|
.FUNCT V-MUMBLE
|
|
PRINTR "You'll have to speak up if you expect me to hear you!"
|
|
|
|
|
|
.FUNCT V-ALARM
|
|
EQUAL? PRSO,ROOMS \?ELS9
|
|
EQUAL? WINNER,PLAYER \?THN6
|
|
?ELS9: FSET? PRSO,VICBIT \?ELS5
|
|
EQUAL? PRSO,ME /?ELS5
|
|
?THN6: PRINTR "He's wide awake, or haven't you noticed?"
|
|
?ELS5: EQUAL? PRSO,ROOMS \?ELS15
|
|
PRINTR "You're already awake."
|
|
?ELS15: CALL START-SENTENCE,PRSO
|
|
PRINTR " isn't sleeping."
|
|
|
|
|
|
.FUNCT V-CLIMB-ON
|
|
FSET? PRSO,CLIMBBIT /?THN6
|
|
FSET? PRSO,VEHBIT \?ELS5
|
|
?THN6: CALL PERFORM,V?BOARD,PRSO
|
|
RTRUE
|
|
?ELS5: CALL TELL-YOU-CANT,STR?140,FALSE-VALUE
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-CLIMB-FOO
|
|
EQUAL? PRSO,ROOMS \?ELS5
|
|
CALL V-CLIMB-UP
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,CLIMBBIT /?ELS7
|
|
FSET? PRSO,VEHBIT /?ELS7
|
|
CALL TELL-YOU-CANT,STR?141,FALSE-VALUE
|
|
CALL APRINT,PRSO
|
|
PRINTI "!"
|
|
CRLF
|
|
RETURN 2
|
|
?ELS7: CALL V-CLIMB-UP,P?UP,TRUE-VALUE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLIMB-UP,DIR=P?UP,OBJ=0,X,?TMP1
|
|
GETPT HERE,DIR
|
|
ZERO? STACK /?ELS5
|
|
CALL DO-WALK,DIR
|
|
RTRUE
|
|
?ELS5: ZERO? OBJ \?ELS7
|
|
CALL TELL-NO-GO,TRUE-VALUE
|
|
RSTACK
|
|
?ELS7: ZERO? OBJ /?ELS9
|
|
GETPT PRSO,P?SYNONYM >X
|
|
PTSIZE X
|
|
CALL ZMEMQ,W?WALLS,X,STACK
|
|
ZERO? STACK /?ELS9
|
|
PRINTR "Climbing the walls is to no avail."
|
|
?ELS9: PRINTR "Bizarre!"
|
|
|
|
|
|
.FUNCT V-CLIMB-DOWN
|
|
CALL V-CLIMB-UP,P?DOWN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SEND
|
|
FSET? PRSO,VICBIT \?ELS5
|
|
PRINTI "I doubt that "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR " is at your beck and call."
|
|
?ELS5: PRINTR "That doesn't make sends."
|
|
|
|
|
|
.FUNCT V-WIND
|
|
PRINTI "You cannot wind up "
|
|
CALL APRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-COUNT
|
|
PRINTR "I can't deal with those numbers."
|
|
|
|
|
|
.FUNCT PRE-BRACE
|
|
CALL PERFORM,V?PUT-UNDER,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-BRACE
|
|
PRINTR "Bug."
|
|
|
|
|
|
.FUNCT V-PUT-UNDER
|
|
FSET? PRSI,DOORBIT \?ELS5
|
|
GETP PRSO,P?SIZE
|
|
LESS? STACK,5 \?ELS5
|
|
FSET? PRSI,OPENBIT \?ELS12
|
|
CALL TELL-WHY-BOTHER
|
|
RSTACK
|
|
?ELS12: CALL IDROP
|
|
ZERO? STACK /FALSE
|
|
CALL OTHER-SIDE,PRSI,TRUE-VALUE
|
|
MOVE PRSO,STACK
|
|
PRINTR "Done."
|
|
?ELS5: CALL TELL-NO-NO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PUSH-UNDER
|
|
FSET? PRSO,TAKEBIT /?THN6
|
|
FSET? PRSO,PUSHBIT \?ELS5
|
|
?THN6: CALL PERFORM,V?PUT-UNDER,PRSO,PRSI
|
|
RTRUE
|
|
?ELS5: CALL TELL-NO-NO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PLAY
|
|
FSET? PRSO,VICBIT \?ELS5
|
|
PRINTI "You are so engrossed in the role of "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
CALL JIGS-UP,STR?142
|
|
RSTACK
|
|
?ELS5: PRINTR "How peculiar!"
|
|
|
|
|
|
.FUNCT V-MAKE
|
|
CALL TELL-NO-NO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-ENTER
|
|
EQUAL? HERE,WINDING-ROAD-1 \?ELS5
|
|
CALL PERFORM,V?THROUGH,LIGHTHOUSE
|
|
RTRUE
|
|
?ELS5: CALL DO-WALK,P?IN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-EXIT
|
|
CALL DO-WALK,P?OUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CROSS
|
|
CALL TELL-YOU-CANT,STR?143
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SEARCH
|
|
FSET? PRSO,PERSON \?ELS5
|
|
CALL START-SENTENCE,PRSO
|
|
PRINTR " glares at you. ""Get away from me!"" he growls."
|
|
?ELS5: FSET? PRSO,CONTBIT \?ELS9
|
|
CALL PERFORM,V?LOOK-INSIDE,PRSO
|
|
RTRUE
|
|
?ELS9: PRINTR "You find nothing unusual."
|
|
|
|
|
|
.FUNCT V-FIND,L
|
|
LOC PRSO >L
|
|
EQUAL? WINNER,PLAYER /?ELS5
|
|
PRINTI """Find "
|
|
FSET? PRSO,VICBIT \?ELS10
|
|
PRINTI "him "
|
|
JUMP ?CND8
|
|
?ELS10: PRINTI "it "
|
|
?CND8: CALL DPRINT,GLOBAL-SELF
|
|
PRINTR "."""
|
|
?ELS5: EQUAL? L,GLOBAL-OBJECTS \?ELS20
|
|
PRINTI "Why don't you try finding it "
|
|
CALL DPRINT,GLOBAL-SELF
|
|
PRINTR "?"
|
|
?ELS20: IN? PRSO,WINNER \?ELS24
|
|
PRINTR "You have it."
|
|
?ELS24: IN? PRSO,HERE /?THN29
|
|
EQUAL? PRSO,PSEUDO-OBJECT \?ELS28
|
|
?THN29: FSET? PRSO,VICBIT \?ELS33
|
|
PRINTI "He's"
|
|
JUMP ?CND31
|
|
?ELS33: PRINTI "It's"
|
|
?CND31: PRINTR " right here."
|
|
?ELS28: IN? L,HERE /?THN44
|
|
CALL GLOBAL-IN?,PRSO,HERE
|
|
ZERO? STACK /?ELS43
|
|
?THN44: FSET? L,PERSON \?ELS50
|
|
PRINTI "You notice that "
|
|
CALL DPRINT,L
|
|
PRINTR " has it."
|
|
?ELS50: FSET? L,CONTBIT \?ELS54
|
|
PRINTI "It's "
|
|
CALL VEHPREP,L
|
|
PRINT STACK
|
|
PRINTI " the "
|
|
CALL DPRINT,L
|
|
PRINTR "."
|
|
?ELS54: EQUAL? L,FERRY \?ELS58
|
|
PRINTR "He's on the ferry."
|
|
?ELS58: PRINTR "It's around here somewhere."
|
|
?ELS43: PRINTI "Find "
|
|
FSET? PRSO,VICBIT \?ELS71
|
|
PRINTI "him"
|
|
JUMP ?CND69
|
|
?ELS71: PRINTI "it"
|
|
?CND69: PRINTI " "
|
|
CALL DPRINT,GLOBAL-SELF
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT PRE-TELL
|
|
ZERO? PRSI /?ELS5
|
|
EQUAL? PRSO,ME,PLAYER \?ELS5
|
|
EQUAL? WINNER,PLAYER /?ELS10
|
|
SET 'PRSA,V?ASK-ABOUT
|
|
CALL PERFORM,V?ASK-ABOUT,WINNER,PRSI
|
|
RTRUE
|
|
?ELS10: SET 'PRSA,V?ASK-CONTEXT-ABOUT
|
|
CALL PERFORM,V?ASK-CONTEXT-ABOUT,PRSI
|
|
RTRUE
|
|
?ELS5: ZERO? PRSI \FALSE
|
|
FSET? PRSO,VICBIT /FALSE
|
|
CALL TELL-NO-TELL
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TELL
|
|
ZERO? PRSI /?ELS5
|
|
FSET? PRSO,PERSON \?ELS11
|
|
CALL START-SENTENCE,PRSO
|
|
PRINTR " seems less than impressed with this information."
|
|
?ELS11: FSET? PRSO,VICBIT /?THN16
|
|
EQUAL? PRSO,SQUID \?ELS15
|
|
?THN16: PRINTI "The "
|
|
CALL DPRINT,PRSO
|
|
PRINTR " ignores what you have to say."
|
|
?ELS15: CALL TELL-NO-RESPONSE
|
|
RSTACK
|
|
?ELS5: EQUAL? WINNER,PLAYER \?ELS23
|
|
EQUAL? PRSO,ME,WINNER \?ELS23
|
|
PRINTI "Talking to "
|
|
CALL DPRINT,GLOBAL-SELF
|
|
PRINTI " is diverting, but unnecessary."
|
|
CRLF
|
|
RETURN 2
|
|
?ELS23: EQUAL? PRSO,PLAYER,ME \?ELS31
|
|
PRINTI """What in the world are you trying to say?"""
|
|
CRLF
|
|
RETURN 2
|
|
?ELS31: FSET? PRSO,VICBIT \?ELS37
|
|
CALL META-LOC,PRSO
|
|
EQUAL? STACK,HERE /?ELS40
|
|
CALL GLOBAL-NOT-HERE-PRINT,PRSO
|
|
RETURN 2
|
|
?ELS40: EQUAL? WINNER,PLAYER /?CND38
|
|
ZERO? P-CONT \?CND38
|
|
PRINTI """I'll talk to whoever I want."""
|
|
CRLF
|
|
RETURN 2
|
|
?CND38: SET 'WINNER,PRSO
|
|
CALL META-LOC,WINNER >HERE
|
|
SET 'QCONTEXT,WINNER
|
|
SET 'QCONTEXT-ROOM,HERE
|
|
ZERO? P-CONT \FALSE
|
|
CALL START-SENTENCE,PRSO
|
|
PRINTI " turns and looks at you as though he thought you were about to say something."
|
|
CRLF
|
|
RETURN 2
|
|
?ELS37: CALL TELL-NO-TELL
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-NO-TELL
|
|
CALL TELL-YOU-CANT,STR?144,FALSE-VALUE
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTI "!"
|
|
CRLF
|
|
SET 'QUOTE-FLAG,FALSE-VALUE
|
|
SET 'P-CONT,FALSE-VALUE
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-KISS
|
|
PRINTR "I'd sooner kiss a parrot."
|
|
|
|
|
|
.FUNCT V-RAPE
|
|
PRINTR "An ugly idea from an ugly person."
|
|
|
|
|
|
.FUNCT FIND-IN,WHERE,WHAT,W,R=0
|
|
FIRST? WHERE >W /?KLU19
|
|
?KLU19: ZERO? W /FALSE
|
|
?PRG4: FSET? W,WHAT \?ELS8
|
|
ZERO? R /?ELS11
|
|
RETURN 2
|
|
?ELS11: SET 'R,W
|
|
JUMP ?PRG4
|
|
?ELS8: NEXT? W >W /?PRG4
|
|
RETURN R
|
|
|
|
|
|
.FUNCT V-SAY,V
|
|
CALL FIND-IN,HERE,VICBIT >V
|
|
ZERO? V /?ELS5
|
|
PRINTI "You must address "
|
|
EQUAL? V,M-FATAL \?ELS10
|
|
PRINTI "someone"
|
|
JUMP ?CND8
|
|
?ELS10: CALL THE?,V
|
|
CALL DPRINT,V
|
|
?CND8: PRINTI " directly."
|
|
CRLF
|
|
RETURN 2
|
|
?ELS5: GET P-LEXV,P-CONT
|
|
EQUAL? STACK,W?HELLO \?ELS22
|
|
SET 'QUOTE-FLAG,FALSE-VALUE
|
|
RTRUE
|
|
?ELS22: SET 'QUOTE-FLAG,FALSE-VALUE
|
|
SET 'P-CONT,FALSE-VALUE
|
|
PRINTI "Talking to "
|
|
CALL DPRINT,GLOBAL-SELF
|
|
PRINTR " is said to be a sign of impending mental collapse."
|
|
|
|
|
|
.FUNCT V-SPIN
|
|
CALL TELL-YOU-CANT,STR?145
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-THROUGH,M
|
|
FSET? PRSO,DOORBIT \?ELS5
|
|
CALL OTHER-SIDE,PRSO
|
|
CALL DO-WALK,STACK
|
|
RTRUE
|
|
?ELS5: FSET? PRSO,VEHBIT /?THN8
|
|
EQUAL? HERE,MCGINTY-HQ \?ELS7
|
|
EQUAL? PRSO,PSEUDO-OBJECT \?ELS7
|
|
?THN8: CALL PERFORM,V?BOARD,PRSO
|
|
RTRUE
|
|
?ELS7: IN? PRSO,GLOBAL-OBJECTS /?ELS13
|
|
CALL META-LOC,PRSO
|
|
EQUAL? STACK,HERE /?ELS13
|
|
CALL GLOBAL-IN?,PRSO,HERE
|
|
ZERO? STACK \?ELS13
|
|
CALL GLOBAL-NOT-HERE-PRINT,PRSO
|
|
RSTACK
|
|
?ELS13: FSET? PRSO,TAKEBIT /?ELS17
|
|
PRINTI "You hit your head against "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR " as you attempt this feat."
|
|
?ELS17: IN? PRSO,WINNER \?ELS23
|
|
CALL TELL-CONTORT
|
|
RSTACK
|
|
?ELS23: CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-STEP
|
|
FSET? PRSO,VEHBIT \?ELS5
|
|
CALL PERFORM,V?BOARD,PRSO
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSO,GROUND \?ELS7
|
|
PRINTR "Fred Astaire you're not."
|
|
?ELS7: PRINTR "That sounds pretty useless."
|
|
|
|
|
|
.FUNCT V-WEAR
|
|
FSET? PRSO,WEARBIT /?ELS5
|
|
CALL TELL-YOU-CANT,STR?154,FALSE-VALUE
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
?ELS5: FSET? PRSO,WORNBIT \?ELS9
|
|
PRINTR "You are already wearing it."
|
|
?ELS9: IN? PRSO,WINNER /?THN14
|
|
CALL ITAKE
|
|
ZERO? STACK /FALSE
|
|
?THN14: FSET PRSO,WORNBIT
|
|
PRINTI "You are now wearing "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT UNWEAR
|
|
FSET? PRSO,WORNBIT \?ELS5
|
|
FCLEAR PRSO,WORNBIT
|
|
PRINTI "You are now holding "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
?ELS5: CALL TELL-YOURE-NOT,STR?155
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WITHDRAW
|
|
EQUAL? PRSO,INTNUM /?ELS5
|
|
CALL PERFORM,V?TAKE,PRSO
|
|
RSTACK
|
|
?ELS5: CALL TELL-YOU-CANT,STR?156
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DEPOSIT
|
|
EQUAL? PRSO,INTNUM /?ELS5
|
|
CALL PERFORM,V?PUT,PRSO,PRSI
|
|
RSTACK
|
|
?ELS5: CALL TELL-YOU-CANT,STR?157
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-THROW-OFF
|
|
CALL TELL-YOU-CANT,STR?158
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-$VERIFY
|
|
PRINTI "Verifying game..."
|
|
CRLF
|
|
VERIFY \?ELS7
|
|
PRINTR "Yup. Game correct."
|
|
?ELS7: PRINTR "** UH OH! Game File Failure. **"
|
|
|
|
|
|
.FUNCT V-STAND
|
|
ZERO? PRSO /?CND1
|
|
EQUAL? PRSO,GLOBAL-BANK /?THN8
|
|
FSET? PRSO,VICBIT \?ELS7
|
|
?THN8: CALL PERFORM,V?ROB,PRSO
|
|
RTRUE
|
|
?ELS7: FSET? PRSO,VEHBIT \?ELS11
|
|
CALL PERFORM,V?BOARD,PRSO
|
|
RTRUE
|
|
?ELS11: EQUAL? PRSO,ROOMS /?CND1
|
|
CALL HACK-HACK,STR?116
|
|
RTRUE
|
|
?CND1: LOC WINNER
|
|
FSET? STACK,VEHBIT \?ELS18
|
|
LOC WINNER
|
|
CALL PERFORM,V?DISEMBARK,STACK
|
|
RTRUE
|
|
?ELS18: PRINTR "You are already standing, I think."
|
|
|
|
|
|
.FUNCT V-HIDE
|
|
PRINTR "That's not a good hiding place."
|
|
|
|
|
|
.FUNCT V-HIDE-UNDER
|
|
CALL V-HIDE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DO-WALK,DIR
|
|
SET 'P-WALK-DIR,DIR
|
|
CALL PERFORM,V?WALK,DIR
|
|
EQUAL? STACK,M-FATAL \TRUE
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-WALK-TO
|
|
EQUAL? PRSO,INTDIR \?ELS5
|
|
CALL DO-WALK,P-WALK-DIR
|
|
RSTACK
|
|
?ELS5: IN? PRSO,HERE /?THN8
|
|
CALL GLOBAL-IN?,PRSO,HERE
|
|
ZERO? STACK /?ELS7
|
|
?THN8: FSET? PRSO,VICBIT \?ELS12
|
|
PRINTI "He"
|
|
JUMP ?CND10
|
|
?ELS12: PRINTI "It"
|
|
?CND10: PRINTR "'s here!"
|
|
?ELS7: CALL TELL-SHD-DIR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-SHD-DIR
|
|
PRINTI "You should supply a "
|
|
CALL DPRINT,INTDIR
|
|
PRINTR "!"
|
|
|
|
|
|
.FUNCT OTHER-SIDE,DOBJ,RM?=0,P=0,Z
|
|
?PRG1: NEXTP HERE,P >P
|
|
LESS? P,LOW-DIRECTION /FALSE
|
|
GETPT HERE,P >Z
|
|
PTSIZE Z
|
|
EQUAL? STACK,DEXIT \?PRG1
|
|
GETB Z,DEXITOBJ
|
|
EQUAL? STACK,DOBJ \?PRG1
|
|
ZERO? RM? /?ELS15
|
|
GETB Z,0
|
|
RETURN STACK
|
|
?ELS15: RETURN P
|
|
|
|
|
|
.FUNCT V-LEAN-ON
|
|
PRINTR "Are you so very tired, then?"
|
|
|
|
|
|
.FUNCT V-PUT-AGAINST
|
|
CALL TELL-NO-NO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TASTE
|
|
FSET? PRSO,FOODBIT \?ELS5
|
|
CALL PERFORM,V?EAT,PRSO
|
|
RSTACK
|
|
?ELS5: PRINTI "It tastes just like "
|
|
CALL APRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT TELL-WHY-BOTHER
|
|
PRINTR "Why bother?"
|
|
|
|
|
|
.FUNCT V-ROB
|
|
FSET? PRSO,PERSON /?THN6
|
|
EQUAL? PRSO,SPEAR-CARRIER \?ELS5
|
|
?THN6: PRINTI "Even as you begin to make your move, "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
CALL JIGS-UP,STR?159
|
|
RSTACK
|
|
?ELS5: PRINTR "No wonder you never made the Ten Most Wanted list."
|
|
|
|
|
|
.FUNCT V-PUSH-THROUGH
|
|
PRINTI "Pushing "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTR " in that way isn't particularly helpful."
|
|
|
|
|
|
.FUNCT HOW?,OBJ
|
|
PRINTI "I don't know how to do that to "
|
|
CALL APRINT,OBJ
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT VOWEL?,OBJ
|
|
FSET? OBJ,VOWELBIT \?CND1
|
|
PRINTI "n"
|
|
?CND1: PRINTI " "
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SMOKE
|
|
PRINTR "Smoking is bad for your health."
|
|
|
|
|
|
.FUNCT V-UNFOLD
|
|
CALL HOW?,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-FOLD
|
|
CALL V-UNFOLD
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-HOLE-DIG
|
|
PRINTI "I can't dig in "
|
|
CALL THE?,PRSI
|
|
CALL DPRINT,PRSI
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-TURN-OVER
|
|
IN? PRSO,WINNER \?ELS5
|
|
CALL TELL-NOTHING,STR?160,TRUE-VALUE
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,TAKEBIT \?ELS7
|
|
CALL TELL-YOUD-BETTER,STR?161,TRUE-VALUE
|
|
RSTACK
|
|
?ELS7: PRINTR "Good luck!"
|
|
|
|
|
|
.FUNCT V-READ-INSIDE
|
|
CALL TELL-NOTHING,STR?162,TRUE-VALUE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-REACH-IN
|
|
EQUAL? PRSO,NOT-HERE-OBJECT /FALSE
|
|
FSET? PRSO,CONTBIT /?CND1
|
|
CALL TELL-CANT-REACH,STR?163
|
|
RTRUE
|
|
?CND1: FSET? PRSO,OPENBIT /FALSE
|
|
CALL TELL-CLOSED,PRSO,FALSE-VALUE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-REACH-IN
|
|
CALL PERFORM,V?LOOK-INSIDE,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-CLOSED,ARG,STR?=1
|
|
PRINTI "The "
|
|
ZERO? STR? /?ELS5
|
|
PRINT ARG
|
|
JUMP ?CND3
|
|
?ELS5: CALL DPRINT,ARG
|
|
?CND3: PRINTR " is closed."
|
|
|
|
|
|
.FUNCT V-CLEAN
|
|
PRINTR "Cleanliness may be next to godliness, but there are limits."
|
|
|
|
|
|
.FUNCT V-TIME
|
|
IN? WATCH,WINNER /?THN6
|
|
IN? WATCH,HERE \?ELS5
|
|
?THN6: PRINTI "Your watch says it's "
|
|
CALL WATCH-TIME
|
|
PRINTR "."
|
|
?ELS5: CALL TELL-YOU-CANT,STR?164
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WEIGH
|
|
FSET? PRSO,TAKEBIT \?ELS5
|
|
PRINTR "Tough to do without a scale."
|
|
?ELS5: PRINTR "Now that's bizarre!"
|
|
|
|
|
|
.FUNCT V-CHASTISE
|
|
EQUAL? PRSO,INTDIR \?ELS5
|
|
PRINTR "The best way to see what's happening there is to go there."
|
|
?ELS5: PRINTI "Please be more specific. LOOKing AT, BEHIND, UNDER, THROUGH, INSIDE, ON, DOWN, FOR, or any other method of LOOKing mean different things to me. Please specify which preposition you'd like to use next time, like LOOK AT "
|
|
FSET? PRSO,PERSON /?CND12
|
|
PRINTI "THE "
|
|
?CND12: CALL DPRINT,PRSO
|
|
PRINTI ", or LOOK INSIDE "
|
|
FSET? PRSO,PERSON /?CND19
|
|
PRINTI "THE "
|
|
?CND19: CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-HELP
|
|
ZERO? PRSO /?CND1
|
|
EQUAL? PRSO,WINNER /?CND1
|
|
PRINTI "It seems that "
|
|
CALL THE?,PRSO
|
|
CALL DPRINT,PRSO
|
|
PRINTI " doesn't need any help."
|
|
CRLF
|
|
?CND1: PRINTI "I'm afraid you'll have to figure this out "
|
|
CALL DPRINT,GLOBAL-SELF
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT GET-COMFORTABLE,OBJ
|
|
FIRST? OBJ /?THN6
|
|
CALL WEARING-SOMETHING?
|
|
ZERO? STACK /?ELS5
|
|
?THN6: CALL TELL-NOT-COMFORTABLE
|
|
RSTACK
|
|
?ELS5: MOVE WINNER,OBJ
|
|
PRINTI "You get into the "
|
|
CALL DPRINT,OBJ
|
|
PRINTI " and try to get comfortable. "
|
|
CALL V-SLEEP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-NOT-COMFORTABLE
|
|
PRINTR "That doesn't sound very comfortable."
|
|
|
|
|
|
.FUNCT V-SLEEP
|
|
EQUAL? HOW-TIRED,6 \?ELS5
|
|
GETP HERE,P?LINE
|
|
LESS? STACK,UNDERWATER-LINE-C \?ELS10
|
|
CALL SLEEP-LOSE
|
|
RSTACK
|
|
?ELS10: CALL JIGS-UP,STR?165
|
|
RSTACK
|
|
?ELS5: ZERO? PRSO /?ELS14
|
|
EQUAL? PRSO,BUNK,BED,ROOMS /?ELS14
|
|
CALL TELL-NOT-COMFORTABLE
|
|
RSTACK
|
|
?ELS14: IN? WINNER,BED /?THN19
|
|
IN? WINNER,BUNK \?ELS18
|
|
?THN19: EQUAL? HOW-TIRED,1 /?ELS25
|
|
IN? WINNER,BED \FALSE
|
|
CALL SLEEP-LOSE
|
|
RSTACK
|
|
?ELS25: PRINTR "You close your eyes, but your mind is too active to let you sleep."
|
|
?ELS18: IN? BED,HERE \?ELS36
|
|
CALL GET-COMFORTABLE,BED
|
|
RTRUE
|
|
?ELS36: IN? BUNK,HERE \?ELS38
|
|
CALL GET-COMFORTABLE,BUNK
|
|
RTRUE
|
|
?ELS38: ZERO? PRSO /?ELS40
|
|
CALL TELL-NOT-COMFORTABLE
|
|
RSTACK
|
|
?ELS40: LESS? HOW-TIRED,2 \?ELS43
|
|
CALL TELL-YOURE-NOT,STR?166
|
|
RSTACK
|
|
?ELS43: PRINTR "Better find a good place to lie down."
|
|
|
|
|
|
.FUNCT SLEEP-LOSE
|
|
PRINTI "You drift off to sleep.
|
|
|
|
You wake up. Once again, you find "
|
|
CALL DPRINT,GLOBAL-SELF
|
|
PRINTI " with the usual nothing to do. It seems as if you are destined to spend the rest of your days on this island, waiting for a break that may never come."
|
|
CRLF
|
|
CALL FINISH
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-WHAT
|
|
ZERO? PRSI /FALSE
|
|
EQUAL? PRSO,GLOBAL-DAY,GLOBAL-TIME /FALSE
|
|
EQUAL? PRSI,P-IT-OBJECT,IT /FALSE
|
|
PRINTI "I'm afraid that question is beyond me."
|
|
CRLF
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-WHAT
|
|
EQUAL? WINNER,PLAYER \?THN6
|
|
ZERO? QCONTEXT /?ELS5
|
|
EQUAL? HERE,QCONTEXT-ROOM \?ELS5
|
|
CALL META-LOC,QCONTEXT
|
|
EQUAL? HERE,STACK \?ELS5
|
|
FSET? QCONTEXT,PERSON \?ELS5
|
|
?THN6: PRINTR """Isn't it obvious?"""
|
|
?ELS5: ZERO? PRSO \?ELS13
|
|
PRINTR "Huh?"
|
|
?ELS13: FSET? PRSO,PERSON \?ELS17
|
|
PRINTR "Try asking that person."
|
|
?ELS17: PRINTI "Are you talking to "
|
|
CALL DPRINT,GLOBAL-SELF
|
|
PRINTR " again?"
|
|
|
|
|
|
.FUNCT V-YES
|
|
CALL TELL-RATHER,STR?167
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-MAYBE
|
|
CALL TELL-RATHER,STR?168
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-NO
|
|
CALL TELL-RATHER,STR?169
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-RATHER,STR
|
|
PRINTI "You sound rather "
|
|
PRINT STR
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-SIT
|
|
FSET? PRSO,PERSON \?ELS5
|
|
CALL PERFORM,V?SIT-WITH,PRSO
|
|
RSTACK
|
|
?ELS5: CALL PERFORM,V?SIT-ON,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SIT-ON
|
|
FSET? PRSO,VEHBIT \?ELS5
|
|
CALL PERFORM,V?BOARD,PRSO
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSO,GROUND,DECK \?ELS7
|
|
LOC WINNER
|
|
FSET? STACK,VEHBIT \?CND8
|
|
MOVE WINNER,HERE
|
|
?CND8: PRINTR "After a moment, you stand back up."
|
|
?ELS7: CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SIT-WITH
|
|
FSET? PRSO,PERSON /?ELS5
|
|
CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?ELS5: IN? PLAYER,SHANTY \?ELS9
|
|
IN? PRSO,SHANTY \?ELS9
|
|
CALL PERFORM,V?SIT-ON,CHAIR
|
|
RSTACK
|
|
?ELS9: PRINTI "There's no place to sit with "
|
|
CALL DPRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT TELL-ALREADY,STR
|
|
PRINTI "It's already "
|
|
PRINT STR
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT TELL-YOUD-BETTER,STR,1ST=0,DONE=1
|
|
PRINTI "You'd better "
|
|
PRINT STR
|
|
ZERO? 1ST /?CND3
|
|
PRINTI " first."
|
|
?CND3: ZERO? DONE /FALSE
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT FIXED-FONT-ON
|
|
GET 0,8
|
|
BOR STACK,2
|
|
PUT 0,8,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT FIXED-FONT-OFF
|
|
GET 0,8
|
|
BAND STACK,-3
|
|
PUT 0,8,STACK
|
|
RTRUE
|
|
|
|
.ENDI
|