##############################################################################
# zot.des: The ultimate goal. The Orb must be placed (Z). These maps can and
#          should be serious challenges! Players dying on Zot:5 are okay :)
#
# Content:
# <<1>> Zot entries (Depths:$)
# <<2>> Zot decorative vaults
# <<3>> Zot monster vaults
# <<4>> Zot end hall (Zot:5)
# <<5>> Zot floor-by-floor wall & floor colour changes
#
##############################################################################

{{
-- e.kitem("O = midnight gem") should be here, but it didn't work. Sorry! -- PF
function zot_entry_setup(e)
    e.place("Depths:$")
    e.orient("float")
    e.mons("patrolling base draconian")
    e.mons("fire dragon / ice dragon / storm dragon / \
            shadow dragon / bone dragon / golden dragon")
    e.mons("patrolling nonbase draconian")
    e.kmons("0 = ettin / rakshasa / glowing shapeshifter w:5 / \
                 stone giant w:12 / spriggan berserker w:8 / hell knight w:5")
    e.kmons("9 = fire giant w:12 / titan w:8 / vampire knight / \
                 spriggan air mage w:8 / deep troll earth mage w:8 / \
                 tengu reaver w:12 / tentacled monstrosity / lich w:2")
    e.kitem("O = midnight gem")
    e.kfeat("O = enter_zot")
end
}}

{{
-- Stuff for st's various vaults.
function st_zot_vaults_setup(e)
    e.tags("no_item_gen")
    e.depth("Zot, !Zot:$")
    e.kmons("D = acid dragon / fire dragon w:25 / ice dragon w:25 /\
               storm dragon w:20 / shadow dragon w:20 / golden dragon /\
               iron dragon w:5 / quicksilver dragon w:5 / bone dragon w:5 /\
               lindwurm w:2 / rime drake w:2 / death drake w:2 /\
               swamp dragon w:5")
    e.kmons("d = base draconian / nonbase draconian")
    e.kmons("Y = patrolling golden dragon")
    e.kitem("Y = |")
end
}}

{{
-- Create colourful Zot glass
function coloured_glass(e)
  e.shuffle('roygbiv')
  e.kfeat('roygbiv = m')
  e.tile('r = dngn_transparent_wall_red')
  e.tile('o = dngn_transparent_wall_brown')
  e.tile('y = dngn_transparent_wall_yellow')
  e.tile('g = dngn_transparent_wall_green')
  e.tile('b = dngn_transparent_wall_blue')
  e.tile('i = dngn_transparent_wall')
  e.tile('v = dngn_transparent_wall_magenta')
  e.colour('r = red')
  e.colour('o = brown')
  e.colour('y = yellow')
  e.colour('g = green')
  e.colour('b = blue')
  e.colour('i = cyan')
  e.colour('v = magenta')
end
}}

##############################################################################
##############################################################################
#
# <<1>> Zot entries (Depths side)
#
##############################################################################
##############################################################################

###########################
# Something to give the builder a chance if massive vaults keep failing.
# NOTE: Not currently used: larger entries are placed as primary vaults instead.
#
NAME:   zot_entry_small
TAGS:   zot_entry
KFEAT:  O = enter_zot
COLOUR: c = lightmagenta
COLOUR: .+ = magenta
TILE:   c = wall_zot_magenta
FTILE:  .O+ = floor_hall
MAP
xxxxxxxxx
xxxcccxxx
xxcc.ccxx
xcc...ccx
xc..O..+@
xcc...ccx
xxcc.ccxx
xxxcccxxx
xxxxxxxxx
ENDMAP

NAME:   evilmike_zot_entry_round
TAGS:   no_monster_gen zot_entry
SUBST:  = = nnn+
SUBST:  c: c:70 v:20 b:10
SUBST:  v: vcxlmb, n: nnnnvbcx
FTILE:  O.4G : floor_marble
SUBST:  4 = 122223
: zot_entry_setup(_G)
MAP
xxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxcccccccxxxxxxx
xxxcccccc..0..ccccccxx
xxcc......vvv......ccx
xxc.v......1......v.cx
xxc.2v...nn=nn...v..cx
xxc...nnnn...nnnn...cx
xxc...n....G....n..1cx
xcc...n.G..4..G.n...cc
xc.3.nn....v....nn...c
xc.v.n....v.v....n.v.+
xc.v.+.G.v.O.v.G.=.v.+
xc.v.n....v.v....n.v.+
xc.3.nn....v....nn...c
xcc...n.G..4..G.n...cc
xxc...n....G....n..1cx
xxc...nnnn...nnnn...cx
xxc.2v...nn=nn...v..cx
xxc.v......1......v.cx
xxcc......vvv......ccx
xxxcccccc..0..ccccccxx
xxxxxxxxcccccccxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx
ENDMAP

# Sorry, no wand of wishing in this one
NAME:   evilmike_zot_entry_castle
TAGS:   no_monster_gen zot_entry layout_city
NSUBST: O = 1:O / *:A
SUBST:  ^ = ^..
SUBST:  s = ccc+
KFEAT:  ^ = alarm trap
FTILE:  "OADx = floor_marble
COLOUR: " = magenta
TILE:   x = wall_zot_magenta
COLOUR: x = magenta
FTILE:  .+cm^01234$ = floor_hall
SUBST:  D = +, "' = .
NSUBST: 3 = 1:9 / *:3
: zot_entry_setup(_G)
MONS:   base draconian ; glaive | halberd
MAP
'''''''''''''''''''''''''''''''''''''''''
'wwwwwwwww'''''''''''''''''''''wwwwwwwww'
'wcccccccwwwwwwwwwwwwwwwwwwwwwwwcccccccw'
'wc3....cccccmccccccmccccccmccccc....3cw'
'wc.""".+....2.............2....+.""".cw'
'wc."O".cccccccccccc+cccccccccccc."O".cw'
'wc.""".s..1.....=4w.w4=......0.s.""".cw'
'wc.....c.....cccccc.cccccc.""".c.....cw'
'wccccccc0....+...."""1...+."x".ccc+cccw'
'wwwwwwccccccccc.""""""".ccc""".c$$$.ccw'
''''''wm.......c.""""""".c4=..1.s$$$2mww'
''''''wc.x1x1x2c"""xxx"""cwcccccccccccw''
''''''WD"""""""D"""xxx"""+.+^^^^^^^^^+w''
''''''wc.x1x1x2c"""xxx"""cwcccccccccccw''
''''''wm.......c.""""""".c4=..1.s$$$2mww'
'wwwwwwccccccccc.""""""".ccc""".c$$$.ccw'
'wccccccc0....+...."""1...+."x".ccc+cccw'
'wc.....c.....cccccc.cccccc.""".c.....cw'
'wc.""".s..1.....=4w.w4=......0.s.""".cw'
'wc."O".cccccccccccc+cccccccccccc."O".cw'
'wc.""".+....2.............2....+.""".cw'
'wc3....cccccmccccccmccccccmccccc....3cw'
'wcccccccwwwwwwwwwwwwwwwwwwwwwwwcccccccw'
'wwwwwwwww'''''''''''''''''''''wwwwwwwww'
'''''''''''''''''''''''''''''''''''''''''
ENDMAP

NAME:   evilmike_zot_entry_gauntlet
TAGS:   no_monster_gen zot_entry
PLACE:  Depths:$
ORIENT: float
WEIGHT: 8
SUBST:  b: v.., v: c.
TILE:   X = wall_zot_magenta
FTILE:  -OD = floor_hall
COLOUR: -D = magenta
COLOUR: X = lightmagenta
KPROP:  O-X = no_tele_into
SUBST:  X = x
SUBST:  - = ., D = +
KFEAT:  O = enter_zot
# easy: 1, 2
: if crawl.coinflip() then
MONS:   pale draconian, steam dragon
: else
MONS:   grey draconian, wyvern
: end
# medium: 3, 4
: if crawl.coinflip() then
MONS:   yellow draconian, acid dragon
: else
MONS:   green draconian, swamp dragon
: end
# hard: 5, 6
: if crawl.coinflip() then
MONS:   red draconian, fire dragon
: else
MONS:   white draconian, ice dragon
: end
# harder: 7, 8
: if crawl.coinflip() then
MONS:   black draconian
KMONS:  8 = storm dragon
: else
MONS:   purple draconian
KMONS:  8 = quicksilver dragon
: end
# boss: 9, 0
KMONS:  9 = nonbase draconian
KMONS:  0 = golden dragon
MAP
ccc+ccccccccccccccccccc
cvb.bvcccvb.bvccccccccc
cb...bcccb.9.bccccccccc
c.1.1.ccc.0...+.ccccccc
cb222bcccb.9.bc..cccccc
cvb.bvcccvb.bvcc..ccccc
ccc+ccccccc+ccccc..cccc
ccc.ccccccc.cccccc..ccc
ccc+ccccccXDXcccccc+ccc
cvb.bvcccXX-XXcccvb.bvc
cb...bccXX---XXccb.8.bc
c.3.3.ccX--O--Xcc.7.7.c
cb444bccXX---XXccb...bc
cvb.bvcccXX-XXcccvb.bvc
ccc+ccccccXXXcccccc+ccc
ccc..ccccccccccccc..ccc
cccc..ccccccccccc..cccc
ccccc..ccvb.bvcc..ccccc
cccccc..cb.56bc..cccccc
ccccccc.+.....+.ccccccc
cccccccccb.56bccccccccc
cccccccccvb.bvccccccccc
ccccccccccccccccccccccc
ENDMAP

NAME:   evilmike_zot_entry_argh
TAGS:   no_monster_gen zot_entry patrolling transparent
SUBST:  G: GXm., m: mmlw
KMASK:  4 = opaque
KFEAT:  m = iron_grate
SUBST:  x: Xccv
NSUBST: 2 = 2:2 / *:-
TILE:   X = wall_zot_magenta
COLOUR: X = lightmagenta
SUBST:  X = x
COLOUR: . = white
FTILE:  -12O = floor_hall
SUBST:  - = .
KMONS:  O = nonbase draconian
: zot_entry_setup(_G)
MONS:   draconian stormcaller
MAP
xxxxxxxxxxxx@xxxxxxxxxxxx
xxx........---........xxx
xxmmm.....G.-.G.....mmmxx
x.m4m.......-.......m4m.x
x.mmm...G...-...G...mmm.x
x..........---..........x
x.....G....---....G.....x
x..........---..........x
x...G.....-----.....G...x
x........XX---XX........x
x.G.....-X1---1X-.....G.x
x-...------2-2------...-x
@-----------O-----------@
x-...------2-2------...-x
x.G.....-X1---1X-.....G.x
x........XX---XX........x
x...G.....-----.....G...x
x..........---..........x
x.....G....---....G.....x
x..........---..........x
x.mmm...G...-...G...mmm.x
x.m4m.......-.......m4m.x
xxmmm.....G.-.G.....mmmxx
xxx........---........xxx
xxxxxxxxxxxx@xxxxxxxxxxxx
ENDMAP

NAME:   evilmike_zot_entry_hall
TAGS:   no_monster_gen zot_entry patrolling
TILE:   X = wall_zot_magenta
COLOUR: X+- = magenta
SUBST:  X = c
FTILE:  -O+ = floor_hall
KPROP:  O- = no_tele_into
SUBST:  - = .
SUBST:  v: ....cnXblw, z:..cnXblw
NSUBST: d = 1:0 / 4:1 / 2:2 / *:.
SUBST:  D = +
: zot_entry_setup(_G)
MAP
                   cccccccccccc
                   cc..3....ccc
cccccccccccccccccccc.........cc
ccccccdccdccdccdccc..2XXXXX...c
ccc..............dc..XX---XX..c
D...vv.zz.vv.zz..cc..X-----X..c
D...vv.zz.vv.zz..+...X--O--+..c
D...vv.zz.vv.zz..cc..X-----X..c
ccc..............dc..XX---XX..c
ccccccdccdccdccdccc..2XXXXX...c
cccccccccccccccccccc.........cc
                  ccc..3....ccc
                  ccccccccccccc
ENDMAP

NAME:   evilmike_zot_entry_basic
TAGS:   no_monster_gen zot_entry transparent
TILE:   c = wall_zot_magenta
COLOUR: c+- = magenta
FTILE:  O-+c = floor_hall
KPROP:  O- = no_tele_into
SUBST:  - = .
NSUBST: d = 1:0 / 4:1 / 2:2 / 1:3
: zot_entry_setup(_G)
MAP
....d....
.dcc+ccd.
.cc---cc.
.c-----c.
dc--O--cd
.c-----c.
.cc---cc.
.dcccccd.
....d....
ENDMAP

NAME:   evilmike_zot_entry_diamond
TAGS:   no_monster_gen zot_entry transparent
KFEAT:  A = stone_arch
TILE:   c = wall_zot_magenta
COLOUR: c- = magenta
FTILE:  -O+Ac = floor_hall
KPROP:  -OcA = no_tele_into
SUBST:  - = .
NSUBST: 1 = 1:0 / *:1
NSUBST: 2 = 2:2 / *:.
NSUBST: 3 = 2:3 / *:2
: zot_entry_setup(_G)
MAP
      ..3..
     .2c+c2.
    ..cc-cc..
   1.cc---cc.1
  ..cc--O--cc..
 ..cccc---cccc..
.2cc-ccc-ccc-cc2.
.cc---ccccc---cc.
3+--A--ccc--A--+3
.cc---ccccc---cc.
.2cc-ccc-ccc-cc2.
 ..cccc---cccc..
  ..cc--A--cc..
   1.cc---cc.1
    ..cc-cc..
     .2c+c2.
      ..3..
ENDMAP

NAME:   grunt_zot_entry_hairpin
TAGS:   no_monster_gen zot_entry patrolling
COLOUR: ABC-_ = magenta
FTILE:  ABC-_O = floor_hall
SUBST:  _ = ., A = 2, B = 3, C = c, - = +
NSUBST: 3 = 1:993 / *:3
: zot_entry_setup(_G)
MAP
      cccccccccccccccccccc
    ccc..................cc
   cc...........0.........cc
  cc.....cccccccccccccc....c
  c.....cc...........ccc...c
 cc..1.cc1.CCCCCCCCC..c.1..c
@+....cc..CC_____A_CC.c...cc
@+..3.c.3.-____B__O_C0+2.cc
@+....cc..CC_____A_CC.c...cc
 cc..1.cc1.CCCCCCCCC..c.1..c
  c.....cc...........ccc...c
  cc.....cccccccccccccc....c
   cc...........0.........cc
    ccc..................cc
      cccccccccccccccccccc
ENDMAP

NAME:   grunt_zot_entry_funnels
TAGS:   no_monster_gen zot_entry patrolling transparent
COLOUR: 123c+. = magenta
FTILE:  123c+.O = floor_hall
NSUBST: 3 = 1:9 / *:3, 1 = 2:0 / *:1
: zot_entry_setup(_G)
MAP
      @       @
    cc+cc   cc+cc
    c...ccccc...c
    cc...ccc...cc
 cccxcc.1.c.1.ccxccc
 c.ccxcc.....ccxcc.c
@+..ccxcc.3.ccxcc..+@
 c...ccxcc+ccxcc...c
 cc.1.ccc...ccc.1.cc
  cc...c..2..c...cc
  ccc.3+.2O2.+3.ccc
  cc...c..2..c...cc
 cc.1.ccc...ccc.1.cc
 c...ccxcc+ccxcc...c
@+..ccxcc.3.ccxcc..+@
 c.ccxcc.....ccxcc.c
 cccxcc.1.c.1.ccxccc
    cc...ccc...cc
    c...ccccc...c
    cc+cc   cc+cc
      @       @
ENDMAP

NAME:   grunt_zot_entry_pinwheel
TAGS:   no_monster_gen zot_entry patrolling transparent
KFEAT:  A = stone_arch
COLOUR: 123c+. = magenta
FTILE:  123c+.AO = floor_hall
NSUBST: A = 1:O / *:A, 1 = 2:0 / *:1, 3 = 1:9 / *:3
: zot_entry_setup(_G)
MAP
       @
     cc+cc
    cc...c
   cc...cc ccccc
   c...cc cc.1.cc
   c1.1c cc.3...cc
   c.3.ccc.2.1...c
   cc.2.cc..ccc..+@
    cc..AcAcc cc.c
 ccc ccccccccc ccc
 c.cc ccAcA..cc
@+..ccc..cc.2.cc
 c...1.2.ccc.3.c
 cc...3.cc c1.1c
  cc.1.cc cc...c
   ccccc cc...cc
         c...cc
         cc+cc
           @
ENDMAP

NAME:   grunt_zot_entry_bicorn
TAGS:   no_monster_gen zot_entry transparent patrolling
COLOUR: 0123c+_ = magenta
FTILE:  0123+_OT = floor_hall
SUBST:  _ = .
NSUBST: 3 = 1:9 / *:3
: zot_entry_setup(_G)
MAP
            .....
          ...ccc...
         ..ccc_ccc..
        ..cc_____cc..
       ..cc_2_O_2_cc..
      ..cc___2_2___cc..
     ..cc___________cc..
    ..cc_____________cc..
    .cc____3__T__3____cc.
   ..c______1___1______c..
  ..cc_0_____________0_cc..
 ..cc_3___ccccccccc___3_cc..
..cc_1__ccc.......ccc__1_cc..
.cc___ccc...     ...ccc___cc.
.c__ccc...         ...ccc__c.
.c+cc...             ...cc+c.
..@...                 ...@..
ENDMAP

NAME:   grunt_zot_entry_tricorne
TAGS:   no_monster_gen zot_entry transparent patrolling
COLOUR: ABC_ = magenta
FTILE:  ABC-_O = floor_hall
SUBST:  _ = ., A = 2, B = 110, C = c, - = +
NSUBST: 3 = 1:9 / *:3
: zot_entry_setup(_G)
MAP
@......               ......@
.+cccc.................cccc+.
.c...ccccccccccccccccccc...c.
.cc...........c...........cc.
..cc...1....CCCCC....0...cc..
 ..c.0T...CCC___CCC...T1.c..
  .cc...3.C___A___C.3...cc.
  ..cc...C-_B___B_-C...cc..
   ..cc..C_________C..cc..
    ..c..C____O____C.cc..
     .cc.C_________C.cc.
     ..ccCC_A___A_CCcc..
      ..ccC___B___Ccc..
       .ccCCC___CCCcc.
       ..c..CC-CC..c..
        .cc.......cc.
        ..c...3...c..
         .cc..T..cc.
         ..c.1.0.c..
          .cc...cc.
          ..c...c..
           .c...c.
           .cc.cc.
           ..c.c..
            .c+c.
            ..@..
ENDMAP

NAME:   grunt_zot_entry_gee_three
TAGS:   no_monster_gen zot_entry transparent patrolling
COLOUR: ABC_ = magenta
FTILE:  ABC-_O = floor_hall
SUBST:  _ = ., A = 2, B = 1, C = c, - = +
NSUBST: 1 = 3:0 / 7:1 / *:., 3 = 1:9 / *:3
: zot_entry_setup(_G)
MAP
           .........
         ...ccccccc...
        ..ccc.CCC.ccc..
       ..cc...-_-...cc..
      ..cc...cC_Cc...cc..
     ..cc.1.cCC_CCc.1.cc..
     .cc....cC___Cc....cc.
    ..c..3.ccC___Ccc.3..c..
    .cc1...ccC___Ccc...1cc.
   ..c.....ccC___Ccc.....c..
.....c..T1.ccC_B_Ccc.1T..c.....
.ccccc.....ccC___Ccc.....ccccc.
@+..c......ccCA_ACcc......c..+@
.ccc....1..ccC___Ccc..1....ccc.
...ccc..T..ccC_O_Ccc..T..ccc...
.cccc.......cCC_CCc.......cccc.
@+......2...ccCCCcc...2......+@
.ccc.......1..c.c..1.......ccc.
...ccccc..T..1.3.1..T..ccccc...
  ....cc.......T.......cc....
  ..ccc..1..cc.1.cc..1..ccc..
 ..cc......ccc...ccc......cc..
 .cc...ccccc.c...c.ccccc...cc.
 @+.cccc.....c...c.....cccc.+@
 .ccc....   .c.1.c.   ....ccc.
 .....      .c...c.      .....
            .c...c.
            .cc.cc.
            ..c.c..
             .c.c.
             .c+c.
             ..@..
ENDMAP

NAME:   grunt_zot_entry_alcove
TAGS:   no_monster_gen zot_entry transparent patrolling
COLOUR: 29C-_ = magenta
FTILE:  29C-_O = floor_hall
SUBST:  _ = ., C = c
NSUBST: @ = 1:@ / *:.
: zot_entry_setup(_G)
MAP
     ccccccc
    ccCCCCCcc
    cCC_9_CCc
    cC_____Cc
    cC2_O_2Cc
    cC__2__Cc
    cCC___CCc
   cc.......cc
  cc..3...3..cc
 cc.1...0...1.cc
cc...1.....1...cc
.................
@.......T.......@
 ....1.....1....
   ....0.0....
       .@.
ENDMAP

##############################################################################
##############################################################################
#
# <<2>> Zot decorative vaults
#
##############################################################################
##############################################################################

NAME:   lemuel_baited_zot_trap
TAGS:   allow_dup extra luniq
DEPTH:  Zot
WEIGHT: 20
KFEAT:  * = zot trap
KITEM:  * = any good_item
MAP
*
ENDMAP

# Directly place a decorative vault 33% of the time on Zot:1-4.
NAME:    zot_decor
TAGS:    no_dump extra allow_dup nolayout_encompass luniq
DEPTH:   Zot, !Zot:$
CHANCE:  33%
{{
  local c = 1
  hook("post_place", function()
    dgn.place_maps{tag="zotdec", count=c}
  end)
}}


################################################################################
# Space-filling minivaults by bh.

NAME:   bh_zot_ikea_curve
TAGS:   extra zotdec transparent
DEPTH:  Zot
SUBST:  X : x., Y : x.
MAP
xxxxxxxxxxxxx
@....XxX....@
@.....x.....@
xxxx..x..xxxx
xY....x....Yx
x.....x.....x
x..xxxxxxx..x
x..xY...Yx..x
x..x.....x..x
x.....x.....x
xX....x....Xx
xxxxxxxxxxxxx
ENDMAP

NAME:   bh_zot_lava_cross
TAGS:   extra zotdec luniq_zotdec_liquid
DEPTH:  Zot
SUBST:  K : l., L : l.
MAP
      @@
     x..x
     x..x
     xK.x
 xxxxxllxxxxx
@....llllL...@
@...Lllll....@
 xxxxxllxxxxx
     x.Kx
     x..x
     x..x
      @@
ENDMAP

NAME:   bh_zot_levy_curve
TAGS:   extra no_pool_fixup zotdec luniq_zotdec_liquid
DEPTH:  Zot
SUBST:  d : WWw, e : WWw, f : WWw, ' : '...
CLEAR:  '
MAP
          WWW.
          W.W..
          d.dWW
          ....W
         ''...W
        '''.WWe
       .......W
      '.www...W
     ''.w.w.fWe
    '''.wwWWW..
WWd.'''...W...
W........fW.'
WWd..W..WW..
..W..W..W..
 .WWWeWWe.
