1 ###############################################################################
2 # ziggurat.des - Ziggurat entry vaults and ziggurat layouts.
3 ###############################################################################
5 # Most ziggurat code is in ziggurat.lua.
6 # XXX: Ziggurat code is incomplete.
8 : require("dlua/ziggurat.lua")
10 ### Entry vaults to ziggurats ##########################################
12 # There is one Ziggurat in Depths.
13 # Otherwise, you need to search Pan, with 8% chance per level.
17 # In case there is an encompass vault on the level.
18 NAME: ziggurat_fallback
20 KFEAT: O = enter_ziggurat
21 TAGS: overwrite_floor_cell no_exits transparent
27 NAME: enter_ziggurat_a
28 TAGS: zig_entry transparent
29 KFEAT: O = enter_ziggurat
30 COLOUR: ; : cyan / lightblue
45 NAME: enter_ziggurat_b
46 TAGS: zig_entry transparent
48 KFEAT: O = enter_ziggurat
52 COLOUR: _ : blue / lightred
54 FTILE: ' = floor_hall, _ = floor_hall, ; = floor_hall, O = floor_hall
55 SUBST: '=. , ;=. , _=.
68 NAME: enter_ziggurat_c
69 TAGS: zig_entry no_trap_gen transparent
70 KFEAT: O = enter_ziggurat
71 MONS: lich / ancient lich
73 MONS: eye of draining / eye of devastation / giant eyeball / \
74 great orb of eyes / shining eye
75 KPROP: 1Om = no_rtele_into
77 SUBST: 1=1___, 2=2_, x=_
93 NAME: enter_ziggurat_d
94 TAGS: zig_entry no_trap_gen transparent
95 KFEAT: O = enter_ziggurat
96 MONS: lich / ancient lich
98 MONS: eye of draining / eye of devastation / giant eyeball / \
99 great orb of eyes / shining eye
100 KPROP: 1On; = no_rtele_into
102 SUBST: 1=1___, 2=2_, x=_
104 KFEAT: n = iron_grate
105 KMASK: O123_ = opaque
119 NAME: enter_ziggurat_e
120 TAGS: zig_entry transparent
121 KFEAT: O = enter_ziggurat
122 COLOUR: ; : cyan / lightblue
124 FTILE: ; = floor_hall
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
156 ### Pan entry vaults to ziggurats #############################################
158 # These can occur more than once, so no luniq_zig here.
162 NAME: enter_ziggurat_pan_a
163 TAGS: chance_pan_zig extra allow_dup transparent
165 COLOUR: ; : cyan / lightblue
167 FTILE: ; = floor_hall
170 KFEAT: O = enter_ziggurat
181 NAME: enter_ziggurat_pan_b
182 TAGS: chance_pan_zig extra allow_dup no_pool_fixup transparent
186 COLOUR: _ : blue / lightred
188 FTILE: ' = floor_hall, _ = floor_hall, ; = floor_hall, O = floor_hall
189 SUBST: '=. , ;=. , _=.
190 KFEAT: O = enter_ziggurat
204 NAME: enter_ziggurat_pan_c
205 TAGS: chance_pan_zig extra allow_dup transparent
207 MONS: lich / ancient lich
209 MONS: eye of draining / eye of devastation / giant eyeball / \
210 great orb of eyes / shining eye
213 KFEAT: m = iron_grate
214 KFEAT: O = enter_ziggurat
216 KMASK: 123O_ = opaque
229 NAME: enter_ziggurat_pan_d
230 TAGS: chance_pan_zig extra allow_dup transparent
232 MONS: lich / ancient lich
234 MONS: eye of draining / eye of devastation / giant eyeball / \
235 great orb of eyes / shining eye
237 SUBST: 1=1__, 2=2_, 3=33_
238 KFEAT: n = iron_grate
239 KFEAT: O = enter_ziggurat
240 KMASK: 123O_ = opaque
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
266 SHUFFLE: dD / eD / eE
274 NAME: ziggurat_pillar_d
275 TAGS: ziggurat_pillar unrand no_exits
284 NAME: ziggurat_pillar_e
285 TAGS: ziggurat_pillar unrand no_exits
297 NAME: ziggurat_pillar_centre_a
298 TAGS: ziggurat_pillar centered no_dump unrand no_exits
305 NAME: ziggurat_pillar_centre_b
306 TAGS: ziggurat_pillar centered no_dump unrand no_exits
307 SHUFFLE: wb / lb / nb / cb / bx
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
326 : if you.depth() > 21 then
328 : elseif you.depth() > 15 or you.depth() > 8 and crawl.coinflip() then
331 KFEAT: m = iron_grate
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
345 NAME: ziggurat_pillar_centre_def
346 TAGS: ziggurat_pillar centered no_dump unrand no_exits
348 SHUFFLE: xy'z / xY'z / "Y"Z
349 SUBST: xYZ : bcmvxG, y" = .
359 NAME: ziggurat_pillar_centre_h
360 TAGS: ziggurat_pillar centered no_dump unrand no_exits
370 NAME: ziggurat_pillar_centre_i
371 TAGS: ziggurat_pillar centered no_dump unrand no_exits
378 NAME: ziggurat_pillar_centre_j
379 TAGS: ziggurat_pillar centered no_dump unrand no_exits
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
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, ' = .
411 NAME: ziggurat_pillar_centre_m
412 TAGS: ziggurat_pillar centered no_dump unrand no_exits
414 SHUFFLE: X'" / X'" / 'X" / '"X
415 SUBST: x : bcmvxG, X : bcmvxG, '" = .
426 NAME: ziggurat_pillar_centre_n
427 TAGS: ziggurat_pillar centered no_dump unrand no_exits
430 SUBST: x : w:40 bcmvxG
439 NAME: ziggurat_pillar_centre_o
440 TAGS: ziggurat_pillar centered no_dump unrand no_exits
451 NAME: ziggurat_pillar_centre_oklobs
452 TAGS: ziggurat_pillar centered unrand no_exits
453 MONS: plant / oklob plant / nothing w:20
462 NAME: ziggurat_pillar_centre_dead_trees
463 TAGS: ziggurat_pillar centered unrand no_exits
465 COLOUR: t = w:5 lightgrey / w:5 darkgrey / brown
466 TILE: t = DNGN_TREE_DEAD
475 NAME: ziggurat_pillar_centre_smoke
476 TAGS: ziggurat_pillar centered unrand no_exits
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 }
489 NAME: ziggurat_pillar_centre_lightning
490 TAGS: ziggurat_pillar centered no_dump unrand no_exits
491 MONS: lightning spire
500 NAME: ziggurat_pillar_centre_more_plants
501 TAGS: ziggurat_pillar centered unrand no_exits
504 MONS: plant, bush, patrolling thorn hunter, patrolling shambling mangrove
506 SUBST: 1 : 12, 3 : 34..., x : bcmvxG
517 NAME: ziggurat_pillar_centre_drop
518 TAGS: ziggurat_pillar centered generate_awake unrand no_exits
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
537 ########################################################################
538 # Ziggurat loot chamber (needs work).
540 # A reasonably large space to drop loot. Items will be stacked once all
541 # free space is occupied by items.
544 # Add marker to set a center point for loot.
545 # Maybe programmatically generate loot chamber shapes?
547 NAME: ziggurat_loot_1
548 TAGS: ziggurat_loot_chamber allow_dup no_rotate
550 : ziggurat_loot_spot(_G, "X")
559 NAME: ziggurat_loot_2
560 TAGS: ziggurat_loot_chamber allow_dup no_rotate
562 : ziggurat_loot_spot(_G, "X")
571 NAME: ziggurat_loot_3
572 TAGS: ziggurat_loot_chamber allow_dup no_rotate
575 : ziggurat_loot_spot(_G, "X")
582 #######################################################################
585 # Just to keep the map compiler happy:
586 TAGS: ziggurat_arena unrand
595 #######################################################################