550 lines
13 KiB
Plaintext
550 lines
13 KiB
Plaintext
|
|
|
|
.FUNCT PLAYER-F:ANY:0:1,ARG,L
|
|
EQUAL? ARG,M-WINNER /?CCL3
|
|
EQUAL? PRSO,PLAYER \?CCL6
|
|
EQUAL? PRSA,V?THANK,V?SORRY,V?HELLO \?CCL9
|
|
ICALL1 HAR-HAR
|
|
RTRUE
|
|
?CCL9: EQUAL? PRSA,V?ALARM \?CCL11
|
|
PRINT YOU-ARE
|
|
CRLF
|
|
RTRUE
|
|
?CCL11: EQUAL? PRSA,V?FIND \?CCL13
|
|
PRINTI "You're right here, "
|
|
ICALL1 TELL-LOCATION
|
|
CRLF
|
|
RTRUE
|
|
?CCL13: EQUAL? PRSA,V?FOLLOW \?CCL15
|
|
PRINTR "I'd like to, but like most computers I don't have legs."
|
|
?CCL15: EQUAL? PRSA,V?MUNG,V?KILL \?CCL17
|
|
ICALL2 JIGS-UP,STR?185
|
|
RTRUE
|
|
?CCL17: EQUAL? PRSA,V?LISTEN \?CCL20
|
|
PRINTR "Yes?"
|
|
?CCL20: EQUAL? PRSA,V?MOVE \?CCL22
|
|
ICALL1 V-WALK-AROUND
|
|
RTRUE
|
|
?CCL22: EQUAL? PRSA,V?PULL-TOGETHER \?CCL24
|
|
PRINT ZEN
|
|
CRLF
|
|
RTRUE
|
|
?CCL24: EQUAL? PRSA,V?SEARCH \?CCL26
|
|
ICALL1 V-INVENTORY
|
|
RTRUE
|
|
?CCL26: EQUAL? PRSA,V?TELL \FALSE
|
|
ICALL1 FUCKING-CLEAR
|
|
PRINTR "Talking to yourself is a sign of impending mental collapse."
|
|
?CCL6: EQUAL? PRSI,PLAYER \FALSE
|
|
EQUAL? PRSA,V?GIVE \FALSE
|
|
IN? PRSO,PLAYER \?CCL36
|
|
EQUAL? PRSO,BABEL-FISH /?CCL36
|
|
ICALL1 PRE-TAKE
|
|
RTRUE
|
|
?CCL36: ICALL PERFORM,V?TAKE,PRSO
|
|
RTRUE
|
|
?CCL3: ZERO? PRSI /?CCL40
|
|
EQUAL? PRSA,V?SEARCH-FOR /?CCL40
|
|
FSET? PRSI,SECRETBIT \?CCL40
|
|
FSET? PRSI,SEENBIT /?CCL40
|
|
ICALL2 NOT-FOUND,PRSI
|
|
RTRUE
|
|
?CCL40: ZERO? PRSO /?CCL46
|
|
EQUAL? PRSA,V?WALK,V?FIND /?CCL46
|
|
FSET? PRSO,SECRETBIT \?CCL46
|
|
FSET? PRSO,SEENBIT /?CCL46
|
|
ICALL2 NOT-FOUND,PRSO
|
|
RTRUE
|
|
?CCL46: LOC PLAYER >L
|
|
EQUAL? L,HERE /FALSE
|
|
ZERO? P-WALK-DIR /?CCL55
|
|
CALL1 TOO-BAD-SIT-HIDE
|
|
RSTACK
|
|
?CCL55: EQUAL? PRSO,FALSE-VALUE,ROOMS,L /FALSE
|
|
EQUAL? PRSA,V?FIND /?CTR58
|
|
EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH,V?WALK-TO \?CCL59
|
|
?CTR58: EQUAL? PRSO,SLEEP-GLOBAL /FALSE
|
|
CALL1 TOO-BAD-SIT-HIDE
|
|
RSTACK
|
|
?CCL59: CALL1 SPEAKING-VERB?
|
|
ZERO? STACK \FALSE
|
|
CALL1 GAME-VERB?
|
|
ZERO? STACK \FALSE
|
|
CALL1 REMOTE-VERB?
|
|
ZERO? STACK \FALSE
|
|
EQUAL? PRSA,V?SMILE /FALSE
|
|
EQUAL? PRSA,V?SHOOT,V?NOD,V?LOOK-ON /FALSE
|
|
EQUAL? PRSA,V?LISTEN,V?FAINT,V?AIM /FALSE
|
|
CALL2 HELD?,PRSO
|
|
ZERO? STACK \FALSE
|
|
CALL HELD?,PRSO,GLOBAL-OBJECTS
|
|
ZERO? STACK \FALSE
|
|
EQUAL? PRSA,V?EXAMINE /FALSE
|
|
CALL HELD?,PRSO,L
|
|
ZERO? STACK \?CCL83
|
|
CALL1 TOO-BAD-SIT-HIDE
|
|
RSTACK
|
|
?CCL83: ZERO? PRSI /FALSE
|
|
CALL2 HELD?,PRSI
|
|
ZERO? STACK \FALSE
|
|
CALL HELD?,PRSI,GLOBAL-OBJECTS
|
|
ZERO? STACK \FALSE
|
|
CALL HELD?,PRSI,L
|
|
ZERO? STACK \FALSE
|
|
CALL1 TOO-BAD-SIT-HIDE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TOO-BAD-SIT-HIDE:ANY:0:0
|
|
MOVE WINNER,HERE
|
|
ICALL2 FIRST-YOU,STR?186
|
|
RFALSE
|
|
|
|
|
|
.FUNCT FUCKING-CLEAR:ANY:0:0
|
|
SET 'P-CONT,FALSE-VALUE
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT MARVIN-F:ANY:0:1,ARG,OBJ,X
|
|
EQUAL? ARG,M-WINNER \?CCL3
|
|
CALL2 GRAB-ATTENTION,MARVIN
|
|
ZERO? STACK \?CCL6
|
|
RETURN 2
|
|
?CCL6: CALL2 COM-CHECK,MARVIN >X
|
|
ZERO? X /?CCL10
|
|
EQUAL? X,M-FATAL /FALSE
|
|
EQUAL? X,M-OTHER \TRUE
|
|
RETURN 2
|
|
?CCL10: ICALL1 FUCKING-CLEAR
|
|
PRINTR """I think you ought to know I'm feeling very depressed."""
|
|
?CCL3: CALL2 ASKING-ABOUT?,MARVIN >OBJ
|
|
ZERO? OBJ /?CCL19
|
|
CALL GRAB-ATTENTION,MARVIN,OBJ
|
|
ZERO? STACK \?CCL22
|
|
RETURN 2
|
|
?CCL22: EQUAL? OBJ,OBJECT-OF-GAME \?CCL26
|
|
PRINTR """Being clever doesn't always make you happy, you know. Look at me, brain the size of a planet, how many points do you think I've got? Minus thirty zillion at the last count."""
|
|
?CCL26: CALL COMMON-ASK-ABOUT,MARVIN,OBJ >X
|
|
ZERO? X /?CCL28
|
|
EQUAL? X,M-FATAL /FALSE
|
|
RTRUE
|
|
?CCL28: CALL TELL-DUNNO,MARVIN,OBJ
|
|
RSTACK
|
|
?CCL19: EQUAL? PRSA,V?SHAKE,V?ALARM \?CCL33
|
|
GETP MARVIN,P?LDESC
|
|
EQUAL? STACK,14 \?CCL33
|
|
PRINTR "Rather like trying to wake the dead."
|
|
?CCL33: CALL PERSON-F,MARVIN,ARG
|
|
RSTACK
|
|
|
|
|
|
.FUNCT ASKING-ABOUT?:ANY:1:1,WHO,DR
|
|
EQUAL? PRSA,V?SHOW,V?ASK-ABOUT \FALSE
|
|
EQUAL? WHO,PRSO \FALSE
|
|
RETURN PRSI
|
|
|
|
|
|
.FUNCT FORD-F:ANY:0:1,ARG,OBJ,X
|
|
EQUAL? ARG,M-WINNER \?CCL3
|
|
CALL2 GRAB-ATTENTION,FORD
|
|
ZERO? STACK \?CCL6
|
|
RETURN 2
|
|
?CCL6: CALL2 COM-CHECK,FORD >X
|
|
ZERO? X /?CCL10
|
|
EQUAL? X,M-FATAL /FALSE
|
|
EQUAL? X,M-OTHER \TRUE
|
|
RETURN 2
|
|
?CCL10: ICALL1 FUCKING-CLEAR
|
|
PRINTI "Ford, busy scanning the sky"
|
|
EQUAL? HERE,PUB \?CND18
|
|
PRINTI " through the window"
|
|
?CND18: PRINTR ", ignores you."
|
|
?CCL3: CALL2 ASKING-ABOUT?,FORD >OBJ
|
|
ZERO? OBJ /?CCL21
|
|
CALL GRAB-ATTENTION,FORD,OBJ
|
|
ZERO? STACK \?CCL24
|
|
RETURN 2
|
|
?CCL24: EQUAL? OBJ,THIRD-PLANET \?CCL28
|
|
PRINTR "Ford explains that the Earth has been demolished. To cheer you up, he points out that there are an awful lot of little planets like that around, and the Earth wasn't even a particularly nice one."
|
|
?CCL28: CALL COMMON-ASK-ABOUT,FORD,OBJ >X
|
|
ZERO? X /?CCL30
|
|
EQUAL? X,M-FATAL /FALSE
|
|
RTRUE
|
|
?CCL30: CALL TELL-DUNNO,FORD,OBJ
|
|
RSTACK
|
|
?CCL21: EQUAL? PRSA,V?SHAKE,V?ALARM \?CCL35
|
|
GETP FORD,P?LDESC
|
|
EQUAL? STACK,14 \?CCL35
|
|
PRINTR "Rather like trying to wake the dead."
|
|
?CCL35: CALL PERSON-F,FORD,ARG
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-DUNNO:ANY:2:2,PER,OBJ
|
|
PRINTR """You know as much as I do."""
|
|
|
|
|
|
.FUNCT ZAPHOD-F:ANY:0:1,ARG,OBJ,X
|
|
EQUAL? ARG,M-WINNER \?CCL3
|
|
CALL2 GRAB-ATTENTION,ZAPHOD
|
|
ZERO? STACK \?CCL6
|
|
RETURN 2
|
|
?CCL6: CALL2 COM-CHECK,ZAPHOD >X
|
|
ZERO? X /?CCL10
|
|
EQUAL? X,M-FATAL /FALSE
|
|
EQUAL? X,M-OTHER \TRUE
|
|
RETURN 2
|
|
?CCL10: ICALL1 FUCKING-CLEAR
|
|
PRINTR """Shut up, Earthman."""
|
|
?CCL3: CALL2 ASKING-ABOUT?,ZAPHOD >OBJ
|
|
ZERO? OBJ /?CCL19
|
|
CALL GRAB-ATTENTION,ZAPHOD,OBJ
|
|
ZERO? STACK \?CCL22
|
|
RETURN 2
|
|
?CCL22: CALL COMMON-ASK-ABOUT,ZAPHOD,OBJ >X
|
|
ZERO? X /?CCL26
|
|
EQUAL? X,M-FATAL /FALSE
|
|
RTRUE
|
|
?CCL26: CALL TELL-DUNNO,ZAPHOD,OBJ
|
|
RSTACK
|
|
?CCL19: EQUAL? PRSA,V?EXAMINE \?CCL31
|
|
PRINTR "Zaphod has two heads."
|
|
?CCL31: CALL PERSON-F,ZAPHOD,ARG
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TRILLIAN-F:ANY:0:1,ARG,OBJ,X
|
|
EQUAL? ARG,M-WINNER \?CCL3
|
|
CALL2 GRAB-ATTENTION,TRILLIAN
|
|
ZERO? STACK \?CCL6
|
|
RETURN 2
|
|
?CCL6: CALL2 COM-CHECK,TRILLIAN >X
|
|
ZERO? X /?CCL10
|
|
EQUAL? X,M-FATAL /FALSE
|
|
EQUAL? X,M-OTHER \TRUE
|
|
RETURN 2
|
|
?CCL10: ICALL1 FUCKING-CLEAR
|
|
PRINTD TRILLIAN
|
|
PRINTR " smiles disinterestedly at you and looks away."
|
|
?CCL3: CALL2 ASKING-ABOUT?,TRILLIAN >OBJ
|
|
ZERO? OBJ /?CCL19
|
|
CALL GRAB-ATTENTION,TRILLIAN,OBJ
|
|
ZERO? STACK \?CCL22
|
|
RETURN 2
|
|
?CCL22: CALL COMMON-ASK-ABOUT,TRILLIAN,OBJ >X
|
|
ZERO? X /?CCL26
|
|
EQUAL? X,M-FATAL /FALSE
|
|
RTRUE
|
|
?CCL26: CALL TELL-DUNNO,TRILLIAN,OBJ
|
|
RSTACK
|
|
?CCL19: CALL PERSON-F,TRILLIAN,ARG
|
|
RSTACK
|
|
|
|
|
|
.FUNCT MARVIN-D:ANY:0:1,ARG
|
|
ICALL2 DESCRIBE-PERSON,MARVIN
|
|
RTRUE
|
|
|
|
|
|
.FUNCT FORD-D:ANY:0:1,X
|
|
GETP FORD,P?LDESC
|
|
EQUAL? STACK,14 \?CCL3
|
|
PRINTR "Ford is in the corner, snoring loudly."
|
|
?CCL3: ICALL2 DESCRIBE-PERSON,FORD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ZAPHOD-D:ANY:0:1,ARG
|
|
ICALL2 DESCRIBE-PERSON,ZAPHOD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TRILLIAN-D:ANY:0:1,ARG
|
|
ICALL2 DESCRIBE-PERSON,TRILLIAN
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DESCRIBE-PERSON:ANY:1:1,PER,STR
|
|
GETP PER,P?LDESC >STR
|
|
ZERO? STR /?CND1
|
|
GETP PER,P?CHARACTER
|
|
PUT TOUCHED-LDESCS,STACK,STR
|
|
RFALSE
|
|
?CND1: ICALL2 START-SENTENCE,PER
|
|
PRINTI " is "
|
|
GETPT PER,P?WEST >STR
|
|
ZERO? STR /?CCL6
|
|
GET STR,NEXITSTR >STR
|
|
ZERO? STR /?CCL6
|
|
PRINT STR
|
|
JUMP ?CND4
|
|
?CCL6: PRINTI "looking bored"
|
|
?CND4: PRINTC 46
|
|
EQUAL? STR,6 \?CCL11
|
|
PRINTC 32
|
|
RTRUE
|
|
?CCL11: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PERSON-F:ANY:2:2,PER,ARG,OBJ,X,L,C,N
|
|
LOC PER >L
|
|
GETP PER,P?CHARACTER >C
|
|
EQUAL? PRSA,V?SHAKE,V?ALARM \?CCL3
|
|
EQUAL? PRSO,PER \FALSE
|
|
CALL UNSNOOZE,PER,TRUE-VALUE
|
|
ZERO? STACK /?CCL9
|
|
ICALL HE-SHE-IT,PER,1
|
|
PRINTR " gasps to see you so close!"
|
|
?CCL9: ICALL HE-SHE-IT,PER,1,STR?61
|
|
PRINTI " still "
|
|
GETP PER,P?LDESC >X
|
|
ZERO? X /?CCL12
|
|
GET LDESC-STRINGS,X
|
|
PRINT STACK
|
|
JUMP ?CND10
|
|
?CCL12: GETPT PER,P?WEST >X
|
|
ZERO? X /?CND10
|
|
GET X,NEXITSTR
|
|
PRINT STACK
|
|
?CND10: PRINTR "."
|
|
?CCL3: EQUAL? PRSA,V?GIVE \?CCL15
|
|
EQUAL? PRSI,PER \FALSE
|
|
CALL2 HELD?,PRSO
|
|
ZERO? STACK /FALSE
|
|
CALL2 GRAB-ATTENTION,PER
|
|
ZERO? STACK \FALSE
|
|
RETURN 2
|
|
?CCL15: EQUAL? PRSA,V?LAMP-OFF \?CCL26
|
|
GETP PER,P?LINE
|
|
ZERO? STACK /?CCL29
|
|
PRINTR "Seems you've already done that."
|
|
?CCL29: CALL1 WONT-HELP
|
|
RSTACK
|
|
?CCL26: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH,V?MUNG \?CCL31
|
|
EQUAL? PER,PRSO \FALSE
|
|
FSET? PER,PERSONBIT \FALSE
|
|
FSET? PER,MUNGBIT /FALSE
|
|
GETP PER,P?LINE
|
|
ADD 1,STACK
|
|
PUTP PER,P?LINE,STACK
|
|
GETP PER,P?LDESC
|
|
EQUAL? STACK,4 /?CND38
|
|
PUTP PER,P?LDESC,20
|
|
?CND38: ICALL HE-SHE-IT,PER,1
|
|
PRINTR " pushes you away and mutters, ""I don't think that's called for."""
|
|
?CCL31: EQUAL? PRSA,V?SHOW \?CCL41
|
|
EQUAL? PER,PRSO \FALSE
|
|
CALL2 GRAB-ATTENTION,PER
|
|
ZERO? STACK \?CCL47
|
|
RETURN 2
|
|
?CCL47: ICALL PERFORM,V?TELL-ABOUT,PRSO,PRSI
|
|
RTRUE
|
|
?CCL41: EQUAL? PRSA,V?SMILE \?CCL52
|
|
EQUAL? PER,PRSO \FALSE
|
|
CALL2 GRAB-ATTENTION,PER
|
|
ZERO? STACK \?CCL58
|
|
RETURN 2
|
|
?CCL58: ICALL HE-SHE-IT,PRSO,1,STR?217
|
|
PRINTR " back at you."
|
|
?CCL52: EQUAL? PRSA,V?TELL-ABOUT \?CCL62
|
|
EQUAL? PER,PRSO \FALSE
|
|
CALL2 GRAB-ATTENTION,PER
|
|
ZERO? STACK \?CND66
|
|
RETURN 2
|
|
?CND66: PUTP PER,P?LDESC,12
|
|
PRINTR """I don't know what you mean."""
|
|
?CCL62: EQUAL? PRSA,V?THROW-AT \?CCL71
|
|
EQUAL? PER,PRSI \FALSE
|
|
FSET? PER,PERSONBIT \FALSE
|
|
FSET? PER,MUNGBIT /FALSE
|
|
MOVE PRSO,PRSI
|
|
ICALL HE-SHE-IT,PER,1
|
|
PRINTI " catches"
|
|
ICALL2 PRINT-THE,PRSO
|
|
PRINTI " with"
|
|
ICALL HIM-HER-IT,PER,0,TRUE-VALUE
|
|
PRINTC 32
|
|
PRINTI "righ"
|
|
PRINTR "t hand."
|
|
?CCL71: CALL2 COMMON-OTHER,PER
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CARRY-CHECK:ANY:1:1,PER
|
|
FIRST? PER \FALSE
|
|
ICALL HE-SHE-IT,PER,1,STR?61
|
|
PRINTI " holding"
|
|
ICALL2 PRINT-CONTENTS,PER
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT TRANSIT-TEST:ANY:1:1,PER
|
|
EQUAL? PRSA,V?WALK-TO,V?WALK,V?THROUGH /TRUE
|
|
EQUAL? PRSA,V?TAKE-TO,V?LEAVE,V?DISEMBARK /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT COM-CHECK:ANY:1:1,PER,N
|
|
GETP PER,P?LINE >N
|
|
EQUAL? PRSA,V?$CALL \?CCL3
|
|
ICALL1 DONT-UNDERSTAND
|
|
RETURN M-OTHER
|
|
?CCL3: CALL2 TRANSIT-TEST,PER
|
|
ZERO? STACK /?CCL5
|
|
RETURN 2
|
|
?CCL5: EQUAL? PRSA,V?SORRY,V?HELLO,V?ALARM \?CCL9
|
|
EQUAL? PRSO,ROOMS /?CTR11
|
|
EQUAL? PRSO,PER \FALSE
|
|
?CTR11: SET 'WINNER,PLAYER
|
|
ICALL PERFORM,PRSA,PER
|
|
RTRUE
|
|
?CCL9: LESS? 0,N \?CCL16
|
|
PRINTI """I'm too "
|
|
EQUAL? N,1 \?CCL19
|
|
PRINTI "peeved"
|
|
JUMP ?CND17
|
|
?CCL19: PRINTI "angry"
|
|
?CND17: PRINTR " with you now."""
|
|
?CCL16: EQUAL? PRSA,V?YES,V?THANK,V?NO \?CCL21
|
|
RETURN 2
|
|
?CCL21: EQUAL? PRSA,V?WALK-TO,V?FOLLOW \?CCL25
|
|
EQUAL? PRSA,V?WALK-TO \?CCL28
|
|
EQUAL? PRSO,SLEEP-GLOBAL \?CCL28
|
|
RETURN 2
|
|
?CCL28: PRINTR """I will go where I please, thank you very much."""
|
|
?CCL25: EQUAL? PRSA,V?INVENTORY \?CCL34
|
|
CALL2 CARRY-CHECK,PER
|
|
ZERO? STACK \TRUE
|
|
ICALL HE-SHE-IT,PER,1,STR?61
|
|
PRINTR "n't holding anything."
|
|
?CCL34: EQUAL? PRSA,V?LISTEN \?CCL38
|
|
EQUAL? PRSO,PLAYER /?CTR40
|
|
IN? PRSO,GLOBAL-OBJECTS /FALSE
|
|
?CTR40: PRINTR """I'm trying to!"""
|
|
?CCL38: EQUAL? PRSA,V?RUB \?CND1
|
|
ICALL1 FACE-RED
|
|
RTRUE
|
|
?CND1: EQUAL? PRSA,V?WALK \?CCL47
|
|
EQUAL? PRSO,P?OUT \?CCL47
|
|
RETURN 2
|
|
?CCL47: EQUAL? PRSA,V?KISS \?CCL54
|
|
ICALL2 UNSNOOZE,PER
|
|
PRINTR """I really don't think this is the proper time or place."""
|
|
?CCL54: EQUAL? PRSA,V?TAKE \?CCL56
|
|
IN? PRSO,PLAYER \FALSE
|
|
SET 'WINNER,PLAYER
|
|
ICALL PERFORM,V?GIVE,PRSO,PER
|
|
RTRUE
|
|
?CCL56: EQUAL? PRSA,V?READ,V?LOOK-INSIDE,V?EXAMINE \?CCL61
|
|
IN? PRSO,PLAYER \FALSE
|
|
SET 'WINNER,PLAYER
|
|
ICALL PERFORM,V?SHOW,PER,PRSO
|
|
RTRUE
|
|
?CCL61: EQUAL? PRSA,V?THROW-AT,V?GIVE \?CCL66
|
|
FSET? PRSI,PERSONBIT \?CCL66
|
|
SET 'WINNER,PRSI
|
|
ICALL PERFORM,V?ASK-FOR,PER,PRSO
|
|
RTRUE
|
|
?CCL66: EQUAL? PRSA,V?SGIVE \?CCL70
|
|
FSET? PRSO,PERSONBIT \?CCL70
|
|
SET 'WINNER,PRSO
|
|
ICALL PERFORM,V?ASK-FOR,PER,PRSI
|
|
RTRUE
|
|
?CCL70: EQUAL? PRSA,V?HELP \?CCL74
|
|
EQUAL? PRSO,FALSE-VALUE,PLAYER \?PRG78
|
|
SET 'WINNER,PLAYER
|
|
ICALL PERFORM,V?ASK,PER
|
|
RTRUE
|
|
?PRG78: RETURN 2
|
|
?CCL74: EQUAL? PRSA,V?SSHOW,V?SHOW,V?FIND \?CCL81
|
|
EQUAL? PRSA,V?SHOW \?CND82
|
|
SET 'PRSA,V?SSHOW
|
|
SET 'N,PRSI
|
|
SET 'PRSI,PRSO
|
|
SET 'PRSO,N
|
|
?CND82: IN? PRSO,ROOMS \?CCL86
|
|
SET 'WINNER,PLAYER
|
|
ICALL PERFORM,V?WALK-TO,PRSO
|
|
RTRUE
|
|
?CCL86: IN? PRSO,PER \?CCL88
|
|
CALL1 ITAKE
|
|
EQUAL? STACK,TRUE-VALUE \TRUE
|
|
ICALL HE-SHE-IT,PER,1
|
|
PRINTI " fumbles in"
|
|
ICALL HIM-HER-IT,PER,0,TRUE-VALUE
|
|
PRINTI " pocket and produces"
|
|
ICALL2 HIM-HER-IT,PRSO
|
|
PRINTR "."
|
|
?CCL88: EQUAL? PRSA,V?FIND \FALSE
|
|
RETURN 2
|
|
?CCL81: EQUAL? PRSA,V?TELL \?CCL96
|
|
EQUAL? PRSO,PLAYER \FALSE
|
|
SET 'WINNER,PLAYER
|
|
ICALL PERFORM,V?ASK,PER
|
|
RTRUE
|
|
?CCL96: EQUAL? PRSA,V?TELL-ABOUT \?CCL101
|
|
FSET? PRSO,PERSONBIT \FALSE
|
|
SET 'WINNER,PLAYER
|
|
ICALL PERFORM,V?ASK-ABOUT,PER,PRSI
|
|
RTRUE
|
|
?CCL101: EQUAL? PRSA,V?WAIT-FOR,V?STOP \?CCL106
|
|
EQUAL? PRSO,ROOMS /?CCL109
|
|
EQUAL? PRSO,PLAYER,GLOBAL-HERE,HERE \FALSE
|
|
?CCL109: EQUAL? PER,FOLLOWER \?CCL114
|
|
SET 'FOLLOWER,0
|
|
PRINTR """As you wish."""
|
|
?CCL114: SET 'WINNER,PLAYER
|
|
ICALL PERFORM,V?$CALL,PER
|
|
RTRUE
|
|
?CCL106: EQUAL? PRSA,V?TALK-ABOUT \FALSE
|
|
SET 'WINNER,PLAYER
|
|
ICALL PERFORM,V?ASK-ABOUT,PER,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT COMMON-ASK-ABOUT:ANY:2:2,PER,OBJ
|
|
EQUAL? OBJ,PER \?CCL3
|
|
PRINTR """I have no secrets. Anyone can see what I am."""
|
|
?CCL3: EQUAL? OBJ,PLAYER \?CCL5
|
|
PRINTR """You're Arthur Dent, the next-to-last Earthling."""
|
|
?CCL5: FSET? OBJ,PERSONBIT /FALSE
|
|
EQUAL? OBJ,OBJECT-OF-GAME \?CCL9
|
|
PRINTR """Oh...you're trying to figure that out also? The manual's not much help, is it? By the way, do you know your score? I don't. My computer doesn't have a status line."""
|
|
?CCL9: IN? OBJ,PER \FALSE
|
|
PRINTR """I have it right here."""
|
|
|
|
|
|
.FUNCT COMMON-OTHER:ANY:1:1,PER,X,N
|
|
EQUAL? PRSA,V?ASK /FALSE
|
|
EQUAL? PRSA,V?EXAMINE \?CCL5
|
|
GETP PER,P?TEXT
|
|
PRINT STACK
|
|
CRLF
|
|
IN? PER,HERE \?CND6
|
|
FIRST? PER >N \?CND6
|
|
FSET? N,NDESCBIT /?CND6
|
|
CALL2 CARRY-CHECK,PER
|
|
ZERO? STACK /?CND6
|
|
SET 'X,TRUE-VALUE
|
|
?CND6: FSET? PER,MUNGBIT \TRUE
|
|
ZERO? X /?CND15
|
|
PRINTI "And"
|
|
?CND15: ZERO? X /?PRT17
|
|
PUSH 0
|
|
JUMP ?PRE19
|
|
?PRT17: PUSH 1
|
|
?PRE19: ICALL HE-SHE-IT,PER,STACK,STR?61
|
|
PRINTC 32
|
|
GETP PER,P?LDESC
|
|
GET LDESC-STRINGS,STACK
|
|
PRINT STACK
|
|
PRINTR "."
|
|
?CCL5: EQUAL? PRSO,PER \FALSE
|
|
EQUAL? PRSA,V?SHOW \FALSE
|
|
ICALL PERFORM,V?ASK-ABOUT,PRSO,PRSI
|
|
RTRUE
|
|
|
|
.ENDI
|