ENDMAP

##

NAME:    hangedman_zot_gyre
TAGS:    extra transparent zotdec luniq_zotdec_large
DEPTH:   Zot
KFEAT:   Z = zot trap
SHUFFLE: dD, eE, fF, gG, hH, dD / eE / fF / gG / hH
SHUFFLE: cCbB / cCbB / bBcC, qQ / qQ / ZZ / wl / '' / ''
SUBST:   defhH = X, DEF = ., g : X.., G : X.., ' = .
SUBST:   B = bbCc, C : bWcc, b : bbc, c : bWcc, X : bcxx, W : wl
NSUBST:  0 = 2 = 0:19 .:1 / *:.
KPROP:   l = no_cloud_gen
KMASK:   lw = no_monster_gen
COLOUR:  qQ = darkgray
FTILE:   qQ = floor_rough_darkgray
MARKER:  q = lua:fog_machine {cloud_type = "freezing vapour", \
             pow_min = 9, pow_max = 10, delay = 20, size_min = 1, size_max = 1, \
             start_clouds = 1, excl_rad = 0 }
MARKER:  Q = lua:fog_machine {cloud_type = "flame", \
             pow_min = 9, pow_max = 10, delay = 20, size_min = 1, size_max = 1, \
             start_clouds = 1, excl_rad = 0 }
