Let the player renounce religion while silenced
[crawl.git] / crawl-ref / source / dat / des / altar / overflow.des
1 ###############################################################################
2 # overflow.des: This is the place where vaults containing overflow altars go.
3 #
4 # Altar vaults do not just provide flavour. They are crucial for ensuring
5 # that granted gods without altars in the Temple will be present in the
6 # early part of the dungeon. Such altars are called "overflow temples".
7 # Sometimes, ordinary altar maps featuring a single C glyph (random altar)
8 # are used. However, there are also vaults dedicated to a special god.
9 # These look much more interesting, of course.
10 # There are two TAGs to be used for single-altar maps with a specified god:
11 #
12 # TAG: temple_overflow_1 temple_overflow_FOO
13 #      Says the map will only ever be used for overflow temples to god FOO.
14 #      (The 1 indicates there's only one god placed by this vault.)
15 # TAG: uniq_altar_FOO
16 #      If you also add this, then the map can be placed randomly even if
17 #      that altar has been chosen at new-game time to be an overflow temple
18 #      on a specific level. If it happens to be randomly placed before being
19 #      generated specifically then it will only be placed once, rather than
20 #      being placed a second time at the location chosen at new-game time.
21 #
22 # And there is a TAG if you want a single-altar map to a random god:
23 #
24 # TAG: temple_overflow_generic_1
25 #      Allows any of the overflow temple altars to be used.
26 #      For this, use one B glyph in your map.
27 #
28 # If you want to check overflow temple placement in wizard mode, use the &:
29 # command. The levels overflow temples are placed on, and which gods are
30 # in them, are chosen at new-game time.
31 #
32 ###############################################################################
33
34 {{
35 function interest_check(e)
36   if not you.in_branch("D") or you.absdepth() > 9 then
37     e.tags('extra')
38   end
39 end
40
41 function get_overflow_altar_count(e)
42   local params = dgn.map_parameters()
43   if params ~= nil then
44     local tag = unpack(params)
45     if tag ~= nil then
46       -- temple_overflow_generic_ is 24 characters
47       return string.sub(tag, 25)
48     end
49   end
50
51   return nil
52 end
53
54 function altar_check(e)
55   if e.is_validating() then
56     e.subst('C = B')
57     return
58   end
59   if get_overflow_altar_count(e) ~= nil then
60     e.subst('C = B')
61   else
62     e.tags('extra')
63   end
64 end
65
66 function callback.vampire_church_blood(data, triggerable, triggerer, marker, ev)
67   local slaves = dgn.find_marker_positions_by_prop("slave_name", "vampire_church_blood")
68   crawl.god_speaks("Kikubaaqudgha", "As you approach the altar, the fountains"
69                                  .. " begin to flow with blood!")
70   for i, slave in ipairs(slaves) do
71     dgn.terrain_changed(slave.x, slave.y, "fountain_blood", false)
72   end
73 end
74
75 function callback.hep_ancestral_shrine_los(data, triggerable, triggerer, marker, ev)
76   if not dgn.persist.hep_ancestral_shrine_reborn and you.god() == "Hepliaklqana" then
77     local trees = dgn.find_marker_positions_by_prop("dead_tree", 1)
78     for i, slave in ipairs(trees) do
79       dgn.tile_feat_changed(slave.x, slave.y, "DNGN_TREE")
80     end
81     dgn.reset_feature_name_for(trees[1].x, trees[1].y, "tree")
82     local slime = dgn.find_marker_positions_by_prop("green_water", 1)
83     for i, slave in ipairs(slime) do
84       dgn.colour_at(slave.x, slave.y, "blue")
85     end
86     crawl.god_speaks("Hepliaklqana", "Let the past return from memory!")
87     dgn.persist.hep_ancestral_shrine_reborn = true
88   end
89 end
90
91 function callback.xom_greatest_gift(data, triggerable, triggerer, marker, ev)
92   if not dgn.persist.xom_gg_heard and you.god() == "Xom" then
93     dgn.persist.xom_gg_heard = true
94     dgn.persist.xom_gg_granted = true
95   elseif not dgn.persist.xom_gg_heard and you.god() ~= "Xom" then
96     crawl.god_speaks("Xom", '"WORSHIP ME, MORTAL," Xom booms, "AND I SHALL'
97                             .. ' GRANT YOU THE GREATEST GIFT OF ALL."')
98     dgn.persist.xom_gg_heard = true
99   elseif not dgn.persist.xom_gg_granted and you.god() == "Xom" then
100     local pos = dgn.find_marker_positions_by_prop("gift", "altar")
101     dgn.create_monster(pos[1].x, pos[1].y, "generate_awake att:good_neutral goblin")
102     crawl.god_speaks("Xom", 'A goblin pops into existence! It looks at you'
103                      .. ' with admiration.')
104     crawl.god_speaks("Xom", '"Friendship. The greatest gift is friendship!"')
105
106     dgn.persist.xom_gg_granted = true
107   end
108 end
109
110 function species_mock(e)
111   if you.race() == "Barachi" then
112     e.kmons("1 = bullfrog")
113   elseif you.race() == "Gnoll" then
114     e.kmons("1 = jackal")
115   elseif you.race() == "Centaur" then
116     e.kmons("1 = dart slug")
117   elseif you.race() == "Demigod" then
118     e.kmons("1 = titan simulacrum")
119   elseif you.race() == "Demonspawn" then
120     e.kmons("1 = hell beast")
121   elseif you.race():find("Draconian") then
122     e.kmons("1 = wyvern")
123   elseif you.race() == "Deep Dwarf" then
124     e.kmons("1 = deep dwarf zombie")
125   elseif you.race() == "Deep Elf" then
126     e.kmons("1 = insubstantial wisp")
127   elseif you.race() == "Halfling" then
128     e.kmons("1 = hobgoblin ; mundane hunting sling")
129   elseif you.race() == "Hill Orc" then
130     e.kmons("1 = goblin ; mundane hand axe . mundane ring mail")
131   elseif you.race() == "Human" then
132     e.kmons("1 = killer klown")
133   elseif you.race() == "Felid" then
134     e.kmons("1 = sphinx zombie")
135   elseif you.race() == "Formicid" then
136     e.kmons("1 = soldier ant")
137   elseif you.race() == "Gargoyle" then
138     e.kmons("1 = earth elemental")
139   elseif you.race() == "Ghoul" then
140     e.kmons("1 = death ooze")
141   elseif you.race() == "Kobold" then
142     e.kmons("1 = boggart")
143   elseif you.race() == "Merfolk" then
144     e.kmons("1 = bullfrog")
145   elseif you.race() == "Minotaur" then
146     e.kmons("1 = yak")
147   elseif you.race() == "Mummy" then
148     e.kmons("1 = human zombie")
149   elseif you.race() == "Naga" then
150     e.kmons("1 = torpor snail")
151   elseif you.race() == "Octopode" then
152     e.kmons("1 = tentacled monstrosity")
153   elseif you.race() == "Ogre" then
154     e.kmons("1 = ettin skeleton")
155   elseif you.race() == "Spriggan" then
156     e.kmons("1 = unseen horror")
157   elseif you.race() == "Tengu" then
158     e.kmons("1 = caustic shrike")
159   elseif you.race() == "Troll" then
160     e.kmons("1 = hungry ghost")
161   elseif you.race() == "Vampire" then
162     e.kmons("1 = tyrant leech")
163   elseif you.race() == "Vine Stalker" then
164     e.kmons("1 = thorn hunter")
165   else
166     e.kmons("1 = spectral ugly thing")
167   end
168 end
169 }}
170
171 default-depth: D, Depths
172
173 # These must feature one of the temple_overflow_* TAGs (see header).
174 # Altars are sorted alphabetically by god, with the Shining One coming
175 # after Zin. At the end, there are altar vaults which can be used for
176 # more than just one god.
177
178 ### Ashenzari overflow altars #################################################
179
180 NAME:   ashenzari_altar_1
181 TAGS:   uniq_altar_ashenzari temple_overflow_1 temple_overflow_ashenzari
182 TAGS:   transparent decor
183 KFEAT:  _ = altar_ashenzari
184 : interest_check(_G)
185 MAP
186 b@b
187 @_@
188 b@b
189 ENDMAP
190
191 # A ruined temple
192 NAME:   evilmike_ruin_ashenzari
193 TAGS:   uniq_altar_ashenzari temple_overflow_1 temple_overflow_ashenzari
194 TAGS:   transparent decor
195 SUBST:  x = xxxxx-, - = ----.
196 TILE:   x = WALL_BRICK_VINES
197 FTILE:  -V_ = FLOOR_SANDSTONE
198 KFEAT:  _ = altar_ashenzari
199 SUBST:  - = .
200 : interest_check(_G)
201 MAP
202       .......
203       .xx+xx.
204      ..x---x..
205    ....x---x....
206    .xxxx---xxxx.
207   ..xV-xx+xx-Vx..
208 ....x---------x....
209 .xxxxx-------xxxxx.
210 .x---x-------x---x.
211 .x---+---_---+---x.
212 .x---x-------x---x.
213 .xxxxx-------xxxxx.
214 ....x---------x....
215   ..xV-xx+xx-Vx..
216    .xxxx---xxxx.
217    ....x---x....
218      ..x---x..
219       .xxxxx.
220       .......
221 ENDMAP
222
223 NAME:   ashenzari_conservatory_becter
224 TAGS:   temple_overflow_1 temple_overflow_ashenzari transparent
225 DEPTH:  D:2-9
226 KFEAT:  _ = altar_ashenzari
227 MAP
228    .....
229  .........
230  .........
231 ....mmm....
232 ....m_m....
233 ....c+c....
234 xxxxx.xxxxx
235      @
236 ENDMAP
237
238 NAME:  cheibrodos_ashenzari_chains
239 TAGS:  temple_overflow_1
240 TAGS:  temple_overflow_ashenzari uniq_altar_ashenzari transparent
241 DEPTH: D:3-9
242 KFEAT: _ = altar_ashenzari
243 KFEAT: m = iron_grate
244 MAP
245 .............
246 .mmm.....mmm.
247 .mcmmc_cmmcm.
248 .mmm.....mmm.
249 .............
250 ENDMAP
251
252 NAME: nicolae_ashenzari_panopticon
253 TAGS: uniq_altar_ashenzari temple_overflow_1 temple_overflow_ashenzari \
254       transparent decor
255 SHUFFLE: ABCDEF/abcdef
256 SUBST: ACEbdf = x, Ba = m, Dc = ., Fe = @
257 NSUBST: m = + / m
258 KFEAT: _ = altar_ashenzari
259 MAP
260 E....F..E..F...CE
261 CC...D..C..D..CC.
262 .CC..DD.C.DD.CC..
263 ..CC..D.C.D.CC...
264 ...CC.DDCDDCC....
265 FDD.CC.DCDCC..DDF
266 ..DDDCABABA.DDD..
267 ....DDB...BDD....
268 ECCCCCA._.ACCCCCE
269 ....DDB...BDD....
270 ..DDD.ABABACDDD..
271 FDD..CCDCD.CC.DDF
272 ....CCDDCDD.CC...
273 ...CC.D.C.D..CC..
274 ..CC.DD.C.DD..CC.
275 .CC..D..C..D...CC
276 EC...F..E..F....E
277 ENDMAP
278
279 ### Cheibriados overflow altars ###############################################
280
281 NAME:   cheibriados_altar_1
282 TAGS:   uniq_altar_cheibriados temple_overflow_1 temple_overflow_cheibriados
283 TAGS:   transparent decor
284 KFEAT:  _ = altar_cheibriados
285 : interest_check(_G)
286 MAP
287 ...
288 ._.
289 ...
290 ENDMAP
291
292 NAME:    cheibriados_altar_2
293 TAGS:    uniq_altar_cheibriados temple_overflow_1 temple_overflow_cheibriados
294 TAGS:    transparent decor
295 DEPTH:   D:2-
296 WEIGHT:  1
297 KPROP:   1 = no_tele_into
298 KFEAT:   _ = altar_cheibriados
299 MONS:    torpor snail
300 SUBST:   1 : 1:50 2:30 3:10 4:10
301 NSUBST:  4 = 1:1 / 1:2 / 1:3
302 : interest_check(_G)
303 MAP
304 .......
305 .mmm...
306 .m1m...
307 .mmmmm.
308 .._m1m.
309 .mmmmm.
310 .m1m...
311 .mmm...
312 .......
313 ENDMAP
314
315 NAME:  slow_altar_1
316 DEPTH: D:5-9
317 TAGS:  patrolling no_monster_gen no_item_gen transparent
318 TAGS:  uniq_slow_altar temple_overflow_1 temple_overflow_cheibriados
319 KMONS: _ = worm / mummy / iron imp
320 KFEAT: _ = altar_cheibriados
321 SUBST: x : xxxcccmnvb
322 MAP
323 xxx..@..xxx
324 xxx.....xxx
325 xxx.....xxx
326 ...........
327 ...........
328 @...._....@
329 ...........
330 ...........
331 xxx.....xxx
332 xxx.....xxx
333 xxx..@..xxx
334 ENDMAP
335
336 NAME:    slow_altar_2
337 DEPTH:   D:5-9
338 TAGS:    patrolling no_monster_gen no_item_gen
339 TAGS:    uniq_slow_altar temple_overflow_1 temple_overflow_cheibriados
340 KMONS:   _ = worm / mummy / iron imp
341 KFEAT:   _ = altar_cheibriados
342 SUBST:   x : xxxcccvb
343 MAP
344 x@@G@@x
345 x.....x
346 x.....x
347 xx+++xx
348 x.....x
349 x.....x
350 x.....x
351 x.....x
352 x.._..x
353 xxxxxxx
354 ENDMAP
355
356 NAME:   chei_slow_surprise
357 TAGS:   uniq_slow_altar overflow_altar_cheibriados transparent no_monster_gen
358 TAGS:   transparent
359 DEPTH:  D:4-9
360 WEIGHT: 5
361 KMONS:  a = worm / mummy / iron imp
362 NSUBST: ' = 1:a / *:.
363 KFEAT:  _ = altar_cheibriados
364 MAP
365  ........
366 ..xxxxxx..
367 .xx''''xx.
368 .x'xxxx'x.
369 .x'm.<x'x.
370 .xx+._x'x.
371 ..xxxxx'x.
372 .x.....xx.
373 .xxxxxxx..
374 .........
375 ENDMAP
376
377 NAME:   cheibrodos_worm_habitat
378 TAGS:   no_item_gen no_monster_gen temple_overflow_1 transparent
379 TAGS:   uniq_slow_altar temple_overflow_cheibriados uniq_altar_cheibriados
380 DEPTH:  D:5-9
381 WEIGHT: 5
382 KFEAT:  _ = altar_cheibriados
383 MONS:   worm
384 MAP
385 .............
386 .xxxxx.xxxxx.
387 .xTWWxxxWWTx.
388 .xWWWWWWWWWx.
389 .xWWWxWxWWWx.
390 .xxWxx.xxWxx.
391 ..xWm._.mWx..
392 .xxWxx1xxWxx.
393 .xWWWxmxWWWx.
394 .xWWWWWWWWWx.
395 .xTWWx+xWWTx.
396 .xxxxx.xxxxx.
397 ......@......
398 ENDMAP
399
400 NAME:   kennysheep_slug_shrine
401 TAGS:   uniq_altar_cheibriados temple_overflow_1 temple_overflow_cheibriados
402 TAGS:   no_pool_fixup no_monster_gen transparent
403 DEPTH:  D:2-6
404 MONS:   patrolling dart slug
405 KMASK:  1 = opaque
406 KFEAT:  _ = altar_cheibriados
407 MAP
408   .WWW
409  .WwwwWbb
410 @.Ww1WW_b
411  .WwwwWbb
412   .WWW
413 ENDMAP
414
415 ### Dithmenos overflow altars ################################################
416
417 NAME:   grunt_dithmenos_smoke
418 TAGS:   uniq_altar_dithmenos temple_overflow_1 temple_overflow_dithmenos
419 TAGS:   transparent decor
420 DEPTH:  D:2-
421 KFEAT:  C = altar_dithmenos
422 MARKER: C = lua:fog_machine { cloud_type = "black smoke", \
423                               pow_min = 10, pow_max = 20, \
424                               delay = 100, size = 1, walk_dist = 1 }
425 : interest_check(_G)
426 MAP
427 ...
428 .C.
429 ...
430 ENDMAP
431
432 # Reflect upon the darkness, mortal.
433 NAME:   grunt_dithmenos_smoke_and_mirrors
434 TAGS:   uniq_altar_dithmenos temple_overflow_1 temple_overflow_dithmenos
435 TAGS:   transparent decor
436 DEPTH:  D:2-
437 KFEAT:  C = altar_dithmenos
438 KFEAT:  O = .
439 MARKER: O = lua:fog_machine { cloud_type = "black smoke", \
440                               pow_min = 25, pow_max = 25, \
441                               delay = 30, size = 1, walk_dist = 0 }
442 : interest_check(_G)
443 MAP
444   b@b
445  b.O.b
446 b.b.b.b
447 @O.C.O@
448 b.b.b.b
449  b.O.b
450   b@b
451 ENDMAP
452
453 NAME:  grunt_dithmenos_shadows
454 TAGS:  uniq_altar_dithmenos temple_overflow_1 temple_overflow_dithmenos decor
455 DEPTH: D:4-
456 KFEAT: C = altar_dithmenos
457 {{
458   if you.absdepth() >= 14 then
459      mons("shadow")
460   else
461      local imp_weight = 9 - you.absdepth()
462      if imp_weight > 0 then
463          local phantom_weight = 9 - imp_weight
464          mons("phantom w:" .. phantom_weight ..
465               " / shadow imp w:" .. imp_weight)
466      else
467          mons("shadow imp")
468      end
469   end
470 }}
471 : interest_check(_G)
472 MAP
473 ccccc
474 c.C.c
475 c.1.c
476 c...c
477 cc+cc
478 ENDMAP
479
480 NAME: nicolae_dithmenos_the_darkroom
481 TAGS: temple_overflow_dithmenos temple_overflow_1 uniq_altar_dithmenos
482 TAGS: decor transparent
483 DEPTH: D:4-
484 KFEAT: _ = altar_dithmenos
485 MARKER: ' = lua:fog_machine { cloud_type = "black smoke", pow_min = 30, \
486    pow_max = 50, delay_min = 50, delay_max = 90, size = 1, walk_dist = 1, \
487    spread_rate = 10 }
488 : interest_check(_G)
489 MAP
490 xxxx@@@xxxx
491 xxx.....xxx
492 xx'.....'xx
493 x.........x
494 @.........@
495 @...._....@
496 @.........@
497 x.........x
498 xx'.....'xx
499 xxx.....xxx
500 xxxx@@@xxxx
501 ENDMAP
502
503 NAME: nicolae_dithmenos_shadow_blocks
504 TAGS: temple_overflow_dithmenos temple_overflow_1 uniq_altar_dithmenos
505 TAGS: decor transparent
506 DEPTH: D:2-
507 COLOUR: s' = magenta, c = white
508 TILE: c = dngn_stone_wall_white
509 TILE: s = dngn_stone_dark
510 FTILE: 's_ = floor_pebble_darkgray
511 KFEAT: cs = stone_wall
512 KFEAT: _ = altar_dithmenos
513 : interest_check(_G)
514 MAP
515       .....
516       ..c..
517   .....ccc.....
518   .cc..scs..cc.
519   .ccs''s''scc.
520   ..ss'''''ss..
521 ....'''''''''....
522 ..cs'''''''''sc..
523 .cccs'''_'''sccc.
524 ..cs'''''''''sc..
525 ....'''''''''....
526   ..ss'''''ss..
527   .ccs''s''scc.
528   .cc..scs..cc.
529   .....ccc.....
530       ..c..
531       .....
532 ENDMAP
533
534 NAME: nicolae_dithmenos_through_a_glass_darkly
535 TAGS: temple_overflow_dithmenos uniq_altar_dithmenos temple_overflow_1
536 TAGS: decor transparent
537 DEPTH: D:2-
538 COLOUR: x = magenta, m = lightmagenta
539 TILE: m = dngn_transparent_wall_darkgray
540 TILE: x = wall_brick_darkgray
541 KFEAT: _ = altar_dithmenos
542 : interest_check(_G)
543 MAP
544   ..xxx
545  .....xx
546 ...mm..xx
547 ..mm....x
548 @.m._...x
549 ..mm....x
550 ...mm..xx
551  .....xx
552   ..xxx
553 ENDMAP
554
555 ### Elyvilon overflow altars ##################################################
556
557 NAME:   elyvilon_altar_1
558 TAGS:   uniq_altar_elyvilon temple_overflow_1 temple_overflow_elyvilon
559 TAGS:   transparent decor
560 DEPTH:  D:2-
561 KFEAT:  C = altar_elyvilon
562 SUBST:  X : T G t 1 2 3
563 MONS:   plant, bush, fungus
564 KMASK:  T = no_monster_gen
565 : interest_check(_G)
566 MAP
567       xx@xx
568       x...x
569       x.X.x
570       x...x
571       xx.xx
572        x.x
573 xxxxx xx.xx xxxxx
574 x...xxx...xxx...x
575 @.X.....C.....X.@
576 x...xxx...xxx...x
577 xxxxx xx.xx xxxxx
578        x.x
579       xx.xx
580       x...x
581       x.X.x
582       x...x
583       xx@xx
584 ENDMAP
585
586 NAME:   elyvilon_altar_3
587 TAGS:   uniq_altar_elyvilon temple_overflow_1 temple_overflow_elyvilon
588 TAGS:   no_pool_fixup decor transparent
589 DEPTH:  D:2-
590 KFEAT:  C = altar_elyvilon
591 KMASK:  wW = no_monster_gen
592 : interest_check(_G)
593 MAP
594        xxxxxxxxxxxxxxx
595       xxtttttttttttttxx
596       xtttttttttttttttx
597       tttttttt.tttttttt
598   .....ttttt.....ttttt.....
599  .......ttt.......ttt.......
600 ...wWw...t...wWw...t...wWw...
601 ..wwWww.....wwWww.....wwWww..
602 @.WWtWW.....WWCWW.....WWtWW.@
603 ..wwWww.....wwWww.....wwWww..
604 ...wWw...t...wWw...t...wWw...
605  .......ttt.......ttt.......
606   .....ttttt.....ttttt.....
607       tttttttt.tttttttt
608       xtttttttttttttttx
609       xxtttttttttttttxx
610        xxxxxxxxxxxxxxx
611 ENDMAP
612
613 NAME:   elyvilon_altar_4
614 TAGS:   uniq_altar_elyvilon temple_overflow_1 temple_overflow_elyvilon
615 TAGS:   no_monster_gen transparent decor
616 DEPTH:  D:2-
617 KFEAT:  C = altar_elyvilon
618 MONS:   patrolling quokka att:good_neutral
619 : interest_check(_G)
620 MAP
621 xxx.@.xxx
622 xWW...WWx
623 xW..t..Wx
624 ....1....
625 @.t.C.t.@
626 .........
627 xW..t..Wx
628 xWW...WWx
629 xxx.@.xxx
630 ENDMAP
631
632 NAME:   elyvilon_altar_5
633 TAGS:   uniq_altar_elyvilon temple_overflow_1 temple_overflow_elyvilon decor transparent
634 DEPTH:  D:2-
635 KFEAT:  C = altar_elyvilon
636 KMASK:  T = no_monster_gen
637 : interest_check(_G)
638 MAP
639 .............
640 .c.c.c.c.c.c.
641 .............
642 ...T.....T...
643 @.....C.....@
644 ...T.....T...
645 .............
646 .c.c.c.c.c.c.
647 .............
648 ENDMAP
649
650 ### Fedhas overflow altars ####################################################
651
652 NAME:   fedhas_altar_1
653 TAGS:   uniq_altar_fedhas temple_overflow_1 temple_overflow_fedhas
654 TAGS:   transparent decor
655 DEPTH:  D:2-
656 KFEAT:  C = altar_fedhas
657 MONS:   plant
658 : interest_check(_G)
659 MAP
660 .....
661 .1.1.
662 ..C..
663 .1.1.
664 .....
665 ENDMAP
666
667 NAME:   fedhas_altar_2
668 TAGS:   uniq_altar_fedhas temple_overflow_1 temple_overflow_fedhas
669 TAGS:   transparent decor
670 DEPTH:  D:2-
671 KFEAT:  C = altar_fedhas
672 NSUBST: w = 2:W / *:w
673 SUBST:  . = ..wW
674 SUBST:  w = wwwP
675 : interest_check(_G)
676 MAP
677 .....
678 .www.
679 .wCw.
680 .www.
681 .....
682 ENDMAP
683
684 NAME:   fedhas_altar_3
685 TAGS:   uniq_altar_fedhas temple_overflow_1 temple_overflow_fedhas
686 TAGS:   transparent decor
687 DEPTH:  D:2-
688 KFEAT:  C = altar_fedhas
689 NSUBST: b = 1:. / *:1
690 MONS:   plant w:5 / fungus / nothing w:3
691 : interest_check(_G)
692 MAP
693 @111@
694 1b1b1
695 11C11
696 1b1b1
697 @111@
698 ENDMAP
699
700 NAME:   fedhas_altar_4
701 TAGS:   uniq_altar_fedhas temple_overflow_1 temple_overflow_fedhas
702 TAGS:   decor
703 DEPTH:  D:2-
704 KFEAT:  C = altar_fedhas
705 FTILE:  . = floor_moss
706 FTILE:  t = floor_moss
707 : interest_check(_G)
708 MAP
709 xxxxxxxxxxxxxxx
710 xxxtttttttxxxxx
711 xxtttttttttxxxx
712 xtttt.ttttttxxx
713 xtttt.C.ttttttt
714 xxtttt...ttttt.
715 xxtttttt......@
716 xxxxttttttttt..
717 xxxxxxttttttttx
718 xxxxxxxtttttttx
719 xxxxxxxxxxxxxxx
720 ENDMAP
721
722 # The oklob plant may be abusable (if so, remove it).
723 NAME:    tgw_fedhas
724 TAGS:    no_item_gen no_monster_gen
725 TAGS:    temple_overflow_1 temple_overflow_fedhas uniq_altar_fedhas
726 DEPTH:   Lair, D:2-
727 KFEAT:   _ = altar_fedhas
728 KPROP:   xzd3P = no_tele_into
729 MONS:    plant, fungus, oklob plant, bush, toadstool
730 KITEM:   d = ration / nothing w:20
731 KFEAT:   d = floor
732 SUBST:   x = TTPPPPP.
733 # Only make "oklob behind bushes" situation possible a bit deeper.
734 : if you.absdepth() > 5 then
735 SHUFFLE: PQR
736 SUBST:   Q = 114, R = 11124
737 : end
738 SUBST:   P = 112
739 SUBST:   z = .
740 SHUFFLE: ...", TU
741 SUBST:   T = xt, U = xx
742 SUBST:   " = .....5
743 COLOUR:  . = green / none
744 COLOUR:  ' = green
745
746 MAP
747 ccccccccccccccccccccccc
748 cxxxxxxxxxxxxxxxxxxxxxc
749 cxxxxxxxxxxxxxxPxxd3xxc
750 cxxxxxxxxxxxxxxPddddxxc
751 cxxxxxxxxxxxxxxPPPxzdxc
752 cxxxxxxx.......xxPPxxxc
753 cxxxxxx..ww.ww..xxPPxxc
754 cxxxxx..www.www..xxxPxc
755 cxxxx..wwww.wwww..xxxxc
756 cxxxx.wwwww.wwwww.xxxxc
757 cxxxx.wwww'''wwww.xxxxc
758 cxxxx.wwww'_'wwww.xxxxc
759 cxxxx.wwww'''wwww.xxxxc
760 cxxxx.wwwwwwwwwww.xxxxc
761 cxxxx..wwwwwwwww..xxxxc
762 cxxxxx..wwwwwww..xxxxxc
763 cxxxxxx..wwwww..xxxxxxc
764 cxxxxxxx.......xxxxxxxc
765 cxxxxxxxxxc.cxxxxxxxxxc
766 cxxxxxxxxxc.cxxxxxxxxxc
767 ccccccccccc@ccccccccccc
768 ENDMAP
769
770 NAME:  fedhas_ov_isle_minmay
771 TAGS:  temple_overflow_1 temple_overflow_fedhas uniq_altar_fedhas no_monster_gen
772 TAGS:  transparent
773 DEPTH: D:2-9
774 MONS:  plant / bush w:5
775 SUBST: 1 = 111t'''
776 KFEAT: _ = altar_fedhas
777 KMASK: _1'<> = opaque
778 MAP
779      .....
780    ...www...
781   ..wwwwwww..
782  ..wwwwwwwww..
783  .wwwwwwwwwww.
784 ..wwww1<1wwww..
785 .wwww11111wwww.
786 .wwww11_11wwww.
787 .wwww11111wwww.
788 ..wwww1>1wwww..
789  .wwwwwwwwwww.
790  ..wwwwwwwww..
791   ..wwwwwww..
792    ...www...
793      .....
794 ENDMAP
795
796 NAME:   fedhas_altar_fruit_tree
797 TAGS:   uniq_altar_fedhas temple_overflow_1 temple_overflow_fedhas
798 TAGS:   no_item_gen no_rotate no_vmirror decor
799 DEPTH:  D:2-
800 NSUBST: g = 4:f/*:.
801 NSUBST: f = 4:A/*:.
802 NSUBST: w = 2:4 / *:w
803 KFEAT:  C = altar_fedhas
804 KFEAT:  A = .
805 KITEM:  A = ration / nothing w:20
806 FTILE:  .tfCA = floor_moss
807 FTILE:  d = floor_hall
808 COLOUR: fd = brown
809 COLOUR: AC. = green
810 : interest_check(_G)
811 MAP
812 xxxxxxxxxxxxxxxxx
813 xtttttttttttttttx
814 xtttttttttttttttx
815 xttttttgfgttttttx
816 xtttttgf.fgtttttx
817 xttttgf.f.fgttttx
818 xtttgf..C..fgtttx
819 xtttgf.f.f.fgtttx
820 xttgfffffffffgttx
821 xttgt.......tgttx
822 xttttttdddttttttx
823 xttttttdddttttttx
824 xtttttdd@ddtttttx
825 ENDMAP
826
827 NAME:  fedhas_bush_and_centaur_altar
828 TAGS:  temple_overflow_1 temple_overflow_fedhas uniq_altar_fedhas transparent
829 DEPTH: D:4-
830 KFEAT: _ = altar_fedhas
831 MONS:  centaur, bush
832 : interest_check(_G)
833 MAP
834     x
835  .......
836  .2222..
837  .21222.
838 x.22_22.x
839  ...22..
840  .222...
841     x
842 ENDMAP
843
844 NAME:   fedhas_altar_decomposition
845 TAGS:   uniq_altar_fedhas temple_overflow_1 temple_overflow_fedhas
846 TAGS:   no_item_gen no_monster_gen no_trap_gen
847 DEPTH:  D:6-13
848 MONS:   bush, plant, necrophage, zombie
849 KFEAT:  _ = altar_fedhas
850 FTILE:  '!12@ = floor_moss
851 COLOUR: '!@ = green
852 NSUBST: 3 = 3:3 / 3 = 3 4:25 / 3 = 4 .:25 / *:.
853 KPROP:  .3 = no_tele_into
854 MAP
855  xxxxxxxxx
856 xx33...33xx
857 x33.222.33x
858 x332111233x
859 x3321_1233x
860 x3321'1233x
861 x3.2x'x2.3x
862 x3..x'x..3x
863 xxxxx'xxxxx
864    xx'xx
865    x2@2x
866 ENDMAP
867
868 ### Gozag overflow altars #####################################################
869
870 NAME:   grunt_gozag_statues
871 DEPTH:  D:2-
872 TAGS:   transparent no_item_gen no_monster_gen no_trap_gen temple_overflow_1
873 TAGS:   temple_overflow_gozag uniq_altar_gozag
874 KFEAT:  _ = altar_gozag
875 TILE:   G = dngn_golden_statue
876 FTILE:  _-G = floor_limestone
877 RTILE:  x = wall_sandstone
878 COLOUR: xG = yellow
879 : set_feature_name("granite_statue", "golden statue")
880 : interest_check(_G)
881 MAP
882      @
883   xxx-xxx
884  xx-----xx
885  x-G---G-x
886  x-------x
887 @----_----@
888  x-------x
889  x-G---G-x
890  xx-----xx
891   xxx-xxx
892      @
893 ENDMAP
894
895 NAME:   grunt_gozag_breadcrumbs
896 DEPTH:  D:2-
897 TAGS:   transparent no_item_gen no_monster_gen no_trap_gen temple_overflow_1
898 TAGS:   temple_overflow_gozag uniq_altar_gozag
899 KFEAT:  _ = altar_gozag
900 ITEM:   gold q:1
901 KITEM:  e = gold q:1
902 TILE:   G = dngn_golden_statue
903 FTILE:  _-Ge = floor_limestone
904 RTILE:  x = wall_sandstone
905 COLOUR: xG = yellow
906 : set_feature_name("granite_statue", "golden statue")
907 : interest_check(_G)
908 MAP
909         xxxxx
910 .@......x-eGx
911 @d.d.d.d-e-_x
912 .@......x-eGx
913         xxxxx
914 ENDMAP
915
916 NAME:  nicolae_gozag_cash_rules_everything_around_me
917 TAGS:  temple_overflow_gozag temple_overflow_1 uniq_altar_gozag \
918        no_hmirror no_vmirror no_rotate no_item_gen transparent decor
919 DEPTH: D:2-
920 KFEAT: _ = altar_gozag
921 : interest_check(_G)
922 MAP
923 bbb@bbb
924 b....$b
925 b.b.bbb
926 b.._..b
927 bbb.b.b
928 b$....b
929 bbb@bbb
930 ENDMAP
931
932 # No, you probably can't afford any of it.
933 # You should have thought of that before being poor.
934 NAME:  nicolae_gozag_zags_fifth_avenue
935 TAGS:  temple_overflow_gozag temple_overflow_1 uniq_altar_gozag
936 TAGS:  no_pool_fixup no_item_gen no_monster_gen decor transparent
937 DEPTH: D:2-
938 WEIGHT: 5
939 FTILE: '_TS = floor_limestone
940 KFEAT: _ = altar_gozag
941 KFEAT: S = general shop name:Gozag type:Platinum suffix:Reserve count:4 \
942         greed:100 ; any weapon randart | any armour randart | any jewellery randart
943 : interest_check(_G)
944 MAP
945 wwwwwww....
946 w'''''wwww.
947 w'T'T''''w.
948 w''S'''_''@
949 w'T'T''''w.
950 w'''''wwww.
951 wwwwwww....
952 ENDMAP
953
954 NAME:  nicolae_gozag_seed_capital
955 TAGS:  temple_overflow_gozag temple_overflow_1 uniq_altar_gozag decor
956 TAGS:  transparent no_item_gen
957 DEPTH: D:2-
958 ITEM:  gold q:1 / gold q:2
959 KFEAT: _ = altar_gozag
960 : interest_check(_G)
961 MAP
962 ddd
963 d_d
964 ddd
965 ENDMAP
966
967 ### Hepliaklqana overflow altars #############################################
968
969 NAME: worldfamousw_hep_ancestral_shrine
970 TAGS: uniq_overflow_hepliaklqana temple_overflow_hepliaklqana
971 TAGS: no_monster_gen no_item_gen no_pool_fixup
972 KFEAT: _ = altar_hepliaklqana
973 COLOUR: w = green
974 TILE: G = dngn_gravestone
975 TILE: t = DNGN_TREE_DEAD
976 {{
977 set_feature_name("granite_statue", "a gravestone")
978 set_feature_name("tree", "dead tree")
979 dgn.persist.hep_ancestral_shrine_reborn = false
980
981 local los_marker = TriggerableFunction:new {
982   func="callback.hep_ancestral_shrine_los",
983   repeated=true
984 }
985 los_marker:add_triggerer(DgnTriggerer:new {
986   type="player_los"})
987
988 lua_marker('_', los_marker)
989 lua_marker("t", portal_desc { dead_tree=1 })
990 lua_marker("w", portal_desc { green_water=1 })
991 }}
992 MAP
993  xxxxx
994 xxwwwxx
995 xwwwwwx
996 xwwwwwx
997 xwtGtwx
998 xt...tx
999 x.._..x
1000 xt...tx
1001 xxt.txx
1002  xx+xx
1003    @
1004 ENDMAP
1005
1006 ### Kikubaaqudgha overflow altars #############################################
1007
1008 NAME:   lemuel_zombie_altar_kikubaaqudgha
1009 DEPTH:  D:2-, Crypt
1010 TAGS:   no_pool_fixup uniq_zombie_altar no_monster_gen temple_overflow_1
1011 TAGS:   temple_overflow_kikubaaqudgha
1012 KFEAT:  _ = altar_kikubaaqudgha
1013 MONS:   rat zombie / bat zombie / nothing w:90
1014 : interest_check(_G)
1015 MAP
1016 xxxxxxxxxxxxxxxx
1017 xxxxwwwwwwwwxxxx
1018 xxxx11111111xxxx
1019 @............._x
1020 xxxx11111111xxxx
1021 xxxxwwwwwwwwxxxx
1022 xxxxxxxxxxxxxxxx
1023 ENDMAP
1024
1025 NAME:   lemuel_mausoleum_altar_kikubaaqudgha
1026 TAGS:   uniq_altar_kikubaaqudgha temple_overflow_1
1027 TAGS:   temple_overflow_kikubaaqudgha uniq_mausoleum_altar
1028 DEPTH:  D:7-, Crypt
1029 MONS:   w:50 human zombie/orc zombie/elf zombie/w:5 ogre zombie/w:5 troll zombie
1030 MONS:   w:50 human skeleton/orc skeleton/elf skeleton/w:5 ogre skeleton/\
1031         w:5 troll skeleton
1032 MONS:   mummy, wight, wraith, necrophage
1033 NSUBST: ? = 1:_ / *:1
1034 SUBST:  1 = 1:25 2 3 4:8 5:7 6:5
1035 KFEAT:  _ = altar_kikubaaqudgha
1036 KMONS:  _ = human zombie
1037 : if not you.in_branch("D") or you.absdepth() > 14 then
1038 TAGS:   extra
1039 : end
1040 MAP
1041 ccccccccccccccc
1042 c?c?c?c?c?c?ccG
1043 c+c+c+c+c+c+ccc
1044 c............+@
1045 c+c+c+c+c+c+ccc
1046 c?c?c?c?c?c?ccG
1047 ccccccccccccccc
1048 ENDMAP
1049
1050 NAME:   kiku_gazebo_garden_becter
1051 TAGS:   temple_overflow_1 temple_overflow_kikubaaqudgha transparent
1052 DEPTH:  D:2-9
1053 KMONS:  f = withered plant
1054 KFEAT:  _ = altar_kikubaaqudgha
1055 SUBST:  ` = f....
1056 COLOUR: c = magenta
1057 COLOUR: i' = brown
1058 COLOUR: " = yellow
1059 TILE:   c = dngn_stone_wall_magenta
1060 FTILE:  '"_ = floor_pebble_yellow
1061 MAP
1062 ..````
1063 .ccc`````
1064 .c'c"`````
1065 .c''""````
1066 .c'''"c````
1067 .c'_''cc```
1068 .c'''"c````
1069 .c''""````
1070 .c'c"`````
1071 .ccc`````
1072 ..````
1073 ENDMAP
1074
1075 NAME:   kiku_gazebo_pond_becter
1076 TAGS:   temple_overflow_1 temple_overflow_kikubaaqudgha transparent
1077 DEPTH:  D:2-9
1078 KFEAT:  _ = altar_kikubaaqudgha
1079 KMASK:  Ww = no_monster_gen
1080 SUBST:  M = W..
1081 COLOUR: c = magenta
1082 COLOUR: i' = brown
1083 COLOUR: " = yellow
1084 COLOUR: w = green
1085 COLOUR: W = lightgreen
1086 TILE:   c = dngn_stone_wall_magenta
1087 FTILE:  '"_ = floor_pebble_yellow
1088 MAP
1089 ..........
1090 .cccccccc.
1091 .c''''cc...
1092 .c'_'""..V.
1093 .c'W""MMM..
1094 .c'"WWWwwM.
1095 .cc".MWwwM.
1096 .cc..MwwwM.
1097 .c...MwwwM.
1098 ...V..MMM..
1099 .........
1100 ENDMAP
1101
1102 NAME:   kennysheep_vampire_church
1103 TAGS:   no_monster_gen temple_overflow_1 temple_overflow_kikubaaqudgha
1104 DEPTH:  D:2-9
1105 MONS:   vampire bat / nothing w:7, bat skeleton / bat zombie
1106 KFEAT:  A = altar_kikubaaqudgha
1107 NSUBST: . = 4:2 / 3 = 2. / *:.
1108 {{
1109 local trig_marker = TriggerableFunction:new {
1110   func="callback.vampire_church_blood",
1111   repeated = false
1112 }
1113 trig_marker:add_triggerer(DgnTriggerer:new { type = "player_move" })
1114 lua_marker("A", trig_marker)
1115 lua_marker("V", portal_desc { slave_name = "vampire_church_blood" })
1116 }}
1117 MAP
1118   xxxxxxxxx
1119   xx.V1V.xx
1120 xxx..1A1..xxx
1121 xx.x.VdV.x.xx
1122 x.V.x...x.V.x
1123 xx.x.x.x.x.xx
1124 x.x.V.x.V.x.x
1125 xx.x.x.x.x.xx
1126 x.V.x.V.x.V.x
1127 xx.x.x.x.x.xx
1128 xxx.V.x.V.xxx
1129 xx.x.x.x.x.xx
1130 xx..x.V.x..xx
1131 xx.x.x.x.x.xx
1132 xxx.V.x.V.xxx
1133 xxxx.....xxxx
1134 xxxxx+++xxxxx
1135 ENDMAP
1136
1137 ### Makhleb overflow altars ###################################################
1138
1139 NAME:    demons_altar
1140 DEPTH:   D:3-11, Orc, !Orc:$
1141 TAGS:    no_monster_gen patrolling temple_overflow_1 temple_overflow_makhleb transparent
1142 TAGS:    layout_rooms layout_city layout_open
1143 KFEAT:   _ = altar_makhleb
1144 # Either one type 3 or 4 demon (rust devil or smoke demon) or
1145 # three slow type 5 demons (iron imp).
1146 # The higher demons can only come up in D:9-11.
1147 : if you.absdepth() > 9 then
1148 SHUFFLE: 123
1149 NSUBST:  1 = 1:1 / *:.
1150 NSUBST:  2 = 1:2 / *:.
1151 : end
1152 MONS:    rust devil, smoke demon, iron imp
1153 MAP
1154 xxxxxxxxxxxxxxx
1155 x.............x
1156 x.ll.......ll.x
1157 x.ll..3_3..ll.x
1158 x.ll...3...ll.x
1159 x..ll.....ll..x
1160 x...lll.lll...x
1161 x....llGll....x
1162 x......l......x
1163 x.............x
1164 x.............x
1165 x.............x
1166 x.............x
1167 ENDMAP
1168
1169 NAME:  bloody_makhleb
1170 TAGS:  uniq_altar_makhleb temple_overflow_1 temple_overflow_makhleb
1171 TAGS:  transparent decor
1172 DEPTH: D:2-12, Orc, Vaults
1173 KPROP: . = bloody / nothing
1174 KFEAT: _ = altar_makhleb
1175 KITEM: _ = robe, whip
1176 : interest_check(_G)
1177 MAP
1178 ...
1179 ._.
1180 ...
1181 ENDMAP
1182
1183 NAME:  makhleb_altar_promises_db
1184 TAGS:  uniq_altar_makhleb temple_overflow_1 temple_overflow_makhleb
1185 DEPTH: D:2-
1186 KFEAT: _ = altar_makhleb
1187 KPROP: 12 = no_tele_into
1188 KMASK: 12 = no_trap_gen
1189 MONS:  executioner / balrug / green death / cacodemon / blizzard demon
1190 MONS:  orange demon / ynoxinul / neqoxec / hellwing / smoke demon
1191 : interest_check(_G)
1192 MAP
1193   ccc
1194   c1c
1195 cccnccc
1196 c2n_n2c
1197 ccc.ccc
1198   c.c
1199   c@c
1200 ENDMAP
1201
1202 NAME:   makhleb_blood_cavern_becter
1203 TAGS:   uniq_altar_makhleb temple_overflow_1 temple_overflow_makhleb
1204 DEPTH:  D:2-9
1205 : if you.absdepth() < 6 then
1206 : dgn.delayed_decay(_G, '1', 'human corpse')
1207 KMONS:  2 = hound
1208 : else
1209 KMONS:  1 = necrophage
1210 KMONS:  2 = hound skeleton
1211 : end
1212 KFEAT:  _ = altar_makhleb
1213 KPROP:  y' = bloody
1214 TILE:   c = wall_hall
1215 SUBST:  ' = .
1216 SUBST:  y = x
1217 : interest_check(_G)
1218 MAP
1219   @@@
1220  x..'.xxx
1221  xx...'yxx
1222  xxxx..'yxx
1223  xxxxxx.'yx
1224  xxxxxxy'.x
1225 xxxx.'y'.xx
1226 xcc.12'.xx
1227 xcA_'.xxx
1228 xcc..xxx
1229 xxxxxx
1230 ENDMAP
1231
1232 NAME:   makhleb_heckhound_becter
1233 TAGS:   uniq_altar_makhleb temple_overflow_1 temple_overflow_makhleb
1234 TAGS:   no_monster_gen
1235 DEPTH:  D:2-9
1236 KFEAT:  _ = altar_makhleb
1237 KMONS:  _ = patrolling hound perm_ench:bleeding
1238 TILE:   c = wall_hall
1239 SUBST:  y = xx.
1240 : interest_check(_G)
1241 MAP
1242  xxxxx
1243 xxcccxx
1244 xycAcyx
1245 x.._..x
1246 xy...yx
1247  y...y
1248   @@@
1249 ENDMAP
1250
1251 NAME:   makhleb_grotto_becter
1252 TAGS:   no_monster_gen temple_overflow_1 temple_overflow_makhleb
1253 DEPTH:  D:2-9
1254 MONS:   iron imp w:1 / shadow imp w:1 / crimson imp
1255 KFEAT:  _ = altar_makhleb
1256 TILE:   c = wall_hall
1257 FTILE:  A_'1 = floor_grey_dirt
1258 SUBST:  ' = .
1259 : interest_check(_G)
1260 MAP
1261  xxxxx
1262 xxcccxx
1263 xwcAcwx
1264 xww_wwx
1265 xww1wwx
1266 x.w'w.x
1267 xx...xx
1268  xx+xx
1269    @
1270 ENDMAP
1271
1272 ### Nemelex overflow altars ###################################################
1273
1274 NAME:  nemelex_xobeh_ov_fountains_minmay
1275 TAGS:  temple_overflow_1 temple_overflow_nemelex_xobeh uniq_altar_nemelex_xobeh
1276 TAGS:  transparent decor
1277 KFEAT: _ = altar_nemelex_xobeh
1278 : interest_check(_G)
1279 MAP
1280 U@U
1281 @_@
1282 U@U
1283 ENDMAP
1284
1285 ###################################################################
1286 # Nemelex altar (Shiori)
1287 # Perhaps could have different parameters for the two types of clouds,
1288 # and different patterns.
1289 NAME:   nemelex_altar_shiori
1290 DEPTH:  D, Depths, Elf, Vaults
1291 TAGS:   temple_overflow_1 temple_overflow_nemelex_xobeh uniq_altar_nemelex_xobeh
1292 TAGS:   no_pool_fixup no_monster_gen no_item_gen
1293 TAGS:   generate_awake patrolling no_rotate
1294 TAGS:   layout_rooms layout_city layout_open
1295 KPROP:  abcdefghBR' = no_tele_into
1296 KFEAT:  _ = altar_nemelex_xobeh
1297 SUBST:  b:aa. , a:n. , d:c. , c:nn. , f:ee. , e:nn. , h:g. , g:n.
1298 SUBST:  G:GTUVblw> , C=c
1299 SUBST:  ':.
1300 MARKER: R = lua:fog_machine { cloud_type="flame", walk_dist=1, size=9, \
1301             pow_max=20, delay=10, buildup_amnt=14, buildup_time=7, \
1302             spread_rate=3, start_clouds=1 }
1303 MARKER: B = lua:fog_machine { cloud_type="foul pestilence", walk_dist=1, \
1304             size=9,  pow_max=20, delay=10, buildup_amnt=14, buildup_time=7, \
1305             spread_rate=3, start_clouds=1 }
1306 KFEAT:  RB = floor
1307 MAP
1308 CCCCCCCC+++CCCCCCCC
1309 Cnnnnnnn...nnnnnnnC
1310 Cnab'ban...ncd'dcnC
1311 Cnb'''bn.G.nd'''dnC
1312 Cn''B''n...n''R''nC
1313 Cnb'''bn...nd'''dnC
1314 Cnab'ban...ncd'dcnC
1315 Cnnnnnnn...nnnnnnnC
1316 CG......._.......GC
1317 Cnnnnnnn...nnnnnnnC
1318 Cnef'fen...ngh'hgnC
1319 Cnf'''fn...nh'''hnC
1320 Cn''R''n...n''B''nC
1321 Cnf'''fn.G.nh'''hnC
1322 Cnef'fen...ngh'hgnC
1323 Cnnnnnnn...nnnnnnnC
1324 CCCCCCCC+++CCCCCCCC
1325 ENDMAP
1326
1327 NAME:    nemelex_dance_club_becter
1328 TAGS:    overflow_altar_nemelex_xobeh transparent
1329 TAGS:    no_rotate no_vmirror no_monster_gen no_item_gen
1330 DEPTH:   D:2-9
1331 : if you.depth() <= 4 then
1332 MONS:    orc ; club
1333 : else
1334 MONS:    ogre ; giant club
1335 : end
1336 MONS:    ooze
1337 KFEAT:   _ = altar_nemelex_xobeh
1338 SHUFFLE:  12_
1339 COLOUR:  12' = random
1340 TILE:    x = wall_pebble_darkgray
1341 MAP
1342     .....
1343    ..xxx..
1344    .xx'xx.
1345  ...x'1'x...
1346 ..xxxx'xxxx..
1347 .xx''x+x''xx.
1348 .x'2'+.+'_'x.
1349 .xx'xx.xx'xx.
1350 ..xxx.x.xxx..
1351  .....x.....
1352     .xxx.
1353     .....
1354 ENDMAP
1355
1356 NAME:   nemelex_diamond_rough_becter
1357 TAGS:   overflow_altar_nemelex_xobeh transparent
1358 KFEAT:  _ = altar_nemelex_xobeh
1359 COLOUR: x = lightred
1360 COLOUR: 'b = silver
1361 TILE:   x = wall_pebble_red
1362 TILE:   b = dngn_crystal_white
1363 : interest_check(_G)
1364 : set_feature_name("crystal_wall", "wall of white crystal")
1365 MAP
1366     ...
1367    ..x..
1368   ..xxx..
1369  ..xxbxx..
1370 ..xxb'bxx..
1371 .xxb'_'bxx.
1372 ..xxb'bxx..
1373  ..x+b+x..
1374   ..xxx..
1375    ..x..
1376     ...
1377 ENDMAP
1378
1379 NAME:   nemelex_lonely_heart_becter
1380 TAGS:   overflow_altar_nemelex_xobeh transparent
1381 TAGS:   no_rotate no_vmirror no_monster_gen no_item_gen
1382 DEPTH:  D:2-9
1383 MONS:   nothing w:4 / jessica w:1
1384 KFEAT:  _ = altar_nemelex_xobeh
1385 COLOUR: x = lightred
1386 TILE:   x = wall_pebble_red
1387 MAP
1388   .... ....
1389  ..xx...xx..
1390 ..xxxx.xxxx..
1391 .xx..x+x..xx.
1392 .xx.......xx.
1393 ..xx.._..xx..
1394  ..xx.1.xx..
1395   ..xx.xx..
1396    ..xxx..
1397     .....
1398 ENDMAP
1399
1400 NAME:   nemelex_spade_bored_becter
1401 TAGS:   overflow_altar_nemelex_xobeh transparent
1402 TAGS:   no_rotate no_vmirror no_monster_gen no_item_gen
1403 DEPTH:  D:2-9
1404 KFEAT:  _ = altar_nemelex_xobeh
1405 KFEAT:  o = known shaft trap
1406 NSUBST: ' = 6:o / *:.
1407 TILE:   x = wall_pebble_darkgray
1408 MAP
1409      .....
1410     ..xxx..
1411    ..xx'xx..
1412   ..xx'''xx..
1413  ..xx''_''xx..
1414 ..xx'''''''xx..
1415 .xx'''''''''xx.
1416 .x'''xxxxx'''x.
1417 .xx'+x.x.x+'xx.
1418 ..xxx..x..xxx..
1419  .....xxx.....
1420      .....
1421 ENDMAP
1422
1423 ### Okawaru overflow altars ###################################################
1424
1425 NAME:    okawaru_metal_pillars_1_2
1426 TAGS:    temple_overflow_1 temple_overflow_okawaru uniq_altar_okawaru
1427 TAGS:    transparent decor
1428 DEPTH:   D:2-10, Orc
1429 WEIGHT:  7
1430 KFEAT:   _ = altar_okawaru
1431 SHUFFLE: v'
1432 SUBST:   ' = .
1433 : interest_check(_G)
1434 MAP
1435 .....
1436 .v'v.
1437 .'_'.
1438 .v'v.
1439 .....
1440 ENDMAP
1441
1442 NAME:   okawaru_metal_pillars_3
1443 TAGS:   temple_overflow_1 temple_overflow_okawaru uniq_altar_okawaru
1444 TAGS:   transparent decor
1445 DEPTH:  D:2-10, Orc
1446 WEIGHT: 3
1447 KFEAT:  _ = altar_okawaru
1448 MAP
1449 .......
1450 ...v...
1451 ..v.v..
1452 .v._.v.
1453 ..v.v..
1454 ...v...
1455 .......
1456 ENDMAP
1457
1458 NAME:   okawaru_trees_1
1459 TAGS:   temple_overflow_1 temple_overflow_okawaru uniq_altar_okawaru
1460 TAGS:   transparent decor
1461 DEPTH:  D:2-10
1462 WEIGHT: 5
1463 KFEAT:  _ = altar_okawaru
1464 : interest_check(_G)
1465 MAP
1466 .........
1467 .v.t.t.v.
1468 .........
1469 .t.t.t.t.
1470 ...._....
1471 .t.t.t.t.
1472 .........
1473 .v.t.t.v.
1474 .........
1475 ENDMAP
1476
1477 NAME:   okawaru_trees_2
1478 TAGS:   temple_overflow_1 temple_overflow_okawaru uniq_altar_okawaru
1479 TAGS:   transparent decor
1480 DEPTH:  D:2-10
1481 WEIGHT: 5
1482 KFEAT:  _ = altar_okawaru
1483 : interest_check(_G)
1484 MAP
1485 ...........
1486 .v...t...v.
1487 ....t.t....
1488 ...t.t.t...
1489 ..t.t.t.t..
1490 .t.t._.t.t.
1491 ..t.t.t.t..
1492 ...t.t.t...
1493 ....t.t....
1494 .v...t...v.
1495 ...........
1496 ENDMAP
1497
1498 NAME:  okawaru_ov_weapons_minmay
1499 TAGS:  temple_overflow_1 temple_overflow_okawaru uniq_altar_okawaru
1500 TAGS:  transparent decor
1501 ITEM:  hand axe, falchion, mace, spear
1502 KFEAT: _ = altar_okawaru
1503 : interest_check(_G)
1504 MAP
1505    .....
1506   ...v...
1507  ...vvv...
1508 ...........
1509 ..v.e.f.v..
1510 .vv.._..vv.
1511 ..v.d.g.v..
1512 ...........
1513  ...vvv...
1514   ...v...
1515    .....
1516 ENDMAP
1517
1518 NAME:  okawaru_altar_gauntlet_db
1519 TAGS:  uniq_altar_okawaru temple_overflow_1 temple_overflow_okawaru
1520 DEPTH: D:2-9
1521 KFEAT: _ = altar_okawaru
1522 MONS:  goblin; stone q:5 / hobgoblin; stone q:5 / gnoll; stone q:5 /\
1523        orc; stone q:5 / kobold; stone q:5
1524 MAP
1525   xxx
1526 xxx_xxx
1527 x1w.wxx
1528 xxw.w1x
1529 x1w.wxx
1530 xxw.w1x
1531 x1w.wxx
1532 xxw.w1x
1533 xxx+xxx
1534 ENDMAP
1535
1536 NAME:   okawaru_gym_becter
1537 TAGS:   uniq_altar_okawaru temple_overflow_1 temple_overflow_okawaru
1538 TAGS:   transparent decor
1539 DEPTH:  D:2-9
1540 KFEAT:  _ = altar_okawaru
1541 MAP
1542    .....
1543  .........
1544  .vv...vv.
1545 ..v.....v..
1546 ....._.....
1547 ..v.....v..
1548  .vv...vv.
1549  .........
1550    .....
1551 ENDMAP
1552
1553 NAME:    okawaru_humans
1554 TAGS:    uniq_altar_okawaru temple_overflow_1 temple_overflow_okawaru
1555 TAGS:    no_monster_gen no_wall_fixup transparent
1556 DEPTH:   D:7-12
1557 COLOUR:  1 = yellow, ' = yellow, x = white
1558 MONS:    human ; long sword . ring mail
1559 FTILE:   1'xO = floor_sandstone
1560 RTILE:   x = wall_tomb
1561 KFEAT:   _ = altar_okawaru
1562 : interest_check(_G)
1563 MAP
1564 .........
1565 .xxxxxxx.
1566 .x1'_'1x.
1567 .x'''''x.
1568 .x'x'x'x.
1569 .xGx'xGx.
1570 .xxx'xxx.
1571 ....'....
1572 ENDMAP
1573
1574 NAME:   kennysheep_okawaru_gauntlet
1575 TAGS:   temple_overflow_1 temple_overflow_okawaru uniq_altar_okawaru
1576 TAGS:   no_pool_fixup transparent
1577 DEPTH:  D:2-9
1578 KFEAT:  _ = altar_okawaru
1579 KMONS:  1 = goblin ; spear
1580 KPROP:  1 = no_tele_into
1581 KMASK:  1 = opaque
1582 MAP
1583       vvvvvvv
1584  .....w1w...v
1585 ......www.G.v
1586 @........G_Gv
1587 ......www.G.v
1588  .....w1w...v
1589       vvvvvvv
1590 ENDMAP
1591
1592 ### Qazlal overflow altars ####################################################
1593
1594 # There's always a safe path to the altar.
1595 NAME:   grunt_qazlal_clouds
1596 DEPTH:  D:2-
1597 TAGS:   transparent no_monster_gen no_item_gen no_trap_gen temple_overflow_1
1598 TAGS:   temple_overflow_qazlal uniq_altar_qazlal
1599 KFEAT:  _ = altar_qazlal
1600 MARKER:  L = lua:fog_machine { cloud_type = "flame", \
1601                                pow_min = 5, pow_max = 7, delay_min = 55, \
1602                                delay_max = 75, size = 1, walk_dist = 0, \
1603                                spread_rate = 0, excl_rad = 0 }
1604 MARKER:  M = lua:fog_machine { cloud_type = "freezing vapour", \
1605                                pow_min = 5, pow_max = 7, delay_min = 55, \
1606                                delay_max = 75, size = 1, walk_dist = 0, \
1607                                spread_rate = 0, excl_rad = 0 }
1608 MARKER:  N = lua:fog_machine { cloud_type = "sparse dust", \
1609                                pow_min = 5, pow_max = 7, delay_min = 55, \
1610                                delay_max = 75, size = 1, walk_dist = 0, \
1611                                spread_rate = 0 }
1612 # not a storm cloud - it would be too noisy
1613 MARKER:  O = lua:fog_machine { cloud_type = "rain", \
1614                                pow_min = 5, pow_max = 7, delay_min = 55, \
1615                                delay_max = 75, size = 1, walk_dist = 0, \
1616                                spread_rate = 0 }
1617 SHUFFLE: LMNO
1618 KPROP:   LMNO- = no_tele_into
1619 KFEAT:   - = .
1620 : interest_check(_G)
1621 MAP
1622 ccc@ccc
1623 cL-.-Mc
1624 c-...-c
1625 @.._..@
1626 c-...-c
1627 cN-.-Oc
1628 ccc@ccc
1629 ENDMAP
1630
1631 NAME:   grunt_qazlal_sundering
1632 DEPTH:  D:2-, !D:$
1633 TAGS:   no_monster_gen no_item_gen no_trap_gen temple_overflow_1
1634 TAGS:   temple_overflow_qazlal uniq_altar_qazlal
1635 KFEAT:  _ = altar_qazlal
1636 KPROP:  c = no_tele_into
1637 SUBST:  c = cccl^.
1638 SUBST:  - = ..l^
1639 KFEAT:  ^ = known shaft trap
1640 KITEM:  . = nothing w:189 / stone / large rock q:1 w:1
1641 KFEAT:  . = .
1642 : interest_check(_G)
1643 MAP
1644  ----@----
1645 -ccc-.-ccc-
1646 -ccc-.-ccc-
1647 -ccc-.-ccc-
1648 -----.-----
1649 @...._....@
1650 -----.-----
1651 -ccc-.-ccc-
1652 -ccc-.-ccc-
1653 -ccc-.-ccc-
1654  ----@----
1655 ENDMAP
1656
1657 NAME:  nicolae_qazlal_eye_of_the_storm
1658 TAGS:  temple_overflow_qazlal temple_overflow_1 uniq_altar_qazlal
1659 TAGS:  no_trap_gen no_item_gen no_monster_gen
1660 DEPTH: D:2-
1661 KPROP: 'd = no_tele_into
1662 KMONS: d = diamond obelisk
1663 KFEAT: _ = altar_qazlal
1664 : interest_check(_G)
1665 MAP
1666  ccccccccccccc
1667  c'''''''''''c
1668  c'''''''''''c
1669  c'''''''''''c
1670  c'''''''''''c
1671 @nnnnnn''''''c
1672 @...._nd'''''c
1673 @nnnnnn''''''c
1674  c'''''''''''c
1675  c'''''''''''c
1676  c'''''''''''c
1677  c'''''''''''c
1678  ccccccccccccc
1679 ENDMAP
1680
1681 NAME:    nicolae_qazlal_style_of_elements
1682 TAGS:    temple_overflow_qazlal temple_overflow_1 uniq_altar_qazlal
1683 TAGS:    no_trap_gen no_item_gen no_monster_gen transparent
1684 DEPTH:   D:2-
1685 SHUFFLE: faew
1686 KPROP:   faew = no_tele_into
1687 KMASK:   faew = opaque
1688 KMONS:   f = fire elemental
1689 KMONS:   a = air elemental
1690 KMONS:   e = earth elemental
1691 KMONS:   w = water elemental
1692 KFEAT:   _ = altar_qazlal
1693 KFEAT:   f = lava
1694 KFEAT:   w = deep_water
1695 MARKER:  a = lua:fog_machine { cloud_type = "thin mist", \
1696                                pow_min = 100, pow_max = 100, delay = 1, \
1697                                size = 1, walk_dist = 0, start_clouds = 1 }
1698 MARKER:  e = lua:fog_machine { cloud_type = "sparse dust", \
1699                                pow_min = 100, pow_max = 100, delay = 1, \
1700                                size = 1, walk_dist = 0, start_clouds = 1 }
1701 : interest_check(_G)
1702 MAP
1703 ccc.@.ccc
1704 cfn...nac
1705 cnn...nnc
1706 .........
1707 ...._....
1708 .........
1709 cnn...nnc
1710 cwn...nec
1711 ccc...ccc
1712 ENDMAP
1713
1714 # general_overflow_altar cannot contain the power of Qazlal
1715 NAME:    nicolae_qazlal_general_emergency
1716 TAGS:    temple_overflow_qazlal temple_overflow_1 uniq_altar_qazlal
1717 TAGS:    no_monster_gen no_pool_fixup transparent
1718 DEPTH:   D:2-
1719 SHUFFLE: xXY / xXY / xXY / abc
1720 SHUFFLE: XY
1721 SUBST:   z = w.., X = +++w., Y = xxxxw., x = wxxx, a = w, b = w, c = w
1722 SHUFFLE: ABCD
1723 SUBST:   A = >, C = 'GTU, D = '
1724 KFEAT:   B = altar_qazlal
1725 KMASK:   B>'GTU = opaque
1726 SHUFFLE: wll
1727 : interest_check(_G)
1728 MAP
1729 ...........z.
1730 .z...z.zzz...
1731 ..zz.z.wwwz..
1732 ..wxXYYxwwz..
1733 .zwwwwwwxwz..
1734 zwwxwABwxz...
1735 zwwxwCDwx..z.
1736 .zzxwwwwx.z..
1737 ...xxxwxxwz..
1738 .z...zwwwz...
1739 ...z..zzz....
1740 ...........z.
1741 ENDMAP
1742
1743
1744 # Ru overflow altar vaults ####################################################
1745
1746 # A few unlucky monsters permanently afflicted with Ru's various status effects.
1747 # the monsters in group B should all be non-intelligent, so that TSO won't get upset
1748 # about attacking them while blind. it's a pain for a monster you're not allowed
1749 # to attack to chase you throughout the level
1750 NAME: nicolae_ru_great_annihilating_truth
1751 TAGS: temple_overflow_ru temple_overflow_1 uniq_altar_ru transparent
1752 TAGS: no_monster_gen no_item_gen
1753 : interest_check(_G)
1754 DEPTH: D:2-9
1755 SHUFFLE: MCSBP
1756 KFEAT: _ = altar_ru
1757 KMONS: P = ball python perm_ench:paralysis / rat perm_ench:paralysis / \
1758   frilled lizard perm_ench:paralysis / giant cockroach perm_ench:paralysis / \
1759   quokka perm_ench:paralysis / kobold w:5 perm_ench:paralysis / \
1760   goblin w:5 perm_ench:paralysis / hobgoblin w:5 perm_ench:paralysis
1761 KMONS: C = bat perm_ench:corona / adder perm_ench:corona / \
1762   kobold perm_ench:corona / goblin perm_ench:corona / hobgoblin perm_ench:corona
1763 KMONS: S = jackal perm_ench:slow / bat perm_ench:slow / adder perm_ench:slow / \
1764   kobold perm_ench:slow / goblin perm_ench:slow / hobgoblin perm_ench:slow
1765 KMONS: B = ball python perm_ench:blind / frilled lizard perm_ench:blind / \
1766   giant cockroach perm_ench:blind / bat perm_ench:blind
1767 KMONS: M = orc wizard perm_ench:mute
1768 MAP
1769 @...   ...@
1770 .+xxxxxxx+.
1771 .x...x...x.
1772 .x.P.x.C.x.
1773  x.......x
1774  xxx._.xxx
1775  x.......x
1776 .x.S.x.B.x.
1777 .x...x...x.
1778 .+xxxxxxx+.
1779 @...   ...@
1780 ENDMAP
1781
1782 NAME: nicolae_ru_awakened_eye
1783 TAGS: temple_overflow_ru temple_overflow_1 uniq_altar_ru transparent decor
1784 TAGS: no_pool_fixup
1785 : interest_check(_G)
1786 DEPTH: D:2-
1787 KFEAT: _ = altar_ru
1788 MAP
1789     .......
1790    .ccccccc.
1791   .c..WWW..c.
1792  .c..W...W..c.
1793 .c...W._.W...c.
1794  .c..W...W..c.
1795   .c..WWW..c.
1796    .ccccccc.
1797     .......
1798 ENDMAP
1799
1800 # Overgrown and disused, since many pilgrims find Ru's sacrifices too onerous.
1801 NAME: nicolae_ru_the_path_less_chosen
1802 TAGS: temple_overflow_ru temple_overflow_1 uniq_altar_ru transparent decor
1803 TAGS: no_item_gen no_monster_gen
1804 : interest_check(_G)
1805 DEPTH: D:2-
1806 NSUBST: r = 3:^ / 1:^p / 7:p / 2:p. / *:., i = 1:^^p. / 2:p / *:., \
1807         A = . / xxp / x, B = . / xxp / x, C = xxp / .
1808 KFEAT: _ = altar_ru
1809 KFEAT: ^ = known web trap
1810 KMONS: p = plant / fungus w:3
1811 MAP
1812 xxxxxxx
1813 xrrrrrxxxxx
1814 xriiirxACBx
1815 xri_ir.A.B.@
1816 xriiirxACBx
1817 xrrrrrxxxxx
1818 xxxxxxx
1819 ENDMAP
1820
1821 NAME: nicolae_ru_sacrificial_ziggurat
1822 TAGS: temple_overflow_ru temple_overflow_1 uniq_altar_ru transparent decor
1823 : interest_check(_G)
1824 DEPTH: D:2-
1825 SUBST: b = B.., @ = %@@
1826 KPROP: B% = bloody
1827 SUBST: B = ., % = @
1828 FTILE: ' = floor_sandstone
1829 FTILE: .@_ = floor_limestone
1830 TILE: c = wall_sandstone
1831 KFEAT: _ = altar_ru
1832 MAP
1833 cccccc@cccccc
1834 c'''''b'''''c
1835 c'ccccbcccc'c
1836 c'c'''b'''c'c
1837 c'c'ccbcc'c'c
1838 c'c'cBBBc'c'c
1839 @bbbbB_Bbbbb@
1840 c'c'cBBBc'c'c
1841 c'c'ccbcc'c'c
1842 c'c'''b'''c'c
1843 c'ccccbcccc'c
1844 c'''''b'''''c
1845 cccccc@cccccc
1846 ENDMAP
1847
1848 NAME: nicolae_ru_path_of_blood
1849 TAGS: temple_overflow_ru temple_overflow_1 uniq_altar_ru transparent decor
1850 TAGS: no_monster_gen
1851 : interest_check(_G)
1852 DEPTH: D:2-
1853 KPROP: , = bloody
1854 KPROP: l = no_cloud_gen
1855 KFEAT: _ = altar_ru
1856 MAP
1857 @lcccccccccc
1858 l,......,llc
1859 @l,l,l,l,_lc
1860 l,......,llc
1861 @lcccccccccc
1862 ENDMAP
1863
1864 NAME:   hangedman_ru_absence
1865 TAGS:   temple_overflow_ru temple_overflow_1 uniq_altar_ru transparent decor
1866 TAGS:   no_pool_fixup
1867 DEPTH:  D:2-
1868 WEIGHT: 5
1869 KFEAT:  _ = altar_ru
1870 SUBST:  X : x., x : cxx, b: cbxx, + : W+++, m : mmw
1871 KMASK:  wW = no_monster_gen
1872 : interest_check(_G)
1873 MAP
1874 ......xxxxx......
1875 ..x...........x..
1876 xxxxxx.....xxxxxx
1877 ..x..x.....x..x..
1878 ..x..x.XxX.x..x..
1879 .....+..b..+.....
1880 ....xxbbbbbxx....
1881 .....+..b_.+.....
1882 ..x..x.XxX.m..m..
1883 ..x..x.....m..m..
1884 xxxxxx.....mmmmmm
1885 ..x...........m..
1886 ......xxxxx......
1887 ENDMAP
1888
1889 ### Sif Muna overflow altars ##################################################
1890
1891 NAME:   lemuel_blue_sif_altar
1892 DEPTH:  D:2-, Elf, Vaults
1893 TAGS:   no_monster_gen temple_overflow_1 temple_overflow_sif_muna
1894 TAGS:   uniq_altar_sif_muna decor
1895 COLOUR: . = blue
1896 FTILE:  . = floor_hall, C = floor_hall, @ = floor_hall, + = floor_hall
1897 KFEAT:  _ = altar_sif_muna
1898 : interest_check(_G)
1899 MAP
1900 xxxxxxxxxxxxxx
1901 ...........xxx
1902 @..........+_x
1903 ...........xxx
1904 xxxxxxxxxxxxxx
1905 ENDMAP
1906
1907 NAME:       tgw_sif
1908 DEPTH:      D:3-, Elf
1909 TAGS:       no_item_gen no_monster_gen no_pool_fixup decor
1910 TAGS:       temple_overflow_1 temple_overflow_sif_muna uniq_altar_sif_muna
1911 KFEAT:      _ = altar_sif_muna
1912 MONS:       orc wizard w:15 / Jessica / Blork the orc
1913 NSUBST:     M = 1:1 / *:"
1914 SUBST:      ' : "'., ' = ''.
1915 COLOUR:     . = blue
1916 SUBST:      ' = ., " = .
1917 : interest_check(_G)
1918 MAP
1919         xx@xx
1920         x...x
1921         x...x
1922       xxx...xxx
1923      xx'''''''xx
1924     xx'''...'''xx
1925     x'''.www.'''x
1926    xx''.wwwww.''xx
1927    x''.wwM"Mww.''x
1928    x''.wwM>Mww.''x
1929    x''.wwMMMww.''x
1930    xx''.wwwww.''xx
1931     x'''.www.'''x
1932     xx'''...'''xx
1933      xx'''''''xx
1934       xxx...xxx
1935         x._.x
1936         x...x
1937         xxxxx
1938 ENDMAP
1939
1940 NAME:   led_sif_book
1941 DEPTH:  D:3-12, Orc
1942 TAGS:   no_item_gen no_pool_fixup no_monster_gen
1943 TAGS:   temple_overflow_1 temple_overflow_sif_muna uniq_altar_sif_muna
1944 KPROP:  1d = no_tele_into
1945 KFEAT:  _ = altar_sif_muna
1946 KFEAT:  d = escape_hatch_down
1947 KITEM:  d = randbook owner:Sif_Muna numspells:1 slevels:1
1948 MONS:   orc wizard
1949 COLOUR: .@+1 = blue
1950 FTILE:  .@+1G_ = floor_marble
1951 : interest_check(_G)
1952 MAP
1953 xxxxxxxxx
1954 xbbbbx..xx
1955 x1w..xG..x
1956 xdw..+._.@
1957 x1w..xG..x
1958 xbbbbx..xx
1959 xxxxxxxxx
1960 ENDMAP
1961
1962 NAME:   led_sif_pool
1963 DEPTH:  D:2-9
1964 TAGS:   no_item_gen no_monster_gen no_pool_fixup
1965 TAGS:   temple_overflow_1 temple_overflow_sif_muna uniq_altar_sif_muna
1966 KFEAT:  _ = altar_sif_muna
1967 COLOUR: . = blue
1968 FTILE:  ._ = floor_marble
1969 : interest_check(_G)
1970 MAP
1971  xxx@xxx
1972  xxx+xxx
1973 xxWW.WWxx
1974 xWWW.WWWx
1975 xWW...WWx
1976 xWW._.WWx
1977 xWW...WWx
1978 xWWWWWWWx
1979 xxWWWWWxx
1980  xxxxxxx
1981 ENDMAP
1982
1983 ### Trog overflow altars ######################################################
1984
1985 NAME:  bloody_trog
1986 TAGS:  uniq_altar_trog temple_overflow_1 temple_overflow_trog
1987 TAGS:  transparent decor
1988 DEPTH: D:2-12, Orc, Vaults
1989 KPROP: . = bloody / nothing
1990 KFEAT: _ = altar_trog
1991 KITEM: _ = animal skin, dagger
1992 : interest_check(_G)
1993 MAP
1994 ...
1995 ._.
1996 ...
1997 ENDMAP
1998
1999 NAME:   trog_ov_bears_minmay
2000 TAGS:   temple_overflow_1 temple_overflow_trog uniq_altar_trog
2001 TAGS:   transparent
2002 DEPTH:  D:6-
2003 : if you.absdepth() < 10 then
2004 MONS:   black bear
2005 : else
2006 MONS:   polar bear
2007 : end
2008 MONS:   bush
2009 NSUBST: ' = 2:2 / 2=2. / *=.
2010 KFEAT:  _ = altar_trog
2011 MAP
2012 .....
2013 .'''.
2014 .1_1.
2015 .'''.
2016 .....
2017 ENDMAP
2018
2019 NAME:   tgw_trog
2020 TAGS:   no_item_gen no_monster_gen patrolling
2021 TAGS:   temple_overflow_1 temple_overflow_trog uniq_altar_trog
2022 DEPTH:  D:2-9
2023 KFEAT:  _ = altar_trog
2024 KPROP:  1 = no_tele_into
2025 MONS:   moth of wrath, rat / worm w:5
2026 ITEM:   any weapon
2027 NSUBST: M = 4:d / *:.
2028 SUBST:  + = +....
2029 KFEAT:  o = iron_grate
2030 MAP
2031       xxxxxxx
2032      xxxMMMxxx
2033     xxMMM2MMMxx
2034    xxMM22_22MMxx
2035    xx.........xx
2036    x....ooo....x
2037    x...oo1oo...x
2038    x....ooo....x
2039    x...........x
2040    xx.........xx
2041     xx.......xx
2042      xxxx+xxxx
2043        xx@xx
2044 ENDMAP
2045
2046 NAME:   trog_eyes_of_draining
2047 TAGS:   uniq_altar_trog temple_overflow_1 temple_overflow_trog patrolling
2048 DEPTH:  D:3-9
2049 WEIGHT: 4
2050 MONS:   eye of draining
2051 : if you.absdepth() > 5 and crawl.coinflip() then
2052 KMONS:  2 = ogre god:trog ; giant club ego:antimagic ident:type | w:3 giant club / \
2053         ogre god:trog ; giant spiked club ego:antimagic ident:type | w:5 giant spiked club / \
2054         orc warrior god:trog ; halberd ego:antimagic ident:type | war axe ego:antimagic ident:type | \
2055         flail ego:antimagic ident:type | great mace ego:antimagic ident:type | any weapon / \
2056         big kobold god:trog ; short sword ego:antimagic ident:type | dagger ego:antimagic ident:type | \
2057         rapier ego:antimagic ident:type | rapier
2058 : else
2059 KMONS:  2 = orc god:trog ; spear ego:antimagic ident:type | hand axe ego:antimagic ident:type | \
2060         war axe ego:antimagic ident:type | any weapon / \
2061         kobold god:trog ; short sword ego:antimagic ident:type | hand axe ego:antimagic ident:type | \
2062         club ego:antimagic ident:type | whip ego:antimagic ident:type | any weapon / \
2063         goblin god:trog ; dagger ego:antimagic ident:type | short sword ego:antimagic ident:type / \
2064         gnoll god:trog ; spear ego:antimagic ident:type | trident ego:antimagic ident:type | \
2065         halberd ego:antimagic ident:type | whip ego:antimagic ident:type | halberd | any weapon
2066 : end
2067 KFEAT:  _ = altar_trog
2068 NSUBST: 1 = 1:1 / 1 = 1. / 1 = 1.. / *:.
2069 MAP
2070   xxxxx
2071  xx111xx
2072 xx11_11xx
2073 x112.211x
2074 x.......x
2075 x.G...G.x
2076 xx.....xx
2077  xx@@@xx
2078 ENDMAP
2079
2080 NAME:   trog_butcher_becter
2081 TAGS:   overflow_altar_trog
2082 DEPTH:  D:2-9, Orc, !Orc:$
2083 : if you.absdepth() < 6 then
2084 MONS:   orc ; hand axe . animal skin
2085 MONS:   leopard gecko / rat / frilled lizard / quokka
2086 {{
2087   dgn.delayed_decay(_G, 'd',
2088                     'leopard gecko chunk q:1 / rat chunk q:1 / ' ..
2089                     'frilled lizard chunk q:1 / quokka chunk q:1')
2090 }}
2091 : else
2092 MONS:   orc warrior ; war axe . animal skin
2093 MONS:   iguana / worker ant
2094 {{
2095   dgn.delayed_decay(_G, 'd',
2096                     'yak chunk q:1 / iguana chunk q:1 / ' ..
2097                     'worker ant chunk q:1')
2098 }}
2099 : end
2100 NSUBST: ' = 3:2 / *:.
2101 KPROP:  1y" = bloody
2102 KFEAT:  _ = altar_trog
2103 KFEAT:  ^ = known shaft trap
2104 KFEAT:  m = iron_grate
2105 SUBST:  y = x
2106 SUBST:  " = .
2107 MAP
2108   xxxxxxx
2109  xx'''''xx
2110 xx.xxxxxxxx
2111 xx+xmmmx^yx
2112 xx.."1d""yx
2113 xx..._"..xx
2114  xx.....xx
2115   xx...xx
2116      @
2117 ENDMAP
2118
2119 NAME:   trog_hazing_becter
2120 TAGS:   overflow_altar_trog no_monster_gen no_item_gen no_pool_fixup
2121 DEPTH:  D:2-9, Orc, !Orc:$
2122 MONS:   goblin ; stone q:5 . animal skin / \
2123         hobgoblin ; stone q:5 . animal skin / \
2124         kobold ; stone q:5 | throwing net q:1 . animal skin
2125 ITEM:   stone
2126 NSUBST: T = 6:1 / *:.
2127 SUBST:  . = d....
2128 KFEAT:  _ = altar_trog
2129 KFEAT:  m = iron_grate
2130 : interest_check(_G)
2131 MAP
2132   xxxxx
2133  xxmmmxx
2134 xx.._..xx
2135 xTw...wTx
2136 xTWw.wWTx
2137 xTTw.wTTx
2138 xxTw.wTxx
2139  xxx.xxx
2140   xx@xx
2141 ENDMAP
2142
2143 NAME:   trog_three_pillars_becter
2144 TAGS:   overflow_altar_trog transparent decor
2145 DEPTH:  D:2-9
2146 KFEAT:  _ = altar_trog
2147 SUBST:  y = x..
2148 SUBST:  z = xx.
2149 MAP
2150  ..........
2151 .......yy..
2152 ..yy..zxxy.
2153 .yxxz.xbxy.
2154 .yxb...xxy.
2155 .yxx._.....
2156 .......xy..
2157 .....zbxy..
2158    ..yxxy..
2159    ...yy...
2160     ......
2161 ENDMAP
2162
2163 ### Uskayaw overflow altars ###################################################
2164
2165 NAME:   dancing_weapons_uskayaw
2166 DEPTH:  D:2-9
2167 TAGS:   temple_overflow_1 temple_overflow_uskayaw transparent
2168 MONS:   generate_awake dancing weapon ; dagger | hand axe
2169 KFEAT:  _ = altar_uskayaw
2170 NSUBST: ' = 2:1 / *:'
2171 KMASK:  1' = no_monster_gen
2172 KMASK:  1' = no_item_gen
2173 KMASK:  1' = no_trap_gen
2174 KMASK:  1' = opaque
2175 KPROP:  1' = no_tele_into
2176 MAP
2177 .......
2178 .mmmmm.
2179 .m'''m.
2180 .m'''m.
2181 .mmmmm.
2182 .......
2183 ..._...
2184  .....
2185 ENDMAP
2186
2187 NAME:   eat_drink_and_be_merry_uskayaw
2188 DEPTH:  D:2-9
2189 TAGS:   temple_overflow_1 temple_overflow_uskayaw transparent
2190 KFEAT:  _ = altar_uskayaw
2191 ITEM:   any potion q:1, any weapon
2192 ITEM:   ration
2193 MAP
2194 ...........
2195 .G.......G.
2196 ...........
2197 .G.......G.
2198 ....def....
2199 .G..._...G.
2200 ....ccc....
2201   .......
2202 ENDMAP
2203
2204 ### Vehumet overflow altars ###################################################
2205
2206 # Rather than put the flame cloud on the altar, flames now surround the
2207 # altar, and the maximum delay between flames has gone away. Thus, standing
2208 # on the altar properly is safe, and a cautious player can time their entrance
2209 # to take no damage.
2210 NAME:   fiery_altar_vehumet
2211 DEPTH:  D:2-10, Orc, !Orc:$
2212 WEIGHT: 8
2213 TAGS:   temple_overflow_1 temple_overflow_vehumet
2214 MARKER: : = lua:fog_machine { cloud_type = "flame", \
2215                pow_min = 6, pow_max = 8, delay_min = 55, delay_max = 75, \
2216                size = 2, walk_dist = 0, spread_rate= 0 }
2217 KFEAT:  _ = altar_vehumet
2218 : interest_check(_G)
2219 MAP
2220 .....
2221 .:.:.
2222 .._..
2223 .:.:.
2224 .....
2225 ENDMAP
2226
2227 NAME:    vehumet_statue
2228 DEPTH:   D:4-10
2229 TAGS:    temple_overflow_1 temple_overflow_vehumet transparent
2230 SHUFFLE: 12
2231 MONS:    statue name:charred name_adjective tile:mons_statue_mage \
2232              hp:12 hd:3 spells:throw_flame.53.magical
2233 MONS:    statue name:frost-covered name_adjective tile:mons_statue_mage \
2234              hp:12 hd:3 spells:throw_frost.53.magical
2235 KFEAT:   _ = altar_vehumet
2236 MAP
2237 ...........
2238 .bbbbbbbbb.
2239 .b.......b.
2240 .b.1._.....
2241 .b.......b.
2242 .bbbbbbbbb.
2243 ...........
2244 ENDMAP
2245
2246 NAME:    vehumet_crystals
2247 DEPTH:   D:2-10, Orc, !Orc:$
2248 TAGS:    temple_overflow_1 temple_overflow_vehumet transparent
2249 KFEAT:   _ = altar_vehumet
2250 : interest_check(_G)
2251 MAP
2252 .........
2253 ..b...b..
2254 .bbb.bbb.
2255 ..b...b..
2256 ...._....
2257 ..b...b..
2258 .bbb.bbb.
2259 ..b...b..
2260 .........
2261 ENDMAP
2262
2263 NAME:  vehumet_altar_wand_db
2264 TAGS:  uniq_altar_vehumet temple_overflow_1 temple_overflow_vehumet
2265 TAGS:  transparent patrolling
2266 DEPTH: D:4-9
2267 KFEAT: _ = altar_vehumet
2268 MONS:  goblin; wand of flame /\
2269        hobgoblin; wand of flame /\
2270        kobold; wand of flame
2271 MAP
2272 .......
2273 ...x...
2274 ...1...
2275 .x._.x.
2276 .......
2277 ...x...
2278 .......
2279 ENDMAP
2280
2281 ### Xom overflow altars #######################################################
2282
2283 NAME:   tgw_xom
2284 DEPTH:  D:2-, Depths
2285 TAGS:   no_item_gen no_monster_gen temple_overflow_1 temple_overflow_xom
2286 TAGS:   uniq_altar_xom
2287 KFEAT:  _ = altar_xom
2288 MONS:   place:D:1
2289 MONS:   orc ; club ego:chaos | dagger ego:chaos | spear ego:chaos
2290 MONS:   gnoll ; club ego:chaos | dagger ego:chaos | spear ego:chaos
2291 MONS:   boggart ; flail ego:chaos | long sword ego:chaos | trident ego:chaos
2292 MONS:   rakshasa ; flail ego:chaos | long sword ego:chaos | trident ego:chaos
2293 :  if you.depth() == dgn.br_depth(you.branch()) then
2294 KFEAT:  ~ = teleport trap w:20 / alarm trap w:3 / dispersal trap
2295 :  else
2296 KFEAT:  ~ = known shaft trap / teleport trap / alarm trap w:3 / dispersal trap
2297 :  end
2298 # Previously on raw average 5.17 M glyphs.
2299 NSUBST: ' = 1:_ / *:.
2300 NSUBST: . = 8:M / * = .:220 W:60 w:50 x:80 n:80 v b l % T U ~
2301 NSUBST: % = 1:*% / *:%
2302 SUBST:  M : .111123M
2303 NSUBST: 1 = 1:0 / 1:1 / * = 01., 2 = 1:2 / 2 = 2. /  * = 2...
2304 NSUBST: 3 = 1:3 / 2 = 3. / * = 3..., M = 1:1 / * = 123.
2305 :  if you.in_branch("Depths") then
2306 SUBST:  2 = 4, 3 = 5
2307 :  end
2308 COLOUR: . = random
2309 MAP
2310    xxxxxx@xxxxxx
2311   xx...........xx
2312  xx.............xx
2313 xx...............xx
2314 x.................x
2315 x.................x
2316 x'...............'x
2317 x'...............'x
2318 xx'.............'xx
2319  xx'''''''''''''xx
2320   xx'''''''''''xx
2321    xxxxxxxxxxxxx
2322 ENDMAP
2323
2324 NAME:    xom_teletrap_fun
2325 TAGS:    temple_overflow_1 temple_overflow_xom uniq_altar_xom
2326 TAGS:    transparent
2327 KFEAT:   _ = altar_xom
2328 NSUBST:  T = . / T
2329 KFEAT:   T = known teleport trap
2330 MAP
2331 .....
2332 .TTT.
2333 .T_T.
2334 .TTT.
2335 .....
2336 ENDMAP
2337
2338 NAME:    xom_butterflies
2339 TAGS:    temple_overflow_1 temple_overflow_xom transparent patrolling
2340 KFEAT:   _ = altar_xom
2341 KITEM:   _ = wand of random effects w:40 / any wand
2342 COLOUR:  . = random
2343 NSUBST:  . = 2: 1/ *: .
2344 MONS:    butterfly
2345 : interest_check(_G)
2346 MAP
2347 ...
2348 ._.
2349 ...
2350 ENDMAP
2351
2352 NAME:    xom_shifter_show
2353 TAGS:    temple_overflow_1 temple_overflow_xom uniq_altar_xom
2354 DEPTH:   D:7-
2355 MONS:    shapeshifter hd:1
2356 KFEAT:   _ = altar_xom
2357 NSUBST:  . = 2:1 / 1:> / * = _...
2358 :  if you.depth() == dgn.br_depth(you.branch()) then
2359 SUBST:   > = <
2360 :  end
2361 SUBST:   x = bmv
2362 KMASK:   .1 = no_trap_gen
2363 COLOUR:  .1 = random
2364 FTILE:   ._<>1 = floor_pebble
2365 MAP
2366  xxxxxxx
2367  x.....x
2368  m.....x
2369 @m.._..x
2370  m.....x
2371  x.....x
2372  xxxxxxx
2373 ENDMAP
2374
2375 NAME:    xom_confusion_cloud
2376 TAGS:    temple_overflow_1 temple_overflow_xom uniq_altar_xom
2377 DEPTH:   D:4-13
2378 KFEAT:   _ = altar_xom
2379 MARKER:  _ = lua:fog_machine { cloud_type = "noxious fumes", \
2380                pow_min = 6, pow_max = 8, delay_min = 35, delay_max = 55, \
2381                size = 3, walk_dist = 0, spread_rate= 0 }
2382 SUBST:   . = 1.
2383 SHUFFLE: wW/l.
2384 MONS:    random
2385 MAP
2386   wwwww
2387  ww...ww
2388  w.....w
2389 @W.._..w
2390  w.....w
2391  ww...ww
2392   wwwww
2393 ENDMAP
2394
2395 NAME:    xom_redecorated
2396 DEPTH:   D:2-, !D:$
2397 TAGS:    temple_overflow_1 temple_overflow_xom uniq_altar_xom decor transparent
2398 SUBST:   x = ccbbbv
2399 NSUBST:  . = 2:T / .
2400 SUBST:   . = lWwtm_~......
2401 KFEAT:   _ = altar_xom
2402 NSUBST:  T = 3:T / .
2403 KFEAT:   T = known teleport trap
2404 KFEAT:   ~ = shaft trap / alarm trap / teleport trap / dispersal trap
2405 : interest_check(_G)
2406 MAP
2407       @
2408    xxxTxxx
2409   xx.....xx
2410  xx.......xx
2411  x.........x
2412 @T...._....T@
2413  x.........x
2414  xx.......xx
2415   xx.....xx
2416    xxxTxxx
2417       @
2418 ENDMAP
2419
2420 NAME:   led_xom_imps
2421 DEPTH:  D:3-5
2422 TAGS:   temple_overflow_1 temple_overflow_xom uniq_altar_xom
2423 KFEAT:  _ = altar_xom
2424 KFEAT:  T = known teleport trap / dispersal trap
2425 NSUBST: I = 1:1 / 3:2
2426 MONS: crimson imp ; dagger ego:chaos ident:type, crimson imp ; nothing
2427 MAP
2428 xxxx+xxxx
2429 xIT...TIx
2430 xxx._.xxx
2431 xIT...TIx
2432 xxxx+xxxx
2433 ENDMAP
2434
2435 NAME: nicolae_xom_altar_mimics
2436 TAGS: temple_overflow_1 temple_overflow_xom uniq_altar_xom decor transparent
2437 DEPTH: D:3-
2438 WEIGHT: 1
2439 NSUBST: _ = 1:_ / 2:XXX_ / *:X
2440 KFEAT: _ = altar_xom
2441 KFEAT: X = altar_xom mimic
2442 : interest_check(_G)
2443 MAP
2444   .......
2445   ._..._.
2446  .........
2447  .........
2448 ...........
2449 ._..._..._.
2450 ...........
2451  .........
2452  .........
2453   ._..._.
2454   .......
2455 ENDMAP
2456
2457 NAME:    brannock_xom_greatest_gift
2458 TAGS:    temple_overflow_1 temple_overflow_xom uniq_altar_xom transparent
2459 DEPTH:   D:2-
2460 WEIGHT:  2
2461 KFEAT:   _ = altar_xom
2462 MARKER:  _ = lua:portal_desc {gift="altar"}
2463 {{
2464     dgn.persist.xom_gg_granted = false
2465
2466     local los_marker = TriggerableFunction:new {
2467       func="callback.xom_greatest_gift",
2468       repeated=true
2469     }
2470     los_marker:add_triggerer(DgnTriggerer:new {
2471       type="player_los"})
2472
2473     lua_marker('_', los_marker)
2474 }}
2475 MAP
2476 ...
2477 ._.
2478 ...
2479 ENDMAP
2480
2481 NAME:   doesnt_xom_only_xom
2482 TAGS:   temple_overflow_1 temple_overflow_xom uniq_altar_xom
2483 KFEAT:  _ = altar_xom
2484 KFEAT:  C = C mimic
2485 NSUBST: C = 1:_ / *:C
2486 MAP
2487 xxxxxxxxxxx
2488 x.G.G.G.G.x
2489 xGC..C..CGx
2490 x.........x
2491 x.........x
2492 xG.......Gx
2493 x.C..C..C.x
2494 xG.......Gx
2495 xxxx...xxxx
2496    x...x
2497    x...x
2498    xG.Gx
2499    xx+xx
2500 ENDMAP
2501
2502 ### Yredelemnul overflow altars ###############################################
2503
2504 NAME:   yredelemnul_altar_generic
2505 TAGS:   uniq_altar_yredelemnul temple_overflow_1 temple_overflow_yredelemnul
2506 TAGS:   transparent decor
2507 DEPTH:  D:2-
2508 KFEAT:  C = altar_yredelemnul
2509 KMONS:  f = withered plant
2510 : interest_check(_G)
2511 MAP
2512 .....
2513 .f.f.
2514 ..C..
2515 .f.f.
2516 .....
2517 ENDMAP
2518
2519 NAME:   lemuel_zombie_altar_yredelemnul
2520 DEPTH:  D:2-, Crypt
2521 TAGS:   no_pool_fixup uniq_zombie_altar no_monster_gen temple_overflow_1
2522 TAGS:   temple_overflow_yredelemnul
2523 KFEAT:  _ = altar_yredelemnul
2524 MONS:   patrolling gnoll zombie
2525 NSUBST: A = 2:1 / *:.
2526 MAP
2527 xxxxxxxxxxxxxxxx
2528 xxxxAAAAAAAAxxxx
2529 xxxx........xxxx
2530 @............._x
2531 xxxx........xxxx
2532 xxxxAAAAAAAAxxxx
2533 xxxxxxxxxxxxxxxx
2534 ENDMAP
2535
2536 NAME:   lemuel_mausoleum_altar_yredelemnul
2537 TAGS:   uniq_altar_yredelemnul temple_overflow_1 temple_overflow_yredelemnul
2538 TAGS:   uniq_mausoleum_altar decor
2539 DEPTH:  D:7-, Crypt
2540 MONS:   w:50 human zombie/orc zombie/elf zombie/w:5 ogre zombie/w:5 troll zombie
2541 MONS:   w:50 human skeleton/orc skeleton/elf skeleton/w:5 ogre skeleton/\
2542         w:5 troll skeleton
2543 MONS:   mummy, wight, wraith, necrophage
2544 NSUBST: ? = 1:_ / *:1
2545 SUBST:  1 = 1:25 2 3 4:8 5:7 6:5
2546 KFEAT:  _ = altar_yredelemnul
2547 KMONS:  _ = human zombie
2548 : if not you.in_branch("D") or you.absdepth() > 13 then
2549 TAGS:   extra
2550 : end
2551 MAP
2552 ccccccccccccccc
2553 c?c?c?c?c?c?ccG
2554 c+c+c+c+c+c+ccc
2555 c............+@
2556 c+c+c+c+c+c+ccc
2557 c?c?c?c?c?c?ccG
2558 ccccccccccccccc
2559 ENDMAP
2560
2561 NAME:   yredelemnul_forgotten_temple_becter
2562 TAGS:   temple_overflow_1 temple_overflow_yredelemnul no_monster_gen no_item_gen
2563 DEPTH:  D:2-9
2564 KFEAT:  _ = altar_yredelemnul
2565 KFEAT:  . = known web trap / .
2566 KMONS:  _ = spectral orc
2567 MAP
2568 xxxxxxxxx
2569 xcccccccx
2570 xc.._..cx
2571 xcc...ccx
2572 xc.....cx
2573 xcc...ccx
2574 xxcc+ccxx
2575  xxx@xxx
2576 ENDMAP
2577
2578 ### Zin overflow altars #######################################################
2579
2580 NAME:   zin_angel
2581 TAGS:   no_item_gen no_monster_gen temple_overflow_1 temple_overflow_zin decor
2582 DEPTH:  D:2-
2583 KFEAT:  _ = altar_zin
2584 KPROP:  1 = no_tele_into
2585 COLOUR: G = lightgray
2586 COLOUR: c = white
2587 TILE:   c = wall_church
2588 FTILE: _.G1m+ = floor_limestone
2589 MONS:   angel god:zin dbname:zin_angel / \
2590         angel god:zin dbname:zin_angel ; any weapon level:20 ego:holy_wrath ident:type / \
2591         angel god:zin dbname:zin_angel ; long sword ego:holy_wrath ident:type / \
2592         angel god:zin dbname:zin_angel ; mace ego:holy_wrath ident:type
2593 : interest_check(_G)
2594 MAP
2595 xxxxxxxxx
2596 xcccccccx
2597 xc1m.._cx
2598 xcmm...cx
2599 xc.....cx
2600 xcG...Gcx
2601 xccc+cccx
2602     @
2603 ENDMAP
2604
2605 NAME:   zin_treasury
2606 TAGS:   no_item_gen no_monster_gen temple_overflow_1 temple_overflow_zin
2607 DEPTH:  D:2-9, Orc, !Orc:$
2608 KFEAT:  _ = altar_zin
2609 KFEAT:  m = iron_grate
2610 KPROP:  $ = no_tele_into
2611 COLOUR: c = white
2612 TILE:   c = wall_church
2613 FTILE:  _.m+$ = floor_limestone
2614 : interest_check(_G)
2615 MAP
2616   xxxxxxx
2617   xcccccx
2618  xxc$$$cxx
2619 xxcc$$$ccxx
2620 xccmm$mmccx
2621 xcc.mmm.ccx
2622 xcc.._..ccx
2623 xxc.....cxx
2624  xccc+cccx
2625      @
2626 ENDMAP
2627
2628 NAME:   zin_purify
2629 TAGS:   no_item_gen no_monster_gen temple_overflow_1 temple_overflow_zin
2630 TAGS:   transparent
2631 DEPTH:  D:2-9, Orc, !Orc:$
2632 KFEAT:  _ = altar_zin
2633 KFEAT:  v = general shop name:Zin type:Purification suffix:Station count:1 \
2634         greed:30 ; \
2635         potion of curing
2636 COLOUR: c = white
2637 COLOUR: ' = white
2638 TILE:   c = wall_church
2639 FTILE:  Td'_ = floor_limestone
2640 SUBST:  ' = .
2641 : interest_check(_G)
2642 MAP
2643  .....
2644 ..ccc..
2645 .ccTcc.
2646 ..c_c..
2647  .....
2648 ...'...
2649 ..'v'..
2650  ..'..
2651   ...
2652 ENDMAP
2653
2654 NAME:   zin_scriptorium
2655 TAGS:   no_item_gen no_monster_gen temple_overflow_1 temple_overflow_zin
2656 DEPTH:  D:2-9
2657 ITEM:   any scroll
2658 KFEAT:  _ = altar_zin
2659 KFEAT:  m = iron_grate
2660 KPROP:  ? = no_tele_into
2661 COLOUR: c = white
2662 TILE:   c = wall_church
2663 FTILE:  _.m+d = floor_limestone
2664 NSUBST: ? = 2:d / *:.
2665 MAP
2666   xxxxxxx
2667   xcccccx
2668  xxc???cxx
2669  xcc???ccx
2670 xxcccmcccxx
2671 xcc.....ccx
2672 xcc.._..ccx
2673 xxc.....cxx
2674  xccc+cccx
2675      @
2676 ENDMAP
2677
2678 NAME:   zin_academy
2679 TAGS:   no_item_gen no_monster_gen temple_overflow_1 temple_overflow_zin
2680 TAGS:   transparent
2681 DEPTH:  D:2-9
2682 KFEAT:  _ = altar_zin
2683 COLOUR: c = white
2684 COLOUR: ' = white
2685 TILE:   c = wall_church
2686 FTILE:  _' = floor_limestone
2687 SUBST:  ' = .
2688 MAP
2689   ccccccc
2690 ccc.ttttccc
2691 c.tt'_'t..c
2692 ....'''....
2693 ...........
2694 ...'''''...
2695  .........
2696    .....
2697 ENDMAP
2698
2699 NAME:   zin_statuary
2700 TAGS:   no_item_gen no_monster_gen temple_overflow_1 temple_overflow_zin
2701 TAGS:   transparent
2702 DEPTH:  D:2-9
2703 KFEAT:  _ = altar_zin
2704 COLOUR: c = white
2705 TILE:   c = wall_church
2706 FTILE:  _'+ = floor_limestone
2707 SUBST:  ' = .
2708 MAP
2709  .......
2710 ..ccccc..
2711 .cc'_'cc.
2712 ..cc+cc..
2713 ...'''...
2714 .G.....G.
2715  ..G.G..
2716   .....
2717 ENDMAP
2718
2719 ### The Shining One overflow altars ###########################################
2720
2721 # TSO's small temple (1KB)
2722 # Idea stolen from protected_by_tso_3.
2723 NAME:     tso_altar
2724 TAGS:     no_item_gen no_rotate decor
2725 TAGS:     temple_overflow_1 temple_overflow_the_shining_one
2726 TAGS:     uniq_altar_the_shining_one
2727 COLOUR:   _ = yellow
2728 FTILE:    _A = floor_limestone
2729 SUBST:    _ = .
2730 COLOUR:   c = white
2731 TILE:     c = wall_church
2732 KFEAT:    A = altar_the_shining_one
2733 : interest_check(_G)
2734 MAP
2735   xxxxx
2736 xxxcccxxx
2737 xcccAcccx
2738 xc.___.cx
2739 xct._.tcx
2740 xc.._..cx
2741 xct...tcx
2742 xccc+cccx
2743 ENDMAP
2744
2745 NAME:    tso_metal_star
2746 TAGS:    no_monster_gen no_trap_gen no_pool_fixup no_item_gen decor
2747 TAGS:    temple_overflow_1 temple_overflow_the_shining_one transparent
2748 TAGS:    uniq_altar_the_shining_one
2749 KFEAT:   _ = altar_the_shining_one
2750 SUBST:   ! : vmmTG..
2751 : interest_check(_G)
2752 MAP
2753           @
2754           .
2755          ...
2756          .v.
2757         ..v..
2758        ..vvv..
2759       ..vv.vv..
2760      ..vv...vv..
2761     ..vm..!..mv..
2762   ...vv..!.!..vv...
2763 @..vvv..!._.!..vvv..@
2764   ...vv..!.!..vv...
2765     ..vm..!..+v..
2766      ..vv...vv..
2767       ..vv.vv..
2768        ..vvv..
2769         ..v..
2770          .v.
2771          ...
2772           .
2773           @
2774 ENDMAP
2775
2776 NAME:   tso_oasis_becter
2777 TAGS:   temple_overflow_1 temple_overflow_the_shining_one transparent
2778 TAGS:   no_item_gen no_monster_gen
2779 KMONS:  f = plant
2780 SUBST:  ` = ff.
2781 COLOUR: . = yellow
2782 FTILE:  `.Tf = floor_sand
2783 FTILE:  _ = floor_limestone
2784 COLOUR: c = white
2785 TILE:   c = wall_church
2786 KFEAT:  _ = altar_the_shining_one
2787 : interest_check(_G)
2788 MAP
2789   ....
2790  ..``....
2791  .`ww`...
2792  ..``..c..
2793 ......+cc..
2794 ..T..cc_cc.
2795  .....ccc..
2796    ....c..
2797      ....
2798 ENDMAP
2799
2800 NAME: nicolae_tso_swordbearing_angel
2801 TAGS: temple_overflow_the_shining_one uniq_altar_the_shining_one
2802 TAGS: temple_overflow_1 decor transparent
2803 DEPTH: D:2-
2804 COLOUR: . = yellow
2805 COLOUR: c = white
2806 FTILE: @._+ = floor_limestone
2807 TILE: c = wall_church
2808 KFEAT: _ = altar_the_shining_one
2809 : interest_check(_G)
2810 MAP
2811      xxxxx
2812     xxcccxx
2813     xcc.ccx
2814 xxxxxc._.cxxxxx
2815 xcccccc.ccccccx
2816 xc...........cx
2817 xcc....v....ccx
2818 xxcc..vvv..ccxx
2819  xxcc..v..ccxx
2820   xxcc.v.ccxx
2821    xxc.v.cxx
2822     xc.v.cx
2823     xc.v.cx
2824     xc...cx
2825     xcc+ccx
2826 ENDMAP
2827
2828
2829 NAME: nicolae_tso_carved_into_rock
2830 TAGS: temple_overflow_the_shining_one uniq_altar_the_shining_one
2831 TAGS: temple_overflow_1 transparent decor
2832 DEPTH: D:2-
2833 SUBST: X = xxx.
2834 COLOUR: ' = yellow
2835 COLOUR: c = white
2836 TILE: G = dngn_golden_statue
2837 TILE: c = wall_church
2838 FTILE: G'_ = floor_limestone
2839 KFEAT: _ = altar_the_shining_one
2840 : interest_check(_G)
2841 MAP
2842 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2843 xxxxxxxxxxxxxXXXXxxxxxxxxxxxxx
2844 xxxxxxxXXXXXX....XXXXXXxxxxxxx
2845 xxxxXXX................XXXxxxx
2846 xxXX......................XXxx
2847 xX......XxX........XxX......Xx
2848 X.....XXxxxxcG'''GcxxxXX.....X
2849 .....Xxxxxxxccc'cccxxxxxX.....
2850 @...Xxxxxxxxxc'''cxxxxxxxX...@
2851 ..Xxxxxxxxxxxc'_'cxxxxxxxxXX..
2852 XXxxxxxxxxxxxc'''cxxxxxxxxxxXX
2853 xxxxxxxxxxxxxcccccxxxxxxxxxxxx
2854 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2855 ENDMAP
2856
2857 NAME: nicolae_tso_besieged_by_evil
2858 TAGS: temple_overflow_the_shining_one uniq_altar_the_shining_one
2859 TAGS: temple_overflow_1 patrolling transparent no_monster_gen
2860 DEPTH: D:4-9
2861 SUBST: c = ccc' s:2 z:2, + = ++'
2862 NSUBST: ' = 2:s / 2:z / 2:sz'' / *:'
2863 COLOUR: 'sz = yellow / none w:5
2864 COLOUR: c = white
2865 TILE: c = wall_sandstone
2866 FTILE: +'_sz = floor_sandstone / none w:5
2867 KMONS: s = orc skeleton / kobold skeleton / goblin skeleton / hobgoblin zombie
2868 KMONS: z = orc zombie / kobold zombie / goblin zombie / hobgoblin zombie
2869 : if you.absdepth() <= 4 then
2870 KMONS: _ = crimson imp / white imp w:5
2871 : else
2872 KMONS: _ = crimson imp / white imp / shadow imp / iron imp / quasit
2873 : end
2874 KFEAT: _ = altar_the_shining_one
2875 MAP
2876 .............
2877 .............
2878 ..cccc.cccc..
2879 ..cccc+cccc..
2880 ..cc'''''cc..
2881 ..cc'''''cc..
2882 ...+''_''+...
2883 ..cc'''''cc..
2884 ..cc'''''cc..
2885 ..cccc+cccc..
2886 ..cccc.cccc..
2887 .............
2888 .............
2889 ENDMAP
2890
2891 ### Multiple god overflow altars ###############################################
2892
2893 # These ones are multiple overflows to specific gods;
2894 # they get tags temple_overflow_N and temple_overflow_<god>.
2895
2896 NAME:    good_gods_temple_1
2897 DEPTH:   D:2-, Depths, Lair
2898 TAGS:    temple_overflow_3 temple_overflow_elyvilon
2899 TAGS:    temple_overflow_zin temple_overflow_the_shining_one
2900 TAGS:    no_monster_gen no_trap_gen uniq_good_god_temple
2901 MONS:    plant
2902 KFEAT:   D = altar_elyvilon
2903 KFEAT:   E = altar_zin
2904 KFEAT:   F = altar_the_shining_one
2905 SHUFFLE: DEF
2906 SUBST:   1 : GTV1
2907 SUBST:   X : GTt
2908 SUBST:   ? : t@
2909 : interest_check(_G)
2910 MAP
2911   ttttttt
2912  tt.....tt
2913 tt...E...tt
2914 tt.D...F.tt
2915 tt...1...tt
2916  tt.....tt
2917   tt...tt
2918    ?X@X?
2919 ENDMAP
2920
2921 NAME:    good_gods_mini_temple
2922 DEPTH:   D:2-, Depths, Lair
2923 TAGS:    temple_overflow_3 temple_overflow_elyvilon
2924 TAGS:    temple_overflow_zin temple_overflow_the_shining_one
2925 TAGS:    no_monster_gen no_trap_gen no_pool_fixup uniq_good_god_temple
2926 TAGS:    no_item_gen
2927 MONS:    plant
2928 KFEAT:   D = altar_elyvilon
2929 KFEAT:   E = altar_zin
2930 KFEAT:   F = altar_the_shining_one
2931 : if crawl.coinflip() then
2932 SHUFFLE: x" / t1 / wT / IJ
2933 : else
2934 SUBST:   " : ..x
2935 : end
2936 SUBST:   HI : x
2937 SUBST:   x : xcvb
2938 SUBST:   ' : .
2939 SHUFFLE: EG/'E
2940 SUBST:   J : G
2941 SHUFFLE: DEF
2942 : interest_check(_G)
2943 MAP
2944  xxxxx
2945 xxxGxxx
2946 xD.E.Fx
2947 xx+++xx
2948  ""@""
2949 ENDMAP
2950
2951 NAME:  grunt_temple_overflow_champion_of_chaos
2952 DEPTH: D:3-9
2953 TAGS:  temple_overflow_2 temple_overflow_makhleb temple_overflow_xom
2954 TAGS:  no_monster_gen
2955 MONS:  crimson imp ; dagger ego:chaos ident:type
2956 KFEAT: A = altar_makhleb
2957 KFEAT: B = altar_xom
2958 MAP
2959 xxxxx
2960 xA.Bx
2961 x.1.x
2962 x...x
2963 xx+xx
2964 ENDMAP
2965
2966 NAME:  grunt_temple_overflow_growth_and_decay
2967 DEPTH: D:2-9
2968 TAGS:  temple_overflow_2 temple_overflow_fedhas temple_overflow_kikubaaqudgha
2969 TAGS:  transparent
2970 KFEAT: A = altar_fedhas
2971 KFEAT: B = altar_kikubaaqudgha
2972 MONS:  plant / nothing
2973 MONS:  withered plant / nothing
2974 MAP
2975 xxxxx
2976 x111xx@@
2977 x1A111..xxx
2978 x11.....22xxxx
2979 xxxx11.....22x
2980    xxx..222B2x
2981       @@xx222x
2982          xxxxx
2983 ENDMAP
2984
2985 NAME:   grunt_temple_overflow_holy_war
2986 DEPTH:  D:2-9
2987 TAGS:   temple_overflow_2 temple_overflow_the_shining_one
2988 TAGS:   temple_overflow_yredelemnul transparent
2989 MONS:   angel, profane servitor
2990 FTILE:  A+_Kn1 = floor_limestone
2991 FTILE:  B-;LN2 = floor_crypt
2992 TILE:   c = wall_church
2993 TILE:   C = wall_catacombs
2994 KFEAT:  A = altar_the_shining_one
2995 KFEAT:  B = altar_yredelemnul
2996 KFEAT:  C = stone_wall
2997 KFEAT:  KL = floor
2998 KFEAT:  - = closed_door
2999 KFEAT:  N = clear_stone_wall
3000 KPROP:  12 = no_tele_into
3001 KMASK:  12 = opaque
3002 COLOUR: c = white
3003 COLOUR: C = magenta
3004 MARKER: K = lua:fog_machine {cloud_type = "blessed fire", \
3005                              pow_min = 10, pow_max = 10, delay = 10, \
3006                              size = 1, walk_dist = 0, spread_rate = 0, \
3007                              excl_rad = 0 }
3008 MARKER: L = lua:fog_machine {cloud_type = "foul pestilence", \
3009                              pow_min = 10, pow_max = 10, delay = 10, \
3010                              size = 1, walk_dist = 0, spread_rate = 0, \
3011                              excl_rad = 0 }
3012 MAP
3013 xxxxxxxxxxxx@xxxxxxxxxxxx
3014 xcccccccccc...CCCCCCCCCCx
3015 xcnnK_K_K_c...C;L;L;LNNCx
3016 xc1n_A____+...-;;;;B;N2Cx
3017 xcnnK_K_K_c...C;L;L;LNNCx
3018 xcccccccccc...CCCCCCCCCCx
3019 xxxxxxxxxxxx@xxxxxxxxxxxx
3020 ENDMAP
3021
3022 NAME:  grunt_temple_overflow_lords_of_destruction
3023 TAGS:  temple_overflow_2 temple_overflow_makhleb temple_overflow_vehumet
3024 DEPTH: D:3-9
3025 KFEAT: A = altar_makhleb
3026 KFEAT: B = altar_vehumet
3027 MONS:  crimson imp ; wand of flame charges:1
3028 MAP
3029  xxxxx
3030 xxA.Bxx
3031 x..1..x
3032 xx...xx
3033  xx.xx
3034   x+x
3035 ENDMAP
3036
3037 NAME:  grunt_temple_overflow_order_and_chaos_1
3038 DEPTH: D:2-9
3039 TAGS:  temple_overflow_2 temple_overflow_xom temple_overflow_zin transparent
3040 KPROP: _1 = no_tele_into
3041 KMASK: _1 = opaque
3042 KMASK: _1 = no_trap_gen
3043 KFEAT: A = altar_xom
3044 KFEAT: B = altar_zin
3045 FTILE: n_1 = floor_limestone
3046 MONS:  angel god:zin dbname:zin_angel perm_ench:confusion generate_awake / \
3047        angel god:zin dbname:zin_angel perm_ench:mute generate_awake w:1 / \
3048        angel god:zin dbname:zin_angel perm_ench:mad generate_awake w:1 / \
3049        angel god:zin dbname:zin_angel perm_ench:dumb generate_awake w:1
3050 MAP
3051  .......
3052 ....A....
3053 ..nnnnn..
3054 ..n___n..
3055 @.n_1_n.@
3056 ..n___n..
3057 ..nnnnn..
3058 ....B....
3059  .......
3060 ENDMAP
3061
3062 NAME:   grunt_temple_overflow_order_and_chaos_2
3063 DEPTH:  D:2-9
3064 TAGS:   temple_overflow_2 temple_overflow_makhleb temple_overflow_zin
3065 TAGS:   transparent
3066 KFEAT:  A = altar_makhleb
3067 KFEAT:  B = altar_zin
3068 MONS:   executioner / balrug / green death / cacodemon / blizzard demon
3069 MONS:   angel god:zin dbname:zin_angel
3070 SUBST:  ; = -_
3071 KPROP:  - = bloody / nothing
3072 KPROP:  12 = no_tele_into
3073 KMASK:  12 = opaque
3074 SUBST:  - = _L
3075 KFEAT:  L_ = floor
3076 KFEAT:  C = stone_wall
3077 KFEAT:  N = clear_stone_wall
3078 SUBST:  X = CL
3079 FTILE:  _BN2 = floor_limestone
3080 TILE:   C = wall_church
3081 COLOUR: C = white
3082 MAP
3083     x.@.x
3084   xxx...xxx
3085 xxxXXX+CCCxxx
3086 xccc--;__CCCx
3087 xc1nA-;_BN2Cx
3088 xccc--;__CCCx
3089 xxxXXX+CCCxxx
3090   xxx...xxx
3091     x.@.x
3092 ENDMAP
3093
3094 # If the berserker scares you, use the escape hatch.
3095 NAME:   grunt_temple_overflow_bloody_war
3096 TAGS:   temple_overflow_2 temple_overflow_okawaru temple_overflow_trog
3097 TAGS:   patrolling
3098 DEPTH:  D:4-9
3099 WEIGHT: 5
3100 KFEAT:  A = altar_okawaru
3101 KFEAT:  B = altar_trog
3102 KPROP:  . = bloody / nothing
3103 : if you.absdepth() < 8 then
3104 MONS:   gnoll ; club | spear | nothing . potion of berserk rage / \
3105         orc ; club | hand axe | short sword . \
3106               leather armour | nothing . potion of berserk rage
3107 : else
3108 MONS:   orc warrior ; club | hand axe | short sword . \
3109                       leather armour | ring mail . \
3110                       potion of berserk rage
3111 : end
3112 MAP
3113 xxxxxxx
3114 xxxxxxx
3115 xxA.Bxx
3116 xx.1.xx
3117 xx...xx
3118 xx...xx
3119 xx...xx
3120 xx...xx
3121 xxx+xxx
3122   .@<
3123 ENDMAP
3124
3125 NAME:    grunt_temple_overflow_magic_moments
3126 DEPTH:   D:2-9
3127 TAGS:    temple_overflow_3 temple_overflow_kikubaaqudgha
3128 TAGS:    temple_overflow_sif_muna temple_overflow_vehumet
3129 TAGS:    no_item_gen
3130 KFEAT:   A = altar_kikubaaqudgha
3131 KFEAT:   B = altar_sif_muna
3132 KFEAT:   C = altar_vehumet
3133 ITEM:    randbook owner:Kikubaaqudgha disc:necromancy spells:pain \
3134          numspells:1 / \
3135          randbook owner:Kikubaaqudgha disc:necromancy spells:animate_skeleton \
3136          numspells:1
3137 # You already got a direct damage spell by looting the other gods' altars.
3138 ITEM:    randbook owner:Sif_Muna disc:hexes numspells:1 slevels:1 / \
3139          randbook owner:Sif_Muna disc:charms numspells:1 slevels:1 / \
3140          randbook owner:Sif_Muna disc:transmutation numspells:1 slevels:1 / \
3141          randbook owner:Sif_Muna disc:summoning numspells:1 slevels:1 / \
3142          randbook owner:Sif_Muna disc:translocation numspells:1 slevels:1
3143 ITEM:    randbook owner:Vehumet disc:conjuration spells:magic_dart numspells:1
3144 SHUFFLE: AdB"C` / A'BeC` / A'B"Cf
3145 MAP
3146      xxxxx
3147     xx.B.xx
3148   xxxG.".Gxxx
3149  xxGxx...xxGxx
3150  x...xx.xx...x
3151  xAd.......`Cx
3152  x...x.U.x...x
3153  xGxx...xxGxx
3154   xxx  @  xxx
3155 ENDMAP
3156
3157 # This doesn't place multiple gods, but it can place one of two distinct
3158 # gods.
3159 NAME:  lightli_temple_of_fire
3160 TAGS:  temple_overflow_1 temple_overflow_trog temple_overflow_makhleb
3161 DEPTH: D:2-9
3162 KPROP: Y = no_tele_into
3163 KMASK: Y = no_monster_gen
3164 {{
3165   local params = dgn.map_parameters()
3166   if params ~= nil then
3167     local tag = unpack(params)
3168     if tag ~= nil then
3169       if string.find(tag, "trog") ~= nil then
3170         kfeat('_ = altar_trog')
3171       elseif string.find(tag, "makhleb") ~= nil then
3172         kfeat('_ = altar_makhleb')
3173       else
3174         kfeat('_ = altar_trog / altar_makhleb')
3175       end
3176     else
3177       kfeat('_ = altar_trog / altar_makhleb')
3178     end
3179   else
3180     kfeat('_ = altar_trog / altar_makhleb')
3181   end
3182 }}
3183 MAP
3184 llcccccc
3185 lccYcYccc
3186 lclllllcc
3187 lcl...lcc
3188 lcl...lYc
3189 @+.._.lcc
3190 lcl...lYc
3191 lcl...lcc
3192 lclllllcc
3193 lccYcYccc
3194 llcccccc
3195 ENDMAP
3196
3197 NAME:    grunt_temple_overflow_opulence
3198 DEPTH:   D:2-9
3199 TAGS:    temple_overflow_2 temple_overflow_gozag temple_overflow_nemelex_xobeh
3200 TAGS:    transparent
3201 SHUFFLE: GU, _O
3202 KFEAT:   _ = altar_gozag
3203 KFEAT:   O = altar_nemelex_xobeh
3204 TILE:    G = dngn_golden_statue
3205 FTILE:   ._GOU+ = floor_limestone
3206 RTILE:   x = wall_sandstone
3207 COLOUR:  xG = yellow
3208 : set_feature_name("granite_statue", "golden statue")
3209 MAP
3210   xxxxxxx
3211  xx.....xx
3212 xx...U...xx
3213 x.........x
3214 x.G._.O.G.x
3215 x.........x
3216 xx...U...xx
3217  xx.....xx
3218   xxx+xxx
3219 ENDMAP
3220
3221 NAME:   grunt_temple_overflow_gold_and_silver
3222 DEPTH:  D:2-9
3223 TAGS:   temple_overflow_2 temple_overflow_gozag temple_overflow_zin
3224 TAGS:   transparent
3225 KITEM:  $ = gold q:1 / gold q:2
3226 KFEAT:  _ = altar_gozag
3227 KFEAT:  O = altar_zin
3228 TILE:   G = dngn_golden_statue
3229 COLOUR: G = yellow
3230 TILE:   v = dngn_metal_wall_white
3231 COLOUR: v = white
3232 FTILE:  +._O$ = floor_limestone
3233 : set_feature_name("granite_statue", "golden statue")
3234 : set_feature_name("metal_wall", "silver wall")
3235 MAP
3236 vvvvvvvvv
3237 v..$$$..v
3238 v._.$.O.v
3239 v.......v
3240 vv.....vv
3241  vvv+vvv
3242 ENDMAP
3243
3244 NAME:   grunt_temple_overflow_forces_of_nature
3245 DEPTH:  D:2-9
3246 TAGS:   temple_overflow_2 temple_overflow_fedhas temple_overflow_qazlal
3247 TAGS:   transparent
3248 MONS:   fungus / plant / bush
3249 SUBST:  2 = 1.
3250 KFEAT:  _ = altar_fedhas
3251 KFEAT:  O = altar_qazlal
3252 KPROP:  12Ll = no_tele_into
3253 SUBST:  L = ll^.
3254 SUBST:  l = cll.
3255 KFEAT:  ^ = known shaft trap
3256 MAP
3257  222.@.LLL
3258 21112.LlllL
3259 21_.....OlL
3260 21112.LlllL
3261  222.@.LLL
3262 ENDMAP
3263
3264 NAME:   kennysheep_ying_yang
3265 DEPTH:  D
3266 TAGS:   temple_overflow_2 temple_overflow_elyvilon temple_overflow_yredelemnul
3267 TAGS:   no_monster_gen no_trap_gen no_pool_fixup patrolling transparent
3268 KFEAT:  A = altar_elyvilon
3269 KFEAT:  B = altar_yredelemnul
3270 KFEAT:  D = tree
3271 KFEAT:  '"wW = floor
3272 TILE:   D = dngn_tree_dead
3273 FTILE:  .t1ATW = floor_grass
3274 COLOUR: tW = white
3275 FTILE:  'D2BVw = floor_crypt
3276 COLOUR: Dw = black
3277 : interest_check(_G)
3278 MAP
3279        """""""
3280      """""ccc"""
3281   """""""''Dccc"""
3282   "ccccccD''DDccc"
3283  ""ctttttcD'''DDc""
3284  "cct....tcD'''Dcc"
3285  "ct.www.TtD''''Dc""
3286 ""ct.wwwA.tD''''Dcc"
3287 "cct.www.TtD'''''Dc"
3288 "ct......tcD'''''Dc"
3289 "ct.....tccD'''''Dc"
3290 "ct.....tcD''''''Dc"
3291 "ct.....tDV'WWW'DDc"
3292 "cct....tD'BWWW'Dcc"
3293 ""ct....tDV'WWW'Dc""
3294  "cct...tcD''''Dcc"
3295  ""ctt...tcDDDDDc""
3296   "ccctt..tcccccc"
3297   """ccct.."""""""
3298     """ccc"""""
3299       """""""
3300 ENDMAP
3301
3302 NAME:    palyth_temple_overflow_mages
3303 DEPTH:   D:6-9
3304 TAGS:    temple_overflow_3 temple_overflow_sif_muna
3305 TAGS:    temple_overflow_kikubaaqudgha temple_overflow_vehumet
3306 TAGS:    no_item_gen no_monster_gen patrolling
3307 # 3/5 chance for one altar to have a low-level randbook and extra orc wizards.
3308 KMONS:   xyzXYZ~ = orc wizard
3309 KFEAT:   xX = altar_sif_muna
3310 KFEAT:   yY = altar_kikubaaqudgha
3311 KFEAT:   zZ = altar_vehumet
3312 KITEM:   X = randbook owner:Sif_Muna disc:summoning numspells:1 slevels:1
3313 KITEM:   Y = randbook owner:Kikubaaqudgha disc:necromancy numspells:1 slevels:1
3314 KITEM:   Z = randbook owner:Vehumet disc:conjuration numspells:1 slevels:1
3315 SHUFFLE: x'y"z` / x'y"z` / X~y"z` / x'Y~z` / x'y"Z~
3316 SUBST:   '"` = ., ~ = ~.
3317 MAP
3318 ccccccccccccc
3319 c'x'c"y"c`z`c
3320 c'''c"""c```c
3321 cc+ccc+ccc+cc
3322 c...........c
3323 c....T.T....c
3324 cc....T....cc
3325  cc..T.T..cc
3326   cc.....cc
3327    ccc@ccc
3328 ENDMAP
3329
3330 # Xom seems to not think much of Hepliaklqana's ancestral focus,
3331 # and mocks the species roots of incoming pilgrims.
3332 # This will probably go over most players' heads, but it's neat anyway -- PF
3333 NAME:    regret_index_temple_of_mockery
3334 TAGS:    temple_overflow_2 temple_overflow_xom temple_overflow_hepliaklqana
3335 DEPTH:   D:2-9
3336 : species_mock(_G)
3337 KMONS:   2 = spectral ugly thing
3338 KFEAT:   A = altar_xom
3339 KFEAT:   B = altar_hepliaklqana
3340 SHUFFLE: AB
3341 SUBST:   G = G...
3342 KPROP:   12' = no_tele_into
3343 KMASK:   12' = no_item_gen
3344 KMASK:   12' = no_trap_gen
3345 KMASK:   ' = no_monster_gen
3346 MARKER:  2 = lua:fog_machine { cloud_type = "thin mist", \
3347              pow_min = 100, pow_max = 100, delay = 1, \
3348              size = 1, walk_dist = 0, start_clouds = 1 }
3349 MAP
3350 cccccc
3351 ccb'bccccc
3352 cb2n1bc.+.
3353 c'nnnnc.c.
3354 cb1nA...cc
3355 ccbn.G.bc
3356 cccc..Bcc
3357  c...bcc
3358  c+cccc
3359  c..c
3360 ENDMAP
3361
3362 NAME:   gammafunk_temple_of_torment
3363 DEPTH:  D
3364 WEIGHT: 2
3365 TAGS:   no_monster_gen no_trap_gen temple_overflow_2
3366 TAGS:   temple_overflow_kikubaaqudgha temple_overflow_yredelemnul
3367 : if you.depth() <= 4 then
3368 MONS: zombie / skeleton
3369 MONS: mummy / shadow imp / wight / necrophage / phantom / hungry ghost
3370 KMONS: 3 = menkaure, necrophage / wight
3371 SUBST: 2 = 2---
3372 : elseif you.depth() <= 7 then
3373 MONS: zombie / skeleton / mummy / shadow imp / wight / necrophage / phantom \
3374       / hungry ghost
3375 MONS: wraith / vampire
3376 KMONS: 3 = menkaure, wraith / vampire
3377 SUBST: 2 = 12--
3378 : else
3379 MONS: mummy / wight / zombie / skeleton / phantom / hungry ghost
3380 MONS: wraith / vampire / shadow / w:5 death knight / w:5 skeletal warrior
3381 MONS: flayed ghost / death knight
3382 NSUBST: 2 = 2 / 2-
3383 : end
3384 SUBST:  1 = 11-
3385 NSUBST: R = R / -
3386 KFEAT:  D = altar_kikubaaqudgha
3387 KFEAT:  E = altar_yredelemnul
3388 MARKER: P = lua:transp_loc("temple_of_torment_entry")
3389 MARKER: Q = lua:transp_dest_loc("temple_of_torment_entry")
3390 MARKER: R = lua:transp_loc("temple_of_torment_exit")
3391 MARKER: S = lua:transp_dest_loc("temple_of_torment_exit")
3392 TILE:   G = dngn_sarcophagus_pedestal_left
3393 TILE:   c = wall_tomb
3394 FTILE:  -QRVDE|*$123Gcn = floor_tomb
3395 COLOUR: G = yellow
3396 COLOUR: -QR|*$123 = brown
3397 : set_feature_name("granite_statue", "sarcophagus")
3398 MAP
3399  ...............
3400  .nnnnnnnnnnnnn.
3401  .nR----1----Rn.
3402  .n-2-------2*n.
3403  .n--ccc-ccc-$n.
3404  .n--cGc-cGc-Dn.
3405 ..n----------|n..
3406 @Pn1----Q---3YnS@
3407 ..n----------*n..
3408  .n--cGc-cGc-En.
3409  .n--ccc-ccc-$n.
3410  .n-2-------2|n.
3411  .nR----1----Rn.
3412  .nnnnnnnnnnnnn.
3413  ...............
3414 ENDMAP
3415
3416
3417 ### Variable overflow altars ##################################################
3418
3419 # To make an overflow temple for N altars, give it the tag
3420 # "temple_overflow_generic_N".
3421
3422 # The boring standard.
3423 # B places the altar to a guaranteed god.
3424 NAME:   overflow_temple_1_default
3425 TAGS:   temple_overflow_generic_1 allow_dup transparent
3426 MAP
3427 B
3428 ENDMAP
3429
3430 # General overflow vault, can be used for all gods.
3431 NAME:     general_overflow_altar
3432 DEPTH:    D:2-
3433 WEIGHT:   10
3434 TAGS:     no_monster_gen no_pool_fixup temple_overflow_generic_1
3435 TAGS:     transparent
3436 SHUFFLE:  xXY / xXY / xXY / abc
3437 SHUFFLE:  XY
3438 SUBST:    X=+, Y=x, a=w, b=w, c=w
3439 SHUFFLE:  ABCD
3440 SUBST:    A=>, C=.GTU, D=.
3441 SHUFFLE:  wll
3442 : interest_check(_G)
3443 MAP
3444 ........
3445 .xXYYxx.
3446 .xwwwwx.
3447 .xwABwx.
3448 .xwCDwx.
3449 .xwwwwx.
3450 .xxxxxx.
3451 ........
3452 ENDMAP
3453
3454 NAME:    old_standard_altar
3455 DEPTH:   D, Depths
3456 TAGS:    transparent allow_dup decor temple_overflow_generic_1
3457 SHUFFLE: cvxxxx
3458 : altar_check(_G)
3459 MAP
3460 ...........
3461 .xxxx.xxxx.
3462 .xx.....xx.
3463 .x.......x.
3464 .x.......x.
3465 .....C.....
3466 .x.......x.
3467 .x.......x.
3468 .xx.....xx.
3469 .xxxx.xxxx.
3470 ...........
3471 ENDMAP
3472
3473 NAME:    lemuel_round_altar
3474 DEPTH:   D, Depths
3475 TAGS:    allow_dup transparent decor temple_overflow_generic_1
3476 SUBST:   X:x@
3477 SHUFFLE: cvxx
3478 : altar_check(_G)
3479 MAP
3480    xxXxx
3481   xx...xx
3482  xx.....xx
3483  x.......x
3484  X...C...@
3485  x.......x
3486  xx.....xx
3487   xx...xx
3488    xxXxx
3489 ENDMAP
3490
3491 NAME:  lemuel_crystal_altar
3492 DEPTH: D, Depths
3493 TAGS:  transparent allow_dup decor temple_overflow_generic_1
3494 : altar_check(_G)
3495 MAP
3496 b@b
3497 @C@
3498 b@b
3499 ENDMAP
3500
3501 NAME:    lemuel_doored_altar
3502 TAGS:    transparent decor temple_overflow_generic_1
3503 DEPTH:   D:1-, Vaults, Lair, Elf, Crypt
3504 SHUFFLE: XY
3505 SUBST:   X = .
3506 SUBST:   Y = +
3507 : altar_check(_G)
3508 MAP
3509 .........
3510 .xxxmxxx.
3511 .xxxmxxx.
3512 .xxxmxxx.
3513 .X.YCY.X.
3514 .xxxYxxx.
3515 .xxx.xxx.
3516 .xxxXxxx.
3517 .........
3518 ENDMAP
3519
3520 NAME:   lemuel_coloured_pillars_altar
3521 TAGS:   no_rotate decor temple_overflow_generic_1
3522 DEPTH:  D:2-, Vaults, Elf
3523 COLOUR: c = blue / yellow / red / cyan
3524 : altar_check(_G)
3525 MAP
3526 xxxxxxxxxxxxxxxxxxxx
3527 ...................x
3528 c...c...c...c...c..x
3529 @.................Cx
3530 c...c...c...c...c..x
3531 ...................x
3532 xxxxxxxxxxxxxxxxxxxx
3533 ENDMAP
3534
3535 NAME: nicolae_overflow_crystal_walls
3536 TAGS: temple_overflow_generic_1 transparent
3537 : interest_check(_G)
3538 DEPTH: D:2-
3539 SHUFFLE: ACDE, FGHI
3540 SUBST: A : b, C : b., D : b., E : b., F : b, G : b., H : b., I : b.
3541 MAP
3542 AAAAA@FFFFF
3543 ACCCC.GGGGF
3544 ACDDD.HHHGF
3545 ACDEE.IIHGF
3546 ACDE...IHGF
3547 @....B....@
3548 FGHI...EDCA
3549 FGHII.EEDCA
3550 FGHHH.DDDCA
3551 FGGGG.CCCCA
3552 FFFFF@AAAAA
3553 ENDMAP
3554
3555 NAME:    marbit_many_paths
3556 TAGS:    temple_overflow_generic_1
3557 : interest_check(_G)
3558 DEPTH:   D:2-
3559 SHUFFLE: pqr / bqr / pbr / pqb / bbr / pbb / bqb
3560 SUBST:   pqr = .
3561 NSUBST:  . = 1:0 / *:.
3562 FTILE:   .C0 = FLOOR_PEBBLE_GREEN
3563 MAP
3564  xxxxxxxxx
3565 xx..qxq..xx
3566 xpqrpqrpqrxx
3567 @qrpqrpqrpBx
3568 xrpqrpqrpqxx
3569 xx..pxp..xx
3570  xxxxxxxxx
3571 ENDMAP
3572
3573 NAME:   amethyst_overflow_temple_binary
3574 TAGS:   temple_overflow_generic_2
3575 SUBST:  p : .:15 c:10 g:3 n:2
3576 SUBST:  G : G:20 T:10 U:1 .:1
3577 SUBST:  g : t:10 T:10 .:5 w:5 U:1 l:1
3578 SUBST:  c : c:20 x:5 v:1 b:1
3579 SUBST:  + : +:10 .:10 A:5
3580 KMASK:  TUw = no_monster_gen
3581 MAP
3582   ccc     ccc
3583  ccGcccccccGcc
3584 cc...ccgcc...cc
3585 cB.p..+.+..p.Bc
3586 cc...cc.cc...cc
3587  ccGccg.gccGcc
3588   ccccc+ccccc
3589        @
3590 ENDMAP
3591
3592 NAME:   gammafunk_temple_overflow_statue
3593 TAGS:   temple_overflow_generic_2
3594 SUBST:  g : t:10 T:10 .:5 w:5 l:5 U:1
3595 KMASK:  wlTU = no_monster_gen
3596 MAP
3597   ccc
3598 cccGccc
3599 c.B.B.c
3600 cc...cc
3601 ccg.gcc
3602  cc+cc
3603    @
3604 ENDMAP
3605
3606 NAME:   gammafunk_temple_overflow_pools
3607 TAGS:   temple_overflow_generic_2
3608 SUBST:  G : G:20 T:10 U:1 .:1
3609 KMASK:  TU = no_monster_gen
3610 MAP
3611  ccccc ccccc
3612 cc.B.ccc.B.cc
3613 c.....G.....c
3614 c..T.....T..c
3615 cc.........cc
3616  ccc.....ccc
3617    ccc+ccc
3618       @
3619 ENDMAP
3620
3621 NAME:    gammafunk_temple_overflow_elements
3622 TAGS:    temple_overflow_generic_2
3623 SHUFFLE: lw
3624 KMASK:   lw = no_monster_gen
3625 MAP
3626  ccccccc
3627 ccB...Bcc
3628 cclc+cwcc
3629  ccc@ccc
3630 ENDMAP
3631
3632 NAME:    gammafunk_temple_overflow_wave
3633 TAGS:    temple_overflow_generic_2
3634 SUBST:   p = G:20 c:20 1 w:5 l:5
3635 MONS:    plant / bush
3636 KMASK:   Twl = no_monster_gen
3637 MAP
3638    ccccc
3639  cccpcc
3640 ccTB.+@
3641 ccTB.+@
3642  cccpcc
3643    ccccc
3644 ENDMAP
3645
3646 NAME: minmay_overflow_temple_star_quad
3647 TAGS: temple_overflow_generic_3
3648 MAP
3649            c
3650            c
3651           ccc
3652           cBc
3653          cc.cc
3654          c...c
3655         cc...cc
3656         c.....c
3657       ccc.....ccc
3658     ccc....G....ccc
3659   ccc......c......ccc
3660 cccB.....GcccG.....Bccc
3661   ccc......c......ccc
3662     ccc....G....ccc
3663       ccc.....ccc
3664         c.....c
3665         cc...cc
3666          c...c
3667          cc.cc
3668           c.c
3669           c+c
3670            @
3671 ENDMAP
3672
3673 NAME:   gammafunk_temple_overflow_forgotten
3674 TAGS:   temple_overflow_generic_3
3675 SUBST:  p = x:50 . 1, T = V:30 T, + = +:20 .
3676 NSUBST: _ = 3:1 / *:_
3677 MONS:   plant / bush
3678 KMASK:  T = no_monster_gen
3679 TILE:   x = wall_brick_brown_vines
3680 FTILE:  _+T12B = floor_pebble_yellow
3681 MAP
3682  ppppppp
3683 pxB_B_Bxp
3684 p_______p
3685 p___T___p
3686 px_____xp
3687  xxx+xxx
3688     @
3689 ENDMAP
3690
3691 NAME:   grunt_temple_overflow_diamond
3692 TAGS:   temple_overflow_generic_3
3693 SUBST:  T = T G V:1 U:1 t:1
3694 MAP
3695       c
3696      ccc
3697     ccBcc
3698    cc...cc
3699   cccc+cccc
3700  cc.c...c.cc
3701 ccB.+.T.+.Bcc
3702  cc.c...c.cc
3703   cccc+cccc
3704    cc...cc
3705     cc.cc
3706      c.c
3707       @
3708 ENDMAP
3709
3710 NAME:   gammafunk_temple_overflow_claw
3711 TAGS:   temple_overflow_generic_3 transparent
3712 SUBST:  l : lw
3713 KMASK:  lw = no_monster_gen
3714 MAP
3715   ...........
3716  ..cc..c..cc..
3717 ..cc..ccc..cc..
3718 .ccc..ccc..ccc.
3719 .ccc.ccccc.ccc.
3720 .ccccccGcccccc.
3721 .ccGB..B..BGcc.
3722 ..ccl.....lcc..
3723 ..ccll...llcc..
3724  ..ccll.llcc..
3725   ..ccl.lcc..
3726    ..cc+cc..
3727     ...@...
3728 ENDMAP
3729
3730 NAME:   grunt_temple_overflow_cloverleaf
3731 TAGS:   temple_overflow_generic_4 transparent
3732 SUBST:  T : T U:1 V:1
3733 MAP
3734  ccccc.@.ccccc
3735 cc...cc.cc...cc
3736 c.G.G.c.c.G.G.c
3737 c..B..c.c..B..c
3738 c.G...c.c...G.c
3739 cc...+c.c+...cc
3740 .ccccc...ccccc.
3741 @......T......@
3742 .ccccc...ccccc.
3743 cc...+c.c+...cc
3744 c.G...c.c...G.c
3745 c..B..c.c..B..c
3746 c.G.G.c.c.G.G.c
3747 cc...cc.cc...cc
3748  ccccc.@.ccccc
3749 ENDMAP
3750
3751 NAME: nicolae_overflow_quartered_altars
3752 TAGS: temple_overflow_generic_4
3753 SHUFFLE: fgh/ijk, pq/rs
3754 SUBST: pqi = ., rk = c, s = +, z : cm, j : GTt
3755 CLEAR: fgh
3756 MAP
3757   ffghgff
3758  @.ccccc.@
3759 f.qp.c.pq.f
3760 fcp..z..pcf
3761 gc..BcB..cg
3762 hcczccczcch
3763 gc..BcB..cg
3764 fcp..z..pcf
3765 f.qp.c.pq.f
3766  @.ccccc.@
3767   ffghgff
3768 ENDMAP
3769
3770 NAME:   minmay_overflow_temple_star_hex
3771 TAGS:   temple_overflow_generic_5
3772 KMASK:  T = no_monster_gen
3773 MAP
3774           ccc
3775          ccBcc
3776         cc...cc
3777        cc.....cc
3778 cccccccc...G...cccccccc
3779 cB...................Bc
3780 ccc......G...G......ccc
3781   ccc.............ccc
3782     ccc....T....ccc
3783   ccc.............ccc
3784 ccc......G...G......ccc
3785 cB...................Bc
3786 cccccccc...G...cccccccc
3787        cc.....cc
3788         cc...cc
3789          cc.cc
3790           c+c
3791           ...
3792           .@.
3793 ENDMAP
3794
3795 NAME:   minmay_overflow_temple_hex
3796 TAGS:   temple_overflow_generic_6
3797 MAP
3798    cccccccccc
3799    cB......Bc
3800   cc........cc
3801   c...c..c...c
3802  cc..........cc
3803  c...c....c...c
3804 cc............cc
3805 cB..c......c..Bc
3806 cc............cc
3807  c...c....c...c
3808  cc..........cc
3809   c...c..c...c
3810   cc........cc
3811    cB......Bc
3812    cccc++cccc
3813       ....
3814       ....
3815       .@@.
3816 ENDMAP
3817
3818 NAME:  grunt_temple_overflow_octagram
3819 TAGS:  temple_overflow_generic_7
3820 SUBST: T : T G t V:1
3821 MAP
3822           c
3823          ccc
3824         ccBcc
3825    cccccc...cccccc
3826    cB..ccc+ccc..Bc
3827    c..cc.....cc..c
3828    c.c+.......+c.c
3829    ccc....T....ccc
3830   ccc...T...T...ccc
3831  cc.c...........c.cc
3832 ccB.+..T..T..T..+.Bcc
3833  cc.c...........c.cc
3834   ccc...T...T...ccc
3835    ccc....T....ccc
3836    c.c+.......+c.c
3837    c..cc.....cc..c
3838    cB..ccc+ccc..Bc
3839    cccccc...cccccc
3840         cc.cc
3841          c.c
3842           @
3843 ENDMAP
3844
3845 NAME:    grunt_temple_overflow_open
3846 TAGS:    temple_overflow_generic_8 temple_overflow_generic_7
3847 TAGS:    temple_overflow_generic_6 temple_overflow_generic_5
3848 TAGS:    temple_overflow_generic_4 temple_overflow_generic_3
3849 TAGS:    temple_overflow_generic_2
3850 TAGS:    transparent
3851 SHUFFLE: defghijk / efghijkd
3852 {{
3853   local altarcount = 1
3854   if is_validating() then
3855     altarcount = 8
3856   else
3857     altarcount = get_overflow_altar_count(_G)
3858   end
3859   if altarcount == "1" then
3860     subst("d = B")
3861     subst("efghijk = .")
3862   elseif altarcount == "2" then
3863     subst("dh = B")
3864     subst("efgijk = .")
3865   elseif altarcount == "3" then
3866     subst("dgi = B")
3867     subst("efhjk = .")
3868   elseif altarcount == "4" then
3869     subst("dfhj = B")
3870     subst("egik = .")
3871   elseif altarcount == "5" then
3872     subst("dfgij = B")
3873     subst("ehk = .")
3874   elseif altarcount == "6" then
3875     subst("defhij = B")
3876     subst("gk = .")
3877   elseif altarcount == "7" then
3878     subst("defghij = B")
3879     subst("k = .")
3880   else
3881     subst("defghijk = B")
3882   end
3883 }}
3884 SUBST: G = G T V:1 U:1 t:1
3885 MAP
3886    ...
3887  ...d...
3888  .k...e.
3889 .........
3890 .j..G..f.
3891 .........
3892  .i...g.
3893  ...h...
3894    ...
3895 ENDMAP
3896
3897 # Formerly minivault_3; resurrected after being removed way back in late 2009.
3898 NAME:  minitemple
3899 TAGS:  temple_overflow_generic_14 temple_overflow_generic_13
3900 TAGS:  temple_overflow_generic_12 temple_overflow_generic_11
3901 TAGS:  temple_overflow_generic_10 temple_overflow_generic_9
3902 TAGS:  temple_overflow_generic_8 temple_overflow_generic_7
3903 TAGS:  temple_overflow_generic_6 temple_overflow_generic_5
3904 TAGS:  temple_overflow_generic_4 temple_overflow_generic_3
3905 TAGS:  temple_overflow_generic_2
3906 # The original vault had allow_dup; I think that's overkill.
3907 {{
3908   local altarcount = 1
3909   if is_validating() then
3910     altarcount = 14
3911   else
3912     altarcount = get_overflow_altar_count(_G)
3913   end
3914   nsubst("B : " .. altarcount .. ":B / *:x")
3915 }}
3916 SUBST: x = .:50 c:50 G T t:1 V:1 U:1
3917 MAP
3918 cccccccccccc
3919 cBcBcBcBcBcc
3920 G.c.c.c.c.Bc
3921 @.........Bc
3922 @.........Bc
3923 G.c.c.c.c.Bc
3924 cBcBcBcBcBcc
3925 cccccccccccc
3926 ENDMAP
3927
3928 NAME: nicolae_overflow_hidden_temple
3929 TAGS: temple_overflow_generic_5 temple_overflow_generic_4 temple_overflow_generic_3 \
3930       temple_overflow_generic_2 temple_overflow_generic_1 no_monster_gen
3931 {{
3932   local altarcount = 1
3933   if is_validating() then
3934     altarcount = 5
3935   else
3936     altarcount = get_overflow_altar_count(_G)
3937   end
3938   if altarcount == "1" then
3939     subst("c = B")
3940     subst("abde = G")
3941   elseif altarcount == "2" then
3942     subst("bd = B")
3943     subst("ace = G")
3944   elseif altarcount == "3" then
3945     shuffle("ae/bd")
3946     subst("cbd = B")
3947     subst("ae = G")
3948   elseif altarcount == "4" then
3949     subst("abde = B")
3950     subst("c = G")
3951   else
3952     subst("abcde = B")
3953   end
3954 }}
3955 SUBST: } = })]
3956 MAP
3957  xxxxxxxxxxxxx
3958  xxxxaxxxbxxxx
3959  xxG...G...Gxx
3960  mm.........mm
3961 @m}.........cm@
3962  mm.........mm
3963  xxG...G...Gxx
3964  xxxxexxxdxxxx
3965  xxxxxxxxxxxxx
3966 ENDMAP
3967
3968 NAME:   chequers_temple_overflow_statue_of_worship
3969 TAGS:   temple_overflow_generic_2 temple_overflow_generic_3
3970 TAGS:   temple_overflow_generic_4 transparent
3971 {{
3972   local altarcount = get_overflow_altar_count(_G)
3973   if altarcount == nil then
3974     altarcount = "2"
3975   end
3976   if altarcount == "2" then
3977     subst("C = .")
3978   else
3979     subst("C = B")
3980   end
3981   nsubst("B = " .. altarcount .. ":B / *:.")
3982 }}
3983 MAP
3984 .....
3985 ..C..
3986 .BGB.
3987 ..C..
3988 .....
3989 ENDMAP
3990
3991 NAME:  chequers_temple_overflow_minitemple
3992 TAGS:  temple_overflow_generic_5 temple_overflow_generic_4
3993 TAGS:  temple_overflow_generic_3
3994 {{
3995   local altarcount = 5
3996   if not is_validating() then
3997     altarcount = get_overflow_altar_count(_G)
3998   end
3999   nsubst("O = " .. altarcount .. ":B / *:l")
4000 }}
4001 KFEAT: l = altar_ecumenical
4002 MAP
4003         @
4004        c+c
4005    ccccc.ccccc
4006   cc.........cc
4007 ccc..ccccccc..ccc
4008 cO..cccO.Occc..Oc
4009 ccc..cc...cc..ccc
4010   cc.........cc
4011    cccc...cccc
4012       ccOcc
4013        ccc
4014 ENDMAP
4015
4016 NAME: gammafunk_temple_overflow_arena
4017 TAGS: temple_overflow_generic_3 temple_overflow_generic_2
4018 TAGS: temple_overflow_generic_1 no_monster_gen no_trap_gen no_tele_into
4019 WEIGHT: 1
4020 {{
4021   local altarcount = 3
4022   if not is_validating() then
4023     altarcount = tonumber(get_overflow_altar_count(_G))
4024   end
4025   if altarcount == 1 then
4026     subst("h = a")
4027   elseif altarcount == 2 then
4028     subst("B = a")
4029   end
4030 }}
4031 SUBST: a = |*%$ .:80, 0 = 09., h = B, i : x., j : x., x : bcvx
4032 NSUBST: R = R / .
4033 MARKER: P = lua:transp_loc("temple_overflow_arena_entry")
4034 MARKER: Q = lua:transp_dest_loc("temple_overflow_arena_entry")
4035 MARKER: R = lua:transp_loc("temple_overflow_arena_exit")
4036 MARKER: S = lua:transp_dest_loc("temple_overflow_arena_exit")
4037 MAP
4038   ...........
4039  ..nnnnnnnnn..
4040  .nn0..R...nn.
4041  .nG.ji0ij.Gn.
4042  .n..ij.ji%$n.
4043 ..n......8*hn..
4044 @Pn..Q....$BnS@
4045 ..n......9*hn..
4046  .n..ij.ji%$n.
4047  .nG.ji0ij.Gn.
4048  .nn0..R...nn.
4049  ..nnnnnnnnn..
4050   ...........
4051 ENDMAP