1##############################################################################
2# tar.des: Special maps for Tartarus.
3# Content: (mini)vaults particular to Tartarus, and/or first appearing in
4#          Tar (order: Dis, Geh, Coc, Tar)
5##############################################################################
6
7: crawl_require('dlua/vault.lua')
8
9{{
10function tar_setup(e)
11   e.place("Tar:$")
12   e.tags("no_rotate")
13   e.kmask('O = no_item_gen')
14   e.kitem('O = bone rune of Zot')
15end
16
17function callback.grunt_gauntlet_trap_activate(data,triggerable,trigger,marker,ev)
18    if not dgn.persist.grunt_gauntlet_trap_triggered then
19    for slave in iter.slave_iterator("trap_wall2", 1) do
20        local you_x, you_y = you.pos()
21        if (dgn.mons_at(slave.x, slave.y) ~= nil or (slave.x == you_x and slave.y == you_y)) then
22            return
23        end
24    end
25        dgn.persist.grunt_gauntlet_trap_triggered = true
26    for slave in iter.slave_iterator("trap_wall", 1) do
27        dgn.terrain_changed(slave.x, slave.y, "floor", false)
28        dgn.place_cloud(slave.x, slave.y, "foul pestilence", crawl.random2(5) + 5)
29    end
30    for slave in iter.slave_iterator("trap_wall2", 1) do
31        dgn.terrain_changed(slave.x, slave.y, "stone_wall", false)
32        dgn.colour_at(slave.x, slave.y, "lightmagenta")
33    end
34    crawl.mpr("You hear an unearthly scream, and the grinding of stone!",
35             "warning")
36    crawl.mpr("The path is suddenly blocked!", "warning")
37    end
38end
39
40function tar_dig_maze(e, x, y)
41  local delta = { {x =  2, y =  0},
42                  {x = -2, y =  0},
43                  {x =  0, y =  2},
44                  {x =  0, y = -2} }
45  local count = 0
46  local passes = 0
47  local i = 0
48  local newx = 0
49  local newy = 0
50  local nextx = 0
51  local nexty = 0
52  while true do
53    count = 0
54    for i = 1, 4 do
55      newx = x + delta[i].x
56      newy = y + delta[i].y
57      if e.is_valid_coord { x = newx, y = newy }
58         and e.mapgrd[newx][newy] ~= '.'
59         and e.mapgrd[newx][newy] ~= ' '
60         and e.mapgrd[newx][newy] ~= '$'
61         and e.mapgrd[newx][newy] ~= 'L' then
62        count = count + 1
63        if crawl.random2(count) == 0 then
64          nextx = newx
65          nexty = newy
66        end
67      end
68    end
69    if count == 0 then
70        if passes == 0 then
71          e.mapgrd[x][y] = 'L'
72        end
73        return
74    end
75    if nexty == y then
76      newy = y
77      if nextx - x < 0 then
78        newx = nextx + 1
79      else
80        newx = nextx - 1
81      end
82    else
83      newx = x
84      if nexty - y < 0 then
85        newy = nexty + 1
86      else
87        newy = nexty - 1
88      end
89    end
90    passes = passes + 1
91    e.mapgrd[newx][newy] = '.'
92    e.mapgrd[nextx][nexty] = '.'
93    tar_dig_maze(e, nextx, nexty)
94  end
95end
96}}
97
98
99##############################################################################
100# Tartarus
101##############################################################################
102
103NAME:   lemuel_nasty_pond
104DEPTH:  Tar
105TAGS:   no_pool_fixup no_rotate
106MONS:   withered plant
107MONS:   oklob plant, ghoul, necrophage, blizzard demon / green death
108SUBST:  W:w.
109SUBST:  Z:w.
110SUBST:  w = w .:1
111SUBST:  . = .:15 1:1 w:1
112SUBST:  1 = 1 2:2
113SUBST:  3 = 3:9 4:1 .:2
114COLOUR: . = none / green w:2
115COLOUR: w = green / lightgreen
116MAP
117     ...WWWW3....
118   .3..WWWWW....3...
119 ....WWWwwW...3....3.
120..Z.WWwwwwww3.....3...
1213.ZZWwwwwwwwwww3......
122.ZZZ..wwwww5wwwwww3...
123..3Z..44wwwwwww33.....
124.3ZZZ..44wwwwww3..3...
125.ZZZZZ.44wwwww........
126 ..ZZZZZ4wwww.3......
127   3ZZZZwwwww....3.
128     .ZZwww3.....
129ENDMAP
130
131##############################################################################
132
133NAME: grunt_tartarus_stairs_gauntlet_trap
134DEPTH: Tar, !Tar:$
135TAGS: generate_awake patrolling no_trap_gen
136MONS: Tzitzimitl, shadow demon / reaper, soul eater, necrophage, shadow imp
137{{
138    dgn.persist.grunt_gauntlet_trap_triggered = false
139    local trap_marker = TriggerableFunction:new {
140        func = "callback.grunt_gauntlet_trap_activate",
141        repeated = true}
142    trap_marker:add_triggerer(DgnTriggerer:new {
143        type="player_move"})
144    lua_marker(':', trap_marker)
145    lua_marker('H', trap_marker)
146    lua_marker('-', trap_marker)
147    lua_marker('1', trap_marker)
148    lua_marker('e', trap_marker)
149    lua_marker('}', trap_marker)
150    lua_marker(']', trap_marker)
151    lua_marker(')', trap_marker)
152    lua_marker('d', props_marker {trap_wall=1})
153    lua_marker('"', props_marker {trap_wall2=1})
154}}
155SUBST: d = c
156SUBST: e = 2
157COLOUR: c = lightmagenta
158KPROP: "H-}]) = no_tele_into
159MARKER: H = lua:fog_machine { \
160                pow_min = 10, pow_max = 10, delay = 10, \
161                size = 3, walk_dist = 1, spread_rate = 0, \
162                cloud_type = "purple smoke" }
163MAP
164cccccccccccccccccccccc.......
165c...2...............cG.5.....
166cdcccccccccccccccccdcc...5...
167c--H":e:c9c8c8c0c0c0cG.4..5..
168c}--":::cdcdcdcdcdcdcc3.4..5.
169c]1H":::+............+......@
170c)--":::cdcdcdcdcdcdcc3.4..5.
171c--H":e:c9c8c8c0c0c0cG.4..5..
172cdcccccccccccccccccdcc...5...
173c...2...............cG.5.....
174cccccccccccccccccccccc.......
175ENDMAP
176
177##############################################################################
178NAME:    hangedman_snap_crack_crunch
179TAGS:    transparent no_monster_gen
180DEPTH:   Tar, !Tar:$, Zot:1-4
181: if you.in_branch("Tar") then
182KMONS:   12 = patrolling reaper
183KMONS:   34 = patrolling tormentor
184KMONS:   56 = patrolling shadow demon
185KMONS:   7 = skeletal warrior
186KMONS:   8 = patrolling shadow imp
187KMONS:   AB = lich
188KMONS:   CD : vampire mage / mummy priest
189KMONS:   EF : shadow dragon w:5 / death drake
190KITEM:   | = nothing
191: else
192KMONS:   12 = patrolling lich / ancient lich / dread lich
193KMONS:   34 = patrolling curse toe
194KMONS:   56 = patrolling bone dragon
195KMONS:   7 = death cob w:12 / zombie w:4 / skeleton w:4 / guardian mummy w:4
196KMONS:   8 = patrolling death cob
197KMONS:   ABCD = shadow dragon
198KMONS:   EF = death drake
199: end
200KMONS:   0 = soul eater
201KMONS:   Z = obsidian statue
202KFEAT:   Z = zot trap
203SHUFFLE: 1234, 12 / 34 / 56, ABCD, AB / CD / EF, {'" / {'" / }`_, {', }`, GHI
204SUBST:   { : -_= |:3, } : -= |:2, ' : |:1 .:4, " = ., Z = Z:1 c:8
205SUBST:   G : O:20 X, H : O X:50, I = X, X : xc
206NSUBST:  - = 1:{ / 1:}, _ = 1:[ / 1 = (:80 <, = = 1:] / 1 = ):80 >
207NSUBST:  7 = 3:7 / 3:0 / 2 = 70
208MARKER:  O = lua:fog_machine { cloud_type = "foul pestilence", pow_min = 200, \
209                pow_max = 300, delay = 25, size = 1, walk_dist = 0, excl_rad = 0 }
210MAP
211         xxxxxxxxx
212        xxxx...7.xx.@@.
213   xxxxxxxx..cc.7xx.....
214  xxxxxxxx.AcXc..xx....@
215  xxx......cGc...x.."..@
216  xx.'....cXc....x.8....
217  xx..cc..cc..cc..x..xxx
218  xx..cXc.....cXc..xxxxxx
219 xxx...cHc..1..cXc....7.x
220xxxx....cXc.....cXc....7x
221xxx..cc..cc..cc..cc..cc.x
222xx.BcXc....{cXc.....cXc.x
223x..cIc..2..cZc..3..cIc..x
224x.cXc.....cXc{....cXcC.xx
225x.cc..cc..cc..cc..cc..xxx
226x7....cXc.....cXc....xxxx
227x.7....cXc..4..cHc...xxx
228xxxxxx..cXc.....cXc..xx
229 xxx..x..cc..cc..cc..xx
230 ....8.x....cXc....'.xx
231 @.."..x...cGc......xxx
232 @....xx..cXcD.xxxxxxxx
233 .....xx7.cc..xxxxxxxx
234  .@@.xx.7...xxxx
235       xxxxxxxxx
236ENDMAP
237
238##############################################################################
239
240NAME:    hangedman_restless_catacombs
241TAGS:    no_monster_gen
242DEPTH:   Tar, !Tar:$
243MONS:    soul eater, patrolling curse skull
244MONS:    skeletal warrior / phantasmal warrior w:6 / \
245         shadow wraith w:4 / guardian mummy w:4 / \
246         ushabti w:2 / ghoul w:4
247KMONS:   45 = vampire knight
248KMONS:   67 = vampire mage
249KMONS:   89 = flayed ghost
250KMONS:   AB = mummy priest
251KMONS:   CD = lich
252NSUBST:  0 = 1:( / 1 : ):9 >:1 / 1 : 3:9 [:1 / 1:4 / 1:5 / 1:6 / 1:7 / *:3
253SHUFFLE: 456789ABCD"
254SUBST:   " = 3
255MAP
256xxxxxxxxxxxxxxxxx
257xcccccccccccccccx
258xcG.c0c0c0c0c.Gcx
259xc.1c+c+c+c+c1.cx
260xccc.........cccx
261xc0+.........+0cx
262xccc...x.x...cccx
263xc0+..x...x..+0cx
264xccc....2....cccx
265xc0+..x...x..+0cx
266xccc...x.x...cccx
267xc0+.........+0cx
268xccc.........cccx
269xc.1c+c+c+c+c1.cx
270xcG.c0c0c0c0c.Gcx
271xcccccccccccccccx
272xxxxxxxxxxxxxxxxx
273ENDMAP
274
275################################################################################
276
277NAME:    hangedman_tartarus_temple_path
278TAGS:    transparent extra
279DEPTH:   Tar, !Tar:$
280SHUFFLE: hH / hH / Hh, iI / iI / Ii
281SUBST:   h : cccx, H : cxGF, i : cccx, I : cxGF
282SUBST:   d = d., + = +..., { = {}...., c = c:49 .:1, C = c
283MARKER:  F = lua:fog_machine { cloud_type = "foul pestilence", pow_min = 200, \
284             pow_max = 300, delay = 25, size = 1, walk_dist = 0, excl_rad = 0 }
285{{
286dgn.delayed_decay(_G, 'd', 'base draconian corpse w:5 / ' ..
287                           'base draconian skeleton / ' ..
288                           'shadow dragon corpse w:5 / ' ..
289                           'shadow dragon skeleton')
290}}
291MAP
292 .@xxxxxxxxxxxxxxxxxxxxxxx@.
293.x..cccccccCCCCCCCccccccc..x.
294@...cd.c.dcccccccccd.c.dc...@
295x...c.....cd.....dc.....c...x
296xc..c..c..c...c...c..c..c..cx
297xc..c..h..cF..i..Fc..h..c..cx
298xc..+.dHd.+...I...+.dHd.+..cx
299xc..c..h..cF..i..Fc..h..c..cx
300xc..c..c..c...c...c..c..c..cx
301x...c.....cd..{..dc.....c...x
302@...cd.c.dcccccccccd.c.dc...@
303.x..cccccccCCCCCCCccccccc..x.
304 .@xxxxxxxxxxxxxxxxxxxxxxx@.
305ENDMAP
306
307NAME:   nicolae_tar_cuneiform_heaven
308DEPTH:  Tar
309WEIGHT: 10, 1 (Tar:$)
310TAGS:   transparent decor extra allow_dup luniq tar_grunt_decor
311MAP
312................
313........xxxxx...
314.........xxx....
315.........xxx....
316.x...x....x.....
317.xxx.xxx..x.....
318.xxxxxxxxxxxxxx.
319.xxx.xxx..x.....
320.x...x....x.....
321..........x.....
322..........x.....
323................
324ENDMAP
325
326NAME:   nicolae_tar_cuneiform_sun
327DEPTH:  Tar
328WEIGHT: 10, 1 (Tar:$)
329TAGS:   transparent decor extra allow_dup luniq tar_grunt_decor
330MAP
331............
332....x.xxxxx.
333..xxx..xxx..
334.xxxx..xxx..
335..xxx...x...
336....x...x...
337..xxx...x...
338.xxxx...x...
339..xxx...x...
340....x...x...
341............
342ENDMAP
343
344NAME:   nicolae_tar_cuneiform_to_be
345DEPTH:  Tar
346WEIGHT: 10, 1 (Tar:$)
347TAGS:   transparent decor extra allow_dup luniq tar_grunt_decor
348MAP
349...............
350.xxxxx.........
351..xxx..........
352..xxxx.........
353...x.xxx.......
354...x.xxxxxxxxx.
355...x.xxx.......
356...x.x.........
357...x...........
358...x...........
359...............
360ENDMAP
361
362NAME:   nicolae_tar_cuneiform_two
363DEPTH:  Tar
364WEIGHT: 10, 1 (Tar:$)
365TAGS:   transparent decor extra allow_dup luniq tar_grunt_decor
366MAP
367.............
368.xxxxx.xxxxx.
369..xxx...xxx..
370..xxx...xxx..
371...x.....x...
372...x.....x...
373...x.....x...
374...x.....x...
375...x.....x...
376...x.....x...
377.............
378ENDMAP
379
380NAME:   nicolae_tar_cuneiform_three
381DEPTH:  Tar
382WEIGHT: 10, 1 (Tar:$)
383TAGS:   transparent decor extra allow_dup luniq tar_grunt_decor
384MAP
385...................
386.xxxxx.xxxxx.xxxxx.
387..xxx...xxx...xxx..
388..xxx...xxx...xxx..
389...x.....x.....x...
390...x.....x.....x...
391...x.....x.....x...
392...x.....x.....x...
393...x.....x.....x...
394...x.....x.....x...
395...................
396ENDMAP
397
398NAME:   nicolae_tar_cuneiform_bird
399DEPTH:  Tar
400WEIGHT: 10, 1 (Tar:$)
401TAGS:   transparent decor extra allow_dup luniq tar_grunt_decor
402MAP
403..................
404....xxxxx...xxxxx.
405.....xxx.....xxx..
406.....xxx.....xxx..
407.x....x....x..x...
408.xxx..x..xxx..x...
409.xxxxxxxxxxx..x...
410.xxx..x..xxx..x...
411.x....x....x..x...
412......x.......x...
413......x.......x...
414..................
415ENDMAP
416
417NAME:   nicolae_tar_cuneiform_water
418DEPTH:  Tar
419WEIGHT: 10, 1 (Tar:$)
420TAGS:   transparent decor extra allow_dup luniq tar_grunt_decor
421MAP
422.............
423.xxxxx.xxxxx.
424..xxx...xxx..
425..xxx...xxx..
426...x.....x...
427...x...xxxxx.
428...x....xxx..
429...x....xxx..
430...x.....x...
431...x.....x...
432.............
433ENDMAP
434
435NAME:   nicolae_tar_cuneiform_bread
436DEPTH:  Tar
437WEIGHT: 10, 1 (Tar:$)
438TAGS:   transparent decor extra allow_dup luniq tar_grunt_decor
439MAP
440...................
441.xxxxx.xxxxx.xxxxx.
442..xxx...xxx...xxx..
443..xxx...xxx...xxx..
444...x.....x.....x...
445...................
446.....xxxxxxxxx.....
447......xxxxxxx......
448.......xxxxx.......
449.......xxxxx.......
450........xxx........
451.........x.........
452...................
453ENDMAP
454
455NAME:   nicolae_tar_cuneiform_oil
456DEPTH:  Tar
457WEIGHT: 10, 1 (Tar:$)
458TAGS:   transparent decor extra allow_dup luniq tar_grunt_decor
459MAP
460.............
461.x...........
462.xxx.........
463.xxxxxxxxxxx.
464.xxx.........
465.x...........
466.............
467.x...xxx.xxx.
468.xxx..x...x..
469.xxxxxxxxxxx.
470.xxx..x...x..
471.x....x...x..
472.............
473ENDMAP
474
475NAME:   nicolae_tar_cuneiform_not
476DEPTH:  Tar
477WEIGHT: 10, 1 (Tar:$)
478TAGS:   transparent decor extra allow_dup luniq tar_grunt_decor
479MAP
480..............
481....xxxxx.....
482.....xxx......
483.....xxx......
484.x....x.....x.
485.xxx..x....x..
486.xxxxxxxxxxxx.
487.xxx..x..x....
488.x....x.x.....
489......xx......
490......x.......
491.....xx.......
492..xxx.x.......
493...xx.........
494....x.........
495..............
496ENDMAP
497
498NAME:   nicolae_tar_cuneiform_city
499DEPTH:  Tar
500WEIGHT: 10, 1 (Tar:$)
501TAGS:   transparent decor extra allow_dup luniq tar_grunt_decor
502MAP
503.................
504.....xxxxx.xxxxx.
505......xxx...xxx..
506......xxx...xxx..
507.x.....x.....x...
508.xxx...x.....x...
509.xxxxxxxxxxxxx...
510.xxx...x.....x...
511.x.....x.....x...
512.......x.....x...
513.x.....x.....x...
514.xxx...x.....x...
515.xxxxxxxxxxxx....
516.xxx.............
517.x...............
518.................
519ENDMAP
520
521NAME:    nicolae_tar_fractal_crypt
522DEPTH:   Tar, !Tar:$
523TAGS:    transparent
524SHUFFLE: ae, bf, cg, dh
525SUBST:   e : ae, f : bf, g : cg, h : dh
526NSUBST:  a = + / x, b = + / x, c = + / x, d = + / x, e = + / x, f = + / x, \
527         g = + / x, h = + / x, > = 1:} / 1:] / 1:) / .
528SUBST:   d = x, 0 = 0009.., 9 = 998, ] = ...]>, ) = .....)>, X = ..x
529SHUFFLE: }])
530KMONS:   0 = 0 / 0 band w:5
531KMONS:   9 = 9 band
532KMONS:   8 = 8 band
533MAP
534xaxxxaxaxxxaxexxxexexxxex
535h..x..x..x..x..x..x..x..b
536xX.X.XxX.X.XxX.X.XxX.X.Xx
537xxX0XxxxX0XxxxX0XxxxX0Xxx
538x..X..X..X..x..X..X..X..x
539h.Xx.....x.>x>.x.....xX.b
540xxxxX.0.XxxxxxxxX.0.Xxxxx
541h.Xx.....xxxxxxx.....xX.b
542x..X..X...XXXXX...X..X..x
543xxX0Xxxx.........xxxX0Xxx
544x..X..xxX.0...0.Xxx..X..x
545h.Xx.>xxX.......Xxx>.xX.b
546xxxxxxxxX...9...Xxxxxxxxx
547d.Xx.>xxX.......Xxx>.xX.f
548x..X..xxX.0...0.Xxx..X..x
549xxX0Xxxx.........xxxX0Xxx
550x..X..X...XXXXX...X..X..x
551d.Xx.....xxxxxxx.....xX.f
552xxxxX.0.XxxxxxxxX.0.Xxxxx
553d.Xx.....x.>x>.x.....xX.f
554x..X..X..X..x..X..X..X..x
555xxX0XxxxX0XxxxX0XxxxX0Xxx
556xX.X.XxX.X.XxX.X.XxX.X.Xx
557d.Xx..x..x..x..x..x..x..f
558xgxxxgxgxxxgxcxxxcxcxxxcx
559ENDMAP
560
561NAME:    hangedman_damned_closets
562TAGS:    no_monster_gen
563DEPTH:   Tar, !Tar:$
564ORIENT:  float
565MONS:    shadow w:6 / shadow wraith / wraith w:6
566MONS:    soul eater, tormentor / shadow demon w:12
567MONS:    patrolling lost soul
568KMONS:   56 = flayed ghost
569KMONS:   78 = eidolon
570KMONS:   90 = phantasmal warrior
571KMONS:   AB : spectral titan / spectral ettin
572KMONS:   C = patrolling revenant w:19 / patrolling tzitzimitl w:1
573KFEAT:   C = } / ) / ] / > w:30 / floor w:5
574SHUFFLE: 4C / 56 / 78 / 90 / AB, 567890AB, yz / yz / zy, YZ / YZ / ZY
575SUBST:   X : x., y : xxx., z = ., { = {..
576MAP
577    xxxxxxxxxxxxxxxxxxxx
578    cccccccccccccccccccx
579    c.......yz.....1xxcx
580    c.......yz..3...xGcx
581    c.......x.......x4cx
582  @cc..1..x.x...xxx.+Ccx
583  .c...2...x.xxx...xxccx
584  .+......ZY.......xGcxx
585x..+.......YZ......x5cx
586x.cc.......x...2...+6cx
587x.c.xxxx..x.x..1..xxccx
588x{c.....xxX.......xGcxx
589..c.......Xxx.....x7cx
590.cc..1..x.x..xxxx.+8cx
591.+...2...x.......xxccx
592.+......ZY.......xGcxx
593@c.......YZ......x9cx
594cc...xxx.x...2...+0cx
595c.xxx...x.x..1..xxccx
596c.......x.......xGcxx
597c...3..zy.......xAcx
598c1.....zy.......+Bcx
599cccccccccccccccccccx
600xxxxxxxxxxxxxxxxxxxx
601ENDMAP
602
603# A bit of a tribute to Jory's old silence vault, except
604# hopefully this time with some choice in using the silence;
605# the aura extends to the edge of the walls with the main doors.
606NAME:    hangedman_tartarus_silent_blood_keep
607TAGS:    no_monster_gen transparent patrolling
608DEPTH:   Tar, !Tar:$
609ORIENT:  float
610WEIGHT:  5
611MONS:    zombie / skeleton / spectral thing w:4
612MONS:    jiangshi / phantasmal warrior w:4 / shadow wraith w:4, vampire mage
613MONS:    vampire knight ; demon whip | demon trident | demon blade . \
614                          plate armour | chain mail
615MONS:    soul eater, tormentor w:3 / shadow demon w:1, silent spectre
616KMONS:   9 = reaper / lorocyproca w:6
617KMONS:   J = Jory w:9 / tzitzimitl w:1, tzitzimitl
618NSUBST:  J = 1:J / *:9, 8 = 1:6 / * = 5:19 6:1
619SUBST:   A : x.., B : x.., ] = ]>
620MAP
621          xx  xx  xx  xx  xx  xx
622         xxxxxxxxxxxxxxxxxxxxxxxxx
623       xxxxxxxxxxxxxxxxxxxxxxxxxxx
624      ..xx..xx....2.....xx.........
625    ....A......4c.3..4...B.....ccc...
626  .............ccc+ccc......82ccccc..
627...ccc1.......ccc.2.ccc..cccccc1c1cc.
628..ccccc18ccccccc)56..ccccc....+..7cc.
629.cc1c1cccc....+J.3<4.J+....cccc1c1cc.
630.cc7..+....ccccc..65]ccccccc81ccccc..
631.cc1c1cccccc..ccc.2.ccc.......1ccc...
632..ccccc82......ccc+ccc.............
633...ccc.....B...3..4.c3......A....
634  .........xx.....2....xx..xx..
635   xxxxxxxxxxxxxxxxxxxxxxxxxxxx
636   xxxxxxxxxxxxxxxxxxxxxxxxxx
637     xx  xx  xx  xx  xx  xx
638ENDMAP
639
640##############################################################################
641# Ereshkigal (Tartarus)
642##############################################################################
643
644NAME:    tar_old
645ORIENT:  encompass
646MONS:    patrolling Ereshkigal, reaper, shadow demon, shadow
647MONS:    lich / ancient lich / dread lich, shadow dragon / death drake w:1
648MONS:    tzitzimitl
649KMONS:   8 = ghoul
650KMONS:   9 = vampire mage / vampire knight
651KMONS:   0 = soul eater
652KMONS:   Z = skeleton / zombie
653SUBST:   ? = ?..., ? = 2., 0 = 002
654SHUFFLE: 3569
655: serpent_of_hell_setup(_G)
656: tar_setup(_G)
657MAP
658xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
659xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
660xxxx..............................................................xxxx
661xxxx..............................................................xxxx
662xxxx.................cccc..........ccc............................xxxx
663xxxx.............ccccc..cccc.....ccc.cccc.........................xxxx
664xxxx...........ccc.........ccccccc.....cc.........................xxxx
665xxxx.........ccc........6...........V..cc.........................xxxx
666xxxx........cc4........................cc...........xxxxxxxx......xxxx
667xxxx........cc44xxx++xxx......D........cc..........xx......xx.....xxxx
668xxxx........ccxxx......xxx.......ccc++ccc....6....xx........xx....xxxx
669xxxx........cxx..........xxx.....ccc44ccc.........x..........x....xxxx
670xxxx........cx............xx....cccc44cc.........xx.9......7.xx...xxxx
671xxxx.......ccx.G........G.xxx7ccc..c44c..........x....||||....x...xxxx
672xxxx.......cxx............xxxcc..................x....||||....x...xxxx
673xxxx......ccx..............xxc...................xx.9......9.xx...xxxx
674xxxx......ccx..G........G..xxc..x.........x.......x..........x....xxxx
675xxxx......ccx..............xcc......??............xx........xx....xxxx
676xxxx.......cxx............xxc......2222............xx......xx.....xxxx
677xxxx.......ccx.G........G.xcc.......??..............xxxxxxxx......xxxx
678xxxx........cx7..........7xc......................................xxxx
679xxxx........cxx....17....xxc....x.........x.......................xxxx
680xxxx........ccxxx......xxxcc......................................xxxx
681xxxx........cccc+xxxxxx+cccc.................................3....xxxx
682xxxx........cc$$cccccccc$$cc......................................xxxx
683xxxx.........cc$$$$O$$$$$cc.......................................xxxx
684xxxx..........cccccccccccc......x.........x............V..........xxxx
685xxxx..............................................................xxxx
686xxxx...........................................cccccccccccccccc...xxxx
687xxxx...........................................cccccccccccccccc...xxxx
688xxxx..................................6........cc$$$$$xx|||||cc...xxxx
689xxxx.......3........V...........x.........x....cc$$$$$xx|||||cc...xxxx
690xxxx................................7..........ccxxcccccccccccc...xxxx
691xxxx...........................................ccxxcccccccccccc...xxxx
692xxxx...........................................cc44744xx00000cc...xxxx
693xxxx.......ccccccccc+ccccccccc.................cc44444xx88888cc...xxxx
694xxxx.......c.................c..x.........x..ccccccccccccxxxxcc...xxxx
695xxxx.......c.x.x.x.x.x.x.x.x.c.................ccccccccccxxxxcc...xxxx
696xxxx.......c.................c......................+........cc...xxxx
697xxxx.......cx5x.x.x.x.x.x.x5xc......................+........cc...xxxx
698xxxx.......c.................c.................ccccccccccxxxxcc...xxxx
699xxxx.......c.x.x.x.x5x.x.x.x.c..x.........x..ccccccccccccxxxxcc...xxxx
700xxxx.......c.................c.................ccZZZZZxx88888cc...xxxx
701xxxx.......cxxxxxxx.x.xxxxxxxc.................ccZZZZZxx00000cc...xxxx
702xxxx.......c$$$$$$x....x$$$||c.................ccxxcccccccccccc...xxxx
703xxxx.......c$x$$x$xx.x.x$x$x|c.................ccxxcccccccccccc...xxxx
704xxxx.......c||||||+....+$$$||c..x....3....x....cc||xx444xx|||cc...xxxx
705xxxx.......ccccccccccccccccccc.................cc||xx444xx|7|cc...xxxx
706xxxx...........................................cccccccccccccccc...xxxx
707xxxx...........................................cccccccccccccccc...xxxx
708xxxx..............................................................xxxx
709xxxx..............................................................xxxx
710xxxx........(...........................................[.........xxxx
711xxxx..............................................................xxxx
712xxxx..............................................................xxxx
713xxxx..............................{...............................xxxx
714xxxx..............................................................xxxx
715xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
716xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
717xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
718ENDMAP
719
720
721##############################################################################
722# Ereshkigal (Tartarus) by Mu.
723##############################################################################
724NAME:     tar_mu
725ORIENT:   encompass
726MONS:     patrolling Ereshkigal, tzitzimitl, reaper, soul eater, shadow demon
727MONS:     shadow dragon, shadow wraith
728KMONS:    8 = shadow imp
729: serpent_of_hell_setup(_G)
730SUBVAULT: = : tar_mu_maze
731# position of the loot chamber varies
732SHUFFLE:  AB
733SUBST:    A = %
734SUBST:    B = x
735KFEAT:    % = .
736KMONS:    % = soul eater w:20 / shadow wraith w:15 / reaper w:5 / nothing w:20
737KITEM:    % = | / $
738SUBST:    4 = 3333444455566778
739KMONS:    s = eidolon
740KMONS:    t = phantasmal warrior
741: tar_setup(_G)
742MAP
743xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
744xxxx..............................................................xxxx
745xxxx.4.............................4.........................(..{.xxxx
746xxxx..ccccccccccccccccccccccccccccc...............................xxxx
747xxxx..c===========================+...............................xxxx
748xxxx..c===========================c.............................[.xxxx
749xxxx..c===========================c...............................xxxx
750xxxx..c===========================c...............................xxxx
751xxxx..c===========================c..............3ccccccc3........xxxx
752xxxx..c===========================c............7ccccccccccc7......xxxx
753xxxx..c===========================c...........3ccccc$$$ccccc3.....xxxx
754xxxx..c===========================c..........7cccc$$$$$$$cccc7....xxxx
755xxxx..c===========================c..........7ccc$$$$$$$$$ccc7....xxxx
756xxxx..c===========================c..........ccc$$$$$$$$$$$ccc....xxxx
757xxxx..c===========================c..........ccc.2.$$$$$.2.ccc....xxxx
758xxxx..c===========================c.........ccc....xxxxx....ccc...xxxx
759xxxx..c===========================c.........ccc..xxxxxxxxx..ccc...xxxx
760xxxx..c===========================c.........cc..xxxxxxxxxxx..cc...xxxx
761xxxx..c===========================c.........cc+cxxxxxxxxxxxc+cc...xxxx
762xxxx..c===========================c.........cc.c...........c.cc...xxxx
763xxxx..c===========================c.........cc.c.xxxxxxxxx.c.cc...xxxx
764xxxx..c===========================c.........cc.c+xxxxxxxxc+c.cc...xxxx
765xxxx..c===========================c.........cc.c.xx.444.xc.c.cc...xxxx
766xxxx..c===========================c.........cc.c.cx.444.xc.c.cc...xxxx
767xxxx..c===========================c.........cc.c.cxxxxxxxc.c.cc...xxxx
768xxxx..c===========================c.........cc.c.cccxxxccc.c.cc...xxxx
769xxxx..c===========================c.........cc.c...cxxxc...c.cc...xxxx
770xxxx..c===========================c.........cc.c.cccxxxccc.c.cc...xxxx
771xxxx..c===========================c.........cc.c.cx|2.2|xc.c.cc...xxxx
772xxxx..c===========================c.........cc.c.cx|$$$|xc.c.cc...xxxx
773xxxx..c===========================c.........cc.c.ccccxcccc.c.cc...xxxx
774xxxx..c===========================c.........cc.c....cxc....c.cc...xxxx
775xxxx..c===========================c.........cc.c.ccccxcccc.c.cc...xxxx
776xxxx..c===========================c.........cc.c.cxx|||xxc.c.cc...xxxx
777xxxx..c===========================c.........cc.c.cxx|||xxc.c.cc...xxxx
778xxxx..c===========================c.........cc+c.ccccccccc.c+cc...xxxx
779xxxx..c===========================c..........c.c.....c.....c.c....xxxx
780xxxx..c===========================c............c...........c......xxxx
781xxxx..c===========================c...............................xxxx
782xxxx..c===========================c...............4.4.4.4.........xxxx
783xxxx..c===========================c................4...4..........xxxx
784xxxx..c===========================c...........x.................xxxxxx
785xxxx..c===========================c..........xxx...............xxxxxxx
786xxxx..c===========================c.........xxxxxx+xxxxxxxxx+xxxxxxxxx
787xxxx..c===========================c.........xxxxxx.x|$...$|x.xxxxxxxxx
788xxxx..ccccccccccccc===============c.........xxxxxx.xxx2.2xxx.xxxAAAAxx
789xxxx..cc..........+===============c........xxxxxxx.xxxxxxxxx.xxxAAAAxx
790xxxx..cc..........c===============c........xxxxxxx..xxxxxxx..xxxAAAAxx
791xxxx..cc..........c===============c........xxxxxxxx.........xxxxAAAAxx
792xxxx..cc....2.....c===============c.......xxxxxxxxxx.......xxxxxxxxxxx
793xxxx..cc.s...2..s.c===============c.......xxxxxxxxxxx.....xxAAAAAAAAxx
794xxxx..cc.7..1...7.c===============c......xxBBBBBBBxxxx...xxxAAAAAAAAxx
795xxxx..cc..........c===============c......xxBBBBBBBxxxxx.xxxxAAAAAAAAxx
796xxxx..cc..........c===============c.....xxxBBBBBBBxxxxx+xxxxxxxxxxxxxx
797xxxx..cc.5.t..t.5.c===============c.....xxxxxxxxxxxx..............$$xx
798xxxx..cc.$$$O$$$$.ccccccccccccccccc.....xxBBBBxBBBBx.4...4.......$$$xx
799xxxx..ccccccccccccccccccccccccccccc.....xxBBBBxBBBBx...4..4.....$$$$xx
800xxxx.4..............................4..xxxBBBBxBBBBx.2..4..4...$$$$$xx
801xxxx..................................xxxxBBBBxBBBBx..........$$$$$$xx
802xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
803xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
804ENDMAP
805
806NAME:     tar_mu_maze
807# only to shut up the validator
808ORIENT:   encompass
809TAGS:     tar_mu_maze no_rotate no_hmirror no_vmirror unrand
810: tar_dig_maze(_G, 0, 0)
811NSUBST:   L = 2:M / 3 = M. / 5:N / 5:P / 5:V / 1:L / *:.
812NSUBST:   . = 5:Q / *:.
813KFEAT:    L = zot trap
814KMONS:    M = tzitzimitl
815KFEAT:    N = floor
816KITEM:    N = superb_item
817KMONS:    N = patrolling tzitzimitl / patrolling soul eater
818KFEAT:    P = floor
819KITEM:    P = star_item
820KMONS:    P = patrolling reaper / nothing
821KMONS:    Q = generate_awake unseen horror
822SUBST:    V = V / .
823MAP
824ccccccccccccccccccccccccccc
825ccccccccccccccccccccccccccc
826ccccccccccccccccccccccccccc
827ccccccccccccccccccccccccccc
828ccccccccccccccccccccccccccc
829ccccccccccccccccccccccccccc
830ccccccccccccccccccccccccccc
831ccccccccccccccccccccccccccc
832ccccccccccccccccccccccccccc
833ccccccccccccccccccccccccccc
834ccccccccccccccccccccccccccc
835ccccccccccccccccccccccccccc
836ccccccccccccccccccccccccccc
837ccccccccccccccccccccccccccc
838ccccccccccccccccccccccccccc
839ccccccccccccccccccccccccccc
840ccccccccccccccccccccccccccc
841ccccccccccccccccccccccccccc
842ccccccccccccccccccccccccccc
843ccccccccccccccccccccccccccc
844ccccccccccccccccccccccccccc
845ccccccccccccccccccccccccccc
846ccccccccccccccccccccccccccc
847ccccccccccccccccccccccccccc
848ccccccccccccccccccccccccccc
849ccccccccccccccccccccccccccc
850ccccccccccccccccccccccccccc
851ccccccccccccccccccccccccccc
852ccccccccccccccccccccccccccc
853ccccccccccccccccccccccccccc
854ccccccccccccccccccccccccccc
855ccccccccccccccccccccccccccc
856ccccccccccccccccccccccccccc
857ccccccccccccccccccccccccccc
858ccccccccccccccccccccccccccc
859ccccccccccccccccccccccccccc
860ccccccccccccccccccccccccccc
861ccccccccccccccccccccccccccc
862ccccccccccccccccccccccccccc
863ccccccccccccccccccccccccccc
864ccccccccccccccccccccccccccc
865           cccccccccccccccc
866           cccccccccccccccc
867           cccccccccccccccc
868           cccccccccccccccc
869           cccccccccccccccc
870           cccccccccccccccc
871           cccccccccccccccc
872           cccccccccccccccc
873           cccccccccccccccc
874           cccccccccccccccc
875ENDMAP
876
877##############################################################################
878# Ereshkigal (Tartarus) by minmay
879##############################################################################
880
881NAME:   tar_minmay_river
882ORIENT: encompass
883MONS:   patrolling Ereshkigal, reaper, shadow demon, tzitzimitl, soul eater
884FTILE:  "5!?^ = floor_green_bones
885SUBST:  5 = 5:10 3:1
886NSUBST: " = 2:4 / 4:3
887NSUBST: 2 = 3:4 / *:2
888NSUBST: w = 3=Ew / 20=Fw / *:w
889NSUBST: ! = 2:. / *:c
890NSUBST: ? = 2:. / *:c
891NSUBST: ^ = 2:. / *:c
892KMONS:  E = spectral kraken
893KMONS:  F = spectral swamp worm
894KFEAT:  EFw = deep_water
895KMASK:  Ww = no_monster_gen
896: serpent_of_hell_setup(_G)
897: tar_setup(_G)
898: set_border_fill_type("permarock_wall")
899MAP
900cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
901cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
902ccc$$$$$cccc........cccc$$$$$c|||||O||||||c$$$$$cccc........cccc$$$$$ccc
903ccc$$$ccc....cccccc....ccc$$$c|cccccccccc|c$$$ccc....cccccc....ccc$$$ccc
904ccc$$cc...cccc....cccc...cc$$c+c........c+c$$cc...cccc....cccc...cc$$ccc
905ccc$cc..ccc....cc....ccc..cc+cc....14....cc+cc..ccc....cc....ccc..cc$ccc
906ccc$c..cc...cccccccc...cc...2c............c2...cc...cccccccc...cc..c$ccc
907ccc+c.cc..ccc......ccc..cc..cc............cc..cc..ccc......ccc..cc.c+ccc
908ccc2..c..cc...cccc...cc..c..c4............4c..c..cc...cccc...cc..c..2ccc
909cccc.cc.cc..ccc..ccc..cc.cc.c..............c.cc.cc..ccc..ccc..cc.cc.cccc
910cccc.c..c..cc......cc..c..c.c....cc++cc....c.c..c..cc......cc..c..c.cccc
911ccc..c.cc.cc..cccc..cc.cc.c.c...cc....cc...c.c.cc.cc..cccc..cc.cc.c..ccc
912ccc.cc.c..c..cc..cc..c..c.c.cc..c......c..cc.c.c..c..cc..cc..c..c.cc.ccc
913ccc.c..c.cc.cc....cc.cc.c....c.cc...D..cc.c....c.cc.cc....cc.cc.c..c.ccc
914ccc.c.cc.c..c..cc.+2..c.c....c.c........c.c....c.c..2+.cc..c..c.cc.c.ccc
915ccc.c.cc.c..c..cc.ccc.c.c....c.c........c.c....c.c.ccc.cc..c..c.cc.c.ccc
916ccc.c..c.cc.cc......c.c.c....c3c........c3c....c.c.c......cc.cc.c..c.ccc
917ccc.cc.c..c..cc+c...c...c2cc2ccccc++++ccccc2cc2c...c...c+cc..c..c.cc.ccc
918ccc..c.cc.cc..c2c...ccc.c+c...cc........cc...c+c.ccc...c2c..cc.cc.c..ccc
919cccc.c..c..cc...cccc33c...c...c..........c...c...c33cccc...cc..c..c.cccc
920cccc.cc.cc..ccc....c33cccccc..c..c....c..c..cccccc33c....ccc..cc.cc.cccc
921cccc..c..cc...cccc.ccc|||c.c.....c....c.....c.c|||ccc.cccc...cc..c..cccc
922ccccc.cc..ccc........c||cc.cc...cc....cc...cc.cc||c........ccc..cc.ccccc
923ccc.c..cc...cccccccc.c|cc...cc2cccc33cccc2cc...cc|c.cccccccc...cc..c.ccc
924ccc.cc..ccc..2....2+.ccc.....cccc2cccc2cccc.....ccc.+2....2..ccc..cc.ccc
925ccc..cc...cccc....cccc............................cccc....cccc...cc..ccc
926cc..............WWWWWWWWWWWWWWWWWWWWWWW...............................cc
927cc..WWWWWWWWWWWWWWwwwwwwwwwwwwwwWwwwwwWWWWWWWW........................cc
928ccWWWWwwwwwwwwwwwWwwwwwwwwwwwwwWwwwwwwwwwwwwWWWWWWWWWW................cc
929ccwwwwWwwwwwwwwwwWwwwwwwwwwwwwwWwwwwwwwwwwwwWwwwwwwwwWWWWWWWWWWWWW....cc
930ccwwwwWwwwwwwwwwwwWwwwwwwwwwwwwWwwwwwwwwwwwWwwwwwwwwwwwWwwwwwwwwwWWWWWcc
931ccwwwwWwwwwwwwwwwwWwwwwwwwwwwwwWwwwwwwwwwwwWwwwwwwwwwwWwwwwwwwwwwWwwwwcc
932ccwwwwwWwwwwwwwwwwWwwwwwwwwwwwWwwwwwwwwwwwWwwwwwwwwwwwWwwwwwwwwwwWwwwwcc
933ccwwwwwWwwwwwwwWWWWWWWWWWWWWWWWWWWwwwwwwwwWwwwwwwwwwwwWwwwwwwwwwwWwwwwcc
934ccwwwWWWWWWWWWWWcc""""""""""cccccWWWWWWwwwWwwwwwwwwwwWwwwwwwwwwwwWwwwwcc
935ccWWWW"""^^^^^ccc^^^ccccccc^^c""c"""""WWWWWWWWwwwwwwwWwwwwwwwwwwWwwwwwcc
936cc"""""""c""""""c""""c5"c""""c""c""""""""""""WWWWWWWWWWWwwwwwwwwWwwwwwcc
937ccc^^^cccc""c""""""""c""c""""c"""""c^^^cccc"""""""""c""WWWWWWWWWWWWWwwcc
938ccc""""c""""c""c"""ccc"""""""cc""""c""""""cccccc^^^^cccc"""""""""""WWWcc
939ccc""ccc""""c""c"""""c""""c""c"""c"c"""c"5c""""""""""""c^^^^c^^^c"""""cc
940ccc""""c""""c""c"""""""cccc""c5""c"c"""cccc"""""c""""c""""""c"""c"c""ccc
941cccc""""""ccccccccc""""c""c""cccccccc"""c"c"""c"c""ccccc""""c""ccccccccc
942ccc""""""""c"""c"5cc""""""c""c""""""""""c"""""c"c"""c5""""""""cc5""c"ccc
943cc""""c""""c""""""c"""""""c"""""""c"""""""""cccccc??c""""c"""""c"""""ccc
944cc""ccc""""c""""""c""cccccc"""""""c""""""c"""""c""""ccccccc"""cc"""""ccc
945cc""""c"""??"""cccc"""""c"""""""ccc""""""c""""cc""""c"5c"""""""cccc""ccc
946cc""""ccccc"""""""c"""""c"""""""""c""""""c"""??c""c""""c"""""""""c"""ccc
947cc"""""5c""""c""""c????cc"""""c""5c"""cc"ccccc""""c""""c""c""""""c""""cc
948cc??ccccc""""c""""""""""c???cccccccc???c"""c""""""c""ccc""ccc????c""""cc
949cc""""""c""""c""""""""""c"""""c""""""""c""5ccccc""c""""c??c"""""""""""cc
950ccc""""""""""c"c"""""""""""cccc""""""""ccccc""""""c"""""""c""c"""cccc"cc
951ccc"""""""""ccccccccccc"""""""c""""""""""""c""""""c"""""ccccccc""c5"""cc
952cccccc""""ccc"""5c""""""""""""c""""""""""""c"""ccccc"""cc""""""""cc"""cc
953ccc5""""""""c""""c""""""""c"""""""""ccc""""c"""c""5cc"""""cc"""""c""cccc
954ccc""""""""""""""cccc!!!!"c!!!!!ccccc""""""""""c"""c"""""""cccc!!!!!!ccc
955ccccc!!!!!!!!!cccc""""""c"c""""""c""cccccc!!!""c"""ccc!!!ccc"""""""""ccc
956cc"""""""c""""c"c"""""""cccc"""""c""c5""""""cccc"ccc"""""""c""""c""ccccc
957cc""""""cc""""c"c""""""""""c""""""""c""""""""""c"""""""""""c""cccc"""ccc
958cc"""""""c""""c""""""""c""5cccc""""ccc""""""""cc"""""""c"cccccc"c""""ccc
959cc"""""cccc"""c"""""""cccccc"""""""""c"""""""""""""ccccc"c"""5c"c"""""cc
960ccc"""""""cc"""""c""""""c""c"""""c"""c""""""c""""""""""ccc""""c"""""c"cc
961ccc"c"""""c""""""c""""""c""""""ccc""""""""""c""""""""""""c""ccc""c""c"cc
962cccccccc""c""""""cccc"""c""""""""ccccccc"""ccc"""""""""""c"""""""ccccccc
963ccc...c"""""""cccc""""""c""cc""""c...c"""""""c""""""c""""c""""""cc...ccc
964ccc.{..""""""""c"""""c""""""cc"""c.(.."""c""5cccc"""c"c""""""c"""..[.ccc
965ccc...c""""""""c"""""c""""""c"""cc...c"""ccccc""""""c"c""""""c"""c...ccc
966cccccccccc"""""""""ccccccc"""""""ccccc"""""""""""""ccccc""""cccccccccccc
967cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
968cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
969ENDMAP
970
971##############################################################################
972# Ereshkigal (Tartarus) by Grunt
973##############################################################################
974
975NAME:   tar_grunt
976TAGS:   overwritable
977ORIENT: encompass
978{{
979  extend_map{width = 70, height = 70}
980  fill_area{fill = 'X', border = 'x'}
981  fill_area{x1 = 2, y1 = 2, x2 = 67, y2 = 67, fill = '_', border = '-'}
982  fill_area{x1 = 4, y1 = 4, x2 = 65, y2 = 65, fill = '.'}
983  subst('X = xx.')
984  subst('- = x.')
985  subst('_ = x..')
986  -- The remove_isolated_glyphs doesn't seem to consistently get rid of
987  -- pockets in the border, so...
988  kprop('X-_ = no_tele_into')
989  remove_isolated_glyphs { find = '.', replace = 'x', percent = 100 }
990  tar_setup(_G)
991  hook("post_place", function()
992    local map, vplace = dgn.resolve_map(dgn.map_by_tag("tar_grunt_ereshkigal"))
993    local x = (dgn.GXM / 2) - 5 + crawl.random2(11)
994    local y = (dgn.GYM / 2) - 5 + crawl.random2(11)
995    local res = dgn.place_map(map, false, true, x, y)
996    if not res then
997      error("Failed to place Ereshkigal chamber somehow!")
998    end
999    dgn.place_maps{tag="tar_grunt_big_loot",    count=1, die_on_error = true}
1000    dgn.place_maps{tag="tar_grunt_small_loot",  count=3}
1001    dgn.place_maps{tag="tar_grunt_decor",       count=15}
1002    dgn.place_maps{tag="tar_grunt_mons1",       count=10}
1003    dgn.place_maps{tag="tar_grunt_mons2",       count=10}
1004  end)
1005}}
1006
1007NAME:    tar_grunt_ereshkigal
1008TAGS:    tar_grunt_ereshkigal unrand
1009MONS:    patrolling Ereshkigal, Tzitzimitl, shadow demon / reaper
1010MONS:    lich w:40 / ancient lich / dread lich
1011KMASK:   O = no_item_gen
1012KITEM:   O = bone rune of Zot
1013: serpent_of_hell_setup(_G)
1014: tar_dig_maze(_G, 9, 21)
1015KFEAT:   - = floor
1016NSUBST:  L = 2:2 / 3:4 / 8:3 / *:.
1017MAP
1018ccccccccccccccccccccc
1019ccccccc$$$O$$$ccccccc
1020ccccccc$$$$$$$ccccccc
1021ccccccc$.....$ccccccc
1022ccccccc...1...ccccccc
1023ccccccc.......ccccccc
1024ccccccc..2.2..ccccccc
1025ccccccc.......ccccccc
1026ccccccccc+++ccccccccc
1027ccccccccc---ccccccccc
1028ccccccccccccccccccccc
1029ccccccccccccccccccccc
1030ccccccccccccccccccccc
1031ccccccccccccccccccccc
1032ccccccccccccccccccccc
1033ccccccccccccccccccccc
1034ccccccccccccccccccccc
1035ccccccccccccccccccccc
1036ccccccccccccccccccccc
1037ccccccccccccccccccccc
1038ccccccccccccccccccccc
1039ccccccccc---ccccccccc
1040ccccccccc+++ccccccccc
1041       ........
1042       xx3.4xx
1043       xx.D.xx
1044       .......
1045       xx...xx
1046       xx...xx
1047       .......
1048        x...x
1049        .....
1050        x...x
1051        .....
1052        x...x
1053        .....
1054        x.2.x
1055ENDMAP
1056
1057NAME: tar_grunt_big_loot
1058TAGS: tar_grunt_big_loot unrand
1059MONS: Tzitzimitl / shadow dragon, shadow demon / reaper
1060MONS: lich w:40 / ancient lich / dread lich
1061MAP
1062..................
1063.cccccccccccccccc.
1064.c|$x.2c||c2.x$|c.
1065.c$.x..c||c..x.$c.
1066.c..c..c||c..c..c.
1067.c..c$|c$$c|$c..c.
1068.c..c|$c$$c$|c..c.
1069.c..c..c$$c..c..c.
1070.c..c..c22c..c..c.
1071.c2.c3.c13c.3c.2c.
1072.c..cxxcxxcxxc..c.
1073.c..c$...1..$c..c.
1074.c..c|$.3..$|c..c.
1075.c..cccccccccc..c.
1076.c$.x..1..2..x.$c.
1077.c|$x........x$|c.
1078.ccccccc++ccccccc.
1079........@@........
1080ENDMAP
1081
1082NAME:   tar_grunt_small_loot
1083TAGS:   tar_grunt_small_loot allow_dup unrand no_exits
1084MONS:   shadow demon w:20 / reaper w:15 / shadow wraith w:10 / soul eater w:5
1085NSUBST: x = 1:m / *:x
1086MAP
1087cccxccc
1088c..$..c
1089c.$|$.c
1090x$|1|$x
1091c.$|$.c
1092c..$..c
1093cccxccc
1094ENDMAP
1095
1096NAME:   tar_grunt_small_decor_pillar
1097TAGS:   tar_grunt_decor transparent allow_dup unrand no_exits
1098WEIGHT: 60
1099{{
1100  local size = crawl.random2(6) + 1
1101  local glyphs = { {'A', 2},
1102                   {'B', 3},
1103                   {'C', 4},
1104                   {'D', 5},
1105                   {'E', 6} }
1106  for i = 1, #glyphs do
1107    if size >= glyphs[i][2] then
1108      subst(glyphs[i][1] .. ' = x')
1109    else
1110      clear(glyphs[i][1])
1111    end
1112  end
1113}}
1114MAP
1115xABCDE
1116AABCDE
1117BBBCDE
1118CCCCDE
1119DDDDDE
1120EEEEEE
1121ENDMAP
1122
1123NAME: tar_grunt_decor_1
1124TAGS: tar_grunt_decor transparent allow_dup unrand
1125SUBST: G : GV
1126MAP
1127...
1128.G.
1129...
1130ENDMAP
1131
1132NAME: tar_grunt_decor_3
1133TAGS: tar_grunt_decor transparent allow_dup unrand
1134SUBST: G : GV
1135MAP
1136 .....
1137...G...
1138.G...G.
1139.......
1140ENDMAP
1141
1142NAME: tar_grunt_decor_4
1143TAGS: tar_grunt_decor transparent allow_dup unrand
1144SUBST: G : GV
1145MAP
1146......
1147.G..G.
1148......
1149......
1150.G..G.
1151......
1152ENDMAP
1153
1154NAME: tar_grunt_decor_6
1155TAGS: tar_grunt_decor transparent allow_dup unrand
1156SUBST: G : GV
1157MAP
1158 ......
1159 .G..G.
1160........
1161.G....G.
1162........
1163 .G..G.
1164 ......
1165ENDMAP
1166
1167NAME: tar_grunt_decor_8
1168TAGS: tar_grunt_decor transparent allow_dup unrand
1169SUBST: G : GV
1170MAP
1171  ......
1172 ..G..G..
1173..........
1174.G......G.
1175..........
1176.G......G.
1177..........
1178 ..G..G..
1179  ......
1180ENDMAP
1181
1182NAME: tar_grunt_decor_cross_ortho
1183TAGS: tar_grunt_decor transparent allow_dup unrand
1184MAP
1185  ....
1186  .xx.
1187...xx...
1188.xxxxxx.
1189.xxxxxx.
1190...xx...
1191  .xx.
1192  ....
1193ENDMAP
1194
1195NAME: tar_grunt_decor_cross_diag
1196TAGS: tar_grunt_decor transparent allow_dup unrand
1197MAP
1198...  ...
1199.xx..xx.
1200.xxxxxx.
1201 .xxxx.
1202 .xxxx.
1203.xxxxxx.
1204.xx..xx.
1205...  ...
1206ENDMAP
1207
1208NAME: tar_grunt_decor_circle_5
1209TAGS: tar_grunt_decor transparent allow_dup unrand
1210SUBST: G : GV
1211MAP
1212  ...
1213 .xxx.
1214.x...x.
1215.x.G.x.
1216.x...x.
1217 .xxx.
1218  ...
1219ENDMAP
1220
1221NAME: tar_grunt_decor_octagon_7
1222TAGS: tar_grunt_decor transparent allow_dup unrand
1223SUBST: G : GV
1224MAP
1225   ...
1226  .xxx.
1227 .x...x.
1228.x.....x.
1229.x..G..x.
1230.x.....x.
1231 .x...x.
1232  .xxx.
1233   ...
1234ENDMAP
1235
1236NAME:    tar_grunt_mons_1
1237TAGS:    tar_grunt_mons_1 transparent allow_dup unrand
1238MONS:    shadow imp
1239MAP
12401
1241ENDMAP
1242
1243NAME:    tar_grunt_mons_2
1244TAGS:    tar_grunt_mons_2 transparent allow_dup unrand
1245MONS:    soul eater
1246MAP
12471
1248ENDMAP
1249
1250##############################################################################
1251# Ereshkigal (Tartarus) Cathedral by Grunt
1252##############################################################################
1253
1254NAME:     tar_grunt_cathedral
1255ORIENT:   encompass
1256MONS:     patrolling Ereshkigal, patrolling tzitzimitl, reaper, shadow demon
1257MONS:     lich w:40 / ancient lich / dread lich, shadow dragon
1258MONS:     shadow wraith / soul eater
1259NSUBST:   K = 1:D / *:.
1260: serpent_of_hell_setup(_G)
1261NSUBST:   P = 1:O / *:|
1262KITEM:    $ = $ no_pickup
1263SHUFFLE:  {([<
1264: tar_setup(_G)
1265MAP
1266ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
1267ccccccc.........................ccccc.........................ccccccc
1268ccccc7.........................................................7ccccc
1269ccc..............................7.7..............................ccc
1270c.....7cc.....................ccccccccc.....................cc7.....c
1271c....cccccc.................ccc|||||||ccc.................cccccc....c
1272c..cccccccccc.............ccc...........ccc.............cccccccccc..c
1273c..cccccccccccc....{....ccc......5.5......ccc....[....cccccccccccc..c
1274c..cccccccccccccc.....ccc......ccccccc......ccc.....cccccccccccccc..c
1275c..cccccccccccccccccccc......ccc.....ccc......cccccccccccccccccccc..c
1276c..+......c...+...ccc......ccc.........ccc......ccc...+...c......+..c
1277c..+......+.4.+.6.+..7...ccc.............ccc...7..+.6.+.4.+......+..c
1278c..c...6..+.3.c...+....ccc.................ccc....+...c.3.+..6...c..c
1279c..c......c..ccc++c++ccc.....................ccc++c++ccc..c......c..c
1280c..c..ccccc||cc...+.............ccccc.............+...cc||ccccc..c..c
1281c..c..cccccccc.7..+............cc$P$cc............+..7.cccccccc..c..c
1282c..c..ccccccc...ccc..6.........c.ccc.c.........6..ccc...ccccccc..c..c
1283c..c..cccccc...cc..............c.ccc.c..............cc...cccccc..c..c
1284c..c..ccccc...cc...........4...c.....c...3...........cc...ccccc..c..c
1285c..c..ccccc..cc.........cc.....c..2..c.....cc.........cc..ccccc..c..c
1286c..c..ccccc..c.........cccc....cc...cc....cccc.........c..ccccc..c..c
1287c..c..ccccc..c.........cccc.....c...c.....cccc.........c..ccccc..c..c
1288c..c......c..c..........cc......c...c......cc..........c..c......c..c
1289c..c...7..+..c........3.......................4........c..+..7...c..c
1290c..c......+..c..............K...........K..............c..+......c..c
1291c..c......c..c.........................................c..c......c..c
1292c..c..ccccc..c......cccccc.....cc...cc.....cccccc......c..ccccc..c..c
1293c..c..ccccc..c.....cc....ccc...c.....c...ccc....cc.....c..ccccc..c..c
1294c.7c..ccccc$3c.....c$cc.......................cc$c.....c4$ccccc..c7.c
1295c..c..ccccc$$c.....cPcc.2.........1.........2.ccPc.....c$$ccccc..c..c
1296c.7c..ccccc$4c.....c$cc.......................cc$c.....c3$ccccc..c7.c
1297c..c..ccccc..c.....cc....ccc...c.....c...ccc....cc.....c..ccccc..c..c
1298c..c..ccccc..c......cccccc.....cc...cc.....cccccc......c..ccccc..c..c
1299c..c......c..c.........................................c..c......c..c
1300c..c......+..c.........................................c..+......c..c
1301c..c...7..+..c..............K...........K..............c..+..7...c..c
1302c..c......c..c........4.........c...c.........3........c..c......c..c
1303c..c..ccccc..c..........cc......c...c......cc..........c..ccccc..c..c
1304c..c..ccccc..c.........cccc....cc...cc....cccc.........c..ccccc..c..c
1305c..c..ccccc..cc........cccc....c..2..c....cccc........cc..ccccc..c..c
1306c..c..ccccc...cc........cc.....c.....c.....cc........cc...ccccc..c..c
1307c..c..cccccc...cc..........3...c.ccc.c...4..........cc...cccccc..c..c
1308c..c..ccccccc...ccc..6.........c.ccc.c.........6..ccc...ccccccc..c..c
1309c..c..cccccccc.7..+............cc$P$cc............+..7.cccccccc..c..c
1310c..c..ccccc||cc...+.............ccccc.............+...cc||ccccc..c..c
1311c..c......c..ccc++c++ccc.....................ccc++c++ccc..c......c..c
1312c..c...6..+.3.c...+....ccc.................ccc....+...c.3.+..6...c..c
1313c..+......+.4.+.6.+..7...ccc.............ccc...7..+.6.+.4.+......+..c
1314c..+......c...+...ccc......ccc.........ccc......ccc...+...c......+..c
1315c..cccccccccccccccccccc......ccc.....ccc......cccccccccccccccccccc..c
1316c..cccccccccccccc.....ccc......ccccccc......ccc.....cccccccccccccc..c
1317c..cccccccccccc....(....ccc......5.5......ccc....<....cccccccccccc..c
1318c..cccccccccc.............ccc...........ccc.............cccccccccc..c
1319c....cccccc.................ccc|||||||ccc.................cccccc....c
1320c.....7cc.....................ccccccccc.....................cc7.....c
1321ccc..............................7.7..............................ccc
1322ccccc7.........................................................7ccccc
1323ccccccc.........................ccccc.........................ccccccc
1324ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
1325ENDMAP
1326