:  if you.depth() == dgn.br_depth(you.branch()) then
SUBST:  { = {([<
:  else
SUBST:  { = {([<})]>%
:  end
MAP
           ......
         ..........
        ..xxxxxxx...
        ........hx...
      ....B......hx....
     .............x.....
    ..G.C.G.C.....ffxxx..
    ..x...x.......x......
   ...x...x...B...x...c....
  ....F...E.......x.........
 ...xxFxxxExxD..Q.eexxx.b.x.
 ..xH.......0xD...x.......x..
..xH......q...x..0x...c...x..
..x...........x..xd.......x..
..x.....b..dxx{xxd..b.....x..
..x.......dx..x...........x..
..x...c...x0..x...q......Hx..
..x.......x...Dx0.......Hx..
 .x.b.gxxee.Q..DxxExxxFxx...
 .........x.......E...F....
  ....c...x...B...x...x...
    ......x.......x...x..
    ..gxxff.....C.G.C.G..
     .....x.............
      ....xh......B....
        ...xh........
         ...xxxxxxx..
          ..........
            ......
ENDMAP

####
# Weird orderly decorum.
NAME:    hangedman_zot_decor_unnerving_road
TAGS:    extra transparent zotdec no_pool_fixup luniq_zotdec_liquid
DEPTH:   Zot, !Zot:$
SHUFFLE: @&, (), vb / vb / bv / cc / xx, lw / lw / lw / '', JK / LM / NO
SHUFFLE: JK / JK / JK / !!, LM / ??, NO / `` / `` / `` / ``, JKLMNO / JKLMNO / KJMLON
SUBST:   '!?`& = ., X : xxc, JLN = F, KMO = f
SUBST:   ( = (:1 .:14, ) = ):1 .:14
KMASK:   wlfF = no_monster_gen
COLOUR:  fF = darkgray
FTILE:   fF = floor_rough_darkgray
MARKER:  f = lua:fog_machine {cloud_type = "freezing vapour", \
             pow_min = 9, pow_max = 10, delay = 20, size_min = 1, size_max = 1, \
             start_clouds = 1, excl_rad = 0 }
MARKER:  F = lua:fog_machine {cloud_type = "flame", \
             pow_min = 9, pow_max = 10, delay = 20, size_min = 1, size_max = 1, \
             start_clouds = 1, excl_rad = 0 }
KPROP:   l = no_cloud_gen
MAP
      XXXX...&&.
      Xllvv......
    XXXlv..v....@
   XXlllv..v....@
   Xllvv.vvJ.....
 XXXlv..v.......
XXlllv..v....XXXX
Xllvv(vvL..ObbwwX
Xlv..v.....b..bwXXX
Xlv..v.....b..bwwwXX
Xllvv.vv....bb.bbwwX
XXlllv..v.....b..bwX
 XXXlv..v.....b..bwX
   XllvvN..Mbb)bbwwX
   XXXX....b..bwwwXX
    .......b..bwXXX
   .....Kbb.bbwwX
   @....b..bwwwXX
   @....b..bwXXX
   ......bbwwX
    .&&...XXXX
ENDMAP

NAME:    hangedman_zot_decor_checkerboard
TAGS:    no_pool_fixup extra zotdec transparent luniq_zotdec_liquid
DEPTH:   Zot, !Zot:$
KFEAT:   Z = zot trap
SHUFFLE: @' / '@ / "" / "", defg / jkhi / HIJK / NOLM
SUBST:   d : wbb, e : wwb, f : lbb, g : llb
SUBST:   h : lbb, i : llb, j : wbb, k : wwb
SUBST:   H : wwwbb, I : wwwbb, J : lllbb, K : lllbb
SUBST:   L : lbbbb, M : lbbbb, N : wbbbb, O : wbbbb
NSUBST:  Z = 1 = (:1 Z:14 / 1 = ):1 Z:14 / * = ZZUG...
SUBST:   '" = ., b : cbbvxx
KPROP:   l = no_cloud_gen
KMASK:   wl = no_monster_gen
MAP
             xx
             xx
.......      xx.......
.dw.lf.      xx.Hw.xJ.
.xe.gl.      xx.wI.Kl.
@..Z.....'...xx...Z........
.lg.ex.hl.wj.xx.lK.Iw.Ll.wN.
.fl.wd.li.kw.xx.Jl.wH.xM.Ow.
.........Z...xx...'.....Z..@
      .wk.il.xx      .wO.Mx.
      .jx.lh.xx      .Nw.lL.
      .......xx      .......
             xx
             xx
ENDMAP

NAME:    hangedman_zot_decor_slant
TAGS:    extra transparent zotdec
DEPTH:   Zot
KFEAT:   z = zot trap
KFEAT:   fF = floor
SHUFFLE: BVfF / VBFf, aAuU / aAuU / aAuU / uUaA
SHUFFLE: AU / "", fF / fF / zz, @! / !@ / ?? / ??
SUBST:   aAB = b, uUV = v, Z = ()G .:45 z:25, '"!? = .
SHUFFLE: bv / bc / vc / cc
KMASK:   fF = no_monster_gen
COLOUR:  fF = darkgray
FTILE:   fF = floor_rough_darkgray
MARKER:  f = lua:fog_machine {cloud_type = "freezing vapour", \
             pow_min = 9, pow_max = 10, delay = 2, size_min = 1, size_max = 1, \
             start_clouds = 1, excl_rad = 0 }
MARKER:  F = lua:fog_machine {cloud_type = "flame", \
             pow_min = 9, pow_max = 10, delay = 2, size_min = 1, size_max = 1, \
             start_clouds = 1, excl_rad = 0 }
MAP
            ...!..
           ........
           @.UuuU..
         ....uuuu.!
         .vv.ufuu..
     xx  .vv..uuU..
     x.............
      .vv.VV.vv.@.
      .vv.VV.vv.
   ......Z......
   .bb.BB.bb.
 .@.bb.BB.bb.
.............x
..Aaa..bb.  xx
..aafa.bb.
!.aaaa....
..AaaA.@
........
 ..!...
ENDMAP

NAME:    hangedman_zot_decor_scrapings
TAGS:    transparent extra zotdec
DEPTH:   Zot
KFEAT:   Z = zot trap
SHUFFLE: HIJKLM / HIJKLM / IHKJML
SUBST:   HJL : xxcb, I : x..., K : x..., M : x...
SUBST:   N : xcG.., O : xc..., P : xcG.., Z = ()G x:45 Z:25
MAP
          x     ..  ...
          xx   .... .x..
          xx  x.......x..
           x   x...O......
    .....  xx  .........x..
   ..J...P  x   .L...N.I.H.
  ..x.x...  xx  x.x.....x..
 ....K...M   Z   M...K....
..x.....x.x  xx  ...x.x..
.H.I.N...L.   x  P...J..
..x.........  xx  .....
 ......O...x   x
  ..x.......x  xx
   ..x. ....   xx
    ...  ..     x
ENDMAP

NAME:    hangedman_zot_decor_tridents
TAGS:    transparent extra zotdec
DEPTH:   Zot
KFEAT:   Z = zot trap
SHUFFLE: bc / xy / XY, bc / cb / cc
SUBST:   ~ = ()+Z .:60, - : ++.
SUBST:   H : z., I : z., J : z.
SUBST:   K : ., L : xxxw.., M : xxw...
SUBST:   N : xxxl.., O : xxl..., PXyY = x
KMASK:   wl = no_monster_gen
MAP
            x
            x      ......
            x    ..Ic.ccc
     ...    x    ..c.....
   ....K.   x   .O...N.@
.........   x cc...c....
bbb.bJ..P   xccc-cHc.cc.
.....b...   x cc...c....
 @.L...M.   ~   .M...L.@
 ....b...bb y   ...c.....
 .bb.bHb-bbby   P..Jc.ccc
 ....b...bb y   .........
 @.N...O.   y   .K....
.....b..    y    ...
bbb.bI..    y
......      y
            y
ENDMAP


NAME:    hangedman_zot_diagonal_lockstep
TAGS:    transparent extra zotdec
DEPTH:   Zot
ITEM:    % no_pickup
KFEAT:   Z = zot trap
SHUFFLE: ABCDEFG, defg / hijk / mnop / qrst, defg, hjik, mnop
SUBST:   A : xbvcZ, B : xc, C : xxc, D : c, EFG = x
SUBST:   d : xxZ, h = x, e : xx., i : xx., f : x.., j : x.., m : x..
SUBST:   gknopqrst = .
:  if you.depth() == dgn.br_depth(you.branch()) then
SUBST:  { = {([ <:5 Z:5
:  elseif you.depth() == "1" then
SUBST:  { = {:40 })]> d:20 Z:20
:  else
SUBST:  { = {([<})]> d:20 Z:20
:  end
MAP
             Dq...iC
        .....rD...Ch..
        .......x.x...p
        ...mF...x...o.
       Es..F...x.x....
 ......tE.x..kx...x..eB
 ........x...Cj....x.xd
A..fB...x.x.....G...x..
.A.xg.nG...{...Gn.gx.A.
..x...G.....x.x...Bf..A
dx.x....jC...x........
Be..x...Ck..x.Et......
 ....x.x...F..sE
 .o...x...Fm...
 p...x.x.......
 ..hC...Dr.....
   Ci...qD
ENDMAP

NAME:    hangedman_zot_wheel_spokes
TAGS:    transparent extra zotdec
DEPTH:   Zot, !Zot:$
# Swap positions in unit's potential spots
# with the spokes and / or the center, maybe.
SHUFFLE: AGMBHN / AHMBGN / AGNBJM
SHUFFLE: CIOFLR / CLOFIR / CIRFLO
SHUFFLE: DJPEKQ / DJQEKP / DJQEKP
SHUFFLE: AGM / BHN / CIO / DJP / EKQ / FLR
# Make those slots random walls or floor.
SUBST:   AGM : xxxxcccbbv, BHN : xxxxcccbbv
SUBST:   CIO : x., DJP : x., EFKLQR = .
MAP
                 x .CDEF@
                 x.F.AB.C
                 x.DB..AD
      ......     x.EA..BE
     .......     x.C.BA.F
   .IJKL......@  x..FDEC.
   L.GH.I........x......
   KH..GJ..OPQR..xxxxxxxxx
   JG..HK.R.MN.O.......
   I.HG.L.QN..MP..IJKL.
   .LKJI..PM..NQ.L.GH.I
    ......O.NM.R.KH..GJ
xxxxxxxxx..RQPO..JG..HK
  ......x........I.HG.L
 .CDEF..x  @......LKJI.
 F.AB.C.x      ........
 EB..AD.x      .......
 DA..BE.x
 C.BA.F.x
 @FEDC. x
ENDMAP

##########################################################################
# Some decorative multi-coloured glass columns
NAME:   skrybe_zot_glass_1
TAGS:   transparent zotdec no_pool_fixup luniq_zotdec_liquid
DEPTH:  Zot
SUBST:  W : Wwl
KMASK:  Wwl = no_monster_gen
: coloured_glass(_G)
MAP
  .....    .....
 ..WWW..  ..WWW..
..WWrWW....WWyWW..
.WWrrrWW..WWyyyWW.
.WrrrrrW..WyyyyyW.
.WWrrrWW..WWyyyWW.
..WWrWW....WWyWW..
 ..WWW......WWW..
  ..............
  ..............
 ..WWW......WWW..
..WWoWW....WWgWW..
.WWoooWW..WWgggWW.
.WoooooW..WgggggW.
.WWoooWW..WWgggWW.
..WWoWW....WWgWW..
 ..WWW..  ..WWW..
  .....    .....
ENDMAP

NAME:   skrybe_zot_glass_2
TAGS:   transparent zotdec no_pool_fixup luniq_zotdec_liquid
DEPTH:  Zot
SUBST:  l : Wwl
KPROP:  l = no_cloud_gen
KMASK:  Wwl = no_monster_gen
: coloured_glass(_G)
MAP
      .....
 ......lll......
..lll.lloll.lll..
.llrlllooolllyll.
.lrrrlooooolyyyl.
.llrlllooolllyll.
..lll.lloll.lll..
 ......lll......
      .....
ENDMAP

NAME:   skrybe_zot_glass_3
TAGS:   transparent zotdec no_pool_fixup luniq_zotdec_liquid
DEPTH:  Zot
SUBST:  l : Wwl
SUBST:  ( : ([{.
KMASK:  Wwl = no_monster_gen
KPROP:  l = no_cloud_gen
: coloured_glass(_G)
MAP
xxxxxx@@@xxxxxx
xlllll...lllllx
xlrrrl...looolx
xlrrll...lloolx
xlrll.....llolx
xlll.......lllx
@.............@
@......(......@
@.............@
xlll.......lllx
xlyll.....llglx
xlyyll...llgglx
xlyyyl...lggglx
xlllll...lllllx
xxxxxx@@@xxxxxx
ENDMAP

###########################################################################
# Some simple riffs on zot layout choices, negative space abuse,
# and st_'s old gridded stair vaults.
NAME:    regret_index_zot_stipple_split
TAGS:    extra transparent zotdec no_pool_fixup luniq_zotdec_negative_space
DEPTH:   Zot, !Zot:$
SHUFFLE: ab, cde
SUBST:   a : GlwTB b:30, b : GwT
SUBST:   c : cbxdd, d : cbxxeee, e : ccxxx
SUBST:   ' : xx.'''
CLEAR:   '
MAP
            c.
            ..
            d.e
            ...
            ..c.d
            '....
      c.'''''.d.e.c
      ....'''..b...
    c.e.d.'''...c.d.e
    ...a..'''........
  c.e.d...'''.....e.c.d
..........'''''..........
c.e.d..'''''''''''..d.e.c
..........'''''..........
  d.c.e.....'''...d.e.c
    ........'''..a...
    e.d.c...'''.d.e.c
      ...b..'''....
      c.e.d.'''''.c
        ....'
        d.c..
          ...
          e.d
           ..
           .c
ENDMAP

NAME:    regret_index_zotdec_onion_hex
TAGS:    extra transparent zotdec luniq_zotdec_negative_space
DEPTH:   Zot
SHUFFLE: ABCDE
SUBST:   AB = x, C : x., D : x., E = ., ' : x.'''
CLEAR:   '
MAP
    ........x
   ..xxAxBx..
  ..xx......x
 ..xx..''''....x.......
..xx..''''''CDE..x..xx..
.xc..'''''''''.x.....xx..
xc...'''''''''...'''..xx..
.xc..''''''''''''''''..xx..
..xx..''''''''''''''''..cx.
 ..xx..'''..''''''''''...cx
  ..xx.....x...'''''''..cx.
   ..xx..x..EDC''''''..xx..
    .......x....''''..xx..
             x......xx..
             ..xBxAxx..
             x........
ENDMAP

NAME:    regret_index_zotdec_misc_clamp
TAGS:    extra transparent zotdec
DEPTH:   Zot, !Zot:$
SHUFFLE: A' / B" / C` / D~
SUBST:   X : xx`, Y : xxx., AB = x, '" = .
NSUBST:  . = 1 = {[(}]} >:140 / *:.
CLEAR:   C`D~
MAP
A'A'A'x.x.x.x.x.B"B"B
 '''''.........."""""
A'A'A'x.x.x.c.x.B"B"B
 '''''.........."""""
 `````xxxxx.c.x.xxxx
C`C`C`xxxx......xxxx
 `````xxxxx.x.x.xxxxxx
C`C`C`xxxx......xxxxxxxx
xxxxxxxxxxYxYxYxxxxxxxxxxxXX
xxxxxxxxxxxxxxxxxxxxxxxxxxXX
XXxxxxxxxxxxxxxxxxxxxxxxxxxx
XXxxxxxxxxxxxYxYxYxxxxxxxxxx
    xxxxxxxx......xxxx`C`C`C
      xxxxxx.x.x.xxxxx`````
        xxxx......xxxx`C`C`C
        xxxx.x.c.xxxxx`````
       """""..........'''''
       B"B"B.x.c.x.x.x'A'A'A
       """""..........'''''
       B"B"B.x.x.x.x.x'A'A'A
ENDMAP


NAME:    regret_index_zotdec_stipple_waver
TAGS:    extra transparent zotdec
DEPTH:   Zot
SHUFFLE: opqrstu
SUBST:   o = c, p = x, q : x'', r : x'', stu = '
NSUBST:  ' = 1:GTUV>... / *:.
MAP
    x.x.xrx.x.x
    .q...q.....
    x.x.x.x.x.x
    .....s...s.
x.x.x.x.x.x.x.x.xux      .xpx.x
 ....o.     .t.....     .....o
x.x.x.x     x.x.x.x     x.x.x.x
 o.....     .....t.     .o....
x.xpx.      xux.x.x.x.x.x.x.x.x
                .s...s.....
                x.x.x.x.x.x
                .....q...q.
                x.x.xrx.x.x
ENDMAP

NAME:    regret_index_zotdec_twisting_globes
TAGS:    extra transparent zotdec luniq_zotdec_large
DEPTH:   Zot, !Zot:$
ORIENT:  float
SHUFFLE: opqrs
SUBST:   o : xxb, p : xxb, qrs = .
SUBST:   { = {([})]<CG>TU
NSUBST:  H = 1:x / 1:xxx++ / *:+, I = 1:x / 1:xxx++ / *:+
NSUBST:  J = 1:c / *:+, K = 1:x / 1:xxx++ / *:+
SHUFFLE: cvb
MAP
 xKxx...              ....xxHxx
xx..xx..              ...xx...xx
K....K..................xx..q..xx
x....x..................x.......x
xx..xx..ccJc...xoxxq.x..H.q.s.r.H
.xKxx..cc..cc...x.rxxpxxx.......x
......cc....cc..x.ss.p..xx..r..xx
......c..po..cxxpxxr.x...xx...xx
    ..J..o{..J..p.qxxox...xxHxx
    ..cc....cc.................
    ...cc..cc..................
    ....ccJc..
    .....x...
    ..x..x...
    ..oxppx..
    ..x..x...
    ..xrsxq..
    ..qxsrx..
    ...x..x..
    ..ppxxo..
  .....x..x..
  .....x.....
  ..xxIxx....
  .xx...xx...
  xx..q..xx..
  x.......x..
  I.q.s.r.I..
  x.......x..
  xx..r..xx..
   xx...xx
    xxIxx
ENDMAP

NAME:    regret_index_zotdec_storm_pass
TAGS:    extra no_pool_fixup zotdec luniq_zotdec_negative_space
DEPTH:   Zot, !Zot:$
KFEAT:   C = altar_qazlal
KFEAT:   S = w
SUBST:   { = {([})]<>CCUUUUUU
SUBST:   z : xxv.., Z : xxv.., v : vvvb
KMASK:   wWS = no_monster_gen
KMASK:   wWS = no_item_gen
KPROP:   wWS = no_tele_into
MARKER:   S = lua:fog_machine {cloud_type = "thunder", \
              pow_min = 15, pow_max = 20, delay = 20, size_min = 4, size_max = 8, \
              excl_rad = 1, walk_dist = 1}
MAP
             .xxxxxxxx
             .vvvvvvvxxx
@...         ...nwwSvvvx
xv..z.       ...nnwwwWvxx
xv....        z..nnnWwvvx
xvnn..Z       .....nnwSvx
xvwnn..         Z..{nwwvx
xvwwn...Z         ..nnwvx
xvSwnnC....       Z..nnvx
xvvwWnnn..z        ....vx
xxvWwwwnn...       .z..vx
 xvvvSwwn...         ...@
 xxxvvvvvvv.
   xxxxxxxx.
ENDMAP

NAME:    regret_index_zotdec_carving_tricks
TAGS:    extra transparent zotdec no_rotate luniq_zotdec_negative_space
DEPTH:   Zot
SHUFFLE: zZ
SUBST:   z = b, Z = .
MAP
                       @
                       .
      .               .b
      .                .  .
   .  b.               .  .
   .  .               .Zz.b..@
   .  .           ...b.zZ.  .
@..b.zZ.             .  .
 .  .Zz.b...         .  .
     .  .               b.
     .  .               .
    .b                  .
     .
     @
ENDMAP

NAME:    regret_index_zotdec_banners
TAGS:    extra transparent zotdec
TAGS:    luniq_zotdec_large luniq_zotdec_negative_space
DEPTH:   Zot, !Zot:$
ORIENT:  float
SUBST:   y : c.., Y : c.., z : b..
SHUFFLE: cb / xc / xc / xb, <>GUVm
NSUBST:  < = 1:<<{([ / *:<, > = 1:>>})]
MAP
.c...
..c...
..c...
cc.c..
...c..
...c..
yyy.c.        ...b.
....c.       ...b..
..<..c       ...b..
.....c       ..b.bb
...cc.       ..b...
.cc...       ..b.<.       .c..
c.....       .b....       .c...
c..>..       .b..zz       ..c...
.c....       b.zz..       ..c...
.c.YYY       b.....       cc.c..
..c...       .bb...       ...c..
..c...       ...bb.       ...c..
..c.cc       zz...b       yyy.c.
...c..       ..zz.b       ....c.
...c..       ....b.       ..<..c
 ...c.       .>..b.       .....c
  ..c.       ...b..       ...cc.
             ...b..       .cc...
             bb.b..       c.....
             ..b...       c..>..
             ..b...       .c....
             .b...        .c.YYY
                          ..c...
                          ..c...
                          ..c.cc
                          ...c..
                          ...c..
                           ...c.
ENDMAP

NAME:    regret_index_zotdec_split_disrupt
TAGS:    extra transparent zotdec luniq_zotdec_negative_space
DEPTH:   Zot, !Zot:$
SHUFFLE: ABCDEFGHI
SUBST:   AB = x, B : xx., C : xx., D : xx., E : x., F : x., G : x., HI = .
SUBST:   { = {([})]xxxcTUV> .:40 %:40
MAP
                  ... .........   .......
                   x....x.x.........x..x.
       ...          x...x..xxxxxBxxx..xx.
      ..x.. ...      x...E...........A...
     ...x.....x       G...x.....c...x..
    ...xCx.D...x       F...xx...x..xx.
   .....x.......x   {   x.......x.....
   .xx..x...xx...F       x...D.xCx...
  ..x...c.....x...G       x.....x...
...A...........E...x      ... ..x..
.xx..xxxBxxxxx..x...x          ...
.x..x.........x.x....x
.......   ......... ...
ENDMAP

NAME:    regret_index_zotdec_ex
TAGS:    extra transparent zotdec
DEPTH:   Zot
SHUFFLE: opqrstu
SUBST:   o = b, p = x, q : xx., r : x.., stu = .
MAP
@.....              xx
.xxx..         ss. xxx
.xxx.r..      ....xxx
.xxp....      ...xxx
....pxx...  ....xxx..
..o.xxx.r....tuxxx..s
  ..xxq.......xxx...s
  .....qxx...xxxu...
    .o.xxx..xxx.t.
    ...xxx.xxx....
     .....bbx....
     ....xbb.....
    ....xxx.xxx...
    .t.xxx..xxx.o.
  ...uxxx...xxq.....
 s...xxx.......qxx..
 s..xxxut....r.xxx.o..
 ..xxx....  ...xxp....
  xxx...      ....pxx.
 xxx....      ..r.xxx.
xxx .ss         ..xxx.
xx              .....@
ENDMAP

NAME:    regret_index_zotdec_zees
TAGS:    extra transparent zotdec no_rotate no_hmirror no_vmirror
DEPTH:   Zot
KFEAT:   Z = zot trap
SHUFFLE: opqrstu
SUBST:   o = x, p : x., q : x., rs = ., z : xxbbCVG, b : bbc
MARKER:  Z = lua:fog_machine {cloud_type = "seething chaos", \
             pow_min = 9, pow_max = 10, delay = 2, size_min = 1, \
             size_max = 1, start_clouds = 1, excl_rad = 0 }
KMASK:   Z = opaque
KMASK:   Z = no_monster_gen
TILE:    m = dngn_transparent_wall_magenta
MAP
sxxxxxxxxxxxxx
...........mZx
.o.q.....z.mxx
......xr...xx.
.p...xb...xx..
....xb...bx...
...xb...bx....
..xx...bx...u.
.xx...rx......sxxxxxxxxxxxxx
xxm.z.....t.o............mZx
xZm............o.t.....z.mxx
xxxxxxxxxxxxxs......xr...xx.
              .u...xb...xx..
              ....xb...bx...
              ...xb...bx....
              ..xx...bx...p.
              .xx...rx......
              xxm.z.....q.o.
              xZm...........
              xxxxxxxxxxxxxs
ENDMAP

NAME:    regret_index_zotdec_plus
TAGS:    extra transparent zotdec
DEPTH:   Zot
SHUFFLE: '- / XX
SUBST:   ' = ., - = +, X = x
SUBST:   y : xx., z : xx., b = cccbbv+
MAP
       xxx
 @.....xxx ..
 .xxxx.xyx....
 .x''-........
 .x''x.....zz..
 .x-xb..xxxxxxxxx
 ..........x...
xxx........x..
xxy..x....xxx@
xxx..x.....x..
  ...x..x..x..x
 ...zxxxxxxbxxxxxx
 ...zx..x..xxxx
  ...x..@..xxx..
    .x.   xxx...
     x     x ..@
     x     x
           x
ENDMAP

NAME:    regret_index_zotdec_tunneler
TAGS:    extra transparent zotdec
DEPTH:   Zot, !Zot:$
SHUFFLE: hH / iI / jJ / kK / lL, hH, iI, jJ, kK, lL
SUBST:   hij = x, k : xxxm, HIJKlL = .
SUBST:   a : cccG., b : cc., c : ccb
NSUBST:  @ = 2:@ / *:.
TILE:    G = dngn_statue_tentacles
MAP
            xxxxxxxxxx.@x
          xxxxxhxxxxix..x
          xx..hhh..iii..xx
          xxHHxhx..xixIIxx
      xxxxxxxHHxx..xxxxIIx
   ..xxjxxjxHHxxx..xxxIIxx
   @.....jjj............x
   ..xxJJxjx..aca..xxxKKxx
 xxxxxxxJJxx..ccc..xxxxKKx
 xkxxkxJJxxx..bca..xkxKKxx
xx..kkk............kkk..xx
xxKKxkx..acb..xxxJJxkxxkx
xKKxxxx..ccc..xxJJxxxxxxx
xxKKxxx..aca..xjxJJxx..
 x............jjj.....@
xxIIxxx..xxxHHxjxxjxx..
xIIxxxx..xxHHxxxxxxx
xxIIxix..xhxHHxx
xx..iii..hhh..xx
 x..xixxxxhxxxxx
 x@.xxxxxxxxxx
ENDMAP

NAME:    regret_index_zotdec_ceiling_fans
TAGS:    extra transparent luniq_zotdec
DEPTH:   Zot, !Zot:$
SHUFFLE: hHiIjJkKlLmMnNoO / oOhHiIjJkKlLmMnN / nNoOhHiIjJkKlLmM / \
         mMnNoOhHiIjJkKlL / lLmMnNoOhHiIjJkK / kKlLmMnNoOhHiIjJ / \
         jJkKlLmMnNoOhHiI / iIjJkKlLmMnNoOhH
SUBST:   hjILKNO = x, HJilkno = ., mM : bbcvx, B : CGxx
MAP
  .J...... ..........x.....
 IxJxK...........xx..J...x.
.xIJKx...mmo.....xI..J..K...
HHH.LLL..l.h.......I.J.K....
.xONMx...kji........IJK......
.OxNxM..........xHHHH.LLLLx..
...N................ONM........
..........x........O.N.M........
......xx..N..xx..xO..N..Mx...B..
...B..xM..N..Ox..xx..N..xx......
 .......M.N.O........x..........
  .......MNO................N...
    .xLLLL.HHHHx..........MxNxO.
    .....KJI........ijk...xMNOx.
     ...K.J.I.......h.l..LLL.HHH
     ..K..J..Ix.....onm...xKJIx.
      x...J..xx...........KxJxI
      ....x.......... ......J.
ENDMAP

# Not every enemy fort's readied in advance, you know.
NAME:    regret_index_zotdec_under_construction
TAGS:    extra transparent zotdec luniq_zotdec_large
DEPTH:   Zot, !Zot:$
NSUBST:  x = 4 = x. / *:x, + = 1:xx. / 3 = +.. / *:+
NSUBST:  ' = 1:Gxx / *:., . = 1:Gxx / 1:{([})]TUV<>>>
SUBST:   X = x..
SHUFFLE: @&
CLEAR:   &
MAP
               xxxxxxxxxxxxxx
               xx..+...+...xx
               x...x...x....x
              xxx+xxx+xx.'.Xx
              x....X...x...Xx
             @+........x.'.Xx
       xxxxxxxx....'...+...Xx
       xx..XX.xX...'...x....x
       x......xX.......xx..xx
       x......x...XX...xxxxxx
      xx+xxx+xx+xxxxx+xxx
      x...x.....xxxx...Xx
      x...+.....'xxxX...x
     &x...x..'..xxxxxx+xx
   xx+xxxxxx..'..x...x&
   x...Xxxx'.....+...x
   xX...xxxx.....x...x
   xxx+xxxxx+xx+xxx+xx
xxxxxx...XX...x......x
xx..xx.......Xx......x
x....x...'...Xx.XX..xx
xX...+...'....xxxxxxxx
xX.'.x........+@
xX...x...X....x
xX.'.xx+xxx+xxx
x....x...x...x
xx...+...+..xx
xxxxxxxxxxxxxx
ENDMAP

NAME:    regret_index_zotdec_wing_it
TAGS:    extra transparent zotdec no_rotate no_vmirror
DEPTH:   Zot, !Zot:$
SHUFFLE: pqrs
SUBST:   pq = x, r : xxV>.., s = .
MAP
                  xc
              xxxx..
          xxxx.....
      xxxx........
     x....xx...pqs
     x......xx....
     x...p....xx...
    x.x.........xx..
    x..x...q......xx
    x...x.........
   x.....x...r....
   x..p...x......
   x.......x..s.
  x...q.....x...
  xx.........x.
  x.x...r.....
 x..x.........
 xp..x....s..
 x.q..x.....
x..s..x.....
c.   ..x...
ENDMAP

NAME:    regret_index_zotdec_alabaster_prism
TAGS:    extra zotdec
DEPTH:   Zot, !Zot:$
WEIGHT:  4
KFEAT:   no = m
KFEAT:   A = altar_the_shining_one
KFEAT:   B = altar_zin
KFEAT:   C = altar_elyvilon
SHUFFLE: mno, AG / Bv / CT
SUBST:   } = {([}}))]]<>, y : x.., z : x..
SUBST:   X : xx., Y : xx., Z : xx., + = +++.
FTILE:   'ABC : floor_w_marble
TILE:    m : dngn_transparent_wall_white
TILE:    n : dngn_transparent_wall_yellow
TILE:    o : dngn_transparent_wall_brown
TILE:    G = dngn_statue_angel
MAP
           xxxxxxx..
          xxxx.Txc..
         xxmx..xx...
        xx..x.xx....
       xx...xx......
      xx....x............
     xx'..z.xx....X......
    xx'A'...x.xZ.......cx
   xx..'G.xxx..Yc.....xxx
  xx........xX.oYZ...xxGx
 xx..y..x...x....x...x..x
xxm.....x...v..X..x.x..xx
xxxxZx.xxxxx+vxxxxxxxxxxx
xxxxxxx..Y'vx...x.....nxx
    xx.x.'B'x...x..z..xx
    xx..x.'Yx........xx
    xx..cx..xxx.T'..xx
    xc.}..x.x...'C'xx
    xxo....x.....'xx
    xcxcxxxxx.y..xx
    xxxxxxxxZ...xx
           xx..xx
           xxnxx
           xxxx
           xxx
ENDMAP

##########################################################################
# A set of decorative vaults based off of branch rune vaults.
# Constant coloured glass is always supposed to view just walls.

NAME:    regret_index_zotdec_decaying_vile
TAGS:    transparent extra no_pool_fixup zotdec luniq_zotdec_rune
DEPTH:   Zot, !Zot:$
WEIGHT:  5
NSUBST:  A = 1:x / 1:. / * = x., B = 1:x / 1:. / * = x.
NSUBST:  C = 1:x / 1:. / * = x., D = 2:x / 1:. / * = x.
NSUBST:  E = 1:x / 1:. / * = x., F = 1:x / 1:. / * = x.
NSUBST:  G = 1:x / 1:. / * = x., H = 1:x / 1:. / * = x.
SUBST:   Z : zz., z = x:9 .:1, w : wx., { = {([})]>>>
TILE:    m = dngn_transparent_wall_brown
MAP
...xxxxxxxx
..z....Z..xx
.z....z....xx
x..AA..z..BBxx
x..AA.z...BB.xx
x......z......xx
x.z.z.xxz.z.z..xx
xZ.z.zxc.z.z.zc.xx
x.....z.......z..xx
x......z.......z..xx
x..CC.z...DD..z..EExx
x..CC..z..DD...z.EE.xx
x.....z.......z......x
x......z.......z.....x
x.z.z.xcz.z.z.cxz.z.Zx
xZ.z.zxx.z.z.zxx.z.z.x
x.....z.......z......x
x..FF..z..GG...z.HH..x
x..FF.z...GG..z..HH..x
xw{....z.......z....z.
xmw...Z.......Z....z..
xxxxxxxxxxxxxxxxxxx...
ENDMAP

NAME:    regret_index_zotdec_decaying_basic
TAGS:    extra no_pool_fixup no_trap_gen zotdec luniq_zotdec_rune
DEPTH:   Zot, !Zot:$
ITEM:    swamp dragon scales, spear, wand of flame ident:type charges:1
KFEAT:   ^ = shaft trap
KFEAT:   C = altar_fedhas
SHUFFLE: pqrs
SUBST:   p : wxb., q : xb.., rs = .
SHUFFLE: def, def / VCV / >{> / ^{^ / G^G
SUBST:   { = {([})]>>>^, t : ttw, w : www..
TILE:    m = dngn_transparent_wall_brown
MAP
         @@@
  xx  xx..p..xx  xx
 xxxxxxxx...xxxxxxxx
xxxx.dxxx...xxxf.xxxx
xx.....xx...xx.....xx
xx..s..x..p..x..s..xx
xxt...xx.....xx...txx
xxw..xx..ccc..xx..wxx
xxw.xx..ccccc..xx.wxx
xx..x..cc.e.cc..x..xx
xm..x.cc.....cc.x..mx
xx....c..r.r..c....xx
xxx.q.cc.....cc.q.xxx
xxx...............xxx
 xxxmxx..wtw..xxmxxx
  xxxxxxxxxxxxxxxxx
ENDMAP

NAME:    regret_index_zotdec_serpentine_coiled
TAGS:    extra transparent no_rotate zotdec
TAGS:    luniq_zotdec_rune luniq_zotdec_large
DEPTH:   Zot, !Zot:$
WEIGHT:  5
ITEM:    mundane barding
KFEAT:   C = altar_cheibriados
SHUFFLE: pqrs, yz
SUBST:   p : xbCV, q : xb.., X rs = ., y : cb., z = c
SUBST:   { = {([})]<$d>>>CCC
TILE:    m = dngn_transparent_wall_green
MAP
     ..cc@@cc.....
    ...c....c.cccc.
  ..cccc....cc....cc
 .cc...............@
.c.................@
.c...ccc.p..cc....cc
c...cmxc....c.cccc..
y.s.ccxc....z.....
c...cmxc....c....
.c...ccc..q.cccc..
.c..............cc.
..cc..............c.
  ..cccc.r..ccc...c.
    ...z....cxmc.s.y
    ...z....cxmc.s.y
  ..cccc..r.ccc...c.
..cc..............c.
.c..............cc..
.c...ccc.q..cccc...
c...cmxc....c...
y.s.ccxc....z..
c...cmxc....c...
.c...ccc..p.cccc...
.c..............cc..
 .cc.............{cc
  ..cccccccccccccccc
ENDMAP

NAME:    regret_index_zotdec_serpentine_scales
TAGS:    extra transparent zotdec luniq_zot_rune
DEPTH:   Zot, !Zot:$
ITEM:    mundane barding
KFEAT:   C = altar_cheibriados
SHUFFLE: ABCDEF, no / pq / rs / tu / vw
SUBST:   ABC = x, D : xx., E : xx., F = .
SUBST:   npr = @, tuvw = x, { = {([})]<$d>>>CCC
TILE:    m = dngn_transparent_wall_green
CLEAR:   ors
MAP
fffxxxxxxxxxxxxxxxxxxxxxxxxxxxhhh
fee..xxxxxxxxxxxxxxxxxxxxxxx..ggh
x..A....xmx...........xmx....E..x
xx..B..xx.xx.........xx.xx..D..xx
xxx....x...x..xxcxx..x...x....xxx
 xxx.........xxx{xxx.........xxx
  xxx...C...xxx...xxx...C....xxx
   xxx...D.............B...xxx
    xxx...E...........A...xxx
     xxx.....xx...xx.....xxx
      xxx.....xx.xx.....xxx
       xxx.....xcx.....xxx
        xxxjjjjiiijjjjxxx
ENDMAP

NAME:    regret_index_zotdec_barnacled_simple
TAGS:    extra transparent zotdec no_pool_fixup
TAGS:    luniq_zotdec_rune luniq_zotdec_negative_space
DEPTH:   Zot, !Zot:$
ITEM:    mundane javelin q:1 no_pickup, throwing net q:1 no_pickup
SUBST:   m = mw..
NSUBST:  A = 1:+ / *:xxx+, B = 1:+ / *:xxx+, C = 1:+ / *:xxx+, D = 1:+ / *:xxx+
NSUBST:  { = 1:{([T<<<<dwcc / 1:})]T>>>>ewcc / * = xxcww
CLEAR:   `
TILE:    m = dngn_transparent_wall_darkgray
MAP
                  ......
  ......         ........
 ........       ..mxxCxx.
..mxxAxx.       ..xx...xx
..xx...xx       ..x.....x
..x.....x       ..C..{..x
..A..{..x       ..x.....x
..x.....x       ..xx...xx
..xx...xx        ..xxxxx
 ..xxxxx               `
        `               `
         `               `
          `               xxxxx..
          xxxxx..        xx...xx..
         xx...xx..       x.....x..
         x.....x..       x..{..D..
         x..{..B..       x.....x..
         x.....x..       xx...xx..
         xx...xx..       .xxDxxm..
         .xxBxxm..       ........
         ........         ......
          ......
ENDMAP

NAME:    regret_index_zotdec_barnacled_alternative
TAGS:    extra transparent zotdec no_pool_fixup
TAGS:    luniq_zotdec_rune luniq_zotdec_liquid
DEPTH:   Zot, !Zot:$
WEIGHT:  5
MONS:    bush
ITEM:    mundane javelin q:1 no_pickup, throwing net q:1 no_pickup
SHUFFLE: AB / AB / BA, CD / CD / DC, -~
SUBST:   AC : cbvxx, B = w, D = ., - = w, ~ : ww...
SUBST:   { = {([<11%dG, } = })]>11$eG
TILE:    m = dngn_transparent_wall_darkgray
MAP
  ........     ..........
 .........     ..~xxxxxxw..
..-xxxxx....   .~xxwwwwxxw.
.-xx~...x...   .xx-...mwxx.
.xx~..DC.x..   .x-..A.}mwx.
.xw..x..C.x.   .x..xwB..wx.
.xw.Aww.D.x.   .x.D.wwA.wx.
.xw..Bwx..x.   .x.C..x..wx.
.xwm{.A..-x.   ..x.CD..~xx.
.xxwm...-xx.   ...x...~xx-.
.wxxwwwwxx~.   ....xxxxx-..
..wxxxxxx~..     .........
 ..........      ........
ENDMAP

NAME:    regret_index_zotdec_gossamer_parallel
TAGS:    extra no_trap_gen zotdec luniq_zotdec_rune
DEPTH:   Zot, !Zot:$
KFEAT:   z = web trap
KFEAT:   Z = zot trap
SUBST:   { = {[(}])<>$%, A : CVGZ..
SUBST:   c : ccx
SHUFFLE: qrs
SUBST:   q = x, r : x.., s = .
TILE:    m = dngn_transparent_wall_magenta
MAP
 cxxxxxxxxxxxxxxx
  @......zxmz..xxx
  ........xz....zxxx
 .....r...x..A...xxx
 ........xx.......xx
cxxxxx.cxxxxxxcc..xx
..................cx
@.s...q...s.q....{cx
..................cx
cxxxxx.cxxxxxxcc..xx
 ........xx.......xx
 .....r...x..A...xxx
  ........xz....zxxx
  @......zxmz..xxx
 cxxxxxxxxxxxxxxx
ENDMAP

NAME:    regret_index_zotdec_gossamer_gf
TAGS:    extra no_trap_gen zotdec no_rotate luniq_zotdec_rune
DEPTH:   Zot, !Zot:$
WEIGHT:  5
ITEM:    mundane cloak
KFEAT:   ^ = web trap
NSUBST:  { = 1:{([T<<<<d^c / 1:})]T>>>>d^c / * = xxc^%
SUBST:   c : ccx
SHUFFLE: pqrstuv
SUBST:   pqr = x, s : x.., t : x.., uv = ., X = x..
TILE:    m = dngn_transparent_wall_magenta
MAP
    xxxxxxx.@.xxxxxxx
 xxxxxxxxxx.X.xxxxxxxxxx
xx^.x...ccxp.qxcc...x.^xx
x^....x..{x...x{..x....^x
xx...xXx..xr.rx..xXx...xx
 xx...xxccx...xmcxx...xx
  xx...xxxxq.pxxxx...xx
  xxX...x.x...x.x...Xxx
  xx...ss.t.u.v.XX...xx
 xx..............r....xx
 xx....r..............xx
  xx...XX.v.u.t.ss...xx
  xxX...x.x...x.x...Xxx
  xx...xxxxp.qxxxx...xx
 xx...xxcmx...xccxx...xx
xx...xXx..xq.px..xXx...xx
x^....x..{x...x{..x....^x
xx^.x...ccx.X.xcc...x.^xx
 xxxxxxxxxx.@.xxxxxxxxxx
ENDMAP

NAME:    regret_index_zotdec_slimy_original
TAGS:    extra transparent zotdec luniq_zotdec_rune
DEPTH:   Zot
ITEM:    stone q:1
KFEAT:   C = altar_jiyva
SUBST:   < = <<<({[Cd$, > = >dCC
NSUBST:  p = 4:' / 4 : x' / *:x, q = 4:' / 4 : x' / *:x
NSUBST:  P = 4:. / 2 : c. / *:c, Q = 4:. / 2 : c. / *:c
NSUBST:  r = 2 : x' / 2 : x' / *:x, s = 2 : x' / 2 : x' / *:x
CLEAR:   '
TILE:    m = dngn_transparent_wall_green
MAP
   pppppp
 ppppppppp
 pppp......
ppp..........
ppp.....cc..r
pp....ccmcP.r
pp...cccccP.r
pp...cccccP.r
pp..cmccccP.r
 p..ccccccP.rr
  ...PPPPP<..rrrrr.
   ................
   .sssss..>QQQQQ...
        ss.Qcccccc..q
         s.Qccccmc..qq
         s.Qccccc...qq
         s.Qccccc...qq
         s.Qcmcc....qq
         s..cc.....qqq
         ..........qqq
            .....qqqq
             qqqqqqqq
              qqqqq
ENDMAP

NAME:    regret_index_zotdec_abyssal_star_handed
TAGS:    extra no_rotate no_pool_fixup luniq_zotdec_rune
DEPTH:   Zot, !Zot:$
ITEM:    dagger ego:distortion ident:type no_pickup
KFEAT:   C = altar_lugonu
KFEAT:   mn = m
SUBST:   C = {([})]>>>CCC<d$
NSUBST:  m = 2:m / 2:n / 1:mn
NSUBST:  z = 1:. / 2:x / 2:b / * = xb, c = 6 : xxb / 2:. / *:c
NSUBST:  + = 2:+ / *:c
TILE:    m : dngn_transparent_wall_red / dngn_transparent_wall_brown / \
             dngn_transparent_wall_green
TILE:    n : dngn_transparent_wall_magenta / dngn_transparent_wall_blue / \
             dngn_transparent_wall_cyan
MAP
      ..  ccc  ..
 ..@....cccmccc....@..
 ......+c.....c+......
 c.ccccc...z...cccccccc
 .cccm....z.z....mccc.
ccccc.............cc.c
 ...c...z.....z...c..
  ..cc..z..C..z..cc..
  ...+...........+...
 @...c...z...z...c...@
c.c..cc..zz.zz..cc....
ccccccc.........ccccccc
 .....cm.......mc...c.c
 .....ccccc+ccccc.....
      .....@.....
ENDMAP

NAME:    regret_index_zotdec_abyssal_contain_seething_sorcery
TAGS:    extra transparent zotdec luniq_zotdec_rune
DEPTH:   Zot, !Zot:$
WEIGHT:  5
ITEM:    dagger ego:distortion ident:type no_pickup
KFEAT:   C = altar_lugonu
KFEAT:   mn = m
SUBST:   X = xxxcb......, { = {([})]>>>CC<d$
TILE:    m : dngn_transparent_wall_red / dngn_transparent_wall_brown / \
             dngn_transparent_wall_green
TILE:    n : dngn_transparent_wall_magenta / dngn_transparent_wall_blue / \
             dngn_transparent_wall_white
MAP
x x x x
 x.xxxxxxxxxxxxxxx
x.x.x...xxxnnmmxxxxx
...x..X....mmnnmmxxxxx
 .........X..mmnncccxxx
 .....X..cc.xxxxcc+cccx
  ......Xc..x...c...+cx
   .X.V.....+...+.{.ccx
  ......Xc..x...c...+cx
 .....X..cc.xxxxcc+cccx
 .........X..mmnncccxxx
...x..X....mmnnmmxxxxx
x.x.x...xxxnnmmxxxxx
 x.xxxxxxxxxxxxxxx
x x x x
ENDMAP

NAME:    regret_index_zotdec_silver_v_v_loose
TAGS:    extra zotdec transparent no_trap_gen luniq_zotdec_rune
DEPTH:   Zot, !Zot:$
ITEM:    mundane arbalest
KFEAT:   ^ = alarm trap
KFEAT:   C = altar_gozag
SHUFFLE: opqrstu
SUBST:   op = ., q : v.., r : v.., stu = v
SUBST:   { = {([<d$
NSUBST:  > = 1:})]>>>> / * : d$>C^
TILE:    m = dngn_transparent_wall_white
MAP
............
.vvvvvvvvv..
.v..................
.v.q.r.s.v..vv..v.t.
.v..>v...v.....p.o..
.v.rvvvq.v..v.v.>.v.
.v...vm..v..v..o.p..
.v.s.q...v......v...
.v.......v..us....v.
.v.vvvvvvt..vu.v.vv.
...........<..........
..........{...........
  .vv.v.uv..tvvvvvv.v.
  .v....su..v.......v.
  ...v......v...q.s.v.
  ..p.o..v..v..mv...v.
  .v.>.v....v.qvvvr.v.
  ..o.p..v..v...v>..v.
  .t.v..vv..v.s.r.q.v.
  ..................v.
          ..vvvvvvvvv.
          ............
ENDMAP

NAME:    regret_index_zotdec_silver_v_v_orig_slice
TAGS:    extra zotdec transparent no_trap_gen no_rotate
TAGS:    luniq_zotdec_rune luniq_zotdec_large
DEPTH:   Zot, !Zot:$
ITEM:    mundane arbalest
KFEAT:   ^ = alarm trap
KFEAT:   C = altar_gozag
SHUFFLE: opqrst
SUBST:   op = ., q : vx.., r : vx.., st = v
NSUBST:  { = 1:{([<<<d$ / * : d$, } = 1:})]>>>>C / * : d$>^
TILE:    m = dngn_transparent_wall_white
MAP
              .p.vvvvvvvvvvvv
              p...........m}v
              .............mv
              v....vvvvv....v
              v..vvv....vv..v
              v..v..vvv..v..v
              q..v.vv}vv.v..v
              v..v...vv..v..v
              v..vvv...vvv..v
              v....vvvvv....v
            .................
............................o
..vvvvvvvvv.{.{..vvvvrvvvv.o.
.v.v.v.v.r.v....
v.o.v.v.v.v.v.
vv.v.v.v.v.qv.
v.v.v.v.v.v.v.
vv.v.v.v.v.vv.
v}v.v.v.v.v.v.
vv.v.v.v.v.vv.
v.v.v.v.v.p.v.
vm.v}v.v.v.v..
vvvvvvvvvvv...
ENDMAP

NAME:    regret_index_zotdec_golden_two_three
TAGS:    extra zotdec no_trap_gen no_rotate no_vmirror
TAGS:    luniq_zotdec_rune luniq_zotdec_large
DEPTH:   Zot, !Zot:$
ITEM:    stone q:1
KFEAT:   C = altar_kikubaaqudgha / altar_yredelemnul
KFEAT:   Z = zot trap / alarm trap
SUBST:   < = <>, Z = ZC.
SUBST:   { = {([})]<>%$VVVVC
SHUFFLE: pqrs, +-
SUBST:   pq = ., r : c., s = c, - : ++.
TILE:    m = dngn_transparent_wall_yellow
MAP
         c     c
     ....c..@..c....
     p...c.....c...p
  .@...cccccGccccc...@.
 .....ccccccccccccc.....
 p..ccc...........ccc..p
 ..ccc.....ccc.....ccc..
ccccc.r..mcc{ccm..r.ccccc
 ..cc...ccc...ccc...cc..
 r.cc..ccc.....ccc..cc.r
 @.cc.......p.......cc.@
 ..ccm...r.....r...mcc..
cccccc.q...s.s...q.cccccc
 ..ccc.............ccc..
 ...ccc+cc.....cc+ccc...
 @..cc...cc.Z.cc...cc..@
 s..cc....c...c....cc..s
 ..ccd.s..c...c..s.dcc..
cccccd..q.+.p.+.q..dccccc
 ..cccd...c...c...dccc..
 @..cccd..c.<.c..dccc..@
 ...cccddcc...ccddccc...
 .q.c.ccccc---ccccc.c.q.
    c......@.@......c
ENDMAP

NAME:    regret_index_zotdec_glowing_original
TAGS:    extra transparent zotdec no_trap_gen luniq_zotdec_rune
DEPTH:   Zot, !Zot:$
KFEAT:   C = altar_nemelex_xobeh
KFEAT:   Z = zot trap
SHUFFLE: qrst
SUBST:   q : ., r : c., st = c
SUBST:   { = {([})]>>C%$UUUU, Z : ZUV
TILE:    m = dngn_transparent_wall_yellow
MAP
.................
.tcsccc.....cccc.
.ccccmc..cc..cmc.
.scccc..cZcc..cc.
.cccc....cccc..c.
.cmc..c...qccc...
.cc...cr..{qccc..
.c..c.cmr...cZc..
...cc.cccr...c...
.sccc.cccmr......
.....tcccccc..cc.
.ccc..t......cmc.
.cccc..ccc..cccc.
..crcc.cc..ccccs.
 ..ccc.c..cmcccc.
  ..cc.s.ccccsct.
   ..............
ENDMAP

NAME:    regret_index_zotdec_magical_s
TAGS:    extra transparent zotdec no_pool_fixup
TAGS:    luniq_zotdec_rune luniq_zotdec_large luniq_zotdec_liquid
DEPTH:   Zot, !Zot:$
ITEM:    mundane ring of magical power ident:type
KFEAT:   CD = altar_sif_muna
SHUFFLE: MNmn, <CD>{$d, pqrs
SUBST:   MNn : ., V = m, { = {([})]
NSUBST:  B = 2:. / *:b
SUBST:   p = ., q : w.., r : w.., s = w, w : ww.
TILE:    m = dngn_transparent_wall_white
MAP
    ........ .........
   ...ss.........rrr...
  ..rbbbbbp.q..bbbbbbs..
 ..bbbwwwbb...bbwwwwbbs..
..rb......bb.bb..v+vwbb..
.qbb.v.vv.wbBbw.vv.Vvwbr.
.qbw..<...wb.bw.+.C.+wbr.
.qbw.v.vv.bb.bb.vv.vvwbr.
..bw.v.v..b...b..v+v.wb..
..bb........N........bb..
..qbbwwbb.m.N.M.bbwwbb...
....bbbb.........bbbb....
 .p..B...nn.Z.NN...B..q.
....bbbb.........bbbb....
...bbwwbb.M.n.m.bbwwbbp..
............n........bb..
   .......b...b..v.v.wbs.
        ..bb.bb.vv.v.wbs.
        ..wb.bw...>..wbs.
        ..wbBbw.vv.v.bb..
        ..bb.bb......br..
        ..b...bbwwwbbb..
         ...p.qbbbbbr..
         .......qqq...
         ............
ENDMAP

NAME:    regret_index_zotdec_fiery_em
TAGS:    extra transparent zotdec
TAGS:    luniq_zotdec_rune luniq_zotdec_large luniq_zotdec_liquid
DEPTH:   Zot, !Zot:$
ITEM:    mundane great sword ego:flaming plus:0 ident:type
KFEAT:   C = altar_okawaru
SHUFFLE: DEF, pqrs, lx', lxV
SUBST:   D : ++., EF = v, p : v., q : v., rs : v
SUBST:   ' : ., V = v, C = CCC>>>GG$dd<{([})]
KPROP:   l = no_cloud_gen
TILE:    m = dngn_transparent_wall_brown
TILE:    G = dngn_statue_cerebov
MAP
       ...vvDvv..........
       .vvv...vvv...vvEv.
      ..vvv...vmv.vvv..E.
      ....vv+vv...vvv..v.
       .............+vvv.
      ..vpv.v.vqv....mv..
  .. ..vv.......vv...vv.
......vv.........vv......
.vv..vv..l'''''l..vv..vv.
.vv..p..lll'''lll..r..vv.
vvvv.v.llll'''llll.v.vvvv
v..v...lxxll'llxxl...v..v
F..+.v.xxxx'C'xxxx.v.+..F
v..v...lxxll'llxxl...v..v
vvvv.v.llll'''llll.v.vvvv
.vm..q..lll'''lll..s..vv.
.vv..vv..l'''''l..vv..vv.
......vv.........vv......
 .vv...vv.......vv.. ..
..vv....vrv.v.vsv..
.vvv+.............
.v..vvv...vv+vv....
.E..vvv.vmv...vvv..
.vEvv...vvv...vvv.
..........vvDvv...
ENDMAP

NAME:    regret_index_zotdec_dark_gr
TAGS:    extra transparent zotdec no_trap_gen luniq_zotdec_rune
DEPTH:   Zot, !Zot:$
KFEAT:   C = altar_kikubaaqudgha
KFEAT:   Z = zot trap
SHUFFLE: qrs
SUBST:   q = ., rs = x
SUBST:   + : ++., Z : Z.., { = {([})]CC<>dd$VVV
TILE:    m = dngn_transparent_wall_darkgray
: dgn.delayed_decay(_G, 'd', 'any skeleton')
MAP
   ..x..x..x..x..
  ...............
  .ccccccccccc...
 ..cr...s...ccc...
 ..c.r.....x.mcc..
...+..r...x...cc..
...+...r.x.Z.x.c..
.x.c.cccc...x..c..
x.xccc...s.x.x.c..
.q.cm{c.q.x...xc.
x.xccc...s.x.x.c..
.x.c.cccc...x..c..
...+...r.x.Z.x.c..
...+..r...x...cc..
 ..c.r.....x.mcc..
 ..cr...s...ccc...
  .ccccccccccc...
  ...............
   ..x..x..x..x..
ENDMAP

# Based on the first four non-disco guaranteed demonic rune vaults.
# Probably a bit too much for a decorative vault, but who cares, it's Zot.
NAME:     regret_index_zotdec_demonic_mixed
TAGS:     extra transparent zotdec no_item_gen no_pool_fixup
TAGS:     luniq_zotdec_rune luniq_zotdec_large luniq_zotdec_liquid
DEPTH:    Zot, !Zot:$
WEIGHT:   4
ITEM:     mundane demon whip / mundane demon blade / mundane demon trident
KFEAT:    C = altar_makhleb
KFEAT:    n = m
KFEAT:    u = w
KFEAT:    k = l
SHUFFLE:  ABCDEF
SUBST:    AB = w, C : w., D : w., EF = .
SHUFFLE:  lk / uw, ~-, G' / Y' / C' / >"
SUBST:    ~ : ++-, - : +vv, o : n.
NSUBST:   < = 1:{([})]>w$d / *:.
KMASK:    uk = no_monster_gen
KMASK:    'YC = opaque
KPROP:    uk = no_tele_into
KPROP:    l = no_cloud_gen
TILE:     m : dngn_transparent_wall_red / dngn_transparent_wall_yellow
TILE:     n : dngn_transparent_wall_green / dngn_transparent_wall_blue
TILE:     G = dngn_statue_ancient_evil
MAP
           ....@...
          ..Dww.wwC..
         ..Dwcc.vvwC..
         .Ewcc.w.vvwB.
        .Ewcc.w.w.vvwB..
        .Fwc.......vwA..
       ..Fwc......vvvA..
      ...vvvvv-~vvvuvvv...
    ....vv........vnvwvv..
  ..EFFvv+mm..........wv..
 ..Ewwwv.m<m.......c++vvv.
..Dwcccv.mmm.lll...c..mkm.
.Dwcc..v....cllll..c..vvv.
.wcc...v...llc''ll.c..lv..
.wc.w..v...ll'G'cl.c..lv..
@..w...~...ll''>ll.c..lv..
.wv.w..-....llclcl.c..lv..
.wvv...v.....llll..c..vv..
.Cwvv.vvv.........<c..v...
..Cwvvvun.cccccccccc.....@
 ..Bwwvvv.+...............
  ..BAAvw.+..........ooo..
    ...vvwvmvllllvv..ouo..
    ....vvvkvvvvvv...ooo..
       ...vmv............
        ...........@....
ENDMAP

NAME:    regret_index_zotdec_obsidian_hm
TAGS:    extra transparent zotdec
TAGS:    luniq_zotdec_rune luniq_zotdec_large luniq_zotdec_liquid
DEPTH:   Zot, !Zot:$
ITEM:    mundane trident ego:flaming plus:0
SHUFFLE: opqr, fg
SUBST:   op = l, qr = ., f = v, g = ., l : ll.
SUBST:   } = {([})]<G$>>>
TILE:    m = dngn_transparent_wall_red
MAP
xxxxxxxxxxx
c......col.
c...vg.+o..
c...fv.co..
c.vf...co..
c.gv...+o..
c......co..
cc+c+ccco..
c.....cpl.
c..v..cp..
c.....+p..
c..v..cp..
c.....cp..
cc+c+ccp..
c....+ql.
c.fg.cq..
c.gf.cq..
c....+q..
c+c+ccq..            .......x
c...crl.       ............lx
c.v.+r..  ..........looooooox
c...cr.}......lppppppcc+cc+cx
cc+ccr...lqqqqqccc+ccc......x
c.....rrrrc+cc+c.....c.gv...x
c.....cc+cc....+.....+.vf...x
@..d..c...+.fg.c.v.v.c...fv.x
c.....+.v.c.gf.+.....+...vg.x
cm....c...+....c.....c......x
ccc@ccccccccccccccccccccccccx
ENDMAP

NAME:    regret_index_zotdec_icy_dp
TAGS:    extra transparent zotdec no_pool_fixup
TAGS:    luniq_zotdec_rune luniq_zotdec_large luniq_zotdec_liquid
DEPTH:   Zot, !Zot:$
SHUFFLE: HIJKLM, pqr, CT{([<$
SUBST:   HI = x, J : xw, K : xw, LM = w
SUBST:   p : xww., qr = ., - : ++., w : www..
CLEAR:   '
TILE:    m = dngn_transparent_wall_blue
MAP
   .............
 .......www......
 ...HHHHIwIJJJ.r..
...M........JJ....
.p.M..ccc....KK.q.
...M.ccmcc+c..K...
..wL.cc....c..Lw..
..ww..cC..Tc..ww..
..wL..c....cc.Lw..
...K..c+ccmcc.M...
.q.KK....ccc..M.p.
....JJ........M...
..r.JJJIwIHHHH....
 ......www.......
  ..............
                ''''
                    .......
                   ..........
                  ..pccc-ccc..
                  ..cc.....cc.
                  ..c..q...rc.
                  ..-.......c.
                  ..c.........
                  ..ccr..
                  ...ccc.
                   ......
ENDMAP

NAME:    regret_index_zotdec_bone_old
TAGS:    extra transparent zotdec luniq_zotdec_rune no_rotate
DEPTH:   Zot, !Zot:$
ITEM:    maw talisman
KFEAT:   ^ = shaft trap
SHUFFLE: opqrst
SUBST:   op = x, q : xx., r : x.., st = .
SUBST:   - : +c, { = {([})]++CC^^..
TILE:    G = dngn_statue_wraith
MAP
           s
   ........s........
  cc-++-ccccccc-++-cc
  c......+...+......c
  c.x..x.x.G.x.x..x.c
  c......x...x......c
cccccccccxx{xxccccccccc
  cd...............dc
  cx.x.r.x.x.x.r.x.xc
  c.................c
  c.x.x.x.x.x.x.x.x.c
  c.................c
  cx.x.x.x.x.x.x.x.xc
  c.................c
   ...p.q.....q.p...
ENDMAP

NAME:    regret_index_zotdec_iron_s
TAGS:    extra transparent zotdec luniq_zotdec_rune luniq_zotdec_large
DEPTH:   Zot, !Zot:$
ITEM:    mundane mace, any mundane weapon
SHUFFLE: opqrst, P- / Q~ / R' / S"
SUBST:   o : v.., p : vG., r : vGb, s : vb, t = v
SUBST:   P = CCC>>><$d{([})], ~QRS = e, -'" = v, G : Gvv
TILE:    G = dngn_statue_imp
MAP
  ........................
  ........................
  vv..v....v..vv..vv..vv..vv
vvvvvvvv++vvvvvvvvvvvvvvvvvvvv
vvvvmvvv++vvvmvvvvvvvvvvvvvvvv
  vv..v....v..vvvvvv..vv..vv
  zz............vv........
  zz..........vvvvvvv.
  zz..o....t..+..-d.v.
  zz..p....s..v.P-..+.
  zz.....G...vvvvvvvv.
  zz..q....r.+..~d.v..
  zz..q....r.v.Q~..+..
  zz.........vvvvvvvv.
  zz..r....q..v.R'..+.
  zz..r....q..+..'d.v.
  zz....G....vvvvvvvv.
  zz..s....p.v.S"..+..
  zz..t....o.+.."d.v..
  zz.........vvvvvvv..
  vvvvvvvvvvvvvvvvvvvvvv
ENDMAP

##############################################################################
##############################################################################
#
# <<3>> Zot monster vaults
#
##############################################################################
##############################################################################

###########################
# Halls of Wrath
#
NAME:   lemuel_halls_of_wrath
DEPTH:  Zot, !Zot:$
ORIENT: float
NSUBST: 1 = 6:2 / *=1
SUBST:  1 = 1 .:5
SUBST:  1 = 1 3
MONS:   troll / deep troll / iron troll / ogre / two-headed ogre
MONS:   moth of wrath
MONS:   stone giant / fire giant / frost giant / ettin / \
        w:5 efreet / w:3 titan
SUBST:  } = }:80 >, ) = ):80 >
MAP
cccccccccccccccccccccccc
c111111111111111111.n..c
c111111111111111111.n.)c
ccnnccccccccccccc++cc..c
c....G....G....G....c..c
+...................+..c
+...................+.}c
+...................+..c
c....G....G....G....c..c
ccnnccccccccccccc++cc..c
c111111111111111111.n.]c
c111111111111111111.n..c
cccccccccccccccccccccccc
ENDMAP

###########################
# Lich library
#
NAME:   lemuel_lich_library
TAGS:   no_monster_gen no_descent
DEPTH:  Zot, !Zot:$
MONS:   laughing skull, lich, ancient lich / dread lich, necromancer
MONS:   vampire mage
ITEM:   any book mimic:10 w:20 / any scroll mimic:10
SUBST:  x : xc, w : w?
NSUBST: ? = 12 = 11. / *:.
SUBST:  4 = 4 5:2 .:4
MAP
wwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwww
wwxxxxxxxxx+xxxxxxxxxww
wwx....x.......x....xww
wwx....+...G...+....xww
wwx.4..x.......x..4.xww
wwx4.4.xxxx+xxxx.4.4xww
wwx.4.4xxx...xxx4.4.xww
wwx4.4.xxx.2.xxx.4.4xww
wwxxxxxxxxx+xxxxxxx+xww
wwxxxxxxxxx.xxxxxx$$xww
wwxdddxxxxx.x...xx$$xww
wwx.2.xxxxx.+.G.xxxxxww
wwx...xxxxx.x...xxxxxww
wwx...xxxxx.xxxxxxxxxww
wwxx+xxxxxx.xxxdddddxww
wwxx.xxxxxx.xxxd232dxww
wwxx.xxxxxx.xxxd...dxww
wwxx......+...+....dxww
wwxxxxxxxxxmxxxd...dxww
wwxxxxxxxxxGxxxdddddxww
wwxxxxxxxxxxxxxxxxxxxww
wwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwww
ENDMAP

###########################
# Lake of fire
#
NAME:  lemuel_lake_of_fire
DEPTH: Zot
SUBST: * =*l
KMONS: * = orb of fire
KFEAT: * = l
SUBST: .=.l
MAP
 ..ll..
..llll..
.llllll.
.ll**ll.
.ll**ll.
.llllll.
..llll..
 ..ll..
ENDMAP

###########################
# Globe of electric golems
#
NAME:  lemuel_golem_globe
TAGS:  no_rotate no_exits
DEPTH: Zot
KFEAT: ^ = permanent teleport trap / dispersal trap
KFEAT: m = iron_grate
SUBST: 1 = 1.
MONS:  electric golem
MAP
  mmmm
 mm..mm
mm.11.mm
m.1^^1.m
mm.11.mm
 mm..mm
  mmmm
ENDMAP

###################################################################
# Draconian Sentry Boxes
# There is an 70% chance all three upstairs will be here.
#
NAME:    lemuel_draconian_sentries
TAGS:    no_rotate no_pool_fixup
DEPTH:   Zot, !Zot:$
ORIENT:  float
MONS:    draconian stormcaller / draconian scorcher w:5
KFEAT:   m = iron_grate
SHUFFLE: {([>, wW / -?, '2n / "3o / "3o
SUBST:   { = {:80 >, ( = (:80 > , [ = [:80 >
SUBST:   -?' = ., 2 = 1, n = m
CLEAR:   "3o
MAP
''''''''''''''''''''''''''''
''nnn'................'nnn''
''n2n'................'n2n''
''nnn'..mmmwwWWwwmmm..'nnn''
''''''..m1mWWwwWWm1m..''''''
''''''..mmmwwWWwwmmm..''''''
nnn'''..WwW.{..(.WwW..'''nnn
n2n'''..wWw......wWw..'''n2n
nnn'''..WwW.[..>.WwW..'''nnn
''''''..mmmwwWWwwmmm..''''''
''''''..m1mWWwwWWm1m..''''''
''nnn'..mmmwwWWwwmmm..'nnn''
''n2n'................'n2n''
''nnn'................'nnn''
''''''''''''''''''''''''''''
ENDMAP

###########################
# Acid trip
# 70% chance of having all stairs.
NAME:   lemuel_acid_trip
DEPTH:  Zot, !Zot:$
ORIENT: centre
MONS:   oklob plant, acid blob, jelly, yellow draconian
MONS:   any nonbase yellow draconian
SUBST:  1 = 1:2 .
SUBST:  . = .:20 3:3 2:1
SUBST:  } = }:80 >, ) = ):80 >, ] = ]:80 >
MAP
       xx++xx
     xxx....xxx
   xxx..4444..xxx
  xx....4554....xx
 xx.....cccc.....xx
 x....ccc..ccc....x
xx...cc......cc...xx
x...cc..1111..cc...x
x...c...1}11...c...x
x.5.c...11]1...c.5.x
x...c...1)11...c...x
x...cc..1111..cc...x
xx...cc......cc...xx
 x....cc....cc....x
 xx....c....c....xx
  xx............xx
   xxx..4444..xxx
     xxx4554xxx
       xxxxxx
ENDMAP

###########################
# Firehouse
#
NAME:   lemuel_firehouse
DEPTH:  Zot, !Zot:$
ORIENT: centre
MONS:   orb of fire
MONS:   fire elemental
MONS:   red draconian
MONS:   any nonbase red draconian
MONS:   efreet
SUBST:  1=122, 3=322
SUBST:  4 = 2:20 4:5 3:15 .:20
MAP
          lllll
       lllllllllll
     lllll.....lllll
    llll....x....llll
   llll....xxx....llll
   llll...xx}xx...llll
  llll...xx]2)xx...llll
  llll..xx2...2xx..llll
 llll..xx...5...xx..llll
 llll..x...2.2...x..llll
llll...x.2xx+xx2.x...llll
llll...x.xx444xx.x...llll
llll...x.x44444x.x...llll
 llll..x.x44F44x.x..llll
 llll..x.x44444x.x..llll
  llll.x.xx444xx.x.llll
  llll.x.1x...x1.x.llll
   llllxxxx+++xxxxllll
    llll333...333llll
     lllll.....lllll
       lllll.lllll
          ll@ll
ENDMAP

######################################
# Circus (by mu)
# full of klowns, caged animals outside
NAME:   circus_mu
TAGS:   no_rotate no_hmirror no_monster_gen
DEPTH:  Zot, !Zot:$
ORIENT: float
MONS:   killer klown
MONS:   elephant / w:5 dire elephant / w:2 hellephant
MONS:   human ; club
SUBST:  1 = 1 2:5 3:20
SUBST:  2 = 2 2 .
SUBST:  % = !:10 .:20
KITEM:  ! = club / nothing
COLOUR: " : yellow
MAP
     ................
    .....xxxxx.............
   .....xx...xx.............
  .....xx..%..xx.....mmmmm...
 .....xx..%.%..xx....m222m....
.....xx.%..1..%.xx...m+mmm.....
....xx...%.%.%...xx............
...xx..%1"""""1%..xx....mmmmm..
..xx..%.""..."".%..xx...m222m..
.xx..%%.".....".%%..xx..m+mmm..
.x.%1..1"..1.."1..1%.x.........
.xx..%%.".....".%%..xx..3......
..xx..%.""..."".%..xx..........
...xx..%1"""""1%..xx...mmmmm...
....xx...%.%.%...xx....m222m...
.....xx.%..1..%.xx.....m+mmm..
 .....xx...%...xx............
  .....xx.%.%.xx............
   .....xx+++xx.....
    .....xx+xx.....
     .............
ENDMAP

######################################
# This is weird, but in Zot weirdness fits. (nrook)
NAME: nrook_zot_tub
DEPTH: Zot
KFEAT: X = W
MARKER: X = lua:fog_machine { cloud_type="steam", \
            pow_min = 2, pow_max = 10, delay = 25, \
            size = 2, walk_dist = 3, spread_rate= 10 }
KMONS: M = patrolling red draconian att:neutral / \
      patrolling red draconian scorcher att:neutral w:2 / \
      patrolling red draconian stormcaller att:neutral w:2 / \
      patrolling red draconian shifter att:neutral w:2 / \
      patrolling red draconian annihilator att:neutral w:2 / \
      patrolling red draconian knight att:neutral w:2 / \
      patrolling red draconian monk att:neutral w:2
KFEAT: M = W
KMONS: F = orb of fire att:neutral
KFEAT: F = W
MAP
     @
xxxxx+xxxxx
xWWWWWWWWWx
xWMWWMWWMWx
xWWXWXWXWWx
xWWWmmmWWWx
xWMXmFmXMWx
xWWWmmmWWWx
xWWXWXWXWWx
xWMWWMWWMWx
xWWWWWWWWWx
xxxxxxxxxxx
ENDMAP

###################################################
# Minmay's Elemental castle
# 50% electricity, 25% fire, 25% ice
NAME:    minmay_elemental_castle
TAGS:    no_rotate no_descent
ORIENT:  southwest
DEPTH:   Zot, !Zot:$
: if crawl.coinflip() then
MONS:    titan, storm dragon, electric golem
SUBST:   F = 3
ITEM:    lightning rod, book of lightning, staff of air, book of storms
: elseif crawl.coinflip() then
MONS:    frost giant, ice dragon
KMONS:   F = shard shrike
MARKER:  F = lua:fog_machine { cloud_type = "freezing vapour", \
              pow_min = 5, pow_max = 15, delay = 10, size = 2, \
              walk_dist = 0, spread_rate= 0 }
# XXX: we should replace iceblast with something else when it's not
# in this game's chosen item set.
ITEM:    wand of iceblast, staff of cold, book of winter, \
         book of ice
SUBST:   w = l
SUBST:   W = l..
: else
MONS:    fire giant, fire dragon
KMONS:   F = balrug
MARKER:  F = lua:fog_machine { cloud_type = "flame", pow_min = 5, \
              pow_max = 15, delay = 10, size = 2, walk_dist = 0, \
              spread_rate= 0 }
ITEM:    book of the dragon, staff of fire, book of fire, book of annihilations
: end
SUBST:   1 = 112.
SUBST:   2 = 221.
SHUFFLE: defg
MAP
xx...................@@...................
xx.WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW.
xx.WwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwW.
xx.WwcccccccwwwwwwwwwwwwwwwwwwwwcccccccwW.
xx.Wwcd*%.1cwwwwwwwwwwwwwwwwwwwwc1.%*gcwW.
xx.Wwc*%...cwwwwwwwwwwwwwwwwwwwwc...%*cwW.
xx.Wwc%....ccccccccc++++ccccccccc....%cwW.
xx.Wwc................................cwW.
xx.Wwc1........2............2........1cwW.
xx.Wwcccc..........................ccccwW.
xx.Wwwwwc...cccccccccccccccccccc...cwwwwW.
xx.Wwwwwc...cccccccccccccccccccc...cwwwwW.
xx.Wwwwwc...cccccccccccccccccccc...cwwwwW.
xx.Wwwwwc.2.ccc*|*cccccccc*|*ccc.2.cwwwwW.
xx.Wwwwwc...ccc...cccccccc...ccc...cwwwwW.
xx.Wwwwwc...ccc...cccccccc...ccc...cwwwwW.
xx.Wwwwwc...ccc.F.cccccccc.F.ccc...cwwwwW.
xx.Wwwwwc...ccc...cccccccc...ccc...cwwwwW.
xx.Wwwwwc...ccc...cccccccc...ccc...cwwwwW.
xx.Wwwwwc..........................cwwwwW.
xx.Wwwwwc..........................cwwwwW.
xx.Wwwwwc...ccc..............ccc...cwwwwW.
xx.Wwwwwc...ccc....2....2....ccc...cwwwwW.
xx.Wwwwwc...ccc..............ccc...cwwwwW.
xx.Wwwwwc...ccc..............ccc...cwwwwW.
xx.Wwwwwc...ccc..............ccc...cwwwwW.
xx.Wwwwwc.2.ccc1............1ccc.2.cwwwwW.
xx.Wwwwwc...ccccccccc..ccccccccc...cwwwwW.
xx.Wwwwwc...ccccccccc..ccccccccc...cwwwwW.
xx.Wwwwwc...ccccccccc..ccccccccc...cwwwwW.
xx.Wwcccc..........................ccccwW.
xx.Wwc1........2............2........1cwW.
xx.Wwc................................cwW.
xx.Wwc%....cccccccccccccccccccccc....%cwW.
xx.Wwc*%...cwwwwwwwwwwwwwwwwwwwwc...%*cwW.
xx.Wwce*%.1cwwwwwwwwwwwwwwwwwwwwc1.%*fcwW.
xx.WwcccccccwwwwwwwwwwwwwwwwwwwwcccccccwW.
xx.WwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwW.
xx.WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW.
xx........................................
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

###################################################
# Based on zotdef III. Idea from kilobyte.
NAME:   evilmike_crystal_ball_defense
TAGS:   no_rotate no_monster_gen
DEPTH:  Zot, !Zot:$
ORIENT: float
WEIGHT: 5
MONS:   oklob plant w:4 / lightning spire w:3
MONS:   obsidian statue / orange crystal statue / curse skull
# Not quite the orb, but but close enough
ITEM:   orb randart no_pickup
NSUBST: 1 = 1:1 / 6 = 11. / *:., 3 = 1:1 / 4 = 11....... / *:.
SUBST:  } = }:80 >, ) = ):80 >, ] = ]:80 >
MAP
        xxxxxxxxx
        xxx.2.xxx
        xxx...xxx
        xx..1..xx
xxxxxxxxx1.....1xxxxxxxxx
xxxxxxx.....).....xxxxxxx
xxx.....1..}d]..1.....xxx
xx...xx.....>.....xx...xx
@x..xxxxx1.....1xxxxx..x@
.x.3xxxxxx..1..xxxxxx3.x.
.x..xxxxxxx...xxxxxxx..x.
.x..xxxxxxx...xxxxxxx..x.
.x..xxxxxxxx.xxxxxxxx..x.
.x..xxxxxxxx2xxxxxxxx..x.
.x..xxxxxxxx.xxxxxxxx..x.
.xx3.................3xx.
...x.................x...
...x......3.3.3......x...
xxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

################################################################################
# A highlight reel of Xom's many altar vault gimmicks.
NAME:    hangedman_xom_zot_hilarity
TAGS:    no_monster_gen no_trap_gen no_pool_fixup patrolling transparent
DEPTH:   Zot, !Zot:$
WEIGHT:  3
# Gifts, too.
KMONS:   1 = guardian mummy ; randart dire flail ego:chaos . \
             randart hand cannon ego:chaos . randart robe
KMONS:   3 = guardian mummy ; randart battleaxe ego:chaos . \
             randart chain mail . any blast wand
KMONS:   5 = guardian mummy ; randart great sword ego:chaos . \
             randart scale mail . any beam wand
KMONS:   7 = guardian mummy ; randart glaive ego:chaos . \
             randart ring mail . throwing net
KMONS:   246 = killer klown ; club plus:12 ego:chaos | \
                              club plus:12 ego:antimagic w:5
KMONS:   8&! = protean progenitor
KMONS:   _ = ghost moth
KMONS:   90 = moth of wrath / butterfly w:30
KFEAT:   0 = zot trap
KFEAT:   ^~ = teleport trap / dispersal trap
KFEAT:   _ = altar_xom
KFEAT:   > = } mimic
KFEAT:   m = iron_grate
SUBST:   d = tGmcc, y = c`, c = cccccbbvvx, l = wl
NSUBST:  > = 1 = }:80 > / 1 = ):80 > / 1 = ]:80 > / >, 9 = 0 / 9
NSUBST:  ^ = ' / ^, ~ = " / ~, ` = 2=f / .
SHUFFLE: 12 / 34 / 56 / 78 / &!, 56, 78, ^' / ~"
MARKER:  f = lua:fog_machine { cloud_type = "seething chaos", pow_max = 17, \
             delay_min = 450, delay_max = 700, size = 1, excl_rad = 0 }
FTILE:   f = floor_pebble_lightmagenta
MAP
        ccccccc
     cccc2.1.2cccc
  @@ccyycm+m+mcyycc@@
  @..cl`yl```ly`lc..@
  c.c.```````````.c.c
 ccc.l````.c.````l.ccc
 cyl``c..`.>.`..c``lyc
 cy```.>.`d..`d>.```yc
cccy``.d.^~~^`...``yccc
c3ml`````m==mm^````lm6c
c.+``...^m999=~d..``+.c
c4m``c>.~=9_9=~.>c``m5c
c.+``..d~=999m^...``+.c
c3ml````^mm==m`````lm6c
cccy``...`^~~^.d.``yccc
 cy```.>d`..d`.>.```yc
 cyl``c..`.>.`..c``lyc
 ccc.l````.c.````l.ccc
  c.c.```````````.c.c
  @..cl`yl```ly`lc..@
  @@ccyycm+m+mcyycc@@
     cccc8.7.8cccc
        ccccccc
ENDMAP

#################
# Dragon hoards.
#
# These range from small, essentially just flavour vaults,
# to large vaults with many dragons.
NAME:   st_single_dragon_hoard_1
TAGS:   extra
: st_zot_vaults_setup(_G)
MAP
 xxxxx
xx$x$xx
xx**xxx
x$xY*$x
xx$*$xx
 xx@xx
ENDMAP

NAME:   st_single_dragon_hoard_2
TAGS:   extra
: st_zot_vaults_setup(_G)
MAP
xxxxx
xx*Yx
x.$*x
x.xxx
x..xx
xx@xx
ENDMAP

NAME:   st_single_dragon_hoard_3
TAGS:   extra
: st_zot_vaults_setup(_G)
MAP
xxxxxxxx
xxxx$*xx
xx.$$Y*x
x...$*$x
xx.xx$xx
x...xxxx
xxx..xxx
xxxx@xxx
ENDMAP

NAME:   st_single_dragon_hoard_4
TAGS:   extra
: st_zot_vaults_setup(_G)
MAP
xxxxxxxxx
@.xxx**xx
xx..x$Y*x
x.xx.$$xx
xxx.xx$xx
xxxxxxxxx
ENDMAP

NAME:   st_small_dragon_hoard_1
TAGS:   extra
KITEM:  D = $
: st_zot_vaults_setup(_G)
MAP
xxxxxxxx
xxx*$xDx
xx*Y*x$x
xxx*$$xx
xD$$$x.x
xx$...xx
x.x....x
xx....xx
xxx..xxx
xxx@xxxx
ENDMAP

NAME:   st_small_dragon_hoard_2
TAGS:   extra
KITEM:  D = $
: st_zot_vaults_setup(_G)
MAP
xxxxxxxxxx
xxx$$$xxxx
xx$x*$$xxx
x*$*Y*xDxx
xD$x*$$$*x
xxx$$$$xxx
xxxx@xxxxx
ENDMAP

NAME:   st_small_dragon_hoard_3
TAGS:   extra
KITEM:  D = $
: st_zot_vaults_setup(_G)
MAP
xxxxxxxxxxxxxxxx
xxD$$xxD..xxx$xx
xx$x$$xx.x.x$x*x
x$*Y*$...xx.$$Yx
xx$*x$xx...xx$*x
xxxDxxx..xxxD$xx
xxxxxxx@x.xxxxxx
ENDMAP

NAME:   st_small_dragon_hoard_4
TAGS:   extra
KITEM:  D = $
: st_zot_vaults_setup(_G)
MAP
xxx@x.xxxxxxxxxxxx
xx.x.xxxxxxxxx.$xx
xxx..xxxxxxx..x$Dx
xxxx...xxx..xx$**x
xDxxxx....xxxDxYxx
x**x$x.x.x..xxxx*x
xxY$..xxxxx..xxxxx
xD*$xxxxxxxx...xxx
xxxxxxxxxxxx.xx@xx
ENDMAP

NAME:   st_small_dragon_hoard_5
TAGS:   extra
KITEM:  D = $
: st_zot_vaults_setup(_G)
MAP
xx..xxxxxxxxxxxxxx
x.xxxxxxxD*lxD*xxx
@x.xxxxx$xl$$l$**x
xx...xxx*$lllllYxx
..xx..xxx$.llll*Dx
xxxxx.xxxxx.llllxx
xxxxx...xx..lxllxx
xxxxxxx....xxlxxxx
xxxxxxxxxxxxxxxxxx
ENDMAP

NAME:   st_large_dragon_hoard_1
SUBST:  D = DD$
KITEM:  D = $
: st_zot_vaults_setup(_G)
MAP
xxxxxxx@xxxxxxxx
xxxx.x...lxxlxxx
xxx|x.llllxl.xxx
xxD$llxlllllx..x
xDxllxl|DDll....
x.lllD|Y*Dlllx.x
.xlxllD*Dlll$$xx
xx.llxllllxx*Dxx
xxx...xll.$Dxxxx
xxxxxx...xxxxxxx
xxxxxxx@xxxxxxxx
ENDMAP

NAME:   st_large_dragon_hoard_2
SUBST:  D = D$
KITEM:  D = $
: st_zot_vaults_setup(_G)
MAP
xxxxxxxxxxxxxxxxxxxxxxx
xxxxD$$Dxxxxxxxxxxxxxxx
xxxY*xx$$D$$xxxx...xxxx
xxx|$$|D$x*$$.x..x...xx
xxD$x|Y|D$Y*$...xxx.$$x
xxx$$D*$x$|$xx..xxx*$xx
xx$D$|$D$*xxxx.xxD|Y*xx
xxx$xY*$*Dxxx..xx$x|xDx
xxxxx|$D$xxx....xxD$Dxx
xxxxxxxxxxx..xx.xxxxxxx
xxxxxxxxxx..xxx...xxxxx
xxxxxxxx..x@xxxx.x..xxx
ENDMAP

NAME:   st_large_dragon_hoard_3
SUBST:  D = DDD$
KITEM:  D = $
: st_zot_vaults_setup(_G)
MAP
x.xx@xxxxxx.xxxxxxxxxxx
.xx...xxxxxx.xxxxxxxxxx
...xx..x......xxx....xx
xxxxxxx...xxxx....xx..x
xD$*xx..xxxx...xxxx$$xx
xxD$xxxx.x..xxxxxx$*$xx
xDx$$.x...x...xxxD*Y*Dx
xxxxxx..xxxxx..xxx$|$xx
xxxlx.x.lxlxxx.xxxx$$*x
xxlxll.lllxlxx..xxxDxDx
xxllxl$$Dlllxxx..xxx*xx
xxxlllxD*Dlxlxxx..xxxxx
xxlllDD|Y*llxxxxxx.xxxx
xxxxlx*D|Dxlllxxx....x.
xlllllD|Dlllxlxxx.xxx..
xxlxllllxllllllxxx.x.xx
xxxllxxlllxxlxxxxx..xxx
xxxxxxxxxxxxxxxx@.xxxxx
ENDMAP

# draconians are a bit more organised with their hoards.
NAME:   st_large_dragon_hoard_4
SUBST:  D = DDD$
KITEM:  D = $
KMONS:  1 = nonbase draconian band
: st_zot_vaults_setup(_G)
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
x$$$$xxxx.......xxxxxxxxxxxxxxxx
x$$$$xx......1....x*$*xxxx...xxx
xxx+xx..x.........+$|$xxx.....xx
xxx....xxxx......xx*$*xxx.xx...x
xx..xxxxxxxxxx..xxxxxxxx.xxx..xx
xxx..xxxD*Dxxxx...xxxxx..xxxx..x
xDxx.xx$*Y*$Dxxxx..x....xxxx..xx
xD$x.xxD$|D$$*xxxx...xxxxxxx..xx
xxx..xxx*$$$$$xxxxxxx$Dxxxx..xxx
xx.xxxxxxD$.1..x|*|xD|Dxx...xxxx
xxx..xxxxxx....+*|*xxDxx.x.xxxxx
xxxx.....x....xx|*|xxxx.x.xxxxxx
xxxxxx......xxxxxxxxx..x...xxxxx
xxxxxxxxxxxxxxxxxxxx.xxx@xx.xxxx
ENDMAP

# A mighty hoard indeed...
# Intended to be an extreme visual spectacle.
# Obviously lowering the amount of gold in stacks is necessary.
# There's about 800 gold.
NAME:   st_grand_hoard_of_tiamat
TAGS:   no_monster_gen
KMONS:  1 = patrolling Tiamat, patrolling golden dragon
SUBST:  D = DDD$
KITEM:  D = $
KITEM:  $ = gold q:1
: st_zot_vaults_setup(_G)
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxx*x$$x$x$$xxxxxxxxx
xxxxx*xxD*$xxD$$$xD$x$xxxxx
xxx$xD$x$$$$$$x$*$$$$x$$xxx
xx$$x$$$*xx$$$$*Yx$$$$$xxxx
xx$x*$x*Y*$D$$$$*$$xD$x$*xx
xxxxD$x$*$$$D|DD$$$x$$$$Dxx
xx$$x$$$$$DD*|*$DD$$$x$$xx.
xxx$$$$D$$$||1||$$$$$$$$$..
xx$x$x$$$$$D*|*$D$D$x$$$x.@
xxxD*$$x$*$D$|DD$$x*$$$xxx.
xx*xx$$$xY*xxD$$$$*Y*xxD$xx
xxx$$$x$$*$$$$Dx$xx*$x$$xxx
xxxxx$$xDxx$$x$$x$$x$$xxxxx
xxxxxxxxx$$x$$xx*Dxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

#########################
# Minivaults based on the old orb chambers.
#
NAME:    zot_minivault_1
TAGS:    transparent
WEIGHT:  20
DEPTH:   Zot, !Zot:$
FTILE:   .@0 = floor_rough_lightmagenta
MAP
 xxxxxxxxxxx
xxx...0...cxx
xx..0...0..cx
x0.........0x
@..0..0..0..@
x0.........0x
xc..0...0..xx
xxc...0...xxx
 xxxxxxxxxxx
ENDMAP

# Based on orb_monky_inset
NAME:    zot_minivault_2
TAGS:    transparent
WEIGHT:  5
DEPTH:   Zot, !Zot:$
SUBST:   > = }}]
FTILE:   .@0}] = floor_rough_lightmagenta
MAP
 xxxxxxxxxxx
