Ziggurat set / pillar tweaks
[crawl.git] / crawl-ref / source / dat / des / portals / ziggurat.des
1 ###############################################################################
2 # ziggurat.des - Ziggurat entry vaults and ziggurat layouts.
3 ###############################################################################
4
5 # Most ziggurat code is in ziggurat.lua.
6 # XXX: Ziggurat code is incomplete.
7
8 : require("dlua/ziggurat.lua")
9
10 ### Entry vaults to ziggurats ##########################################
11 #
12 # There is one Ziggurat in Depths.
13 # Otherwise, you need to search Pan, with 8% chance per level.
14
15 default-depth: Depths
16
17 # In case there is an encompass vault on the level.
18 NAME:   ziggurat_fallback
19 TAGS:   zig_entry
20 KFEAT:  O = enter_ziggurat
21 TAGS:   overwrite_floor_cell no_exits transparent
22 WEIGHT: 1
23 MAP
24 O
25 ENDMAP
26
27 NAME:   enter_ziggurat_a
28 TAGS:   zig_entry transparent
29 KFEAT:  O = enter_ziggurat
30 COLOUR: ; : cyan / lightblue
31 COLOUR: ' = blue
32 FTILE:  ; = floor_hall
33 SUBST:  ' = .
34 SUBST:  ; = .
35 MAP
36 .......
37 .;;;;;.
38 .;''';.
39 .;'O';.
40 .;''';.
41 .;;;;;.
42 .......
43 ENDMAP
44
45 NAME:    enter_ziggurat_b
46 TAGS:    zig_entry transparent
47 KMASK:   O = opaque
48 KFEAT:   O = enter_ziggurat
49 TAGS:    no_pool_fixup
50 SHUFFLE: wW' / l;_
51 COLOUR:  ; = red
52 COLOUR:  _ : blue / lightred
53 COLOUR:  ' = cyan
54 FTILE:   ' = floor_hall, _ = floor_hall, ; = floor_hall, O = floor_hall
55 SUBST:   '=. , ;=. , _=.
56 MAP
57    ..'..
58   ..'W'..
59  ..'WwW'..
60 ..'WwwwW'..
61 .'WwwOwwW'.
62 ..'WwwwW'..
63  ..'WwW'..
64   ..'W'..
65    ..'..
66 ENDMAP
67
68 NAME:    enter_ziggurat_c
69 TAGS:    zig_entry no_trap_gen transparent
70 KFEAT:   O = enter_ziggurat
71 MONS:    lich / ancient lich
72 MONS:    angel / daeva
73 MONS:    eye of draining / eye of devastation / giant eyeball / \
74          great orb of eyes / shining eye
75 KPROP:   1Om = no_rtele_into
76 SHUFFLE: 123x
77 SUBST:   1=1___, 2=2_, x=_
78 KMASK:   O123_ = opaque
79 KFEAT:   _ = floor
80 KFEAT:   m = iron_grate
81 MAP
82     ...
83    ..m..
84   ..mmm..
85  ..mm1mm..
86 ..mm1O1mm..
87  ..mm1mm..
88   ..mmm..
89    ..m..
90     ...
91 ENDMAP
92
93 NAME:    enter_ziggurat_d
94 TAGS:    zig_entry no_trap_gen transparent
95 KFEAT:   O = enter_ziggurat
96 MONS:    lich / ancient lich
97 MONS:    angel / daeva
98 MONS:    eye of draining / eye of devastation / giant eyeball / \
99          great orb of eyes / shining eye
100 KPROP:   1On; = no_rtele_into
101 SHUFFLE: 123x
102 SUBST:   1=1___, 2=2_, x=_
103 SUBST:   ;=_
104 KFEAT:   n = iron_grate
105 KMASK:   O123_ = opaque
106 KFEAT:   _ = floor
107 MAP
108     ...
109    ..n..
110   .nnnnn.
111  ..n;1;n..
112 ..nn1O1nn..
113  ..n;1;n..
114   .nnnnn.
115    ..n..
116     ...
117 ENDMAP
118
119 NAME:   enter_ziggurat_e
120 TAGS:   zig_entry transparent
121 KFEAT:  O = enter_ziggurat
122 COLOUR: ; : cyan / lightblue
123 COLOUR: ' = blue
124 FTILE:  ; = floor_hall
125 SUBST:  ' = .
126 SUBST:  ; = .
127 MAP
128 .......
129 .;;;;;.
130 .;''';.
131 .;'O';.
132 .;''';.
133 .;;;;;.
134 .......
135 ENDMAP
136
137 NAME:   enter_ziggurat_f
138 TAGS:   zig_entry no_trap_gen transparent
139 KFEAT:  O = enter_ziggurat
140 MONS:   angel / nothing w:20
141 KPROP:  1Om; = no_rtele_into
142 KFEAT:  ; = floor
143 KMASK:  1O; = opaque
144 MAP
145     ...
146    ..m..
147   ..mmm..
148  ..mm1mm..
149 ..mm;O;mm..
150  ..mm1mm..
151   ..mmm..
152    ..m..
153     ...
154 ENDMAP
155
156 ### Pan entry vaults to ziggurats #############################################
157 #
158 # These can occur more than once, so no luniq_zig here.
159
160 default-depth: Pan
161
162 NAME:   enter_ziggurat_pan_a
163 TAGS:   chance_pan_zig extra allow_dup transparent
164 CHANCE: 8%
165 COLOUR: ; : cyan / lightblue
166 COLOUR: ' = blue
167 FTILE:  ; = floor_hall
168 SUBST:  ' = .
169 SUBST:  ; = .
170 KFEAT:  O = enter_ziggurat
171 MAP
172 .......
173 .;;;;;.
174 .;''';.
175 .;'O';.
176 .;''';.
177 .;;;;;.
178 .......
179 ENDMAP
180
181 NAME:    enter_ziggurat_pan_b
182 TAGS:    chance_pan_zig extra allow_dup no_pool_fixup transparent
183 CHANCE:  8%
184 SHUFFLE: wW' / l;_
185 COLOUR:  ; = red
186 COLOUR:  _ : blue / lightred
187 COLOUR:  ' = cyan
188 FTILE:   ' = floor_hall, _ = floor_hall, ; = floor_hall, O = floor_hall
189 SUBST:   '=. , ;=. , _=.
190 KFEAT:   O = enter_ziggurat
191 KMASK:   O = opaque
192 MAP
193    ..'..
194   ..'W'..
195  ..'WwW'..
196 ..'WwwwW'..
197 .'WwwOwwW'.
198 ..'WwwwW'..
199  ..'WwW'..
200   ..'W'..
201    ..'..
202 ENDMAP
203
204 NAME:    enter_ziggurat_pan_c
205 TAGS:    chance_pan_zig extra allow_dup transparent
206 CHANCE:  8%
207 MONS:    lich / ancient lich
208 MONS:    angel / daeva
209 MONS:    eye of draining / eye of devastation / giant eyeball / \
210          great orb of eyes / shining eye
211 SHUFFLE: 123
212 SUBST:   1=1, 2=22_
213 KFEAT:   m = iron_grate
214 KFEAT:   O = enter_ziggurat
215 KFEAT:   _ = floor
216 KMASK:   123O_ = opaque
217 MAP
218     ...
219    ..m..
220   ..mmm..
221  ..mm1mm..
222 ..mm1O1mm..
223  ..mm1mm..
224   ..mmm..
225    ..m..
226     ...
227 ENDMAP
228
229 NAME:    enter_ziggurat_pan_d
230 TAGS:    chance_pan_zig extra allow_dup transparent
231 CHANCE:  8%
232 MONS:    lich / ancient lich
233 MONS:    angel / daeva
234 MONS:    eye of draining / eye of devastation / giant eyeball / \
235          great orb of eyes / shining eye
236 SHUFFLE: 123
237 SUBST:   1=1__, 2=2_, 3=33_
238 KFEAT:   n = iron_grate
239 KFEAT:   O = enter_ziggurat
240 KMASK:   123O_ = opaque
241 MAP
242     ...
243    ..n..
244   .nnnnn.
245  ..n111n..
246 ..nn1O1nn..
247  ..n111n..
248   .nnnnn.
249    ..n..
250     ...
251 ENDMAP
252
253
254 default-depth: Zig
255
256 #######################################################################
257 # Pillars for ziggurats.
258 # Ziggurat pillars are handled specially in ziggurat.lua. In particular:
259 # - ziggurat pillars do not need allow_dup. The pillar map is never
260 #   registered as used.
261 # - ziggurat pillars cannot use map markers.
262 #######################################################################
263 NAME: ziggurat_pillar_abc
264 TAGS: ziggurat_pillar unrand no_exits
265 WEIGHT: 20
266 SHUFFLE: dD / eD / eE
267 SUBST: ceE : bcmvxG
268 CLEAR: dD
269 MAP
270 dD
271 cd
272 ENDMAP
273
274 NAME: ziggurat_pillar_d
275 TAGS: ziggurat_pillar unrand no_exits
276 DEPTH: Zig:18-
277 SUBST: c : cxvb
278 MAP
279  cc
280 ccc
281 cc
282 ENDMAP
283
284 NAME:  ziggurat_pillar_e
285 TAGS:  ziggurat_pillar unrand no_exits
286 DEPTH: Zig:18-
287 WEIGHT: 5
288 SUBST: c : bcv
289 MAP
290  ccc
291 ccccc
292 ccccc
293 ccccc
294  ccc
295 ENDMAP
296
297 NAME: ziggurat_pillar_centre_a
298 TAGS: ziggurat_pillar centered no_dump unrand no_exits
299 MAP
300 lll
301 lGl
302 lll
303 ENDMAP
304
305 NAME: ziggurat_pillar_centre_b
306 TAGS: ziggurat_pillar centered no_dump unrand no_exits
307 SHUFFLE: wb / lb / nb / cb / bx
308 MAP
309  www
310 wwwww
311 wwbww
312 wwwww
313  www
314 ENDMAP
315
316 NAME: ziggurat_pillar_centre_c
317 TAGS: ziggurat_pillar centered unrand no_exits
318 # This is evil. Monster sets are: summoners (1), smites (2), harmless (3).
319 # This pillar has tactical implications: you will have to stay away from it,
320 # and teleports are more risky.
321 MONS: ancient lich / shadow demon / curse skull / \
322       ironbrand convoker / corrupter / deep elf demonologist
323 MONS: eye of draining / eye of devastation / \
324       giant eyeball / ghost moth / black sun
325 MONS: plant
326 : if you.depth() > 21 then
327 SUBST: 3 = 12222
328 : elseif you.depth() > 15 or you.depth() > 8 and crawl.coinflip() then
329 SUBST: 3 = 12
330 : end
331 KFEAT: m = iron_grate
332 MAP
333 mmm
334 m3m
335 mmm
336 ENDMAP
337
338 NAME: ziggurat_pillar_centre_monster
339 TAGS: ziggurat_pillar centered no_dump unrand no_exits
340 MONS: curse skull / ice statue / orange crystal statue / silver statue
341 MAP
342 1
343 ENDMAP
344
345 NAME:    ziggurat_pillar_centre_def
346 TAGS:    ziggurat_pillar centered no_dump unrand no_exits
347 WEIGHT:  20
348 SHUFFLE: xy'z / xY'z / "Y"Z
349 SUBST:   xYZ : bcmvxG, y" = .
350 CLEAR:   'z
351 MAP
352 z'z'z
353 'x.x'
354 z.y.z
355 'x.x'
356 z'z'z
357 ENDMAP
358
359 NAME: ziggurat_pillar_centre_h
360 TAGS: ziggurat_pillar centered no_dump unrand no_exits
361 MONS: crimson imp
362 MAP
363 ccncc
364 c...c
365 n.1.n
366 c...c
367 ccncc
368 ENDMAP
369
370 NAME: ziggurat_pillar_centre_i
371 TAGS: ziggurat_pillar centered no_dump unrand no_exits
372 MAP
373 vlv
374 lvl
375 vlv
376 ENDMAP
377
378 NAME:  ziggurat_pillar_centre_j
379 TAGS:  ziggurat_pillar centered no_dump unrand no_exits
380 SUBST: x : bcmvxG
381 MAP
382  x
383 xxx
384  x
385 ENDMAP
386
387 NAME: ziggurat_pillar_centre_k
388 TAGS: ziggurat_pillar centered unrand no_exits
389 MONS: boring beetle, boulder beetle, torpor snail, orb spider
390 SUBST: 2 : 2:14 3:5 4:1
391 MAP
392 xxxxx
393 xx2xx
394 x212x
395 xx2xx
396 xxxxx
397 ENDMAP
398
399 NAME:    ziggurat_pillar_centre_l
400 TAGS:    ziggurat_pillar centered no_dump unrand no_exits
401 SHUFFLE: X' / X' / 'X
402 SUBST:   xX : bcmvxG, ' = .
403 MAP
404   x
405  ...
406 xX'Xx
407  ...
408   x
409 ENDMAP
410
411 NAME:    ziggurat_pillar_centre_m
412 TAGS:    ziggurat_pillar centered no_dump unrand no_exits
413 DEPTH:   Zig:18-
414 SHUFFLE: X'" / X'" / 'X" / '"X
415 SUBST:   x : bcmvxG, X : bcmvxG, '" = .
416 MAP
417   x.x
418  .....
419 x."...x
420 ..'X'..
421 x...".x
422  .....
423   x.x
424 ENDMAP
425
426 NAME:    ziggurat_pillar_centre_n
427 TAGS:    ziggurat_pillar centered no_dump unrand no_exits
428 DEPTH:   Zig:18-
429 WEIGHT:  5
430 SUBST:   x : w:40 bcmvxG
431 MAP
432  ...
433 .wxw.
434 .....
435 .wxw.
436  ...
437 ENDMAP
438
439 NAME:    ziggurat_pillar_centre_o
440 TAGS:    ziggurat_pillar centered no_dump unrand no_exits
441 WEIGHT:  5
442 SUBST:   x : bcmvx
443 MAP
444  ...
445 ..x..
446 ..+..
447 ..x..
448  ...
449 ENDMAP
450
451 NAME: ziggurat_pillar_centre_oklobs
452 TAGS: ziggurat_pillar centered unrand no_exits
453 MONS: plant / oklob plant / nothing w:20
454 MAP
455  111
456 11111
457 11111
458 11111
459  111
460 ENDMAP
461
462 NAME:   ziggurat_pillar_centre_dead_trees
463 TAGS:   ziggurat_pillar centered unrand no_exits
464 SUBST:  T = t.
465 COLOUR: t = w:5 lightgrey / w:5 darkgrey / brown
466 TILE:   t = DNGN_TREE_DEAD
467 MAP
468  TTT
469 TtttT
470 TtttT
471 TtttT
472  TTT
473 ENDMAP
474
475 NAME:  ziggurat_pillar_centre_smoke
476 TAGS:  ziggurat_pillar centered unrand no_exits
477 WEIGHT: 5
478 MARKER:  Z = lua:fog_machine { cloud_type = "black smoke", \
479          pow_min = 25, pow_max = 25, \
480          delay = 30, size = 1, walk_dist = 3 }
481 MAP
482  v..
483 .v.vv
484 ..Z..
485 vv.v.
486  ..v
487 ENDMAP
488
489 NAME:  ziggurat_pillar_centre_lightning
490 TAGS:  ziggurat_pillar centered no_dump unrand no_exits
491 MONS:  lightning spire
492 MAP
493 v...v
494 .....
495 ..1..
496 .....
497 v...v
498 ENDMAP
499
500 NAME:    ziggurat_pillar_centre_more_plants
501 TAGS:    ziggurat_pillar centered unrand no_exits
502 DEPTH:   Zig:18-
503 WEIGHT:  5
504 MONS:    plant, bush, patrolling thorn hunter, patrolling shambling mangrove
505 SHUFFLE: 1t
506 SUBST:   1 : 12, 3 : 34..., x : bcmvxG
507 MAP
508   .t.
509  ..t.1
510 ..1.3..
511 tt.x.tt
512 ..3.1..
513  1.t..
514   .t.
515 ENDMAP
516
517 NAME:    ziggurat_pillar_centre_drop
518 TAGS:    ziggurat_pillar centered generate_awake unrand no_exits
519 DEPTH:   Zig:10-
520 WEIGHT:  5
521 MONS:    lost soul, rakshasa
522 KFEAT:   ~ = known permanent teleport trap
523 SUBST:   9 : 00., x : bcvx, X : bcnv
524 : if you.depth() > 18 then
525 SUBST:   0 : 0112
526 : end
527 MAP
528   xxx
529  Xx0xX
530 xx9.9xx
531 x0.~.0x
532 xx9.9xx
533  Xx0xX
534   xxx
535 ENDMAP
536
537 ########################################################################
538 # Ziggurat loot chamber (needs work).
539 #
540 # A reasonably large space to drop loot. Items will be stacked once all
541 # free space is occupied by items.
542 #
543 # TODO:
544 # Add marker to set a center point for loot.
545 # Maybe programmatically generate loot chamber shapes?
546 #
547 NAME: ziggurat_loot_1
548 TAGS: ziggurat_loot_chamber allow_dup no_rotate
549 ORIENT: float
550 : ziggurat_loot_spot(_G, "X")
551 MAP
552  cccccc
553 cc....cc
554 @.....Xc
555 cc....cc
556  cccccc
557 ENDMAP
558
559 NAME: ziggurat_loot_2
560 TAGS: ziggurat_loot_chamber allow_dup no_rotate
561 ORIENT: float
562 : ziggurat_loot_spot(_G, "X")
563 MAP
564  ccc ccc
565 cc.ccc.cc
566 @......Xc
567 cc.ccc.cc
568  ccc ccc
569 ENDMAP
570
571 NAME: ziggurat_loot_3
572 TAGS: ziggurat_loot_chamber allow_dup no_rotate
573 ORIENT: float
574 WEIGHT: 5
575 : ziggurat_loot_spot(_G, "X")
576 MAP
577 ccc
578 @Xc
579 ccc
580 ENDMAP
581
582 #######################################################################
583 # not finished!
584 NAME: ziggurat_arena
585 # Just to keep the map compiler happy:
586 TAGS: ziggurat_arena unrand
587 MAP
588 nnnnnnnnnnnnnn
589 n...........An
590 n<..........>n
591 n...........An
592 nnnnnnnnnnnnnn
593 ENDMAP
594
595 #######################################################################
596
597 NAME: ziggurat1
598 PLACE: Zig
599 : ziggurat_level(_G)
600 MAP
601 ENDMAP