restaurant/global.zap

248 lines
5.3 KiB
Plaintext

.FUNCT LOCAL-GLOBALS-F:ANY:0:0
CALL1 REMOTE-VERB?
ZERO? STACK \FALSE
CALL2 NOT-HERE,LOCAL-GLOBALS
RSTACK
.FUNCT FRUSTRATION-F:ANY:0:0
EQUAL? PRSA,V?ENJOY \FALSE
PRINT ZEN
CRLF
RTRUE
.FUNCT DO-INSTEAD-OF:ANY:2:2,OBJ1,OBJ2
EQUAL? PRSI,OBJ2 \?CCL3
ICALL PERFORM,PRSA,PRSO,OBJ1
RTRUE
?CCL3: EQUAL? PRSO,OBJ2 \?CCL5
ICALL PERFORM,PRSA,OBJ1,PRSI
RTRUE
?CCL5: CALL1 V-FOO
RSTACK
.FUNCT TURN-F:ANY:0:0
EQUAL? PRSA,V?USE \FALSE
ICALL PERFORM,V?WAIT-FOR,PRSO
RTRUE
.FUNCT IT-F:ANY:0:0
EQUAL? PRSI,IT \?PRD5
EQUAL? PRSA,V?TELL-ABOUT /?CCL3
EQUAL? PRSA,V?SEARCH-FOR,V?ASK-FOR,V?ASK-ABOUT /?CCL3
?PRD5: EQUAL? PRSO,IT \FALSE
EQUAL? PRSA,V?FIND,V?ASK-CONTEXT-FOR,V?ASK-CONTEXT-ABOUT \FALSE
?CCL3: PRINTR """I'm not sure what you're talking about."""
.FUNCT FLOOR-F:ANY:0:0,OBJ,N
EQUAL? PRSA,V?CLIMB-ON \?CCL3
CALL ALREADY,WINNER,STR?218
RSTACK
?CCL3: EQUAL? PRSA,V?THROW-AT,V?PUT \?CCL5
EQUAL? PRSI,FLOOR \?CCL5
MOVE PRSO,HERE
PRINTR "Okay."
?CCL5: EQUAL? PRSA,V?SEARCH-FOR /?CCL9
EQUAL? PRSA,V?SEARCH,V?LOOK-ON,V?EXAMINE \FALSE
?CCL9: ICALL2 START-SEARCH,OBJ
RTRUE
.FUNCT START-SEARCH:ANY:0:1,OBJ
PRINTI "Nothing suspicious meets your eye after a moment's scrutiny. Do you want to continue?"
CALL1 YES?
ZERO? STACK \?CCL3
ICALL1 OKAY
RTRUE
?CCL3: SET 'FOUND-IT,OBJ
SET 'FOUND-LOC,HERE
RANDOM 7
ICALL QUEUE,I-FOUND-IT,STACK
ICALL V-WAIT,8,FALSE-VALUE,TRUE-VALUE
RTRUE
.FUNCT I-FOUND-IT:ANY:0:1,GARG,OBJ
ZERO? IDEBUG \?CCL2
EQUAL? GARG,G-DEBUG \?CND1
?CCL2: PRINTI "[I-FOUND-IT:"
EQUAL? GARG,G-DEBUG /FALSE
?CND1: EQUAL? FOUND-LOC,HERE \FALSE
PRINT NOTHING-NEW
RETURN 2
.FUNCT YOU-F:ANY:0:0,X
EQUAL? WINNER,PLAYER /?CCL3
ICALL DO-INSTEAD-OF,WINNER,YOU
RTRUE
?CCL3: EQUAL? PRSA,V?ASK-ABOUT \?CCL5
EQUAL? PRSI,YOU \?CCL5
ICALL PERFORM,V?ASK-ABOUT,PRSO,PRSO
RTRUE
?CCL5: EQUAL? PRSA,V?THANK \FALSE
CALL1 QCONTEXT-GOOD? >X
ZERO? X /FALSE
ICALL PERFORM,V?THANK,X
RTRUE
.FUNCT WALL-F:ANY:0:0,OBJ
EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL3
CALL FIND-FLAG-LG,HERE,DOORBIT,SECRETBIT >OBJ
ZERO? OBJ /?CCL3
ICALL DO-INSTEAD-OF,OBJ,WALL
RTRUE
?CCL3: EQUAL? PRSA,V?KNOCK \FALSE
FSET? HERE,WEARBIT \?CTR9
CALL FIND-FLAG-LG,HERE,DOORBIT,SECRETBIT
ZERO? STACK /?CCL10
?CTR9: PRINTR "You hear a hollow sound."
?CCL10: PRINTR "Knocking on the walls reveals nothing unusual."
.FUNCT GLOBAL-HERE-F:ANY:0:0,OBJ,X
EQUAL? PRSA,V?WALK-TO,V?SMELL /?CTR2
EQUAL? PRSA,V?SIT,V?LIE,V?EXAMINE \?CCL3
?CTR2: ICALL DO-INSTEAD-OF,HERE,GLOBAL-HERE
RTRUE
?CCL3: EQUAL? PRSA,V?PUT-IN,V?PUT \?CCL7
CALL1 MORE-SPECIFIC
RSTACK
?CCL7: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH \FALSE
ZERO? PRSI /?CCL12
CALL2 META-LOC,PRSI
EQUAL? STACK,HERE \?CCL12
SET 'X,PRSI
JUMP ?CND10
?CCL12: FIRST? HERE >OBJ /?PRG16
?PRG16: ZERO? OBJ /?CND10
FSET? OBJ,SECRETBIT \?CCL22
SET 'X,OBJ
JUMP ?CND10
?CCL22: FSET? OBJ,PERSONBIT /?CCL24
FSET? OBJ,CONTBIT /?PRD27
FSET? OBJ,SURFACEBIT \?CCL24
?PRD27: CALL FIND-IN,OBJ,SECRETBIT >X
ZERO? X \?CTR23
CALL FIND-IN,OBJ,RMUNGBIT >X
ZERO? X /?CCL24
?CTR23: FSET OBJ,OPENBIT
?CND10: ICALL2 START-SEARCH,X
RTRUE
?CCL24: NEXT? OBJ >OBJ /?PRG16
JUMP ?PRG16
.FUNCT CHAIR-F:ANY:0:0
EQUAL? PRSA,V?BOARD,V?CLIMB-ON,V?SIT \?CCL3
CALL1 WONT-HELP
RSTACK
?CCL3: CALL1 RANDOM-PSEUDO
RSTACK
.FUNCT SLEEP-GLOBAL-F:ANY:0:0
EQUAL? PRSA,V?WALK-TO \FALSE
ICALL2 PERFORM,V?FAINT
RTRUE
.FUNCT ROB:ANY:2:3,WHAT,THIEF,TELL?,N,X,TOLD?
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? /?CND12
ICALL2 PRINT-THE,X
ZERO? N /?CCL16
PRINTC 44
JUMP ?CND12
?CCL16: PRINTI ". "
?CND12: MOVE X,THIEF
SET 'X,N
JUMP ?PRG2
.FUNCT LIGHT-GLOBAL-F:ANY:0:0,P
CALL1 REMOTE-VERB?
ZERO? STACK \FALSE
EQUAL? PRSA,V?LAMP-OFF,V?LAMP-ON \FALSE
CALL2 OUTSIDE?,HERE
ZERO? STACK /?CCL8
PRINTR "You can't reach it from here."
?CCL8: EQUAL? PRSA,V?LAMP-ON \?CCL11
FSET? HERE,ONBIT \?CCL14
CALL ALREADY,LIGHT-GLOBAL,STR?101
RSTACK
?CCL14: FSET HERE,ONBIT
CALL OKAY,LIGHT-GLOBAL,STR?101
RSTACK
?CCL11: EQUAL? PRSA,V?LAMP-OFF \FALSE
FSET? HERE,ONBIT /?CCL19
CALL ALREADY,LIGHT-GLOBAL,STR?102
RSTACK
?CCL19: CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,PLAYER >P
ZERO? P /?CCL21
PRINTD P
PRINTR " says, ""Please don't leave us in the dark."""
?CCL21: FCLEAR HERE,ONBIT
CALL OKAY,LIGHT-GLOBAL,STR?102
RSTACK
.FUNCT HANDS-F:ANY:1:1,ACTOR
EQUAL? PRSA,V?SHAKE \FALSE
CALL FIND-IN,HERE,PERSONBIT >ACTOR
ZERO? ACTOR /?CCL6
ICALL PERFORM,V?THANK,ACTOR
RTRUE
?CCL6: PRINTR "Pleased to meet you."
.FUNCT HEAD-F:ANY:0:0
EQUAL? PRSA,V?NOD \?CCL3
ICALL2 PERFORM,V?YES
RTRUE
?CCL3: EQUAL? PRSA,V?SHAKE \FALSE
ICALL2 PERFORM,V?NO
RTRUE
.FUNCT EYES-F:ANY:0:0
EQUAL? PRSA,V?OPEN \?CCL3
PRINTR "They are."
?CCL3: EQUAL? PRSA,V?CLOSE \FALSE
PRINTR "That won't help."
.FUNCT THIRD-PLANET-F:ANY:0:0
EQUAL? PRSA,V?DISEMBARK,V?LEAVE \?CCL3
PRINTR "You did!"
?CCL3: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "It is an utterly insignificant little blue-green planet, of the sort where they probably still wear digital watches."
.FUNCT OBJECT-OF-GAME-F:ANY:0:0
EQUAL? PRSA,V?TELL-ABOUT,V?TALK-ABOUT,V?ASK-ABOUT \FALSE
PRINTR "That's for me to know and you to find out."
.FUNCT SKY-F:ANY:0:0
CALL2 OUTSIDE?,HERE
ZERO? STACK \FALSE
CALL2 NOT-HERE,SKY
RSTACK
.ENDI