xxx0.....0xxx
xx....0....xx
x0...xxx...0x
@...cxxxc...@
x0...xxx...0x
xx....0....xx
xxx0.....0xxx
 xxxxc.cxxxx
xx...0.0...xx
x...........x
x.....>.....x
xx.........xx
 xxxxxxxxxxx
ENDMAP

# Based on orb_two_ways
NAME:    zot_minivault_3
TAGS:    transparent
WEIGHT:  5
DEPTH:   Zot, !Zot:$
SUBST:   < = {[(TUV
FTILE:   .@0{[(TUV = floor_rough_lightmagenta
MAP
 xxxxxxxxxxx
xxxx.....xxxx
xx....c...xxx
xx.<.xxx..xxx
xx...xx..xxxx
xxxxxx..xxxxx
xxxx.....xxxx
xxx..0x0..xxx
x0...xxx...0x
@..0cxxxc0..@
x0...xxx...0x
xxx..0x0..xxx
xxxx.....xxxx
xxxxx..xxxxxx
xxxx..xx...xx
xxx..xxx.<.xx
xxx...c....xx
xxxx.....xxxx
 xxxxxxxxxxx
ENDMAP

# Based on orb_monky_within_orb
NAME:    zot_minivault_4
TAGS:    transparent
DEPTH:   Zot, !Zot:$
COLOUR:  n = magenta
TILE:    n = dngn_transparent_stone_magenta
FTILE:   .@0n = floor_rough_lightmagenta
MAP
 xxxxxxxxxxx
xxx0.....0cxx
xx..nn0nn..cx
x..n0...0n..x
@..n.0.0.n..@
x..n0...0n..x
xc..nn0nn..xx
xxc0.....0xxx
 xxxxxxxxxxx
ENDMAP

# Based on orb_monky_twist
NAME:    zot_minivault_5
TAGS:    transparent
DEPTH:   Zot, !Zot:$
COLOUR:  .n = magenta
TILE:    n = dngn_transparent_stone_magenta
FTILE:   .@0n = floor_rough_lightmagenta
MAP
 xxxxxxxxxxx
xxxnn...0.cxx
xxnn0.0.n..cx
xnnn....nn.0x
@.nn0.0.0nn.@
x0.nn....nnnx
xc..n.0.0nnxx
xxc.0...nnxxx
 xxxxxxxxxxx
ENDMAP

# Based on orb_nicolae_swirls
# Guarantees an upstairs and downstairs,
# and makes sure the player can see them both from one side.
NAME:    zot_minivault_6
TAGS:    transparent
DEPTH:   Zot, !Zot:$
SUBST:   < = {{[, > = }}]
COLOUR:  n = magenta
TILE:    n = dngn_transparent_stone_magenta
FTILE:   .@0{[}]n = floor_rough_lightmagenta
MAP
 xxxxxxxxxxxxx
xxcccccccccccxx
xccxxxxxxxxxccx
xcxx.......xncx
xcx0...>...0ncx
xcx.........ncx
xcxx0.....0cccx
xcxxxxx...xcxxx
xcxxxx..0nnn.
xnxx...0nnn0@
  ...0nnn....
  @0nnn0...xxnx
  .nnn...xxxxcx
xxxcx0..xxxxxcx
xccc.......xxcx
xcn.........xcx
xcn0...<...0xcx
xcnx.......xxcx
xccxxxxxxxxxccx
xxcccccccccccxx
 xxxxxxxxxxxxx
ENDMAP

# Based on orb_nicolae_fourfold
NAME:    zot_minivault_7
TAGS:    transparent
WEIGHT:  5
DEPTH:   Zot, !Zot:$
SUBST:   > = }}]
FTILE:   .@0}] = floor_rough_lightmagenta
MAP
 xxxxxxxxx
xx...0...xx
x0.0...0.0x
x..xc.cx..x
x..x...x..x
x..x.0.x..x
x..x...x..x
x..xx.xx..x
x.xx...xx.x
x.x.0.0.x.x
@.x0.>.0x.@
x.x.0.0.x.x
x.xx...xx.x
x..xx.xx..x
x..x...x..x
x..x.0.x..x
x..x...x..x
x..xc.cx..x
x0.0...0.0x
xx...0...xx
 xxxxxxxxx
ENDMAP

# Based on orb_grunt_hallway
NAME:    zot_minivault_8
TAGS:    transparent
WEIGHT:  5
DEPTH:   Zot, !Zot:$
SUBST:   > = }}]
FTILE:   .@0}] = floor_rough_lightmagenta
MAP
 xxxxxxxxx
