summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/dat/uniques.des
blob: 038cbc2fe19f1463c9c90407d82e233ae48909d8 (plain) (blame)
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
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
################################################################################
# uniques.des: This is where unique placement should be defined.
################################################################################
# Most of this should be self-explanatory. A unique vault can be defined by
#
# NAME:   uniq_linley
# DEPTH:  D:1-27, !Orc
# WEIGHT: 10
# TAGS:   place_unique
# MONS:   Linley
# MAP
# 1
# ENDMAP
#
# This assumes that the unique is defined as a monster in the files
#   enum.h, mon-gear.cc, mon-data.h,  mon-spll.h, tilemcache.cc, tilepick.cc
# Their speech is defined in 
#   dat/database/monspeak.txt
#
# Vaults tagged as "place_unique" are assumed to place only one unique. If the 
# unique is in a band, specify "unique band", (see uniq_duvessa, etc). Names of
# vault don't matter, except for the Boris vault.
#
# For most purposes, a vault like the above sample is desired. You can use the
# inline function place_unique in this case, reducing to
#
# NAME:   uniq_linley
# DEPTH:  D:1-27, !Orc
# : place_unique(_G, "Linley")
#
# The WEIGHT line was skipped as 10 is the default.
# You have to deviate from this simple 3 liner only if
# * You want a more complicated map, e.g. with items or other monsters.
#   (Not needed for unique in bands: place_unique(_G, "Linley band") works.)
# * You want additional tags, for example because you want to make a number
#   of Linley vaults. In this case, you can still use the inline function;
#   just add a TAG line.
# * You want different WEIGHTS. In this case, just add a WEIGHT line.
#
# If you want to weight uniques differently for some vaults, the weights for
# these vaults should all add up to 10 (the default weight for uniques), 
# unless you want to make that unique appear more or less frequent on purpose.
# You can use multiple vaults that are tagged "uniq_<name>", with different 
# weights for each of the vaults. See uniq_ribbit for examples of all this.
#
# As a final caveat, you.branches[you.where_are_you].has_uniques is still
# checked before vaults are even considered; unique vaults with depths that
# could go in Lair should be specified !Lair, !Slime (unless you want them in 
# lair).
#
# You can define DEBUG_UNIQUE_PLACEMENT and get a per-level unique generation
# report in "unique_placement.log" in debug mode.
#
# NOTE: Does not deal with fixed-place uniques such as the Royal Jelly, the Hell
# bosses, and the Pan bosses.
################################################################################

{{
function place_unique(e, monster)
   e.mons(monster)
   e.tags("place_unique")
   e.map("1")
end
}}

################################################################################
# Dummy, these are used to weight uniques per branch.
################################################################################
NAME:   uniq_dummy
DEPTH:  1-50, !Lair, !Slime
WEIGHT: 20
TAGS:   place_unique dummy
MAP
.
ENDMAP

NAME:   uniq_dummy_lair
DEPTH:  Lair
WEIGHT: 80
TAGS:   place_unique dummy
MAP
.
ENDMAP

NAME:   uniq_dummy_slime
DEPTH:  Slime
WEIGHT: 200
TAGS:   place_unique dummy
MAP
.
ENDMAP

################################################################################
# General dungeon uniques:
################################################################################

NAME:   uniq_agnes
DEPTH:  12-18, !Lair, !Slime
: place_unique(_G, "Agnes")

NAME:   uniq_aizul
DEPTH:  14-20, !Lair, !Slime
: place_unique(_G, "Aizul")

NAME:   uniq_azrael
DEPTH:  14-16, 17-19, !Lair, !Slime, !Swamp, !Shoal
: place_unique(_G, "Azrael band")

NAME:   uniq_blork_the_orc
DEPTH:  4-7, 8-9, !Lair, !Slime
: place_unique(_G, "Blork the orc")

