restaurant/people.zap

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