xxxx...xxxx
xxx0...0xxx
xxx..>..xxx
xxx0...0xxx
xxxc...cxxx
xxxx0.0xxxx
x00x...x00x
x..x...x..x
@..x0.0x..@
x..x...x..x
x..x...x..x
x..x0.0x..x
x.0x...x0.x
x.0x...x0.x
x..x0.0x..x
x..c...c..x
x.........x
xx.......xx
 xxxxxxxxx
ENDMAP

##########################################################################

NAME:    nicolae_zot_draconian_monastery
TAGS:    no_trap_gen no_monster_gen no_item_gen
DEPTH:   Zot, !Zot:$
ORIENT:  float
MONS:    draconian monk / base draconian w:15
MONS:    patrolling draconian stormcaller, patrolling draconian knight
MONS:    patrolling draconian scorcher
SHUFFLE: ]}), rybgmq, DZF
MARKER:  + = lua:restrict_door()
# The choice of altar might matter more if monster gods meant much.
# Till then, it's just a style thing.
KFEAT:   _ = altar_qazlal w:40 / altar_xom / altar_lugonu / \
             altar_makhleb / altar_yredelemnul
SUBST:   1 = 1.
# What kind of holy books would draconians have?
KITEM: D = book of the Dragon
KITEM: Z = randbook numspells:4 spells:ignition&fireball&animate_dead&airstrike \
           title:the_Zealot