###############################################################################
# Do *not* change the name of this vault without changing the relevant section
# in monstuff.cc:monster_die. If wishing to alter Boris's weights by using
# multiple uniq_boris TAG'd maps, ensure that you add the relevant line to
# remove the tag in monstuff.cc:monster_die.
NAME:   uniq_boris
DEPTH:  20-27, !Lair, !Slime
: place_unique(_G, "Boris")

NAME:   uniq_donald
DEPTH:  10-13
: place_unique(_G, "Donald")

NAME:   uniq_duane
DEPTH:  17-19, 20-27, !Lair, !Slime
: place_unique(_G, "Duane")

NAME:   uniq_duvessa
DEPTH:  4-7, 8-9, !Lair, !Slime
: place_unique(_G, "Duvessa band")

NAME:   uniq_edmund
DEPTH:  4-7, 8-9, !Lair, !Slime
: place_unique(_G, "Edmund")

NAME:   uniq_erica
DEPTH:  10-13, 14-16
: place_unique(_G, "Erica")

NAME:   uniq_erolcha
DEPTH:  8-9, 10-13, !Lair, !Slime
: place_unique(_G, "Erolcha")

NAME:   uniq_eustachio
DEPTH:  10-13, 14-16, !Lair, !Slime
: place_unique(_G, "Eustachio")

NAME:   uniq_frances
DEPTH:  17-19, 20-27, !Lair, !Slime
: place_unique(_G, "Frances")

NAME:   uniq_francis
DEPTH:  17-19, 20-27, !Lair, !Slime
: place_unique(_G, "Francis")

NAME:   uniq_frederick
DEPTH:  20-27, !Lair, !Slime
: place_unique(_G, "Frederick")

NAME:   uniq_gastronok_1
DEPTH:  8-9, 10-13, !Lair, !Slime
TAGS:   uniq_gastronok
WEIGHT: 5
: place_unique(_G, "Gastronok")

NAME:   uniq_gastronok_2
DEPTH:  Lair:4-8
TAGS:   uniq_gastronok
WEIGHT: 15
: place_unique(_G, "Gastronok")

NAME:   uniq_grum
DEPTH:  8-9, 10-13, !Lair, !Slime
: place_unique(_G, "Grum band")

NAME:   uniq_harold
DEPTH:  10-13, 14-16, !Slime
: place_unique(_G, "Harold")

NAME:   uniq_iyjb
DEPTH:  1-3, 4-7
: place_unique(_G, "Ijyb")

NAME:   uniq_jessica
DEPTH:  1-3
: place_unique(_G, "Jessica")

NAME:   uniq_joseph
DEPTH:  10-13, !Slime
: place_unique(_G, "Joseph")

NAME:   uniq_josephine
DEPTH:  10-13, 14-16, !Lair, !Slime
: place_unique(_G, "Josephine band")

NAME:   uniq_jozef
DEPTH:  10-13, 14-16, !Slime
: place_unique(_G, "Jozef")

NAME:   uniq_kirke
DEPTH:  14-16, 17-19, !Lair, !Slime
: place_unique(_G, "Kirke band")

NAME:   uniq_louise
DEPTH:  14-16, 17-19, !Lair, !Slime
: place_unique(_G, "Louise")

NAME:   uniq_margery
DEPTH:  20-27, !Lair, !Slime
: place_unique(_G, "Margery band")

NAME:   uniq_maud
DEPTH:  14-16
: place_unique(_G, "Maud")

NAME:   uniq_mara
DEPTH:  18-25, !Lair, !Slime
: place_unique(_G, "Mara")

NAME:   uniq_maurice
DEPTH:  8-9, 10-13, !Lair, !Slime
: place_unique(_G, "Maurice")

NAME:   uniq_menkaure
DEPTH:  4-7
: place_unique(_G, "Menkaure")

NAME:   uniq_nergalle
DEPTH:  14-16, 17-19, Orc:3-4, !Lair, !Slime
: place_unique(_G, "Nergalle")

NAME:   uniq_nessos
DEPTH:  11-17, !Lair, !Slime
: place_unique(_G, "Nessos")

NAME:   uniq_nikola
DEPTH:  14-16, 17-19, !Lair, !Slime
: place_unique(_G, "Nikola")

