mirror of
https://github.com/historicalsource/moonmist
synced 2024-04-29 23:49:34 +03:00
668 lines
15 KiB
Plaintext
668 lines
15 KiB
Plaintext
|
|
|
|
.FUNCT LOCAL-GLOBALS-F
|
|
CALL REMOTE-VERB?
|
|
ZERO? STACK \FALSE
|
|
CALL CREEPY?,HERE
|
|
ZERO? STACK \?CTR4
|
|
CALL OUTSIDE?,HERE
|
|
ZERO? STACK /?CCL5
|
|
?CTR4: CALL RANDOM-PSEUDO
|
|
RSTACK
|
|
?CCL5: CALL NOT-HERE,LOCAL-GLOBALS
|
|
RSTACK
|
|
|
|
|
|
.FUNCT UPSTAIRS-DOWNSTAIRS,N,TBL,HR,?TMP1
|
|
LOC WINNER >HR
|
|
EQUAL? PRSA,V?WALK-TO,V?WALK,V?THROUGH /?CCL3
|
|
EQUAL? PRSA,V?CLIMB-UP,V?CLIMB-DOWN,V?BOARD \FALSE
|
|
?CCL3: FSET? HR,SECRETBIT /FALSE
|
|
FSET? HR,WEARBIT \?CCL10
|
|
SET 'TBL,WING-STAIRS
|
|
JUMP ?CND6
|
|
?CCL10: SET 'TBL,TOWER-STAIRS
|
|
?CND6: EQUAL? PRSA,V?CLIMB-UP,V?BOARD \?CCL13
|
|
GETPT HR,P?UP
|
|
ZERO? STACK /?CCL17
|
|
CALL DO-WALK,P?UP
|
|
RTRUE
|
|
?CCL17: GETP HR,P?CHARACTER >N
|
|
ZERO? N /FALSE
|
|
GET TBL,0 >?TMP1
|
|
INC 'N
|
|
LESS? ?TMP1,N /FALSE
|
|
GET TBL,N >N
|
|
CALL PERFORM,V?WALK-TO,N
|
|
RTRUE
|
|
?CCL13: GETPT HR,P?DOWN
|
|
ZERO? STACK /?CCL24
|
|
CALL DO-WALK,P?DOWN
|
|
RTRUE
|
|
?CCL24: GETP HR,P?CHARACTER >N
|
|
ZERO? N /FALSE
|
|
DEC 'N
|
|
LESS? 0,N \FALSE
|
|
GET TBL,N >N
|
|
CALL PERFORM,V?WALK-TO,N
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DO-INSTEAD-OF,OBJ1,OBJ2
|
|
EQUAL? PRSI,OBJ2 \?CCL3
|
|
CALL PERFORM,PRSA,PRSO,OBJ1
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,OBJ2 \?CCL5
|
|
CALL PERFORM,PRSA,OBJ1,PRSI
|
|
RTRUE
|
|
?CCL5: CALL V-FOO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TURN-F
|
|
EQUAL? PRSA,V?USE \FALSE
|
|
CALL PERFORM,V?WAIT-FOR,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT IT-F
|
|
EQUAL? PRSI,IT \?PRD5
|
|
EQUAL? PRSA,V?TELL-ABOUT /?PRG12
|
|
EQUAL? PRSA,V?SEARCH-FOR,V?ASK-FOR,V?ASK-ABOUT /?PRG12
|
|
?PRD5: EQUAL? PRSO,IT \FALSE
|
|
EQUAL? PRSA,V?FIND,V?ASK-CONTEXT-FOR,V?ASK-CONTEXT-ABOUT \FALSE
|
|
?PRG12: PRINTR """I'm not sure what you're talking about."""
|
|
|
|
|
|
.FUNCT FLOOR-F,OBJ=0,N
|
|
EQUAL? PRSA,V?CLIMB-ON \?CCL3
|
|
CALL ALREADY,WINNER,STR?278
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSA,V?THROW-AT,V?PUT \?CCL5
|
|
EQUAL? PRSO,MOONMIST /?CCL5
|
|
EQUAL? PRSI,FLOOR \?CCL5
|
|
MOVE PRSO,HERE
|
|
PRINTR "Okay."
|
|
?CCL5: EQUAL? PRSA,V?SEARCH-FOR /?CTR11
|
|
EQUAL? PRSA,V?SEARCH,V?LOOK-ON,V?EXAMINE \?CCL12
|
|
?CTR11: EQUAL? HERE,DRAWING-ROOM \?CCL17
|
|
PRINTI "The carpet ends flush with the archway to the "
|
|
PRINTD GREAT-HALL
|
|
PRINTI ", where the footsteps of visitors have begun to wear it thin. It's a magnificent red Brussels carpet with deep pile and a medieval design."
|
|
CRLF
|
|
JUMP ?CND15
|
|
?CCL17: EQUAL? HERE,GREAT-HALL \?CND15
|
|
CALL GREAT-HALL-IS-FLOORED
|
|
?CND15: EQUAL? HERE,GARDEN \?CCL23
|
|
EQUAL? VARIATION,LORD-C \?CCL23
|
|
FSET? CLUE-4,SECRETBIT \?CCL23
|
|
SET 'OBJ,CLUE-4
|
|
JUMP ?CND21
|
|
?CCL23: EQUAL? HERE,DRAWING-ROOM \?CCL28
|
|
EQUAL? VARIATION,LORD-C,FRIEND-C \?CCL28
|
|
FSET? JEWEL,TOUCHBIT /?CCL28
|
|
SET 'OBJ,JEWEL
|
|
JUMP ?CND21
|
|
?CCL28: EQUAL? HERE,GREAT-HALL \?CND21
|
|
EQUAL? VARIATION,DOCTOR-C,PAINTER-C \?CND21
|
|
EQUAL? FOUND-IT-PERM,LENS,LENS-2 /?CND21
|
|
SET 'OBJ,LENS
|
|
?CND21: CALL START-SEARCH,OBJ
|
|
RTRUE
|
|
?CCL12: CALL ADJ-USED?,W?DRAWING
|
|
ZERO? STACK /?CCL37
|
|
EQUAL? HERE,DRAWING-ROOM /FALSE
|
|
CALL DO-INSTEAD-OF,DRAWING-ROOM,FLOOR
|
|
RTRUE
|
|
?CCL37: CALL ADJ-USED?,W?GREAT
|
|
ZERO? STACK /FALSE
|
|
EQUAL? HERE,GREAT-HALL /FALSE
|
|
CALL DO-INSTEAD-OF,GREAT-HALL,FLOOR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT START-SEARCH,OBJ=0
|
|
PRINTI "Nothing suspicious meets your eye after a moment's scrutiny. Do you want to continue?"
|
|
CALL YES?
|
|
ZERO? STACK \?CCL5
|
|
CALL OKAY
|
|
RTRUE
|
|
?CCL5: SET 'FOUND-IT,OBJ
|
|
SET 'FOUND-LOC,HERE
|
|
RANDOM 7
|
|
CALL QUEUE,I-FOUND-IT,STACK
|
|
CALL V-WAIT,8,FALSE-VALUE,TRUE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-FOUND-IT,GARG=0,OBJ
|
|
EQUAL? FOUND-LOC,HERE \FALSE
|
|
EQUAL? FOUND-IT,JEWEL \?CCL5
|
|
MOVE FOUND-IT,HERE
|
|
PRINTI "Suddenly you notice a glittering speck. Probing for it with your fingers, you discover a "
|
|
PRINTD JEWEL
|
|
PRINTC 46
|
|
CRLF
|
|
JUMP ?CND1
|
|
?CCL5: EQUAL? FOUND-IT,LENS \?CCL9
|
|
FSET? LENS,SEENBIT /?CCL12
|
|
LOC LENS
|
|
MOVE LENS-2,STACK
|
|
JUMP ?CND10
|
|
?CCL12: FSET? LENS-2,SEENBIT /FALSE
|
|
SET 'FOUND-IT,LENS-2
|
|
LOC LENS
|
|
MOVE LENS-1,STACK
|
|
REMOVE LENS
|
|
?CND10: MOVE FOUND-IT,HERE
|
|
PRINTI "Suddenly you find something small, smooth and slippery -- a "
|
|
PRINTD FOUND-IT
|
|
PRINTI "! Its transparency, of course, made it practically invisible."
|
|
ZERO? BUTLER-GHOST-STORY-TOLD /?CND17
|
|
PRINTI " No wonder you and the ghost had such a hard time finding it!"
|
|
?CND17: CRLF
|
|
JUMP ?CND1
|
|
?CCL9: ZERO? FOUND-IT \?CCL22
|
|
PRINT NOTHING-NEW
|
|
RETURN 2
|
|
?CCL22: FSET? FOUND-IT,SECRETBIT \?PRG29
|
|
CALL DISCOVER,FOUND-IT
|
|
JUMP ?CND1
|
|
?PRG29: PRINTC 89
|
|
PRINT OU-STOP-SEARCHING
|
|
PRINTI " when you find"
|
|
CALL PRINTT,FOUND-IT
|
|
PRINTI ".
|
|
"
|
|
?CND1: FSET FOUND-IT,TOUCHBIT
|
|
FSET FOUND-IT,SEENBIT
|
|
EQUAL? FOUND-IT,YOUR-SWITCH /?CND32
|
|
FCLEAR FOUND-IT,NDESCBIT
|
|
?CND32: EQUAL? FOUND-IT,LENS,LENS-2 \?CND34
|
|
SET 'FOUND-IT-PERM,FOUND-IT
|
|
?CND34: SET 'FOUND-IT,FALSE-VALUE
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT YOU-F,X
|
|
EQUAL? WINNER,PLAYER /?CCL3
|
|
CALL DO-INSTEAD-OF,WINNER,YOU
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSA,V?ASK-ABOUT \?CCL5
|
|
EQUAL? PRSI,YOU \?CCL5
|
|
CALL PERFORM,V?ASK-ABOUT,PRSO,PRSO
|
|
RTRUE
|
|
?CCL5: EQUAL? PRSA,V?THANKS \FALSE
|
|
CALL QCONTEXT-GOOD? >X
|
|
ZERO? X /FALSE
|
|
CALL PERFORM,V?THANKS,X
|
|
RTRUE
|
|
|
|
|
|
.FUNCT WALL-F,OBJ
|
|
EQUAL? VARIATION,FRIEND-C \?CCL3
|
|
EQUAL? HERE,BASEMENT,CRYPT \?CCL3
|
|
CALL BRICKS-F
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL7
|
|
CALL FIND-FLAG-LG,HERE,DOORBIT,SECRETBIT >OBJ
|
|
ZERO? OBJ /?CCL7
|
|
CALL DO-INSTEAD-OF,OBJ,WALL
|
|
RTRUE
|
|
?CCL7: EQUAL? PRSA,V?KNOCK \FALSE
|
|
FSET? HERE,WEARBIT \?PRG17
|
|
CALL FIND-FLAG-LG,HERE,DOORBIT,SECRETBIT
|
|
ZERO? STACK /?PRG19
|
|
?PRG17: PRINTR "You hear a hollow sound."
|
|
?PRG19: PRINTR "Knocking on the walls reveals nothing unusual."
|
|
|
|
|
|
.FUNCT GLOBAL-HERE-F,OBJ,X=0
|
|
EQUAL? PRSA,V?WALK-TO,V?SMELL /?CTR2
|
|
EQUAL? PRSA,V?SIT,V?LIE,V?EXAMINE \?CCL3
|
|
?CTR2: CALL DO-INSTEAD-OF,HERE,GLOBAL-HERE
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSA,V?PUT-IN,V?PUT \?CCL7
|
|
CALL MORE-SPECIFIC
|
|
RSTACK
|
|
?CCL7: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH \FALSE
|
|
IN? MAGAZINE,HERE \?CCL12
|
|
FSET? MAGAZINE,NDESCBIT \?CCL12
|
|
SET 'X,MAGAZINE
|
|
JUMP ?CND10
|
|
?CCL12: IN? BRICKS,HERE \?CCL16
|
|
FSET? BRICKS,NDESCBIT \?CCL16
|
|
SET 'X,BRICKS
|
|
JUMP ?CND10
|
|
?CCL16: ZERO? PRSI /?CCL20
|
|
CALL META-LOC,PRSI
|
|
EQUAL? STACK,HERE \?CCL20
|
|
SET 'X,PRSI
|
|
JUMP ?CND10
|
|
?CCL20: FIRST? HERE >OBJ /?PRG24
|
|
?PRG24: ZERO? OBJ /?CND10
|
|
FSET? OBJ,SECRETBIT \?CCL30
|
|
SET 'X,OBJ
|
|
JUMP ?CND10
|
|
?CCL30: FSET? OBJ,PERSONBIT /?CCL32
|
|
FSET? OBJ,CONTBIT /?PRD35
|
|
FSET? OBJ,SURFACEBIT \?CCL32
|
|
?PRD35: CALL FIND-FLAG,OBJ,SECRETBIT >X
|
|
ZERO? X \?CTR31
|
|
CALL FIND-FLAG,OBJ,RMUNGBIT >X
|
|
ZERO? X /?CCL32
|
|
?CTR31: FSET OBJ,OPENBIT
|
|
?CND10: CALL START-SEARCH,X
|
|
RTRUE
|
|
?CCL32: NEXT? OBJ >OBJ /?PRG24
|
|
JUMP ?PRG24
|
|
|
|
|
|
.FUNCT CHAIR-F
|
|
EQUAL? PRSA,V?BOARD,V?CLIMB-ON,V?SIT \?CCL3
|
|
CALL WONT-HELP
|
|
RSTACK
|
|
?CCL3: CALL RANDOM-PSEUDO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CLOTHES-FCN
|
|
EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?CCL3
|
|
EQUAL? PRSO,TWEED-OUTFIT \?CCL6
|
|
PRINTI "These are sensible clothes for this clammy climate: your new tweed "
|
|
ZERO? GENDER-KNOWN \?PRG14
|
|
PRINTI "suit"
|
|
JUMP ?PRG23
|
|
?PRG14: PRINTI "blazer and "
|
|
FSET? PLAYER,FEMALE \?PRG21
|
|
PRINTI "skirt"
|
|
JUMP ?PRG23
|
|
?PRG21: PRINTI "pants"
|
|
?PRG23: PRINTR ", with woolen sweater, should keep you warm enough."
|
|
?CCL6: EQUAL? PRSO,EXERCISE-OUTFIT \?CCL26
|
|
PRINTI "This is your favorite outfit for workouts: a cotton sweatsuit with a sporty "
|
|
CALL PRINT-COLOR
|
|
ZERO? STACK /?PRG33
|
|
PRINTC 32
|
|
?PRG33: PRINTR "stripe."
|
|
?CCL26: EQUAL? PRSO,DINNER-OUTFIT \?PRG70
|
|
ZERO? GENDER-KNOWN \?PRG42
|
|
PRINTI "You have a decent formal ensemble, with frills in the right places"
|
|
JUMP ?PRG53
|
|
?PRG42: PRINTI "Your new "
|
|
FSET? PLAYER,FEMALE \?PRG49
|
|
PRINTI "floor-length dinner gown"
|
|
JUMP ?PRG51
|
|
?PRG49: PRINTI "tuxedo"
|
|
?PRG51: PRINTI " is particularly good-looking"
|
|
?PRG53: PRINTI " and a perfect fit"
|
|
ZERO? VARIATION /?PRG68
|
|
PRINTI ", "
|
|
FSET? PLAYER,FEMALE \?PRG64
|
|
PRINTI "not to mention that it's all"
|
|
JUMP ?PRG66
|
|
?PRG64: PRINTI "with shirt and accessories"
|
|
?PRG66: PRINTI " in "
|
|
CALL PRINT-COLOR
|
|
?PRG68: PRINTR "."
|
|
?PRG70: PRINTI "Your new "
|
|
CALL PRINT-COLOR
|
|
ZERO? STACK /?PRG76
|
|
PRINTC 32
|
|
?PRG76: PRINTD SLEEP-OUTFIT
|
|
PRINTI " is "
|
|
ZERO? GENDER-KNOWN \?CCL80
|
|
PRINTR "nothing to write home about, but it is so-o-o comfy for sleeping."
|
|
?CCL80: FSET? PLAYER,FEMALE \?PRG87
|
|
PRINTR "made of fine Chinese silk."
|
|
?PRG87: PRINTR "decorated with a Union Jack flag."
|
|
?CCL3: EQUAL? PRSA,V?DISEMBARK \?CCL90
|
|
CALL PERFORM,V?TAKE-OFF,PRSO
|
|
RTRUE
|
|
?CCL90: EQUAL? PRSA,V?EMPTY \FALSE
|
|
CALL META-LOC,LUGGAGE
|
|
EQUAL? STACK,HERE \?CCL95
|
|
CALL PERFORM,V?EMPTY,LUGGAGE
|
|
RTRUE
|
|
?CCL95: CALL NOT-HERE,LUGGAGE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SLEEP-GLOBAL-F
|
|
EQUAL? PRSA,V?DRESS \?CCL3
|
|
CALL META-LOC,SLEEP-OUTFIT
|
|
EQUAL? HERE,STACK \FALSE
|
|
CALL PERFORM,V?WEAR,SLEEP-OUTFIT
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSA,V?WALK-TO \FALSE
|
|
CALL PERFORM,V?FAINT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ROB,WHAT,THIEF,TELL?=0,N,X,TOLD?=0
|
|
FIRST? WHAT >X /?PRG2
|
|
?PRG2: ZERO? X /TRUE
|
|
NEXT? X >N /?BOGUS6
|
|
?BOGUS6: ZERO? N \?CND7
|
|
ZERO? TOLD? /?CND7
|
|
ZERO? TELL? /?CND7
|
|
PRINTI " and"
|
|
?CND7: SET 'TOLD?,TRUE-VALUE
|
|
ZERO? TELL? /?CND14
|
|
CALL PRINTT,X
|
|
ZERO? N /?PRG23
|
|
PRINTC 44
|
|
JUMP ?CND14
|
|
?PRG23: PRINTI ". "
|
|
?CND14: MOVE X,THIEF
|
|
SET 'X,N
|
|
JUMP ?PRG2
|
|
|
|
|
|
.FUNCT LIGHT-GLOBAL-F,P
|
|
CALL REMOTE-VERB?
|
|
ZERO? STACK \FALSE
|
|
EQUAL? PRSA,V?LAMP-OFF,V?LAMP-ON \FALSE
|
|
CALL CREEPY?,HERE
|
|
ZERO? STACK /?CCL8
|
|
CALL ACCESSIBLE?,LAMP
|
|
ZERO? STACK /?CCL11
|
|
CALL PERFORM,PRSA,LAMP
|
|
RTRUE
|
|
?CCL11: CALL NOT-HERE,LIGHT-GLOBAL
|
|
RSTACK
|
|
?CCL8: CALL OUTSIDE?,HERE
|
|
ZERO? STACK /?CCL13
|
|
PRINTR "You can't reach it from here."
|
|
?CCL13: EQUAL? PRSA,V?LAMP-ON \?CCL18
|
|
FSET? HERE,ONBIT \?CCL21
|
|
CALL ALREADY,LIGHT-GLOBAL,STR?64
|
|
RSTACK
|
|
?CCL21: FSET HERE,ONBIT
|
|
CALL OKAY,LIGHT-GLOBAL,STR?64
|
|
RSTACK
|
|
?CCL18: EQUAL? PRSA,V?LAMP-OFF \FALSE
|
|
FSET? HERE,ONBIT /?CCL26
|
|
CALL ALREADY,LIGHT-GLOBAL,STR?65
|
|
RSTACK
|
|
?CCL26: CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,PLAYER >P
|
|
ZERO? P /?CCL28
|
|
PRINTD P
|
|
PRINTR " says, ""Please don't leave us in the dark."""
|
|
?CCL28: FCLEAR HERE,ONBIT
|
|
CALL OKAY,LIGHT-GLOBAL,STR?65
|
|
RSTACK
|
|
|
|
|
|
.FUNCT HAUNTING-F
|
|
EQUAL? PRSA,V?PLAY,V?LAMP-ON \FALSE
|
|
CALL PERFORM,PRSA,COMPUTER
|
|
RTRUE
|
|
|
|
|
|
.FUNCT KEYHOLE-F,P,RM
|
|
CALL REMOTE-VERB?
|
|
ZERO? STACK /?CCL3
|
|
EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH \FALSE
|
|
?CCL3: CALL ADJ-USED?,FALSE-VALUE
|
|
ZERO? STACK /?CCL7
|
|
CALL ZMEMQ,HERE,CHAR-ROOM-TABLE
|
|
ZERO? STACK /?CCL10
|
|
GETPT HERE,P?OUT
|
|
GETB STACK,REXIT >RM
|
|
JUMP ?CND1
|
|
?CCL10: EQUAL? HERE,CORR-2 /?PRG15
|
|
EQUAL? HERE,WEST-HALL,GALLERY,EAST-HALL \?CCL12
|
|
?PRG15: PRINT YOU-DIDNT-SAY-W
|
|
PRINTI "hose "
|
|
PRINTD KEYHOLE
|
|
PRINTR "!]"
|
|
?CCL12: CALL NOT-HERE,KEYHOLE
|
|
RTRUE
|
|
?CCL7: CALL ADJ-USED?
|
|
CALL ZMEMQ,STACK,CHAR-POSS-TABLE >P
|
|
ZERO? P /?CND1
|
|
GET CHAR-ROOM-TABLE,P >RM
|
|
EQUAL? HERE,RM \?CCL21
|
|
GETPT HERE,P?OUT
|
|
GETB STACK,REXIT >RM
|
|
?CND1: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH /?CCL25
|
|
EQUAL? PRSA,V?LOOK-THROUGH,V?LOOK-INSIDE,V?EXAMINE \FALSE
|
|
?CCL25: EQUAL? JACK-ROOM,HERE,RM \?CCL30
|
|
EQUAL? VARIATION,LORD-C \?CCL30
|
|
PRINTI "You see a microphone with its wires leading toward the "
|
|
PRINTD CREST
|
|
PRINTR "."
|
|
?CCL21: GETPT RM,P?OUT
|
|
GETB STACK,REXIT
|
|
EQUAL? HERE,STACK /?CND1
|
|
CALL NOT-HERE,KEYHOLE
|
|
RTRUE
|
|
?CCL30: CALL ROOM-PEEK,RM,TRUE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT HANDS-F,P,A
|
|
CALL FIND-BODY,HANDS >P
|
|
ZERO? P /TRUE
|
|
CALL REMOTE-VERB?
|
|
ZERO? STACK \FALSE
|
|
EQUAL? PRSA,V?KISS \?CCL7
|
|
FSET? P,FEMALE \?CCL10
|
|
ZERO? GENDER-KNOWN /?CCL10
|
|
FSET? PLAYER,FEMALE /?CCL10
|
|
CALL PERFORM,V?HELLO,P
|
|
RTRUE
|
|
?CCL10: CALL PERFORM,V?KISS,P
|
|
RTRUE
|
|
?CCL7: EQUAL? PRSA,V?TAKE,V?SHAKE \FALSE
|
|
EQUAL? PRSO,HANDS \FALSE
|
|
ZERO? PRSI /?CND18
|
|
SET 'P,PRSI
|
|
?CND18: CALL PERFORM,V?HELLO,P
|
|
RTRUE
|
|
|
|
|
|
.FUNCT HEAD-F,P,P2
|
|
CALL FIND-BODY,HEAD >P
|
|
ZERO? P /TRUE
|
|
CALL REMOTE-VERB?
|
|
ZERO? STACK \FALSE
|
|
EQUAL? PRSA,V?NOD \?CCL7
|
|
CALL PERFORM,V?YES
|
|
RTRUE
|
|
?CCL7: EQUAL? PRSA,V?SHAKE \FALSE
|
|
CALL PERFORM,V?NO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT EYE-F,P,P2
|
|
CALL FIND-BODY,EYE >P
|
|
ZERO? P /TRUE
|
|
CALL REMOTE-VERB?
|
|
ZERO? STACK \FALSE
|
|
EQUAL? PRSA,V?OPEN \?CCL7
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?ALARM,P
|
|
RTRUE
|
|
?CCL7: EQUAL? PRSA,V?CLOSE \?CCL9
|
|
SET 'WINNER,P
|
|
CALL PERFORM,V?FAINT
|
|
RTRUE
|
|
?CCL9: EQUAL? PRSA,V?LOOK-INSIDE,V?FIND,V?EXAMINE \FALSE
|
|
EQUAL? P,PLAYER \?CCL14
|
|
FSET? HERE,WORNBIT /?CCL14
|
|
CALL NOT-HERE,MIRROR-GLOBAL
|
|
RSTACK
|
|
?CCL14: EQUAL? GHOST-NEW,P \?CCL18
|
|
CALL PERFORM,PRSA,GHOST-NEW
|
|
RTRUE
|
|
?CCL18: FSET? LENS,SEENBIT /?PRG37
|
|
FSET? P,MUNGBIT \?CCL24
|
|
CALL HE-SHE-IT,P,TRUE-VALUE
|
|
PRINTR " has closed eyes."
|
|
?CCL24: GETP P,P?CHARACTER
|
|
EQUAL? VARIATION,STACK \?CCL28
|
|
CALL HE-SHE-IT,P,TRUE-VALUE
|
|
PRINTR " turns away from you."
|
|
?CCL28: LESS? BED-TIME,PRESENT-TIME \?PRG35
|
|
CALL HE-SHE-IT,P,TRUE-VALUE,STR?84
|
|
PRINTR " sleepy."
|
|
?PRG35: CALL HE-SHE-IT,P,TRUE-VALUE,STR?218
|
|
PRINTR " at you."
|
|
?PRG37: CALL HE-SHE-IT,P,TRUE-VALUE,STR?1
|
|
EQUAL? P,DEALER \?PRG43
|
|
EQUAL? VARIATION,PAINTER-C \?PRG45
|
|
?PRG43: PRINTI " not"
|
|
?PRG45: PRINTI " wearing a "
|
|
PRINTD LENS
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT OTHER-OUTFIT-F,P,P2
|
|
CALL FIND-BODY,OTHER-OUTFIT >P
|
|
ZERO? P /TRUE
|
|
CALL REMOTE-VERB?
|
|
ZERO? STACK \FALSE
|
|
EQUAL? PRSA,V?LOOK-INSIDE,V?FIND,V?EXAMINE \?CCL7
|
|
EQUAL? GHOST-NEW,P \FALSE
|
|
CALL PERFORM,PRSA,GHOST-NEW
|
|
RTRUE
|
|
?CCL7: EQUAL? PRSA,V?TAKE-OFF,V?REMOVE,V?DISEMBARK \FALSE
|
|
CALL YOU-SHOULDNT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT FIND-BODY,OBJ,A,P
|
|
CALL ADJ-USED? >A
|
|
ZERO? A \?CCL3
|
|
PRINT I-ASSUME
|
|
PRINTC 32
|
|
EQUAL? PRSA,V?SEARCH-FOR,V?FIND,V?CLOSE /?CTR7
|
|
EQUAL? PRSA,V?SLAP /?PRD12
|
|
EQUAL? PRSA,V?MUNG,V?KILL,V?ATTACK \?CCL8
|
|
?PRD12: ZERO? NOW-PRSI /?CCL8
|
|
?CTR7: SET 'P,PLAYER
|
|
PRINTI "your"
|
|
JUMP ?CND6
|
|
?CCL8: EQUAL? PRSA,V?SHAKE \?PRD20
|
|
ZERO? PRSI /?PRD20
|
|
SET 'P,PRSI
|
|
FSET? P,PERSONBIT /?PRG25
|
|
?PRD20: CALL QCONTEXT-GOOD? >P
|
|
ZERO? P \?PRG25
|
|
CALL FIND-FLAG-HERE,PERSONBIT,PLAYER >P
|
|
ZERO? P /?CCL18
|
|
?PRG25: PRINTD P
|
|
PRINTI "'s"
|
|
JUMP ?CND6
|
|
?CCL18: SET 'P,PLAYER
|
|
PRINTI "your"
|
|
?CND6: GETP P,P?CHARACTER
|
|
ADD 1,STACK
|
|
GET CHAR-POSS-TABLE,STACK
|
|
PUT P-ADJW,NOW-PRSI,STACK
|
|
PRINTC 32
|
|
GET P-NAMW,NOW-PRSI >A
|
|
ZERO? A /?PRG34
|
|
PRINTB A
|
|
JUMP ?PRG36
|
|
?PRG34: PRINTD OBJ
|
|
?PRG36: PRINTI ".]"
|
|
CRLF
|
|
JUMP ?CND1
|
|
?CCL3: CALL ZMEMQ,A,CHAR-POSS-TABLE >P
|
|
ZERO? P /?CCL39
|
|
SUB P,1
|
|
GET CHARACTER-TABLE,STACK >P
|
|
JUMP ?CND1
|
|
?CCL39: EQUAL? A,W?HER \?CCL41
|
|
SET 'P,P-HER-OBJECT
|
|
JUMP ?CND1
|
|
?CCL41: EQUAL? A,W?HIS \?CND1
|
|
SET 'P,P-HIM-OBJECT
|
|
?CND1: ZERO? P \?CND43
|
|
CALL DONT-UNDERSTAND
|
|
RFALSE
|
|
?CND43: CALL THIS-IS-IT,P
|
|
CALL META-LOC,P
|
|
EQUAL? STACK,HERE /?CCL47
|
|
CALL NOT-HERE,P
|
|
RFALSE
|
|
?CCL47: CALL DIVESTMENT?,OBJ
|
|
ZERO? STACK /?CCL49
|
|
CALL HAR-HAR
|
|
RFALSE
|
|
?CCL49: RETURN P
|
|
|
|
|
|
.FUNCT PASSAGE-F,RM
|
|
CALL FIND-FLAG-LG,HERE,DOORBIT,SECRETBIT >RM
|
|
EQUAL? PRSA,V?WALK-TO,V?TAKE \?CCL3
|
|
CALL PERFORM,V?THROUGH,PRSO
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL5
|
|
ZERO? RM /?CCL5
|
|
CALL DO-INSTEAD-OF,RM,PASSAGE
|
|
RTRUE
|
|
?CCL5: FSET? HERE,SECRETBIT \?CCL9
|
|
CALL DO-INSTEAD-OF,HERE,PASSAGE
|
|
RTRUE
|
|
?CCL9: CALL REMOTE-VERB?
|
|
ZERO? STACK \FALSE
|
|
ZERO? RM /?CCL14
|
|
CALL DOOR-ROOM,HERE,RM >RM
|
|
ZERO? RM /?CCL14
|
|
FSET? RM,SEENBIT \?CCL14
|
|
CALL DO-INSTEAD-OF,RM,PASSAGE
|
|
RTRUE
|
|
?CCL14: CALL GENERIC-CLOSET,0 >RM
|
|
ZERO? RM /?CCL19
|
|
CALL DO-INSTEAD-OF,RM,PASSAGE
|
|
RTRUE
|
|
?CCL19: CALL NOT-HERE,PASSAGE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CORPSE-F
|
|
EQUAL? PRSA,V?FIND \FALSE
|
|
CALL WHO-KNOWS?,CORPSE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT UNDRESSED-F
|
|
CALL REMOTE-VERB?
|
|
ZERO? STACK \FALSE
|
|
EQUAL? PRSA,V?TAKE /FALSE
|
|
EQUAL? PRSA,V?LOOK-ON /?CTR6
|
|
EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE,V?SEARCH-FOR /?CTR6
|
|
EQUAL? PRSA,V?SEARCH,V?CLOSE,V?OPEN \?CCL7
|
|
?CTR6: CALL GLOBAL-IN?,DRESSING-TABLE-LG,HERE
|
|
ZERO? STACK /?CCL13
|
|
CALL DO-INSTEAD-OF,DRESSING-TABLE-LG,UNDRESSED
|
|
RTRUE
|
|
?CCL13: CALL NOT-HERE,DRESSING-TABLE-LG
|
|
RSTACK
|
|
?CCL7: CALL DONT-UNDERSTAND
|
|
RSTACK
|
|
|
|
|
|
.FUNCT ARTIFACT-F
|
|
ZERO? TREASURE-FOUND /?CCL3
|
|
CALL DO-INSTEAD-OF,TREASURE,ARTIFACT
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSA,V?TAKE-TO,V?SSHOW,V?SHOW /?CCL5
|
|
CALL REMOTE-VERB?
|
|
ZERO? STACK \FALSE
|
|
?CCL5: CALL NOT-FOUND,ARTIFACT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TIMES-UP
|
|
PRINTI "At first light, the police arrive and take over the investigation."
|
|
CRLF
|
|
CALL FINISH
|
|
RSTACK
|
|
|
|
.ENDI
|