KITEM: F = randbook numspells:4 spells:starburst&fireball&sticky_flame&flame_wave \
           title:Fire_and_Brimstone
KITEM: _ = manual of invocations
COLOUR:    r = red, y = yellow, b = blue, g = green, \
           m = magenta, q = cyan, c = magenta
TILE:      r = dngn_transparent_stone_red, y = dngn_transparent_stone_yellow, \
           b = dngn_transparent_stone_blue, m = dngn_transparent_stone_magenta, \
           g = dngn_transparent_stone_green, q = dngn_transparent_stone
KFEAT: rybgmq = n
MAP
           @.......................@
ccccccccccccqqcrrcyycbbcggcmmcqqcrrccccccccccc
cG............G..G..G..G..G..G..G..ccc.ccc.ccc
c...ccccc..T.......................cc...c...ccl
c]2.cccDccccc..1..1..1..1..1..1..1.c..1...1..cl
c...cc...cc........................cc.......ccll
cG..+..2....c.cc.cc.cc.cc.cc.cc.cc.cT........clll
cccccc...cccc.cc.cc.cc.cc.cc.cc.cc.ccc.......clllll
ccccTc...cccc......................ccc..1..1.c....l
@qc......1.........................+.........+..3.@
@mF.4.._......1..1..1..1..1..1..1..+.........+.T..@
@qc......1.........................+.........+..3.@
ccccTc...cccc......................ccc..1..1.c....l
cccccc...cccc.cc.cc.cc.cc.cc.cc.cc.ccc.......clllll
cG..+..2....c.cc.cc.cc.cc.cc.cc.cc.cT........clll
c...cc...cc........................cc.......ccll
c}2.cccZccccc..1..1..1..1..1..1..1.c..1...1..cl
c...ccccc..T.......................cc...c...ccl
cG............G..G..G..G..G..G..G..ccc.ccc.ccc
ccccccccccccqqcrrcyycbbcggcmmcqqcrrccccccccccc
           @.......................@
ENDMAP

##########################################################################

NAME:    hangedman_zot_spectrum
TAGS:    no_monster_gen no_descent
DEPTH:   Zot, !Zot:$
KMONS:   A = red very ugly thing
KMONS:   B = red draconian
KMONS:   C = balrug / red draconian scorcher w:6
KMONS:   D = cyan very ugly thing
KMONS:   E = black draconian
KMONS:   F = electric golem / black draconian knight w:6
KMONS:   G = green very ugly thing
KMONS:   H = green draconian
KMONS:   I = green death / green draconian monk w:6
KMONS:   J = white very ugly thing
KMONS:   K = white draconian
KMONS:   L = shard shrike / white draconian stormcaller w:6
KMONS:   M = brown very ugly thing
KMONS:   N = yellow draconian
KMONS:   O = acid blob / yellow draconian annihilator w:6
KMONS:   Z = killer klown ; club randart plus:12 ego:chaos / \
             protean progenitor band w:6 / Tiamat w:3, \
             killer klown ; club randart plus:12 ego:chaos / \
             protean progenitor band w:6