NAME:   uniq_norbert
DEPTH:  10-13, 14-16, !Lair, !Slime
: place_unique(_G, "Norbert")

NAME:   uniq_norris
DEPTH:  17-19, !Lair, !Slime
: place_unique(_G, "Norris")

NAME:   uniq_pikel
DEPTH:  4-7, 8-9, !Lair, !Slime, !Orc
: place_unique(_G, "Pikel band")

NAME:   uniq_prince_ribbit1
DEPTH:  4-7, 8-9, !Lair
WEIGHT: 7
TAGS:   uniq_ribbit
: place_unique(_G, "Prince Ribbit")

NAME:   uniq_prince_ribbit2
DEPTH:  Lair:1-3
WEIGHT: 3
TAGS:   place_unique uniq_ribbit
MONS:   Prince Ribbit, blink frog band
MAP
12
ENDMAP

NAME:   uniq_psyche
DEPTH:  8-9, 10-13, !Lair, !Slime
: place_unique(_G, "Psyche")

NAME:   uniq_purgy
DEPTH:  3-4
WEIGHT: 1
: place_unique(_G, "Purgy")

NAME:   uniq_roxanne
DEPTH:  14-16, 17-19, !Lair, !Slime
TAGS:   place_unique
MONS:   Roxanne
MAP
...
.1.
...
ENDMAP

NAME:   uniq_rupert
DEPTH:  14-16, 17-19
: place_unique(_G, "Rupert")

NAME:   uniq_saint_roka
DEPTH:  17-19, 20-27, Orc:4, !Lair, !Slime
: place_unique(_G, "Saint Roka band")

NAME:   uniq_sigmund
DEPTH:  1-3, 4-7
: place_unique(_G, "Sigmund")

NAME:   uniq_snorg
DEPTH:  14-16, 17-19, !Lair, !Slime
: place_unique(_G, "Snorg")

NAME:   uniq_sonja
DEPTH:  10-13, 14-16, !Lair, !Slime
: place_unique(_G, "Sonja")

NAME:   uniq_terence
DEPTH:  1-3
: place_unique(_G, "Terence")

NAME:   uniq_urug
DEPTH:  10-13, 14-16, !Lair, !Slime
: place_unique(_G, "Urug")

NAME:   uniq_wayne
DEPTH:  17-19, 20-27, !Lair, !Slime
: place_unique(_G, "Wayne")

NAME:   uniq_xtahua
DEPTH:  20-27, !Lair, !Slime
: place_unique(_G, "Xtahua")


################################################################################
# Non-dungeon Uniques
################################################################################

NAME:   uniq_dissolution
DEPTH:  Slime:2-6
WEIGHT: 100
: place_unique(_G, "Dissolution")

NAME:   uniq_murray
DEPTH:  Hell
: place_unique(_G, "Murray")

NAME:   uniq_polyphemus
DEPTH:  Shoal:1-5
: place_unique(_G, "Polyphemus band")

NAME:   uniq_ilsuiw
DEPTH:  Shoal:1-5
: place_unique(_G, "Ilsuiw band")

NAME:   uniq_khufu
DEPTH:  Tomb, Crypt
: place_unique(_G, "Khufu band")

NAME:   uniq_tiamat
DEPTH:  Zot
: place_unique(_G, "Tiamat band")


###############################################################################
# Crazy Yiuf! Only in his cottage.
NAME:   uniq_crazy_yiuf_cottage
DEPTH:  D:2-7
TAGS:   place_unique no_monster_gen no_item_gen
MONS:   Crazy Yiuf
ITEM:   hammer
MAP
 xxxxxxxxxxxxxxxx
 xxtttttttxxtttxx
 xxtttttttttttttx
 ....t.tttccccctx
......t..tc...ctx
@....tttt....1ctx
....ttttttc..dctx
 xxtttttttccccctx
 xxtttttttttttttx
 xxxxxttttttttxxx
 xxxxxxxxxxxxxxxx
ENDMAP