-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathglobal.zap
247 lines (204 loc) · 5.26 KB
/
global.zap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
.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