KITEM:   BEHKN = $ w:15 / % w:25 / *
KITEM:   z = any good_item
KITEM:   Z = superb_item
# Rotates out loot, upstairs, downstairs,
# both (in an enclosed bubble), or nothing, at either end.
SHUFFLE: defg{>Z' / defg{<'' / fgde>{'Z / fgde<{'' / defg'|Z' / fgde|''Z / \
         fgfgZ'() / fgfg'Z)( / dede'''' / dede'''' / dede''''
SHUFFLE: ABC / DEF / GHI / JKL / MNO
SUBST:   d = @, e = ., f = x, g = c, c : ccb, Z = z Z:6, {' = .
NSUBST:  < = 1:{ / 1:[, > = 1:} / 1:]
MAP
              xxxxxxxfffff
              xcccccgggggff
          xxxxxcKKcc..>.ggf
          xcccccJ.J+...Z.gf
          xcccccc..+..Z.>gf
          xcHHccc..ccc...gf
      xxxxxcG.Gcc..Lcc...gx
      xcccccc..++...Lc++ccx
      xcEEccc..++......Jccx
  xxxxxcD.Dcc..ccc......Kcx
  xcccccc..cc..Icc++cccJKcx
  xcBBccc..++...Ic++ccccccx
  xcA.Acc..++.......Gcccx
  xcc..cc..ccc.......Hcxx
  xcc..cc..Fcc++ccccGHcx
  xxc..++...Fc++cccccccx
  xxc..++........Dccxxxx
xxxxc..ccc........Ecx
xcccc..Ccc++cccccDEcx
xcc.+...Cc++ccccccccx
xe..+.........Acccccx
de{.cc..........Bcxxx
de..'c++ccccccA.Bcx
de.'....cxxxxcccccx
dee..{.ccxxxxxxxxxx
ddeeeeeccx
 dddddxxxx
ENDMAP

##########################################################################

NAME:    hangedman_zot_vaults_quadrants
TAGS:    no_monster_gen no_item_gen transparent
DEPTH:   Zot, !Zot:$
ORIENT:  centre
# Humanoids, guardian beasts, the strongest; first V, then Zot.
MONS:    ettin / stone giant w:5 / fire giant / frost giant / crystal guardian
MONS:    base draconian
MONS:    glowing shapeshifter w:20 / sphinx w:15 / war gargoyle w:20 / \
         iron dragon w:20 / shadow dragon / golden dragon
MONS:    fire dragon / ice dragon / storm dragon w:8 / moth of wrath w:12 / \
         ghost moth w:5 / tentacled monstrosity w:5 / quicksilver dragon w:5
MONS:    titan / lich / deep elf annihilator w:3 / deep elf high priest w:4 / \
         deep elf sorcerer w:3 / glowing orange brain w:3
MONS:    nonbase draconian w:20 / protean progenitor / killer klown / \
         death cob / curse toe w:5 / ancient lich / dread lich / \
         electric golem / orb of fire w:5
SHUFFLE: EF
SUBST:   E : .
SHUFFLE: ABCDF, GH / GH / GH / HG
NSUBST:  1 = 3:1 / 2:2 / 2:112 / 1:122, 0 = 3:1 / 2:2 / 2:112 / 1:122
NSUBST:  3 = 3:3 / 2:4 / 2:334 / 1:344, 6 = 3:5 / 2:6 / 2:556 / 1:566
SUBST:   % = $%, * = %:3 *:1, | = %:60 *:25 |:15, 1 = 1:3 .:2
SUBST:   2 = 2:2 .:1, 3 = 3:4 .:1, 4 = 4:6 .:1, 5 = 5:6 .:1, 6 = 6:5 .:1
SUBST:   A : v:4 .:1, B : v:7 .:3, C : v:1 .:4, DFH = .
SUBST:   G : v:9 .:1, - : +., + : +:5 .:1, { : {:2 }:3 .:2
NSUBST:  { = 1:{ / 1:( / 1:[ / 1:<, } = 1:} / 1:) / 1:] / 1:>
SUBST:   ( = (:14 >:1 <:1 ):2, [ = [:14 >:1 <:1 ]:2, ) = ):70 >(, ] = ]:70 >[
MAP
       xx@@vvvvv@@xx
      xx..vvvvvvv..xx
      x..vvv6v6vvv..x
     xx.vvv.*v*.vvv.xx
    xx..vv3*|-|*3vv..xx
   xx..Gvvvv+v+vvvvG..xx
 xxx..H.vv0$%-%$0vv.H..xxx
xx...G...vv4$v$4vv...G...xx
x..vvvv...vv.v.vv...vvvv..x
@.vvvvvv..1v...v1..vvvvvv.@
@vvv3v0vv1...A...1vv0v3vvv@
vvv.*v$4vv.BC{DB.vv4$v*.vvv
vv6*|+%$...DEFEC...$%+|*6vv
vvvv-v-vv.A{F<F{A.vv-v-vvvv
vv6*|+%$...CEFED...$%+|*6vv
vvv.*v$4vv.BD{CB.vv4$v*.vvv
@vvv3v0vv1...A...1vv0v3vvv@
@.vvvvvv..1v...v1..vvvvvv.@
x..vvvv...vv.v.vv...vvvv..x
xx...G...vv4$v$4vv...G...xx
 xxx..H.vv0$%-%$0vv.H..xxx
   xx..Gvvvv+v+vvvvG..xx
    xx..vv3*|-|*3vv..xx
     xx.vvv.*v*.vvv.xx
      x..vvv6v6vvv..x
      xx..vvvvvvv..xx
       xx@@vvvvv@@xx
ENDMAP

####
# A bit of sporting fun...
NAME: grunt_zot_stairs_faceoff
DEPTH: Zot, !Zot:$
ORIENT: float
# The competitors:
{{
  local teams = { "black", "yellow", "green", "purple", "red", "white", }

  local team1num = crawl.random2(#teams) + 1
  local team1 = teams[team1num]

  -- ensures we can't roll the same team twice
  teams[team1num] = teams[#teams]

  local team2 = teams[crawl.random2(#teams - 1) + 1]

  mons(team1 .. " draconian")
  mons(team1 .. " draconian knight")
  mons(team2 .. " draconian")
  mons(team2 .. " draconian knight")
}}
# The refs:
MONS:   Killer Klown
# The ball / puck / whatever:
ITEM:   orb

KFEAT:  K = iron_grate
NSUBST: @ = 2:@ / *:x
SUBST:  } = }:80 >, ] = ]:80 >, ) = ):80 >
MAP
  xxxxxxxxxxxxxxxxxxxxxxx
 xx.....................xx
xx..mmmmmm.mmmmm.mmmmmm..xx
x..mm........5........mm..x
@.mm...................mm.@
x.m.KK.....1...3.....KK.m.x
x.m.K}..1.........3...K.m.x
x.m.K.1....2.d.4....3)K.m.x
x.m.K]..1.........3...K.m.x
x.m.KK.....1...3.....KK.m.x
@.mm...................mm.@
x..mm........5........mm..x
xx..mmmmmm.mmmmm.mmmmmm..xx
 xx.....................xx
  xxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

####
# A microcosm of everything Zot: draconians, dragons, weird enemies,
# and fractal vault patterns.
NAME:   grunt_zot_stairs_mandelzot
TAGS:   no_monster_gen
DEPTH:  Zot, !Zot:$
ORIENT: east
MONS:   nonbase draconian, base draconian, moth of wrath
MONS:   fire dragon w:30 / ice dragon w:30 / shadow dragon w:20 / \
        storm dragon w:50 / bone dragon w:30 / golden dragon w:35
MONS:   Killer Klown / electric golem w:5 / \
        curse toe w:5 / protean progenitor w:5
MONS:   orb of fire
SUBST:  2 = 222., 5 = 55.
SUBST:  } = }:80 >, ] = ]:80 >, ) = ):80 >
MAP
                   xxxx
                   xllxxx
                   xllllx
                  xxllllxx
                 xxll.lllxx
              xxxxll.].lllxxxxx
              xllllll..lllllllx
             xxl3l.......lllllx
             xll...2.1.2...3llx
     xxxxxxxxx.l...........lllx
     xllxllxxll.....2.2.....llx
    xxllllllll..............llx
   xxlll....ll...5...........lx
  xxlll.2.2..l............4.llx
xxxlll......................llx
@......2.1.2.3......5..4.}6lllx
xxxlll......................llx
  xxlll.2.2..l............4.llx
   xxlll....ll...5...........lx
    xxllllllll..............llx
     xllxllxxll.....2.2.....llx
     xxxxxxxxx.l...........lllx
             xll...2.1.2...3llx
             xxl3l.......lllllx
              xllllll..lllllllx
              xxxxll.).lllxxxxx
                 xxll.lllxx
                  xxllllxx
                   xllllx
                   xllxxx
                   xxxx
ENDMAP

####
NAME: nicolae_moth_party
TAGS: no_pool_fixup no_monster_gen
DEPTH: Zot, !Zot:$
ORIENT: north
SUBST: l : lw
SHUFFLE: ]})>, 12
MONS: ghost moth, moth of wrath
MONS: any base draconian
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxx......xxxxxxxxx......xxx
xx.3.]....xxx}xxx....).3.xx
x...llll...x...x...llll...x
x..llllll.1..2..1.llllll..x
x..llllll.........llllll..x
x...llll...........llll...x
xx...........3...........xx
xxx......3.......3......xxx
xxxx..3.............3..xxxx
xxxxx.................xxxxx
xxxx...................xxxx
xxx.....................xxx
xx...lll...........lll...xx
xx..lllll..x...x..lllll..xx
xx...lll...x...x...lll...xx
xxx...3...xx...xx...3...xxx
xxxx.....xxx...xxx.....xxxx
xxxxxxxxxxx@@@@@xxxxxxxxxxx
ENDMAP

NAME: nicolae_zot_crop_circle
TAGS: no_monster_gen transparent
DEPTH: Zot, !Zot:1
SHUFFLE: {[(
NSUBST: p = 2:2 / 1:12 / 1
MONS: plant, death cob
MAP
   ..@..
  .......
 ...ppp...
...p...p...
..p.....p..
@.p..{..p.@
..p.....p..
...p...p...
 ...ppp...
  .......
   ..@..
ENDMAP

NAME:    nicolae_zot_stationary_front
TAGS:    transparent no_pool_fixup patrolling
DEPTH:   Zot
ORIENT:  float
KMONS:   R = red draconian scorcher
KMONS:   C = white draconian stormcaller
KMONS:   D = golden dragon
KMONS:   B = blizzard demon
KFEAT:   r = c
SHUFFLE: Gg/Gg/Gg/Hh, Pp/Pp/Pp/Qq
SUBST:   GP = x, g = r, p = c, HQ = @, hq = .
COLOUR:  r = red, c = blue
MAP
    xxx                   xxx
   xxrxx                 xxrxx
  xxrrrxx               xxrrrxx
 xxrrlrrxx             xxrrlrrxx
xxrrlllrrxx           xxrrlllrrxx
xrrllDllrrxxxxxxPxxxxxxrrllDllrrxxxxxxPxxxxx
rrll...llrrcccccpcccccrrll...llrrcccccpccccc
@....R..........C...C..R...R..........C....@
rrrrrgrrrrrccw.....wccrrrrrgrrrrrccw.....wcc
xxxxxGxxxxxxcww...wwcxxxxxxGxxxxxxcww...wwcx
           xccwwBwwccx           xccwwBwwccx
           xxccwwwccxx           xxccwwwccxx
            xxcccccxx             xxcccccxx
             xxxxxxx               xxxxxxx
ENDMAP

NAME:   amethyst_zot_foddershock
TAGS:   no_monster_gen transparent
DEPTH:  Zot, !Zot:$
MONS:   lightning spire, patrolling electric golem
KMONS:  ! = patrolling death cob
NSUBST: % = 2:!, % = 2:a
:dgn.delayed_decay(_G, 'a', 'random draconian corpse')
MAP
@xxxxx@
.......
x.....x
x.%%%.x
x.%1%.x
x2%%%2x
xx...xx
 xxxxx
ENDMAP

# Inspired by a distant submission from nicolae-,
# a revelation: nothing in Zot makes any sense!
NAME:    hangedman_orp_of_zott
TAGS:    no_monster_gen no_trap_gen
DEPTH:   Zot, !Zot:$
ORIENT:  northwest
WEIGHT:  5
# Cheap plastic imitations, mostly. Well, maybe not cheap...
MONS:    hell knight w:6 / very ugly thing / caustic shrike zombie / \
         lorocyproca / crystal guardian / quicksilver ooze / \
         tentacled starspawn / spark wasp / glowing shapeshifter
MONS:    guardian serpent / deep elf annihilator / balrug / \
         deep elf high priest / will-o-the-wisp / acid blob
MONS:    halazid warlock / revenant / apocalypse crab
MONS:    butterfly
ITEM:    stone q:1 no_pickup, large rock q:1 no_pickup, orb randart no_pickup
# Altars obliquely refer to those temple maps.
KFEAT:   C = altar_ecumenical
KFEAT:   D = altar_lugonu / altar_jiyva / altar_beogh w:5 / altar_ignis w:5
KFEAT:   ~ = zot trap
KFEAT:   y = x
SHUFFLE: Xy / Xy / Xy / Aa
NSUBST:  A = 1:. / 19 = X:9 .:1 / *:X
SUBST:   X : X Y Z:4, X = bbbbvvc, Y = bvvvvc, Z = bvvcccc
SUBST:   az = bbvc
NSUBST:  2 = 4 = 2223 / 2 = 122 / 1 = 1.. / *:1
NSUBST:  . = 1:3 / 4:4 / 4:% / *:.
# 1/15 chance for two downward staircases, 9/15 for (only) one.
SHUFFLE: ])defG, fGCD~
# Invert the normal Zot colours.
: local wallc = "darkgray"
: local floorc = "white"
: if you.depth() == 2 then
:   wallc = "yellow"
:   floorc = "darkgray"
: elseif you.depth() == 3 then
:   wallc = "lightred"
:   floorc = "yellow"
: elseif you.depth() == 4 then
:   wallc = "green"
:   floorc = "lightred"
: end
: tile("y = wall_zot_" .. wallc)
: tile("b = dngn_crystal_" .. wallc)
# : tile("n = dngn_transparent_stone_" .. wallc)
: ftile(".123409def%CD~+ = floor_rough_" .. floorc)
TILE:  G = dngn_statue_orb
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xx1.............+''''''''''''''''''''''''''''''
xx1.............+'''''''''''''''''''''''''''''''
xXX......XXXXXXXXXXXXXXX......XXXXXXXXXXXXXX'''''
xzXX......XyyyyyyyyyyyX......XXyyyyyyyyyyyyXX''''
xyyXX.....XXyxxxxxxxyXX.....XXyyxxxxxxxxxxyyXX'''
xxyyXX.....XyxxxxxxxyX1....XXyyxxxxxxxxxxxxyyXX''
xxxyyX....1zzxxxxxxxzz.....XyyxxxxxxxxxxxxxxyyX''
xxxxyX.....zxxxxxxxxxz1....XyxxxxxxxxxxxxxxxxyX'
xxxxyX....Xzx...2...xzX....XyxxxxxxxxxxxxxxxxyX'
xxxyyX....Xzx1x.].x1xzX....XyyxxxxxxxxxxxxxxxyX''
xxyyXX...Xzzzzzz+zzzzzzX...XXyyxxxxxxxxxxxxxzzX''
xxyXX...zzz1....2....1zzz...XXyxxxxd......2zzX'''
xxyX...zzX1...........1Xzz...Xyyyyyyyy1..1zzX''''
xxXX+++z.................z+++XXXXXXXzzzz+zzX''''
xx1....................................112z1'''
xxXX.........................XXXXXXXzzzz+zzX''''
xxyXXXX...................XXXXyyyyyyy1...1zzX''''
xxxyyyXXX...............XXXyyyyxxxe.......2zzX'''
xxxxxyyyXX.............XXyyyxxxxxxxxxxxxxxxxzzX'
xxxxxxxyyX...zzz1zzz...XyyxxxxxxxxxxxxxxxxxyyXX'
xxxxxxxxyX..Xz1z+z1zX..XyxxxxxxxxxxxxxxxxxxyXX'''
xxxxxxxxyX.2zzX%%%Xzz2.XyxxxxxxxxxxxxxxxxxyyX'''
xxxxxxxxyzzzz1.%)%.1zzzzyxxxxxxxxxxxxxxxxxyX1''
xxxxxxxxyX''zzX%%%Xzz''XyxxxxxxxxxxxxxxxxxyyX'''
xxxxxxxxyX''Xz2zzz2zX''XyxxxxxxxxxxxxxxxxxxyXX'''
xxxxxxxyyX'''zzz'zzz'''XyyxxxxxxxxxxxxxxxxxyyXX'
xxxxxyyyXX'''''''''''''XXyyyxxxxxxxxxxxxxxxyyXX'
xxyyyyXXX'''''''''''''''XXXyyyyxxxxxxxxxyyyyXX'''
xyyXXXX'''''''''''''''''''XXXXyyyyyyyyyyyXXXX'''
xXXX'''''''''''''''''''''''''XXXXXXXXXXXXX'''''
xx''''''''''''''''''''''''''''''''''''''''''''
   ''''''   ''''@''''   '''''''''   '''''''''
ENDMAP

# Originally a submitted wizlab of "Nikola's Generator",
# with random drops of summoned ball lightning.
# Uncontrolled blinks near the turbines are dangerous!
NAME:   infiniplex_zot_generator
TAGS:   no_pool_fixup no_item_gen no_monster_gen no_trap_gen
DEPTH:  Zot, !Zot:$
ORIENT: south
MONS:   shock serpent w:14 / sixfirhy / air elemental w:6
MONS:   black draconian ; cloak . mundane staff of air
MONS:   war gargoyle / dancing weapon ; scimitar good_item / spark wasp w:5
MONS:   black draconian stormcaller / black draconian shifter / storm dragon
MONS:   ghost moth / moth of wrath / death cob / \
        tentacled monstrosity / killer klown w:5
MONS:   patrolling electric golem
MONS:   patrolling black draconian annihilator ; cloak good_item . \
        rapier ego:electrocution
KMONS:  O = diamond obelisk
KMONS:  S = lightning spire
ITEM:   lightning rod, book of lightning
: local e = "ego:electrocution good_item ident:type"
: item("quickblade " .. e .. " w:5 / double sword " .. e .. " w:5 / " ..
:      "executioner's axe " .. e .. " w:5 / eveningstar " .. e .. " w:5 / " ..
:      "bardiche " .. e .. "w:5 / lajatang " .. e .. " w:5 / " ..
:      "rapier " .. e .. " / scimitar " .. e .. " / dire flail " .. " / " ..
:      "broad axe " .. e .. " / trident " .. e .. " / quarterstaff " .. e)
ITEM:   scroll of blinking q:1 / scroll of blinking q:2 / \
        scroll of teleportation q:3 w:30 / any scroll good_item / \
        staff of air randart
KFEAT:  yz = w
KFEAT:  YZ" = W
KFEAT:  # = iron_grate
NSUBST: . = 4:1 / 4:2 / 3:3 / 3 = 123. / *:., ' = 2:3 / 6:4 / 4 = 34455 / *:.
NSUBST: d = 1:d / 1:|ee / *:f, f = 2:f / *:g
SUBST:  ` = ., ) = )>>
KPROP:  -_ly"O> = no_tele_into
MARKER: - = lua:fog_machine { cloud_type = "steam", walk_dist = 3, \
                              pow_max = 100, pow_min = 10, delay = 20, \
                              size = 1, start_clouds = 5, excl_rad = 0 }
TILE:   v = dngn_metal_iron
FTILE:  -_ = floor_pebble_darkgray
MAP
                 vvvvvvvvv
                 vd`d`d`dv
                 v```7```v         vvvvv
                 vf``'``fv         vyyyv
                 v``6`6``v         vyyyv
                 vf`````fv         vyyyv
   vvvvvvvvvvvvvvv###S###v         vyyyv
   v..............```````v         vyyyv
   v.S...S...S...S```'```vvvvvvvvvvv###vvv@vvv
   v...'...'...'..`````````````````#www#.....v
   v.'...}...)...'```'```````````f`#www#..'..v
   v..............`````````````````#www#.....v
   vvvvvvWWvvvvvvvvvvvvvvv##########www#.....v
   vyywwwWWwwwwwwwwwwwwwwwwwwwwwwwwwwww#..'..v
 vvvy#ww#WW##########wwwwwwwwwwwwwwwwww#.'.'.v
 vyyy#yy#...........#w################w#..'..v
 vyyy#yy#...........#w#..............#w#.....v
 vyyy#yy#...........#w#..............#w#.....v
 v__-#yyvvv.........#w#5.............#w#..'..v
vvvvv#yyyyvv5...WWvvvwvvvWW..........WWW.....v
vllll-yy###vvvvvvWWWvwvWWW#########..WWW.....v
vllll_y##"""""""vvWWvwvWW##"""""""#vvvwvvvv..v
vvvvvv##"""""""""vvWvwvW##"""""""""vvvwwwwv..v
xxxxxvv"""""""""""#WWWWW#"""""""""""vvww#wv..v
    xvv"""""""""""##WWW##"""""""""""vvww#wv..v
    xv"""""""""""""#WWW#"""""""""""""vyy#wv..v
    xv>"""""O""""">#WWW#>"""""O""""">vyy#yv..v
    xv"""""""""""""#WWW#"""""""""""""vyy#y'..v
    xvv"""""""""""##WWW##"""""""""""vvyy#yY..v
    xxv"""""""""""#WWWWW#"""""""""""vyyy#yYY.v
     xvv"""""""""##Wv#vW##"""""""""##yyy#yYYYv
     xxvv"""""""##vvvyvvv##"""""""##__-_#yYYYv
      xxvvvvvvvvvvvxvyvxvvvvvvvv###__ll_#-YYYv
       xxxxxxxxxxxxxvyvxxxxxxxxvvvvvvllvvvvvvv
        xxxxxxxxxxxxvyvxxxxxxxxxxxxxvllvxxxxxx
        xxxxxxxxxxxxvyvxxxxxxxxxxxxxvllvx
        xxxxxxxxxxxxvyvxxxxxxxxxxxxxvvvvx
        xxxxxxxxxxxxvvvxxxxxxxxxxxxxxxxxx
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

NAME:   cheibrodos_zot_enchanting_chambers
TAGS:   no_item_gen no_monster_gen
DEPTH:  Zot
ORIENT: float
MONS:   purple draconian, nonbase purple draconian
MONS:   quicksilver dragon, killer klown
NSUBST: - = 2:1 / 3=112.. / 1 = 3:1 ., " = 1:1 / 3=122. / 1=34
NSUBST: ' = 2:1 / 2=12 / 2:3 / 1=34.., ; = 2:1 / 3=112.. / 1=3:1 .
NSUBST: _ = 1:1 / 3=122. / 1=34, p = 2:1 / 2=12 / 2:3 / 1=34..
SUBST:  | = |*
MAP
      xxxxx xxxxx xxxxx
     xxpppxxx___xxx;;;xx.
     x|ppp.b____.b;;;;.b.
     x|ppb.+_b_b.+;b;;.+@
     x|ppp.b____.b;;;;.b.
     xxpppxxm___xxx;;;xx.
      xxxxxm...mxxxxxxx
   xxxxxxxm...mxxxxx
 .xx---xxx"""mxx'''xx
 .b.----b.""""b.'''|x
 @+.--b-+.b"b"+.b''|x
 .b.----b.""""b.'''|x
 .xx---xxx"""xxx'''xx
   xxxxx xxxxx xxxxx
ENDMAP

##############################################################################
# The circus has come to town

# A manic carousel. The carnie operators are in the center, behind the
# mechanicals surrounded by the ride and riders.
#
# The player either comes downstairs and finds themselves on the ride,
# or needs to fight through the crowd lined up to find the way down.
NAME:    ebering_klown_carousel
TAGS:    no_monster_gen no_trap_gen
DEPTH:   Zot, !Zot:$
ORIENT:  float
MONS:    killer klown, ancient lich / dread lich, death cob
NSUBST:  - = 2 / 3 = 3.. / *:.
: if (crawl.coinflip()) then
NSUBST:  > = 1 = }:80 > / 1 = ):80 > / 1 = ]:80 >
SUBST:   1 = 1 0:30 .
: else
NSUBST:  G = 3={[( / *:G
NSUBST:  1 = 6 = 1. / *=0...
NSUBST:  > = >. / *:.
: end
NSUBST:  ^ = 4:^ / *=^..
SUBST:   a = aaax.
KFEAT:   a = iron_grate
KFEAT:   ^ = dispersal trap
: coloured_glass(_G)
MAP
         ...........
       ...............
      .....vxxrxxo.....
     ....xvv1r1r1oox....
    ....bbx...^...xyx....
    ...gx1.........1xx...
......xg1^....G....^1gx...
......yx..G.......G..xb...
...V.xy......aaa......bb..
.V...xo.....a---a.....1x..
.....^.....a-->--a....ix..
......1^1G.a->---a.G1^1i..
.....^.....a-->--a....ix..
.V...xo.....a---a.....1x..
...V.xr......aaa......vv..
......rx..G.......G..xv...
......xv1^....G....^1rx...
    ...vx1.........1xr...
    ....iix...^...xoo....
     ....xbb1g1g1yyx....
      .....bxxgxxy.....
       ...............
         ...........
ENDMAP

# The three ring circus, with the player descending in mid show
NAME:    ebering_greatest_show_in_zot
TAGS:    no_monster_gen no_trap_gen
DEPTH:   Zot, !Zot:$
ORIENT:  float
SUBST:   x : x b:1
SUBST:   < = {[(
KFEAT:   ^ = alarm trap / zot trap
# The possible acts:
MONS:    red draconian scorcher, red draconian, juggernaut
MONS:    tentacled monstrosity, ancient lich, electric golem
MONS:    purple draconian
SHUFFLE: ABCDEFHI
# Fire breathers: Red draconians, with some scorchers
NSUBST:  A = 3 = 112 / 9 = 2. / *:.
# The strongman (juggernaut) and Contortionists (tentacled mons)
NSUBST:  B = 3 / 8 = 4. / *:.
# The Magic act: An Ancient Lich and elec golems
NSUBST:  C = 5 / 6 / 2 = 6. / *:.
# The Acrobats: grey draconians, with some monks, and nets
NSUBST:  D = 3 = qqp / 9 = p. / 9 = - / *:.
KMONS:   p = grey draconian
KMONS:   q = grey draconian monk
KFEAT:   - = net trap
# The Beasts: moths and Dragons
NSUBST:  E = 3 = r. / 6 = ss. / *:.
KMONS:   r = moth of wrath / ghost moth
KMONS:   s = quicksilver dragon / storm dragon / \
             shadow dragon / iron dragon / \
             bone dragon / golden dragon w:5
# The Freakshow: death cobs and maybe a curse toe or protean
NSUBST:  F = 8 = z. / 1 = y .:50 / *:.
KMONS:   y = curse toe
KMONS:   z = death cob / protean progenitor w:6
# The Jugglers:  draconian shifters and purple draconians
NSUBST:  H = 3 = aa7 / 9 = 7. / *:.
KMONS:   a = draconian shifter
# Those laffy daffy Klowns
NSUBST:  I = 8 = k. / *:.
KMONS:   k = killer klown
MAP
               xxx
             xxxlxxx
  xxxxx    xxxl...lxxx    xxxxx
 xxAAAxxxxxxl..BBB..lxxxxxxCCCxx
xxAAAAAxxxxl..BBBBB..lxxxxCCCCCxx
+AA...AA.....BB...BB.....CC...CC+
+AA.<.AAG.l..BB.<.BB..l.GCC.<.CC+
+AA...AA.....BB...BB.....CC...CC+
xxAAAAAxxxxl..BBBBB..lxxxxCCCCCxx
 xxAAAxxxxxxl..BBB..lxxxxxxCCCxx
  xxxxx    xxxl...lxxx    xxxxx
             xx+++xx
             Gx...xG
             .......
             ...V...
             .......
             ..m^m..
             ..m7m..
             @@mmm@@
ENDMAP

##############################################################################
NAME:    hangedman_player_shredder
TAGS:    transparent no_monster_gen no_item_gen no_pool_fixup
DEPTH:   Zot:1-4
KMONS:   01 = ghost moth
KMONS:   23 = golden dragon
KMONS:   45 = nonbase draconian
KMONS:   67 = protean progenitor
KMONS:   89 = killer klown
KMONS:   AB = curse toe
KMONS:   CD = electric golem
KMONS:   E = orb of fire
KMONS:   F = ancient lich / dread lich
KMONS:   ! = base draconian w:30 ; cloak . great sword good_item | \
             battleaxe good_item | bardiche good_item | great mace good_item / \
             fire dragon / ice dragon / storm dragon / bone dragon w:5
KMONS:   ? = moth of wrath / death cob w:2 / guardian mummy w:2
KITEM:   % = % / * w:2
KMONS:   H = iron dragon
SHUFFLE: abcdefghij / bacdegfhij / bcadeghfij / bcdaeghifj / bcdeaghijf, ghij, ^~
SUBST:   a = +, bcde = v, fgh = %, i = P, j = p
NSUBST:  } : 1:P / 1:p / *:%, p : 1:P / *:%
SHUFFLE: HI, PQRS|, 0246' / 1357", 0246', 1357", 02468ACE, 13579BDF
NSUBST:  P = 1:{ / 1:} / 1 : [:1 ]:1 %:16, Q = 1:{ / 1 : [:8 <:1 / 1 : (:1 %:8
NSUBST:  RS = 1:} / 1 : ]:8 >:1 / 1 : ):1 %:8
SUBST:   I = G, ~ : wv., ` : wv., ^ = ., % : %:9 .:1, % = %:499 |:1
MAP
.........................
.vv...vv+vv...vv+vv...vv.
.vvv+vv.!.vv+vv.!.vv+vvv.
.vv.!.vvbvv.!.vvdvv.!.vv.
.vvvavv%g%vvcvv%i%vvevvv.
.vv%f%vv+vv%h%vv+vv%j%vv.
.vvv+vv.2.vv+vv.6.vv+vvv.
.vv.0.v...v.4.v...v.'.vv.
.vv...vv+vv...vv+vv...vv.
.vvv+vv...vv+vv...vv+vvv.
.vv...................vv.
?vv..~`^I~`^.~`^.~`^H.vv?
.vv.H^`~.^`~.^`~I^`~..vv.
.vv...................vv.
.vvv+vv...vv+vv...vv+vvv.
.vv...vv+vv...vv+vv...vv.
.vv.1.v...v.5.v...v.".vv.
.vvv+vv.3.vv+vv.7.vv+vvv.
.vv%}%vv+vv%}%vv+vv%}%vv.
.vvvvvv%}%vvvvv%}%vvvvvv.
.vv.G.vvvvv.G.vvvvv.G.vv.
............?............
ENDMAP

NAME:   dreamdust_zin_vs_xom
TAGS:   no_monster_gen
ORIENT: float
DEPTH:  Zot
MONS:   angel god:zin dbname:zin_angel
MONS:   killer klown / protean progenitor w:5
MONS:   chaos spawn, glowing shapeshifter
KMONS:  s = killer klown-shaped pillar of salt
KMONS:  f = butterfly
KFEAT:  _ = altar_zin
KFEAT:  O = altar_xom
KFEAT:  ^ = dispersal trap
NSUBST: - = 4=s / 4=s- / -
NSUBST: ? = O / 2=^ / 2=2 / 2=2? / 2=t / ?
SUBST:  ? = ":400 n:30 x:40 v b ^
SUBST:  " = ":200 W:100 O:30 f 3 4 T U V Y
COLOUR: " = random
COLOUR: v = white
FTILE:  _`1 = floor_w_marble
TILE:   G = dngn_statue_angel
TILE:   v = dngn_metal_wall_white
MAP
xxxxxxxxx@xxxxxxxxx
x........."?"?"?"?x
x.......---"?"?"?"x
xvvvvnG.---?"?"?"?x
xv`1`vv.---"?"?"?"x
xv_`1`1.---?"?"?"?x
xv`1`vv.---"?"?"?"x
xvvvvnG.---?"?"?"?x
x.......---"?"?"?"x
x........."?"?"?"?x
xxxxxxxxx@xxxxxxxxx
ENDMAP

##############################################################################
# some more fun and exciting stair vaults

NAME:   hellmonk_body_bag
TAGS:   no_monster_gen transparent
DEPTH:  Zot, !Zot:$
MONS:   toenail golem w:1 / glowing orange brain / golden eye band
MONS:   shining eye / glass eye w:5, bone dragon, curse toe / curse skull
SUBST:  ' = c., V:VYY
NSUBST: - = 16 = 1... / 16 = 2... / 16 = 3... / 16 = 4... / .
NSUBST:  > = 1 = ):80 . / 1 = ]:80 . / 1 = }:80 >
MAP
  ccccccc
 ccc>>>ccc
 cc-----cc
 c'--c--'c
 c-'-c-'-c
cc--ccc--cc
c----c----c
c--c-'-c--c
c'cc'V'cc'c
c--c-'-c--c
c-'--c--'-c
c---ccc---c
c--'-c-'--c
c-'--'--'-c
cc-ccccc-cc
 c--ccc--c
 c..ccc..c
 c.'.c.'.c
 c'..c..'c
 c...c...c
 cc.....cc
 cc.....cc
  ccc+ccc
     @
ENDMAP

NAME:   hellmonk_formless_pools
TAGS:   no_monster_gen transparent no_pool_fixup
DEPTH:  Zot, !Zot:$
MONS:   protean progenitor
MONS:   glowing shapeshifter hd:20 / glowing shapeshifter hd:18
SUBST:  - : Ac, A : lw
NSUBST: ' = 2:1 / 3:2 / 2 = 1... / 8 = 2... / .
NSUBST: < = 1 = }. / 1 = ). / 1 = ]<
TILE:   G = dngn_statue_tentacles
MAP
   @@@@@
 cc+++++cc
 cG..-..Gc
 c...-...c
 c...-...c
 c'''''''c
cc''''''Gc
cG''ccccccc
cA'ccc'<'ccc
cA'cG''G''Gc
cA'cc<'''<cc
cG''ccc''cc
cc'''''''c
 ccGAAAGcc
  ccccccc
ENDMAP

NAME:   hellmonk_crystal_mountain
TAGS:   transparent ruin
ORIENT: north
DEPTH:  Zot, !Zot:$
MONS:   lich , ancient lich / dread lich
NSUBST: . = 4 = 2. / 16 = 1... / 12 = 8... / 12 = 0...
NSUBST:  < = 1 = {([. / 1 = )}].
TILE:   G = dngn_gravestone
MAP
bbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbb
bb.......bbb.......bb
b......<.bbb.<......b
b..bbb...bbb...bbb..b
b.bbbbbbbbbbbbbbbbb.b
b..bbb...bbb...bbb..b
b......G..b..G......b
bb........b........bb
bbbb..bbb.b.bbb..bbbb
 bbb.bbbbbbbbbbb.bbb
  bb..bbb.b.bbb..bb
  bb......b......bb
   bb.....b.....bb
   bbbb..bbb..bbbb
    bbb..bbb..bbb
     bb..bbb..bb
     bb...b...bb
      bb.....bb
      bbbb.bbbb
       bb@@@bb
ENDMAP

NAME:    hellmonk_zot_clocked
TAGS:    transparent no_monster_gen no_exits
DEPTH:   Zot:2-4
WEIGHT:  5
MONS:    death cob, iron golem
SHUFFLE: Dd / Ee / Ff / Hh
SUBST:   D = v, d = )}], EeFfHh = ., < = ({[
NSUBST:  '  = 1:1 / 1:2 / 16 = 1... / 16 = 2.....
NSUBST:  - = 1 = B:1 G:26 / *:G
KFEAT:   B = altar_cheibriados
TILE:    G = dngn_statue_snail
MAP
      ccccc
    ccc'-'ccc
   cc-'''''-cc
  cchH''n''''cc
 cc''HH'n''''dcc
 c-'''Hcnc''DD-c
cc''''ccnccDD''cc
c''''ccHnDcc''''c
c-FFF+FF<..+'''-c
cf'''cc..Ecc''''c
cc''''cc.cc''''cc
 c-''''c+cE'''-c
 cc'''''''EE''cc
  cc'''''''Eecc
   cc-'''''-cc
    ccc'-'ccc
      ccccc
ENDMAP

NAME:   hellmonk_greenhouse_of_terror
TAGS:   no_monster_gen no_descent
DEPTH:  Zot:2-, !Zot:$
MONS:   orb of fire, bush
NSUBST: . = 1:1 / .
SUBST:  > = )}], < = ({[
MAP
  ttttt
  t.>.t
  t.t.t
 tt.t.tt
tt..t..tt
t...t...t
t.tt2tt.t
t...t...t
tt..t..tt
 tt.t.tt
  t.t.t
  t.<.t
  ttttt
ENDMAP

##############################################################################

NAME:    regret_index_zot_pan_timeshare
TAGS:    no_monster_gen patrolling transparent
DEPTH:   Zot, !Zot:$
ORIENT:  float
MONS:    glass eye, protean progenitor, blizzard demon
MONS:    draconian annihilator, balrug, draconian scorcher, executioner
KMONS:   8 = curse toe
NSUBST:  1 = 2:1 / 2:2 / 1 = 112. / *:.,  3 = 3:3 / 2:4 / 4 = 334. / *:.
NSUBST:  5 = 2:5 / 2:6 / 4 = 556. / *:., 7 = 1:7 / 1:8 / 3 = 7.. / 2 = 8.. / *:.
SHUFFLE: {([}
SUBST:   ( = (:40 U, [ = [:40 Y
SUBST:   a = b.., d = c.., u = v.., y = x..
# fudged a little for Lom, admittedly.
TILE:    V = dngn_metal_wall_brown
TILE:    B = dngn_crystal_white
TILE:    X = wall_hall_darkgray
TILE:    C = dngn_stone_wall_yellow
SUBST:   V = v, X = x, B = b, C = c
MAP
        .........      ..............
      ............    ....a..b..bbbb..b
     c...ccccc.c...  .bbb...bbbbb33bbbbb
    ccc...ccc........bb....bbb3......%bbb
   ccccc...c..cc.....bb.....b3........%b.
  cccc.....d...cc.....bb....b..........b..
 ..cc..ccc.....1cc.....bb..bb..........bb.
 ...c.ccc...cc..1cc.....b..+.....BB....3b.
......cc...cc1...1cc....b..+.....BB....3b.
..c...c...cc..1cc..c...bb..bb...(......bb.
..cc.....cc...Cc......bb...3b..........b..
..cccd..cc.{.Cc..d...bb..a..b.........3b..
..cc...cc...cc..c..c.bb.....bb.......3bbb.
..c....c1..Cccc%..cc..bb....3bbbb..bbbbb..
....c....1Cc.ccc.cc......bb3...3b++b..b...
..c.cc1..cc..%cccc......bbbb............a.
.....cc1.c..c..cc.......bbbb..a...........
......cc1..d..cc...c.....bb.....bbbb...b..
 ......cc....cc...cc..bb....b..bb..bb..b..
   .....cc..cc...ccc..bb....bbbb....bbbb.
   ..........................bb......bb.
  ......vvvv...........................
 ....vvvv5.vvvv.......y.x.x.x.x.x.x.x.x.
.vv+vv.....5..vvvvv......x.x.x.x.x.x.x...
 v...v.u......v5.%v...x.................x.
 v%.5+...v....+...v....x.xx+++xxxxxxxx.x..
 v...v...v....v..5v...x..x.7.....7xxxx..x.
.vv+vv...v....Vv+vvv...x.+7...y....xxx.x..
.........vV........v..x..+..7x.x...%xx..x.
.......u.5vv[......v...x.+..x7X..x..7x.x..
vv.........Vv.....5vv.x..x.y.X.X.x.x.x..x.
v...vvv5....vV......v..x.x..x.X}.xx7xx.x..
v.....vv....5vvvv..5v.x..x......xx.x.x..x.
vv.....vv..........vv..x.x7..xxxxx...+.x..
v.......vv5.u....u.v..x..xx....x.....+..x.
v........vv........v...x.xxx%.x7x..y.+.x..
vvv+vv....v...vv+vvv..x..xxxx7.x.....x..x.
 v...v....v...v.5.v....x.xxxxxxxx+++xx.x.
 v...+........+...+...x.................x
 v%..v........v.%.v.. ...x.x.x.x.x.x.x.
 vvvvv..v..v..vvvvv.   .x.x.x.x.x.x.x.x
     vvvvvvv...   .      ............
ENDMAP

##############################################################################
##############################################################################
#
# <<4>> hall_of_Zot_5
#
##############################################################################
##############################################################################

NAME:    hall_of_Zot
PLACE:   Zot:$
ORIENT:  north
TAGS:    no_dump no_trap_gen
KITEM:   R = prismatic gem
KITEM:   Z = Orb of Zot
MONS:    patrolling orb guardian, orange crystal statue / w:20 obsidian statue
MONS:    electric golem, killer klown, ancient lich / dread lich, orb of fire
# Traps to spread throughout the vault. Fewer alarm traps as those have a big
# effect on the vault as a whole.
KFEAT:   ~ = zot trap / dispersal trap / permanent teleport trap / net trap \
             / alarm trap w:5
# Flat distribution of traps for specific sections.
KFEAT:   ^ = zot trap / dispersal trap / permanent teleport trap / alarm trap \
             / net trap
KMASK:   ^~ = no_item_gen
# Place a minimum number of traps and some extra liches in each lower wing.
NSUBST:  d = 2=5. / 4=~ / ., h = 2=5. / 4=~ / .
# In a each upper wing, place a few monsters along with locations for the main
# monster set on '?'. Use more central areas in the upper wings to do this.
NSUBST:  f = 3 / 4 / 6 / 9 = ? .:8 / e, k = 3 / 4 / 6 / 9 = ? .:8 / j
# Minimum number of traps in each upper wing.
NSUBST:  e = 4=~ / ., j = 4=~ / .
# Each upper wing has equal chance to get one of three sets that most heavily
# weight a specific monster: killer klown, ancient lich, or orb of fire.
SUBST:   ? : KLM
SUBST:   K = 0 4:40 5 6 ., L = 0 4 5:40 6 ., M = 0 4 5 6:40 .
# Make a final sprinkling of traps throughout the vault.
SUBST:   . = ~ .:600
# Put traps in wing entrances with decreased odds on one side to make double
# trapped entrances rarer.
SUBST:   D = ^..., H = ^.
# For upper-wing entrances, sometimes put statue monsters, traps, or statues.
SUBST:   E = 2 ^:20 G .:80, J = 2 ^:20 G .:80
# For the orb chamber, some guaranteed and random traps. About 4 on-average.
NSUBST:  - = 2=^ / * = ^ .:240
# Colours
COLOUR:     cX = lightmagenta
LFLOORCOL:  magenta
LROCKCOL:   lightmagenta
LFLOORTILE: floor_rough_magenta
LROCKTILE:  wall_zot_lightmagenta
validate {{ return has_exit_from_glyph('Z') }}
MAP
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXeeeeeeeeeeeeeXXXXXXXXXXXXXXXXXXXXXXXXXjjjjjjjjjjjjjXXXXXXXXXXXXXX
XXXXXXXXXXXXeeeeeeeeeeeeeeeeeeeXXXXXXXXXXXXXXXXXXXjjjjjjjjjjjjjjjjjjjXXXXXXXXXXX
XXXXXXXXXXXeeeeeeeeeeeeeeeeeeeeeeXXXXXXXXXXXXXXXjjjjjjjjjjjjjjjjjjjjjjXXXXXXXXXX
XXXXXXXXXXeeeeeeeeeeeeeeeeeeeeeeeeXXXXXXXXXXXXXjjjjjjjjjjjjjjjjjjjjjjjjXXXXXXXXX
XXXXXXXXXXeeeeeeefffffffffffffeeeeXXX---1---XXXjjjjkkkkkkkkkkkkkjjjjjjjXXXXXXXXX
XXXXXXXXXXXeeeeeefffffffffffffeeeeXX--1---1--XXjjjjkkkkkkkkkkkkkjjjjjjXXXXXXXXXX
XXXXXXXXXXXXeeeeefffffffffffffeeeeX1---------1XjjjjkkkkkkkkkkkkkjjjjjXXXXXXXXXXX
XXXXXXXXXXXXXeeeefffffffffffffeeeee--1--Z--1--jjjjjkkkkkkkkkkkkkjjjjXXXXXXXXXXXX
XXXXXXXXXXXXeeeeefffffffffffffeeeeX1---------1XjjjjkkkkkkkkkkkkkjjjjjXXXXXXXXXXX
XXXXXXXXXXXeeeeeefffffffffffffeeeeXX--1---1--XXjjjjkkkkkkkkkkkkkjjjjjjXXXXXXXXXX
XXXXXXXXXXeeeeeeefffffffffffffeeeeXXX---1---XXXjjjjkkkkkkkkkkkkkjjjjjjjXXXXXXXXX
XXXXXXXXXXeeeeeeefffffffffffffeeeecXXXXXXXXXXXcjjjjkkkkkkkkkkkkkjjjjjjjXXXXXXXXX
XXXXXXXXXXXeeeeeeeeeeeeeeeeeeeeeecccccccccccccccjjjjjjjjjjjjjjjjjjjjjjXXXXXXXXXX
XXXXXXXXXXXXeeeeeeeeeeeeeeeeeeeXcccccccccccccccccXjjjjjjjjjjjjjjjjjjjXXXXXXXXXXX
XXXXXXXXXXXXXeeeeeeeeeeeeeeeXXXXcccccccccccccccccXXXXjjjjjjjjjjjjjjjXXXXXXXXXXXX
XXXXXXXXXXXXXXE111EccXXXXXXXXXXXcccccccccccccccccXXXXXXXXXXXccJ111JXXXXXXXXXXXXX
XXXXXXXXXXXccdddddddddddddddDD1.ccccccccccccccccc.1HHhhhhhhhhhhhhhhhccXXXXXXXXXX
XXXXXXXXXXccddddddddddddddddcc1...ccccccccccccc...1cchhhhhhhhhhhhhhhhccXXXXXXXXX
XXXXXXXXXccddddddddddddddddddccc...ccccccccccc...ccchhhhhhhhhhhhhhhhhhccXXXXXXXX
XXXXXXXXXcddddddddddddddddddddccc...............ccchhhhhhhhhhhhhhhhhhhhcXXXXXXXX
XXXXXXXXXcddddddddddddddddddddcXcc......R......ccXchhhhhhhhhhhhhhhhhhhhcXXXXXXXX
XXXXXXXXXcddddddddddddddddddddcXXc.............cXXchhhhhhhhhhhhhhhhhhhhcXXXXXXXX
XXXXXXXXXcddddddddddddddddddddcXXcc.1...1...1.ccXXchhhhhhhhhhhhhhhhhhhhcXXXXXXXX
XXXXXXXXXcddddddddddddddddddddcXXXc...........cXXXchhhhhhhhhhhhhhhhhhhhcXXXXXXXX
XXXXXXXXXcddddddddddddddddddddcXXcc...........ccXXchhhhhhhhhhhhhhhhhhhhcXXXXXXXX
XXXXXXXXXccddddddddddddddddddccXXc.............cXXcchhhhhhhhhhhhhhhhhhccXXXXXXXX
XXXXXXXXXXccddddddddddddddddccXXcc.............ccXXcchhhhhhhhhhhhhhhhccXXXXXXXXX
XXXXXXXXXXXccddddddddddddddccXXXc...............cXXXcchhhhhhhhhhhhhhccXXXXXXXXXX
XXXXXXXXXXXXccccccccccccccccXXXXcccccccc@ccccccccXXXXccccccccccccccccXXXXXXXXXXX
ENDMAP

# There's few vaults on Zot:5, tone down their chances.
NAME: dummy_balancer_zot
TAGS: dummy
DEPTH: Zot:$
ORIENT: float
WEIGHT: 60
MAP
x
ENDMAP

##############################################################################
##############################################################################
#
# <<5> Colouring the walls and floors of each floor
#
##############################################################################
##############################################################################

NAME:       hall_of_Zot_1
TAGS:       extra transparent allow_dup no_dump
DEPTH:      Zot:1
CHANCE:     100%
LFLOORCOL:  lightgrey
LROCKCOL:   white
LFLOORTILE: floor_rough_lightgray
LROCKTILE:  wall_zot_white
MAP
.
ENDMAP

NAME:       hall_of_Zot_2
TAGS:       extra transparent allow_dup no_dump
DEPTH:      Zot:2
CHANCE:     100%
LFLOORCOL:  white
LROCKCOL:   blue
LFLOORTILE: floor_rough_white
LROCKTILE:  wall_zot_blue
MAP
.
ENDMAP

NAME:       hall_of_Zot_3
TAGS:       extra transparent allow_dup no_dump
DEPTH:      Zot:3
CHANCE:     100%
LFLOORCOL:  blue
LROCKCOL:   lightblue
LFLOORTILE: floor_rough_blue
LROCKTILE:  wall_zot_lightblue
MAP
.
ENDMAP

NAME:       hall_of_Zot_4
TAGS:       extra transparent allow_dup no_dump
DEPTH:      Zot:4
CHANCE:     100%
LFLOORCOL:  lightblue
LROCKCOL:   magenta
LFLOORTILE: floor_rough_lightblue
LROCKTILE:  wall_zot_magenta
MAP
.
ENDMAP
