-
Notifications
You must be signed in to change notification settings - Fork 21
/
yuggoth.zil
317 lines (298 loc) · 9.51 KB
/
yuggoth.zil
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
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
"YUGGOTH for
The Lurking Horror
(c) Copyright 1986 Infocom, Inc. All Rights Reserved."
<ROUTINE I-YUGGOTH ()
<COND (<HERE? ,YUGGOTH>
<TELL CR
"From below, a low noise begins, and slowly builds. You feel yourself drawn
downward by the noise." CR CR>
<GOTO ,BOWL-ROOM>
<RFATAL>)
(<HERE? ,BOWL-ROOM>
<TELL CR
"The crowd around you begins to sway and groan. They are expecting
something. You are drawn forward by the noise." CR CR>
<GOTO ,PLATFORM-ROOM>
<RFATAL>)>>
<ROOM YUGGOTH
(IN ROOMS)
(DESC "Place")
(LDESC
"This is a place. Things move about on a broken, rocky surface.
Harsh sounds split the air. Something sticky grabs at your feet.
There is no color, everything is drained of brightness, dull and
lifeless. A path descends into a shallow bowl of black basalt.")
(DOWN TO BOWL-ROOM)
(FLAGS ONBIT)
(ACTION RANDOM-YUGGOTH-F)>
<ROUTINE RANDOM-YUGGOTH-F (RARG)
<COND (<RARG? ENTER>
%<IFSOUND
<SOUNDS ,S-DRONE ,S-START
<COND (<HERE? ,YUGGOTH> 2)
(ELSE 4)>>>
<QUEUE I-YUGGOTH 2>)>>
<ROOM BOWL-ROOM
(IN ROOMS)
(DESC "Basalt Bowl")
(LDESC
"You are at the bottom of a deeply cut, smooth basalt bowl. Dimly seen
shapes crowd you on all sides. Ahead, in the focus of the movement, is
a rock platform.")
(UP TO YUGGOTH)
(IN TO PLATFORM-ROOM)
(DOWN TO PLATFORM-ROOM)
(GLOBAL PLATFORM)
(FLAGS ONBIT)
(ACTION RANDOM-YUGGOTH-F)>
<ROOM PLATFORM-ROOM
(IN ROOMS)
(DESC "At Platform")
(LDESC
"You stand before a low rock platform, more like an afterthought of
piled rocks or a glacial moraine than a work of artifice. You are
pushed against the pile by the crowd around you.")
(FLAGS ONBIT)
(GLOBAL PLATFORM)
(ACTION PLATFORM-ROOM-F)>
<ROUTINE PLATFORM-ROOM-F (RARG)
<COND ;(<RARG? LOOK>
<TELL
CR>)
(<RARG? ENTER>
%<IFSOUND <SOUNDS ,S-DRONE ,S-START 6>>)
(<RARG? BEG>
<COND (<VERB? WALK>
<COND (<EQUAL? ,P-WALK-DIR ,P?UP>
<TELL
"You are prevented, as the crowd holds you back." CR>)
(ELSE
<TELL
"The crowding is such that you can barely move, much less walk." CR>)>)
(<P? LISTEN (<> NOISE)>
<TELL
"It sounds like supplication." CR>)
(<AND <P? SMELL <>>
<IN? ,LURKER ,HERE>>
<NEW-PRSO ,LURKER>
<RTRUE>)
(<OR <P? (DROP PUT THROW) SMOOTH-STONE>
<P? ATTACK * SMOOTH-STONE>>
<TELL
"You can't. You go through the motions, but the stone doesn't leave your
hand." CR>)>)>>
<OBJECT PLATFORM
(IN LOCAL-GLOBALS)
(DESC "platform")
(SYNONYM PLATFORM ROCKS PILE)
(ADJECTIVE BASALT)
(FLAGS NDESCBIT VEHBIT SURFACEBIT)
(ACTION PLATFORM-F)>
<ROUTINE PLATFORM-F ()
<COND (<VERB? WALK-TO THROUGH BOARD>
<COND (<HERE? ,BOWL-ROOM>
<DO-WALK ,P?IN>)
(ELSE
<DO-WALK ,P?UP>)>)
(<VERB? EXAMINE LOOK-UNDER LOOK-BEHIND>
<TELL
"The platform is made of the same rocks as the surrounding terrain.
In fact, you can't tell whether it is natural or constructed." CR>)>>
<OBJECT SMOOTH-STONE
(IN PLATFORM-ROOM)
(DESC "smooth stone")
(SYNONYM STONE)
(ADJECTIVE SMOOTH SHINY SMALL)
(FLAGS TAKEBIT SEARCHBIT OPENBIT CONTBIT WEAPONBIT)
(VALUE 5)
(DESCFCN SMOOTH-STONE-DESC)
(ACTION SMOOTH-STONE-F)>
<ROUTINE SMOOTH-STONE-DESC (RARG OBJ)
<COND (<RARG? OBJDESC?>
<COND (<NOT <FSET? ,SMOOTH-STONE ,TOUCHBIT>>
<RTRUE>)>)
(<NOT <FSET? ,SMOOTH-STONE ,TOUCHBIT>>
<COND (<HERE? ,INNER-LAIR>
<TELL
"The stone sits on a hummock of mud. From here it appears to have a crack
in it.">)
(ELSE
<TELL
"One small stone stands out in the pile, smooth, shiny, and glowing with a blazing
light.">)>)>>
<ROUTINE SMOOTH-STONE-F ()
<COND (<VERB? EXAMINE>
<TELL
"It's a ">
<COND (<AND <HERE? ,INNER-LAIR>
<NOT <FSET? ,SMOOTH-STONE ,TOUCHBIT>>>
<TELL "cracked">)
(ELSE
<TELL "smooth, shiny">)>
<TELL " piece of what might be obsidian. Scratched on it
is a symbol." CR>)
(<AND <VERB? TAKE>
<IN? ,PRSO ,HERE>>
<COND (<HERE? ,PLATFORM-ROOM>
<QUEUE I-COOL 20 T>
<QUEUE I-LURKER-APPEARS -1>
<RFALSE>)
(<AND <HERE? ,BROWN-ROOF ,INSIDE-DOME>
<IN? ,FLIER ,HERE>>
<TELL
"The noisome creature jabs at you with its razor beak, but appears
unwilling to approach the stone." CR>)
(<AND <HERE? ,INNER-LAIR>
<NOT <FSET? ,SMOOTH-STONE ,TOUCHBIT>>>
%<IFSOUND
<SOUNDS ,S-CRACK>>
<TELL
"You pick up the stone. It has a long jagged crack that almost breaks
it in half. As you pick it up, you feel it bump to one side. Then, as
you are holding it in your hand, something pushes its way out through
the crack, breaking the stone into two pieces. Something small, pale,
and damp blinks its watery eyes at you. It hisses, gaining strength,
and spreads membranous wings. ">
%<IFSOUND
<SOUNDS ,S-GHIDRA>>
<TELL "It takes to the air, at first clumsily, then
with increased assurance, and disappears into the gloom. One eerie
cry drifts back to where you stand." CR CR>
<TELL
"Something rises out of the mud, slowly straightening.
The hacker, mud-covered and weak, staggers
to his feet. \"Can I have my key back?\" he asks." CR>
<FINISH>)>)
(<VERB? DROP>
<COND (<IN? ,FLIER ,HERE>
<MOVE ,SMOOTH-STONE ,HERE>
<TELL
"The shape becomes agitated, screeching and cawing as it approaches the
stone." CR>)>)
(<AND <VERB? KICK MOVE RUB>
<NOT <HELD? ,PRSO>>
<IN? ,FLIER ,HERE>>
<TELL
,YOU-CANT "get close enough." CR>)
(<P? RUB SMOOTH-STONE>
<TELL
"The stone is smooth and ">
<COND (<NOT <ZERO? ,END-CNT>> <TELL "warm">)
(ELSE <TELL "cool">)>
<TELL "." CR>)
(<P? ATTACK * SMOOTH-STONE>
<COND (<PRSO? ,FLIER-SHAPE>
<MOVE ,SMOOTH-STONE ,HERE>
<TELL
"The stone crashes against the wall of the dome. The shape
screams, a hissing fit of anger and frustration." CR>)
(<PRSO? ,FLIER>
<TELL
"The stone hits the dark beast, and appears to go completely through
it as though the creature was made of air. ">
<COND (<HERE? ,INSIDE-DOME>
<MOVE ,SMOOTH-STONE ,HERE>
<MOVE ,FLIER ,BROWN-ROOF>
<QUEUE I-FLIER 3> ;"time to get outside"
<TELL
"The stone tumbles onto the floor. The creature, hissing vilely,
retreats." CR>)
(<HERE? ,BROWN-ROOF>
<OBJ-OFF-ROOF ,SMOOTH-STONE>)>)>)
(<VERB? OPEN>
<TELL-YUKS>)>>
<ROUTINE OBJ-OFF-ROOF (OBJ)
<MOVE .OBJ ,COURTYARD>
%<IFSOUND <SOUNDS ,S-DIE ,S-INIT>>
<TELL
CTHE .OBJ " disappears over the south edge of the building">
<COND (<IN? ,FLIER ,HERE>
%<IFSOUND <SOUNDS ,S-DIE>>
<TELL ", and the creature ">
<COND (<EQUAL? .OBJ ,SMOOTH-STONE>
<SCORE-OBJECT ,FLIER>
<MOVE ,FLIER ,GLOBAL-OBJECTS>
<TELL
"follows it, screaming frustration into the storm." CR>)
(ELSE
<TELL
"watches it fall with cunning attention." CR>)>)
(ELSE <TELL "." CR>)>>
<OBJECT STONE-SYMBOL
(IN SMOOTH-STONE)
(DESC "carved symbol")
(SYNONYM SYMBOL)
(ADJECTIVE STONE SCRATCH CARVED STRANGE INCOMPREHENSIBLE)
(FLAGS NDESCBIT)
(SIZE 0)
(GENERIC GENERIC-SYMBOL-F)
(ACTION STONE-SYMBOL-F)>
<ROUTINE STONE-SYMBOL-F ()
<COND (<VERB? EXAMINE READ>
<TELL
,SYMBOL-APPEARS "carved into the " 'SMOOTH-STONE ", perhaps with a claw. ">
<TELL-SYMBOL ,SMOOTH-STONE>
<CRLF>)
(<VERB? RUB>
<TELL
"The symbol is rough." CR>)>>
<GLOBAL YUGGOTH-COUNT 0>
<ROUTINE I-LURKER-APPEARS ()
<CRLF>
<COND (<EQUAL? <SETG YUGGOTH-COUNT <+ ,YUGGOTH-COUNT 1>> 1>
<MOVE ,LURKER ,HERE>
%<IFSOUND <SOUNDS ,S-DRONE ,S-START 8>>
<TELL
"Suddenly, the dimness becomes darkness, and the crowd around you explodes
with excitement. You are jostled and shoved from all sides. A low keening
begins, building into a deafening, almost mechanical chant. The darkness
before you compacts and deepens." CR>)
(<EQUAL? ,YUGGOTH-COUNT 2>
<TELL
"The darkness before you, now visible, is a creature. It towers over the
now-silent crowd. The thing jerks this way and that, spraying a foul
ichor. Its palps twitch expectantly, then pound impatiently against the
rock. You can feel the " 'SMOOTH-STONE " vibrating in your hand." CR>)
(<EQUAL? ,YUGGOTH-COUNT 3>
<TELL
"The thing now turns, sensing the presence of the stone. It quests almost
blindly for it, then those surrounding you thrust you forward. The thing
stoops, its mandibles grasping you. You are lifted towards its gaping
maw. The stench and the sounds issuing from it are overwhelming, and
you fall unconscious." CR CR>
<DEQUEUE I-LURKER-APPEARS>
%<IFSOUND <SOUNDS ,S-DRONE ,S-STOP>>
<COND (<IN? ,CHAIR ,TERMINAL-ROOM>
<MOVE ,CHAIR ,HERE>
<MOVE ,PLAYER ,CHAIR>)>
<MOVE ,ODD-PAPER ,GLOBAL-OBJECTS>
<GOTO ,TERMINAL-ROOM>
<ROB ,FROB ,PLAYER>
<RTRUE>)>>
<OBJECT LURKER
(DESC "thing")
(SYNONYM CREATURE THING DARKNESS DARK)
(ADJECTIVE VISIBLE)
(FLAGS NDESCBIT PERSON)
(GENERIC GENERIC-CREATURE-F)
(ACTION LURKER-F)>
<ROUTINE GENERIC-CREATURE-F ()
,LURKER>
<ROUTINE LURKER-F ()
<COND (<WINNER? ,LURKER>
<TELL
,NO-RESPONSE " You are not even sure that you produced any sound
when you spoke." CR>
<END-QUOTE>)
(<VERB? EXAMINE>
<COND (<G? ,YUGGOTH-COUNT 1>
<TELL
"It is large, smooth and yet scaly. It has too many limbs,
and they are not in the right places. To look at it gives you a
headache." CR>)
(ELSE
<TELL
"You see a visible darkness, in a shape not easily grasped." CR>)>)
(<VERB? SMELL>
<TELL
"The thing gives off a charnel stench." CR>)>>