################################################################################
# vaults_rooms_hard.des: Subvaults for the Vaults.
#
# Content: These are the subvaults that place a large number of monsters and
#          out of depth monsters.
#
# <<1>>      Abstract / generic threat
# <<2>>      Themed threat
#
################################################################################
#
# All of the subvaults in here should use the tag vaults_hard. Using
# vaults_hard_standard(_G) will deploy the tag and also use distinct floor
# tiles, which should be used unless the vault's theme deploys other floor
# tiles.
#
# You can additionally use the following tags:
# vaults_orient_n vaults_orient_s vaults_orient_e vaults_orient_w
# no_windows no_wall_fixup
#
# vaults_orient_x: controls the entry points to the subvault.
# A subvault using vaults_orient_n will always be entered from the north side,
# as it appears in the .des. Multiple orient tags may be used.
#
# no_windows: prevents the layout from creating windows into the subvault.
#
# no_wall_fixup: prevents the layout from changing rock into the same wall type
# as the rest of the floor.
#
################################################################################

: crawl_require('dlua/vault.lua')

{{
function init_protected_by_tso(e)
  local h = "ego:holy_wrath good_item"
  e.tags('uniq_protected_by_tso')
  e.tags('vaults_hard')
  e.kmons('A = angel')
  e.kmons('1 = generate_awake daeva')
  e.kmons('2 = vault warden ; great sword ' .. h .. ' | battleaxe .. ' .. h ..
                             'glaive ' .. h .. ' | great mace ' .. h .. ' . ' ..
                             ' . chain mail | plate armour')
  e.kmons('3 = generate_awake vault guard / \
               generate_awake ironbound mechanist w:2')
  e.kfeat('A = altar_the_shining_one')
  e.kitem('A = any weapon ego:holy_wrath w:2 no_pickup / $')
  e.lua_marker('!', message_at_spot("You almost think you hear a voice: " ..
                                    "\"Seek not undue power, mortal.\"",
                                    "warning"))
  e.tile('G = dngn_statue_angel')
end

-- This is the header for st's "greater box" vaults.
function st_box_setup(e)
  e.tags("no_item_gen")
  e.subst("% = %%%**|$")
  e.kmons("7 = patrolling vault guard")
  e.kmons("Z = frost giant / fire giant / titan w:5 / ettin / shadow dragon /\
               golden dragon w:5 / storm dragon / quicksilver dragon w:2 /\
               iron dragon w:2 / swamp dragon / fire dragon / ice dragon /\
               catoblepas / crystal guardian / eye of devastation / \
               glowing orange brain / nagaraja / guardian serpent /\
               vampire knight / vampire mage / lich / deep elf sorcerer /\
               deep elf death mage / deep elf demonologist /\
               deep elf annihilator / deep elf high priest / orc warlord /\
               base draconian w:15 / guardian sphinx / glowing shapeshifter")
  e.subst("0 = 0:9 Z:1")
  e.subst("9 = 9:3 Z:1")
end
}}

###############################################################################
#
# <<1>> Generic threat vaults.
#
###############################################################################

NAME:     vaults_room_glass_cross
NSUBST:   y = 1:+ / *:x
SUBST:    w : ....x, m : mmmx, * = *%
KITEM:    8 = $
NSUBST:   9 = 1:9 / *:000009
NSUBST:   8 = 1:9 / *=09
: vaults_hard_standard(_G)
MAP
ww......ww
ww......ww
..9xmmx9..
..xy.8yx..
..m.*%.m..
..m.%*.m..
..xy8.yx..
..9xmmx9..
ww......ww
ww......ww
ENDMAP

NAME:     vaults_room_hangedman_quadrants
SUBST:    $ = $%., * = *|, = : -., - : +:4 $:1
: vaults_hard_standard(_G, true)
MAP
xx.x.xx
x9$x$9x
.$*-*$.
xx=x=xx
.$*-*$.
x9$x$9x
xx.x.xx
ENDMAP

NAME:     vaults_room_guarded_vault
TAGS:     vaults_orient_e
MONS:     vault guard
SUBST:    0 = 00.
: vaults_hard_standard(_G)
MAP
%....*x11
..00..x..
......n..
0.99.0+..
......n..
..00..x..
*....%x11
ENDMAP

NAME:    st_diamondy
SUBST:   1 = 0..
: vaults_hard_standard(_G)
MAP
xxxxx..x..xxxxx
xxxx..1x1..xxxx
xxx...xxx...xxx
xx...xx%xx...xx
x...0.....0...x
...x.......x...
.1xx.......xx1.
xxx*..9.9..*xxx
.1xx.......xx1.
...x.......x...
x...0.....0...x
xx...xx%xx...xx
xxx...xxx...xxx
xxxx..1x1..xxxx
xxxxx..x..xxxxx
ENDMAP

NAME:    st_cells
: vaults_hard_standard(_G)
MAP
...x....x...
...x....x...
xxx+xxxx+xxx
$0.x%09*x.0$
$0.x*90%x.0$
xxx+xxxx+xxx
...x....x...
...x....x...
ENDMAP

NAME:    st_smaller_cells
: vaults_hard_standard(_G)
MAP
..x.0x..x0.x..
..x0.x..x.0x..
xx+xx+xx+xx+xx
..x$%x9*x$$x..
..x$$x*9x%$x..
xx+xx+xx+xx+xx
..x0.x..x.0x..
..x.0x..x0.x..
ENDMAP

NAME:    st_lines
SHUFFLE: 90
SUBST:   1 = 00.
: vaults_hard_standard(_G)
MAP
%............9
0............*
xxxxxx++xxxxxx
.....+11+.....
.....+11+.....
xxxxxx++xxxxxx
9............%
*............0
ENDMAP

NAME:    st_spiral_rooms
: vaults_hard_standard(_G)
MAP
....x.........
.0..+.........
..0.xxxxxxxxxx
.0..x$*9%+....
....+%9*$x..0.
xxxxxxxxxx.0..
.........+..0.
.........x....
ENDMAP

NAME:    st_cross
KMONS:   8 = 8
KITEM:   8 = |, *
SUBST:   8 = 98, 0 = 09
: vaults_hard_standard(_G)
MAP
xxxxx.xxxxx
xxxx.0.xxxx
xxxxx.xxxxx
xxx.....xxx
x.x.x+x.x.x
.0..+8+..0.
x.x.x+x.x.x
xxx.....xxx
xxxxx.xxxxx
xxxx.0.xxxx
xxxxx.xxxxx
ENDMAP

NAME:    st_check
WEIGHT:  5
KMONS:   8 = 8
KITEM:   8 = |
KMONS:   9 = 9
KITEM:   9 = *
: vaults_hard_standard(_G)
MAP
.................
.xxxxxxxxxxxxxxx.
.x98990+9+9+0+0+.
.xxxxxxxxxxxxxxx.
.................
ENDMAP

NAME:    st_octagons_1
NSUBST:  ^ = 2:* / *:%
: vaults_hard_standard(_G)
MAP
......|x.....x^..^x..
.9...9*x.....x.90.x..
......xx.....xx..xx..
.....xx.......x++x...
....+x..xx+xx........
.9.xx..xx...xx.....xx
*%xx...x^.9.^x....xx^
xxx....xx...xx...xx..
........xx+xx....+.0.
.................+.9.
x+xx......xx+xx..xx..
...xx....xx...xx..xx^
...0xx..xx.....xx..xx
..9.^x..x0..9..0x....
....^x..x^.....^x....
ENDMAP

NAME:    st_octagons_2
NSUBST:  ^ = 3:* / *:%$
: vaults_hard_standard(_G)
MAP
....^x..x^......^x^..
.9..^x..x...90...x.0.
....xx..xx......xx.0.
...xx...%xxx..xxxx...
x++x....|x.x++x..xx..
x.....9.%x........x++
xx..9...xx...........
.xx....xx............
..x+xx+x.............
.................xx+x
......xx+xx.....xx...
x++x.xx...xx...xx....
x..xxx.....xx+xx^.0..
.00.xx..9..x...x^.9..
....xx^...^x.0.x.....
ENDMAP

NAME:    st_squares
: vaults_hard_standard(_G)
MAP
..............
....0....0....
..xxxx++xxxx..
..x........x..
..x...00...x..
..x..xxxx..x..
..x..x*%x..x..
..x..x*%x..x..
..x..x++x..x..
..x........x..
..x0..99..0x..
..xxxxxxxxxx..
..............
..............
ENDMAP

NAME:    st_lattice
: vaults_hard_standard(_G)
MAP
.x.x.x.x.
.x0x.x0x.
x.x.x.x.x
x%x9x*x.x
.x*x9x%x.
.x.x.x.x.
x0x.x.x0x
x.x.x.x.x
ENDMAP

NAME:    st_more_cells
: vaults_hard_standard(_G)
MAP
...x...x...
.0.+.9.+.9.
...x*.*x...
x+xxx+xxx+x
...x*.%x...
.9.+.9.+.0.
...x...x...
ENDMAP

NAME:    st_hourglassy
TAGS:    vaults_orient_n vaults_orient_s
: vaults_hard_standard(_G)
MAP
xxxxxxx...xxxxxxx
xxxxxx.....xxxxxx
xxxx.........xxxx
xx0...........0xx
x|9....9.9....9|x
xx0...........0xx
xxxx.........xxxx
xxxxxx.....xxxxxx
xxxxxxx...xxxxxxx
ENDMAP

NAME:    st_eye
TAGS:    vaults_orient_n vaults_orient_s
NSUBST:  9 = 1:8 / *:9
: vaults_hard_standard(_G)
MAP
xxxxxxxxx..xxxxxxxxx
xx%**xxxx..xxxx%*%xx
x.9...xx....xx...9.x
x...0.xx....xx.0...x
x....xx0....0xx....x
x.0.xx..x..x..xx.0.x
x.........9........x
x........9.........x
x.0.xx..x..x..xx.0.x
x....xx0....0xx....x
x...0.xx....xx.0...x
x.9...xx....xx...9.x
xx|*%xxxx..xxxx%**xx
xxxxxxxxx..xxxxxxxxx
ENDMAP

NAME:    st_star
TAGS:    vaults_orient_n vaults_orient_s
NSUBST:  0 = 2=998 / 6:0 / *:.
: vaults_hard_standard(_G)
MAP
xxxxxxxxxxxx..xxxxxxxxxxxx
x%*xxxxxxx......xxxxxxx%*x
x*9..xxx...0..0...xxx..9%x
xx.......0..xx..0.......xx
xxxx..0....xxxx....0..xxxx
xxxx..0....xxxx....0..xxxx
xx.......0..xx..0.......xx
x%9..xxx...0..0...xxx..9*x
x*%xxxxxxx......xxxxxxx*%x
xxxxxxxxxxxx..xxxxxxxxxxxx
ENDMAP

NAME:    st_quartered_hall
NSUBST:  0 = 4=998 / 8:0 / *:.
: vaults_hard_standard(_G)
MAP
xxxxxxx..xxxxxxx
x*00*x....x*00*x
xx..xx....xx..xx
xxx+x.0..0.x+xxx
xxx...x..x...xxx
x..0x......x0..x
.......09.......
.......90.......
x..0x......x0..x
xxx...x..x...xxx
xxx+x.0..0.x+xxx
xx..xx....xx..xx
x*00|x....x*00*x
xxxxxxx..xxxxxxx
ENDMAP

NAME:    hangedman_vaults_hard_town_square
KFEAT:   d = any shop
SHUFFLE: abc, de, d*, AB
SUBST:   a : x., b : x.., c = ., e = %%$, * = %:3 *:7
SUBST:   A : x.., B : xx., C : xGT
SUBST:   1 = 9:3 0:7, 2 = 9:7 0:3
: vaults_hard_standard(_G)
MAP
xxxxxx...xxxxxx
xe.2xx.C.xx1.ex
x.A..x...x..A.x
x1.d.xx.xx.d.2x
xx...........xx
xxxx.B.c.B.xxxx
...x..aba..x...
.C...cbGbc...C.
...x..aba..x...
xxxx.B.c.B.xxxx
xx...........xx
x2.e.xx.xx...1x
x.A..x...x..A%x
xd.1xx.C.xx2%%x
xxxxxx...xxxxxx
ENDMAP

NAME: grunt_vaults_funneled_arena
NSUBST: 9 = 1:8 / *:9
SUBST: 0 = 90000000
KMONS: 0 = 0 band
SUBST: $ = |***$$$$
: vaults_hard_standard(_G)
MAP
  x.....xxxxx...xxxxx.....x
 xx......xxxxx.xxxxx......xx
xx.......+...x.x...+.......xx
.........xx..x.x..xx.........
....0...xxx.......xxx....0...
.......xxxxx..0..xxxxx.......
......xxxxxx.....xxxxxx......
.....xxxxxxxx...xxxxxxxx.....
x...xxxxxxxxx...xxxxxxxxx...x
xx+xxxxxxxxxxx.xxxxxxxxxxx+xx
xx.xxxxxxxxxxx.xxxxxxxxxxx.xx
xx...xxxxxxxxx+xxxxxxxxx...xx
xx.....xxxxxx$$$xxxxxx.....xx
.xxx.....xxx$9$9$xxx.....xxx.
.....0.....+$$G$$+....0......
.xxx.....xxx$9$9$xxx.....xxx.
xx.....xxxxxx$$$xxxxxx.....xx
xx...xxxxxxxxx+xxxxxxxxx...xx
xx.xxxxxxxxxxx.xxxxxxxxxxx.xx
xx+xxxxxxxxxxx.xxxxxxxxxxx+xx
x...xxxxxxxxx...xxxxxxxxx...x
.....xxxxxxxx...xxxxxxxx.....
......xxxxxx.....xxxxxx......
.......xxxxx..0..xxxxx.......
........xxx.......xxx........
....0....xx..x.x..xx....0....
xx.......+...x.x...+.......xx
 xx......xxxxx.xxxxx......xx
  x.....xxxxx...xxxxx.....x
ENDMAP

####
# st's greater box vaults!

# 32 monsters, 38 %
NAME:     st_greater_box_1
TAGS:     vaults_orient_s
NSUBST:   ' = 5:9 / 3:0 / *:.
NSUBST:   " = 8:9 / *:.
NSUBST:   - = 8:9 / *:.
NSUBST:   8 = 2:8 / *:.
: st_box_setup(_G)
: vaults_hard_standard(_G)
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
v''''''''''''''''''''''''''''v
v''''''''''''''''''''''''''''v
v''''''''''''''''''''''''''''v
v''''''''''''''''''''''''''''v
vvvv++vvvv''''''''''vv++vvvvvv
v""""""""v''''''''''v----v-8-v
v""""""""v''''''''''v----v---v
v""""""""vvvvv++vvvvv----v---v
v""""""""v%%%v77v---v----v---v
v""""""""v%%%v77v------------v
v""""""""v%%%v77v------------v
v""""""""v"""v++v------------v
v"""""""""""8v..v------------v
v""""""""""""v..v------------v
v""""""""v"""v..v------------v
v""""""""v%%%v..v-----8------v
v""""""""v%%%v..v$%%%%%%%%%%$v
v"""8""""v%%%v..v$%%%%%%%%%%$v
vvvvvvvvvvvvvv..vvvvvvvvvvvvvv
ENDMAP

# 32 monsters, 36 %
NAME:     st_greater_box_2
TAGS:     vaults_orient_s
SHUFFLE:  ab
SUBST:    a = +, b = v, c : v., d : v.
NSUBST:   ' = 8:9 / *:.
NSUBST:   " = 8:9 / *:.
NSUBST:   - = 8:9 / *:.
NSUBST:   8 = 2:8 / *:.
: st_box_setup(_G)
: vaults_hard_standard(_G)
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
v%%%---v"""""""8""""""v---%%%v
v%%%---+""""""""""""""+---%%%v
v%%%8--v""""""""""""""v--8%%%v
v------vvvvvvvaavvvvvvv------v
v------v''''''''''''''v------v
vvbbvvvb'c''''dd''''c'vvvvbbvv
v""""v'''c''''dd''''c'''v""""v
v""""v'ccc''''''''''ccc'v""""v
v""""a'''''dd''8'dd'''''a"""8v
v8"""a'''''dd'8''dd'''''a""""v
v""""v'ccc''''''''''ccc'v""""v
v""""v'''c''''dd''''c'''v""""v
vv++vvvv'c''''dd''''c'bvvv++vv
v------v''''''''''''''v------v
v------vvvvvvv++vvvvvvv------v
v%%%8--v..7........7..v--8%%%v
v%%%---v..7........7..v---%%%v
v%%%---v..7........7..v---%%%v
vvvvvvvvvvvvvv..vvvvvvvvvvvvvv
ENDMAP

# 36 monsters, 42 %
NAME:     st_greater_box_3
TAGS:     vaults_orient_s
NSUBST:   ' = 12:9 / *:.
NSUBST:   " = 10:9 / *:.
: st_box_setup(_G)
: vaults_hard_standard(_G)
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vv''''vv''''vv77vv..9..9..vv"v
v''''vv''''vv....vv......vv""v
v...vv''''vv......vv....vv"""v
v...v....vv........vv++vv""""v
v...+....+7...vv...7+..+"""""v
v...+....+7...vv...7+..+"""""v
v...v....vv........vv++vv""""v
v...vv''''vv......vv""""vv"""v
v''''vv''''vv....vv""""""vv""v
vv''''vv''''vv77vv""""""""vv+v
vvv''''vv''''v++v""""""""""+8v
v%vv''''vv''vv..vv""""""""vv+v
v%%vv''''vvvv....vv""""""vv$$v
v%%%vv''''vv......vv""""vv$%%v
v%%%%vv'''v0......0vv++vv%%%%v
v%%$%$vv++vv......vv$%%$vv%%%v
v%%%$+v....vv....vv$%%%%$vv%%v
v%%$vv.....8vv..vv$%%%%%%$vv%v
vvvvvvvvvvvvvv..vvvvvvvvvvvvvv
ENDMAP

# 31 monsters, 28 %, 8 |
NAME:     st_greater_box_4
TAGS:     vaults_orient_s
NSUBST:   ' = 5:9 / 3:0 / *:.
NSUBST:   " = 8:9 / *:.
NSUBST:   - = 8:9 / 2:8 / *:.
: st_box_setup(_G)
: vaults_hard_standard(_G)
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
v%$%$v------------------v%$%$v
v$%$%v------------------v$%$%v
v%|%$+------------------+%|%$v
v$%|%+------------------+$%|%v
v%$%$v------------------v%$%$v
v$%$%v------------------v$%$%v
vvvvvvvvvvvvvv++vvvvvvvvvvvvvv
v......."""""""""""""".......v
v......."""""""""""""".......v
v+vvvv+vvvvvvvvvvvvvvvv+vvvv+v
v''''v""""""v%||%v""""""v''''v
v''''v""""""+%||%+""""""v''''v
vvvv+vvvvvvvvvvvvvvvvvvvv+vvvv
v.......''''''''''''''.......v
v.......''''''''''''''.......v
v++vvvvvvvvvvvvvvvvvvvvvvvv++v
v........77........77........v
v........7..........7........v
vvvvvvvvvvvvvv..vvvvvvvvvvvvvv
ENDMAP

# 26 monsters, 36 %
NAME:     st_greater_box_5
TAGS:     vaults_orient_s
NSUBST:   ' = 15:9 / 3:8 / *:.
SHUFFLE:  abc
SUBST:    a = +, b = v, c = v
: st_box_setup(_G)
: vaults_hard_standard(_G)
MAP
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
v%$%$v''''''''''''''''''v%$%$v
v$%$%+''''''''''''''''''+$%$%v
v%$%$v''''''''''''''''''v%$%$v
vvvvvv''''''''''''''''''vvvvvv
v%%%%v''''''''''''''''''v%%%%v
v%%%%+''''''''''''''''''+%%%%v
v%%%%v''''''''''''''''''v%%%%v
vvvvvv''''''''98''''''''vvvvvv
v$$$$v''''''''''''''''''v$$$$v
v$$$$+''''''''''''''''''+$$$$v
v$$$$v''''''''''''''''''v$$$$v
vvvvvv''''''''''''''''''vvvvvv
v....v''''''''''''''''''v....v
v....+''''''''''''''''''+....v
v....v''''''''''''''''''v....v
vavvvvvvvcvvvvbbvvvvcvvvvvvvav
v.........77......77.........v
v.........7........7.........v
vvvvvvvvvvvvvv..vvvvvvvvvvvvvv
ENDMAP

####

NAME: ontoclasm_vaults_water_temple
TAGS: no_pool_fixup
WEIGHT: 3
KMASK: wW = no_monster_gen
NSUBST: 0 = 1:9 / *:0
KMONS: 0 = 0 band
SUBST: G : GU, % = %%%%*.
: vaults_hard_standard(_G)
MAP
     ........
     ........
      wx++xw
   xxxxxWWxxxxx
   xwwwxWWxwwwx
.. xw0.x++x.0wx ..
..wxw%W....W%wxw..
..xxxx.G..G.xxxx..
..+WW+..WW..+WW+..
..+WW+..WW..+WW+..
..xxxx.G..G.xxxx..
..wxw%WWwwWW%wxw..
.. xw0.wwww.0wx ..
   xwwwxxxxwwwx
ENDMAP

NAME: ontoclasm_vaults_fire_temple
WEIGHT: 3
KMASK: l = no_monster_gen
NSUBST: 0 = 1:9 / *:0
KMONS: 0 = 0 band
SUBST: G : GY, % = %%%%*.
: vaults_hard_standard(_G)
MAP
     ........
     ........
      lx++xl
   xxxxx..xxxxx
   xlllx..xlllx
.. xl0.x++x.0lx ..
..lxl%......%lxl..
..xxxx.llll.xxxx..
..+..+.lGGl.+..+..
..+..+......+..+..
..xxxx.lGGl.xxxx..
..lxl%.llll.%lxl..
.. xl0.llll.0lx ..
   xlllxxxxlllx
ENDMAP

NAME: ontoclasm_vaults_shout
KMONS: 0 = 0 band
: vaults_hard_standard(_G)
MAP
..xxxxxxx
..x.9...xx
..x%.9...x
..xxxxx..x
.....+..0x
.....+..0x
..xxxxx..x
..x%.9...x
..x.9...xx
..xxxxxxx
ENDMAP

NAME: ontoclasm_vaults_gallery
NSUBST: 9 = 1:0 / 1:8 / *:9
: vaults_hard_standard(_G)
MAP
G...........G
..x.......x..
..xx..%..xx..
..x.GGGGG.x..
..xx..9..xx..
..x*9.9.9*x..
..xxxxxxxxx..
ENDMAP

NAME:   ontoclasm_vaults_echo
TAGS:   no_rotate vaults_orient_s
WEIGHT: 3
NSUBST: % = 2=% / 1=* / *=.
SUBST:  G : GGgTUY
: vault_metal_statue_setup(_G, "g", "silver statue")
: vaults_hard_standard(_G)
MAP
x%..x.x..%x
..8..|..8..
....x.x....
x.xxxxxxx.x
%....x....%
.9.x...x.9.
...x...x...
x.%x...x%.x
xxxxx.xxxxx
...G...G...
...........
ENDMAP

NAME:   dpeg_vaults_monster_doublerow
WEIGHT: 3
: local d = you.depth() + 1
: mons("centaur warrior draugr w:" .. 9 - d ..
:      " / vault warden draugr w:" .. d)
: mons("death knight w:" .. 7 - d .. " / deep elf death mage w:" .. d)
: mons("phantasmal warrior w:" .. 7 - d .. " / flayed ghost w:" .. d)
SUBST:  0 : 0000z
NSUBST: 0 = 1:0 / 3:% / * = 0009..
NSUBST: z = 2:1 / 2:2 / 1:3 / 3:% / * = 11113$..
: vaults_hard_standard(_G)
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxx
xx00xx00xx00xx00xx00xx00xx
xx..xx..xx..xx..xx..xx..xx
x........................x
x.xx..xx..xx..xx..xx..xx.x
..xx00xx00xx00xx00xx00xx..
xxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

NAME:   dpeg_vaults_pockets_of_resistance
NSUBST: 0 = 3 = 899 / 12 = 099 / *:0
: vaults_hard_standard(_G)
MAP
  xxx......
 xxxxx....xxx
xx000xx..xxxxx
xx000xx..x000xx
xx000....x000xx
.xx.......000xx
...........xxx.
...............
...xx000xx.....
.  xx000xx  ...
   xx000xx    .
    xxxxx
     xxx
ENDMAP

NAME:   dpeg_vaults_waves
TAGS:   vaults_orient_e
SUBST:  = = +x
SUBST:  ^ : .x , - : .xx
SUBST:  * = **% , | = ||*
SUBST:  8 = 89
: vaults_hard_standard(_G)
MAP
xxxxxx
x8..|x
x-..^xxxxxxxxxxxxxx
x8...+*.9...x%.....
x-...=..9...+..000.
x8...+*.9...x%.....
x-..^xxxxxxxxxxxxxx
x8..|x
xxxxxx
ENDMAP

NAME: nicolae_vaults_display_case
TAGS: vaults_orient_w no_monster_gen
: vaults_hard_standard(_G)
MAP
.........
.........
..xxxxxx+
..m*x.0..
..m*+090.
..m*x.0..
..xxxxxx+
.........
.........
ENDMAP

NAME: nicolae_vaults_minivaults
NSUBST: P = 1:| / *:9
SHUFFLE: abc, def, ghi, jkl
SUBST: adgj : x
SUBST: bcefhikl : .
: vaults_hard_standard(_G)
MAP
................
.xxxxxx..xxxxxx.
.xP.cbx..xefePx.
.x.abax..x.ddex.
.xcbc.x..xfddfx.
.xba...00..f.ex.
.xxxx.0..0.xxxx.
.....0.<<.0.....
.....0.<<.0.....
.xxxx.0..0.xxxx.
.x.gi..00..jllx.
.xhghix..xjkkjx.
.xihggx..xlkj.x.
.xPih.x..xlj.Px.
.xxxxxx..xxxxxx.
................
ENDMAP

NAME: nicolae_vaults_murderbox
SUBST: m : mx
: vaults_hard_standard(_G)
MAP
xx.....xx
xmm.0.mmx
.mxx+xxm.
..x$$$x..
.0+$8$+0.
..x$$$x..
.mxx+xxm.
xmm.0.mmx
xx.....xx
ENDMAP

NAME: nicolae_vaults_quadrants
SUBST: m : +++xxm, n : +x, % = %%%%%$$$$**|, 8 = 89
: vaults_hard_standard(_G)
MAP
     .......
   ...xm+mx...
  ..xxx...xxx..
 ..xx...9...xx..
 .xxxx.....xxxx.
..x.xxx...xxx.x..
.xx..xxn+nxx..xx.
.m....x%%%x....m.
.+.9..x%8%x..9.+.
.m....x%%%x....m.
.xx..xxxxxxx..xx.
..x.xxx...xxx.x..
 .xxxx.....xxxx.
 ..xx...9...xx..
  ..xxx...xxx..
   ...xm+mx...
     .......
ENDMAP

NAME:  nicolae_vaults_statue_guard
TAGS:  vaults_orient_e
MONS:  obsidian statue / orange crystal statue
KMONS: 2 = ironbound preserver / entropy weaver
KITEM: 2 = %, %, $
SUBST: % = %%%*
KPROP: %*2 = no_tele_into
: vaults_hard_standard(_G)
MAP
xxxx......xx
x%%x....x..x
x%21....m.(.
x%%x....x..x
xxxx......xx
ENDMAP

NAME:     vaults_mumra_bighexcomb
SUBST:    0 = 0.
NSUBST:   0 = 1:9 / *:0
: vaults_hard_standard(_G)
MAP
      ...
     .000.
 ...xx...xx...
.000.xx+xx.000.
x...x+...+x...x
xxxxx..(..xxxxx
x...x+...+x...x
.000.xx+xx.000.
 ...xx...xx...
     .000.
      ...
ENDMAP

NAME: nicolae_vaults_branching_niches
TAGS: vaults_orient_s
SUBST: + : +.
KMONS: m = 0 band w:12 / 9 w:3 / 8 w:1 / nothing w:6
KITEM: m = nothing / % / $ / * w:5 / | w:1
: vaults_hard_standard(_G, true)
MAP
xmxxxmxxxmxxxmx
x+xxx+xxx+xxx+x
x.....xxx.....x
x+x.x+xxx+x.x+x
xmx.xmxxxmx.xmx
xxx.xxxxxxx.xxx
xxx.........xxx
xxx.xxx.xxx.xxx
xmx.xmx.xmx.xmx
x+x.x+x.x+x.x+x
x.....x.x.....x
x+xxx+x.x+xxx+x
xmxxxmx.xmxxxmx
xxxxxxx.xxxxxxx
ENDMAP

NAME: nicolae_vaults_c_with_doors
TAGS: vaults_orient_e
NSUBST: A = 1:+ / *:x
SUBST: $ = $$%, B = 0., 0 = 900
KMONS: 0 = 0 band
: vaults_hard_standard(_G, true)
MAP
xxxxxxxxxxx
xB.B...B..x
x.$$xAxAxAx
xB$$xBxBxBx
x.xxx+x+x+x
x.AB+......
xBxxx.(..(.
x.AB+.(..(.
xBxxx.(..(.
x.AB+......
x.xxx+x+x+x
xB$$xBxBxBx
x.$$xAxAxAx
xB.B...B..x
xxxxxxxxxxx
ENDMAP

NAME:  nicolae_vaults_meeting
TAGS:  vaults_orient_s patrolling
MONS:  vault sentinel, vault guard, vault warden
MONS:  ironbound preserver, ironbound convoker, ironbound mechanist
SUBST: | = ||*
: vaults_hard_standard(_G, true)
MAP
   xxxxxxx
 xxx%*|*%xxx
xx2+..1..+2xx
x..xnnnnnx..x
x.4...5...4.x
x...........x
x..3.....3..x
xx...262...xx
 xxxx+++xxxx
   xx...xx
    x...x
ENDMAP

NAME: nicolae_vaults_quartermaster
NSUBST: 0 = 1:9 / *:0
KFEAT: % = alarm trap / . w:30
KITEM: % = any
KMONS: 0 = 0 band
: vaults_hard_standard(_G)
MAP
xxxxx.xxxxx
x...+0+...x
x.x.xxx.x.x
x..0%x%0..x
x+x%xxx%x+x
.0xxxxxxx0.
x+x%xxx%x+x
x..0%x%0..x
x.x.xxx.x.x
x...+0+...x
xxxxx.xxxxx
ENDMAP

NAME: nicolae_vaults_good_morning_starshine
NSUBST: A = 3:+ / x, B = 2:+ / x, C = + / x
SUBST: 0 = 0., Q = 9998., 9 = 9.., % = %%%$*, $ = $$.
KMONS: 0 = 0 band
KMONS: 9 = 9 band
KMONS: 8 = 8 band
KITEM: 8 = star_item / superb_item w:3
: vaults_hard_standard(_G)
MAP
...........................
.xx......0...x...0......xx.
.xxxx.......xxx.......xxxx.
..xxxxx....xx$xx....xxxxx..
..xx$.xxx.xx...xx.xxx.$xx..
...x....xAx..x..xAx....x...
...xx.......xxx.......xx...
....x..9...xx%xx...9..x....
....xx....xx...xx....xx....
.0...A....B..Q..B....A...0.
....xx..xBx.xCx.xBx..xx....
...xx..xx...x$x...xx..xx...
..xx..xx..xxx%xxx..xx..xx..
.xx$.xx%.QC$%8%$CQ.%xx.$xx.
..xx..xx..xxx%xxx..xx..xx..
...xx..xx...x$x...xx..xx...
....xx..xBx.xCx.xBx..xx....
.0...A....B..Q..B....A...0.
....xx....xx...xx....xx....
....x..9...xx%xx...9..x....
...xx.......xxx.......xx...
...x....xAx..x..xAx....x...
..xx$.xxx.xx...xx.xxx.$xx..
..xxxxx....xx$xx....xxxxx..
.xxxx.......xxx.......xxxx.
.xx......0...x...0......xx.
...........................
ENDMAP

NAME: nicolae_vaults_lopsided_apartments
NSUBST: EPOD = 1:+, DNMH = 1:+, AKLH = 1:+, EIJA = 1:+, \
        BFCG = 3:+, IJKLMNOP = 1:+, 0 = 9 / 0
SUBST: ) = )0, 0 = 0009%$
SUBST: ABCDEFGHIJKLMNOP = x
KMONS: 9 = 9 band
KITEM: 9 = star_item
: vaults_hard_standard(_G)
MAP
            ...
        ...x.).
    ...x.).+...
...x.).A...xx+x
.).+...xxKxxx...
...xxxJxx...x.).
 x+xx...x.0.L...
 ...x.0.B...xxHx
 .).I...xxGxxx...
 ...xxxFxx...M.).
  xExx...C.0.x...
  ...P.0.x...xx+x
  .).x...xxNxxx...
  ...xxxOxx...+.).
   x+xx...D.).x...
   ...+.).x...
   .).x...
   ...
ENDMAP

NAME: nicolae_vaults_know_your_exits
TAGS: no_windows vaults_orient_s
SHUFFLE: pqrstu/PQRSTU
SUBST: pqRT = %, rsPU = x, tuQS = ., 0 = 0.
KMONS: 0 = 0 band
KMONS: 9 = 9 band
KITEM: % = any / gold
KMONS: % = nothing w:11 / 0 w:1
: vaults_hard_standard(_G)
MAP
      .
    ..9..
  .........
...xpxqxpx...
...rxrsrxr...
.0.xpxqxpx.0.
 ..tut0tut..
 ..xpxqxpx..
 ..rxrsrxr..
  .xpxqxpx.
  .........
  .........
ENDMAP

NAME: nicolae_vaults_halls_meeting
SUBST: 9 = 9998, 0 = 00.
: vaults_hard_standard(_G)
MAP
xxxx..xxxx..xxxx
x9.xx...0..xx.9x
x...xx....xx...x
xx...xx++xx...xx
.xx...x..x...xx.
..xx..+0.+..xx..
x..xx+x..x+xx..x
x0.+...xx.0.+..x
x..+.0.xx...+.0x
x..xx+x..x+xx..x
..xx..+.0+..xx..
.xx...x..x...xx.
xx...xx++xx...xx
x...xx....xx...x
x9.xx..0...xx.9x
xxxx..xxxx..xxxx
ENDMAP

NAME: nicolae_vaults_octagons
SHUFFLE: abcdefgh, ijklmnop
SUBST: abcdefgijklmno = x, hp = ., 0 = 009.
KMONS: 0 = 0 band
KMONS: 9 = 9 band
: vaults_hard_standard(_G)
MAP
      .....
     ...0...
    ..iiiii..
   ..pp...jj..
  ..pp..0..jj..
 ..pp..aaa..jj..
..op..hh.bb..jk..
..o..gh...bc..k..
.0o.0g..9..c0.k0.
..o..gf...dc..k..
..on..ff.dd..lk..
 ..nn..eee..ll..
  ..nn..0..ll..
   ..nn...ll..
    ..mmmmm..
     ...0...
      .....
ENDMAP

NAME: nicolae_vaults_fighting_squares
SHUFFLE: ABCDEFGHabcdefgh%/IJKLMNOPijklmnop!
NSUBST: 0 = 1:9 / * = 0009., ABCDEFGH = x / +, abcdefgh = + / x, \
        PI = + / x, JK = + / x, LM = + / x, NO = + / x, \
        ij = + / x, kl = + / x, mn = + / x, op = + / x
SUBST: ! = .
KMONS: 9 = 9 band
: vaults_hard_standard(_G)
MAP
xxxxxx..xxxxxx
x!...x..x...!x
x.0..B..C..0.x
x..xbxxxxcx..x
x..a......d..x
xxAx.0..0.xDxx
...x..%%..x...
...x..%%..x...
xxHx.0..0.xExx
x..h......e..x
x..xgxxxxfx..x
x.0..G..F..0.x
x!...x..x...!x
xxxxxx..xxxxxx
ENDMAP

NAME: nicolae_vaults_an_arrangement
SUBST: 0 = 00.
KMONS: 9 = 9 band
: vaults_hard_standard(_G)
MAP
x.x.x.x.x.x.x
.............
x.0...0...0.x
...x..x..x...
x...........x
.....x.x.....
x.0x..9..x0.x
.....x.x.....
x...........x
...x..x..x...
x.0...0...0.x
.............
x.x.x.x.x.x.x
ENDMAP

####

NAME:  lightli_bank_vault
TAGS:  vaults_orient_s
KMONS: 12 = vault guard
KMONS: 3 = vault warden
KITEM: 23 = $
KFEAT: ^ = alarm trap
: vaults_hard_standard(_G)
MAP
xxxxxxxxxxx
x$$$$$$$$$x
x$$2$3$2$$x
x$2$$$$$2$x
x$2$$$$$2$x
x$$$$$$$$$x
xx+xx+xx+xx
x$$$x1x$$$x
x$*$x^x$*$x
x$$$x.x$$$x
xxxxx+xxxxx
ENDMAP

####

NAME:   kennysheep_vaults_gozag_temple
TAGS:   uniq_kennysheep_gozag_temple
WEIGHT: 5
KMONS:  1 = ironbound preserver
KMONS:  2 = vault warden
KITEM:  | = gold good_item
KITEM:  12 = gold
KFEAT:  B = altar_gozag
KFEAT:  _ = antiques shop name:Gozag greed:100 /\
            antique weapon shop name:Gozag greed:100 /\
            antique armour shop name:Gozag greed:100
COLOUR: c = yellow
FTILE:  $|B}+nc12-D = floor_limestone
FTILE:  " = floor_hall
: vault_metal_statue_setup(_G, "GD", "golden statue")
: vaults_hard_standard(_G, true)
MAP
...............
.G.""c+++c"".G.
..""cc---cc""..
..""cD---Dc""..
.9""cc+++cc""9.
.""Gcc$$$ccG"".
.""cc$$$$$cc"".
.""n$$2|1$$n"".
."_n$$|B|$$n_".
9""n$$1|2$$n""9
.""cc$$$$$cc"".
.""Gcc$$$ccG"".
."""0cnnnc0""".
.."""""_"""""..
.G.""""""""".G.
...............
ENDMAP

NAME: nicolae_vaults_inception_network
WEIGHT: 5
KMONS: 0 = 0 / 0 band w:5
KMONS: 9 = 9 / 9 band w:5
KITEM: 0 = $ / any w:5
KITEM: 9 = * / % w:5
NSUBST: p = x / ., q = x / ., r = x / ., s = x / .
NSUBST: A = . / x, B = . / x, C = . / x, D = . / x, E = . / x,  F = . / x, \
  G = . / x, H = . / x, I = . / x, J = . / x, K = . / x, L = . / x, M = . / x, \
  N = . / x, O = . / x, P = . / x, Q = . / x, R = . / x, S = . / x, T = . / x, \
  U = . / x, V = . / x, W = . / x, X = . / x, Y = . / x, Z = . / x, 1 = . / x, \
  2 = . / x, 3 = . / x, 4 = . / x, 5 = . / x, 6 = . / x
NSUBST: % = 2:9 / 6:0 / 4 = 0% / * = ......%
: vaults_hard_standard(_G)
MAP
.........................
.x6xpxAxBxCxDxExFxGxqxHx.
.6%6.A%x%x%x%x%x%x%G.H%H.
.x6xpxAxBxCxDxExFxGxqxHx.
.p.p.................q.q.
.x5x.               .xIx.
.5%5.               .I%I.
.xxx.               .xxx.
.4%4.               .J%J.
.xxx.               .xxx.
.3%3.               .K%K.
.xxx.               .xxx.
.2%2.               .L%L.
.xxx.               .xxx.
.1%1.               .M%M.
.xxx.               .xxx.
.Z%Z.               .N%N.
.xxx.               .xxx.
.Y%Y.               .O%O.
.xYx.               .xOx.
.s.s.................r.r.
.xXxsxWxVxUxTxSxRxQxrxPx.
.X%X.x%x%x%x%x%x%x%Q.P%P.
.xXxsxWxVxUxTxSxRxQxrxPx.
.........................
ENDMAP

NAME: nicolae_vaults_holding_cells
WEIGHT: 5
KMONS: P = human ; nothing / orc ; nothing / elf ; nothing / troll ; nothing / \
           centaur ; nothing / kobold ; nothing
KFEAT: g = iron_grate
KFEAT: ^ = alarm trap
KMONS: 1 = vault guard
KMONS: 2 = vault warden
KMONS: 3 = ironbound preserver / ironbound convoker
NSUBST: 1 = 4:1 / 1:2 / 1:3 / *:., . = 2:^ / *:.
SUBST: ' = .
KPROP: P = no_tele_into
KMASK: P = opaque
KMASK: P = no_trap_gen
KMASK: P = no_item_gen
: vaults_hard_standard(_G)
MAP
xxxxxxxxx
xPg..1xxx
xxx1...xx
xPg....1x
xxx1.1..'
xPg....1x
xxx1...xx
xPg..1xxx
xxxxxxxxx
ENDMAP

NAME:    minmay_guarded_unrand_guard_vaults
TAGS:    vaults_orient_n
WEIGHT:  3
ITEM:    glaive_of_the_guard no_pickup
SUBST:   b : bxcmG.T
NSUBST:  3:9 / 4=9. / ., 8 = 2:8 / 6=8.. / .
: vaults_hard_standard(_G)
MAP
vvvvvvv@vvvvvvv
v...v*v.v*v...v
v8b8.*n.n*.8b8v
v.8.v*v.v*v.8.v
vv.vvvv.vvvv.vv
v.9.vv.9.vv.9.v
v.b9..9b9..9b.v
v.9.vv...vv.9.v
vv.vvvvnvvvv.vv
vv.vvv...vvv.vv
v.8.v..*..v.8.v
v8b8..*d*..8b8v
v...v..*..v...v
vGvGvv...vvGvGv
vvvvvvvvvvvvvvv
ENDMAP

NAME:    minmay_guarded_unrand_secular_launcher
TAGS:    vaults_orient_s
WEIGHT:  3
# n.b. if one of these has generated, this may fall back on a randart. If both
# have generated, it is guaranteed to.
ITEM:    storm_bow no_pickup / sniper no_pickup
NSUBST:  3:9 / 6=9. / ., 8 = 2:8 / 6=8.. / .
: vaults_hard_standard(_G)
MAP
     vvvvv
   vvv999vvv
  vv.......vv
 vv..cc.cc..vv
 v..cc888cc..v
vv.cc|...|cc.vv
v9.c8.bbb.8c.9v
v9.c8.bdb.8c.9v
v9.c8.b.b.8c.9v
vv.cc|...|cc.vv
 v..cc888cc..v
 vv..ccncc..vv
  vv.......vv
   vvv999vvv
     vv.vv
ENDMAP

NAME:  nicolae_vaults_antechamber_and_loot_room
TAGS:  vaults_orient_s vaults_orient_n vaults_orient_e
KITEM: 8 = |
KMONS: 8 = 8 band
SUBST: 0 = .00009, % = ..%%%**
: vaults_hard_standard(_G)
MAP
xxxx0...0
%%%x.....
%8.+..9..
%%%x.....
xxxx0...0
ENDMAP

NAME:   nicolae_vaults_corpse_flower
KMONS:  0 = 0 band
KMONS:  9 = 9 band
KMONS:  8 = 8 band
SUBST:  0 = 0009, 9 = 9998, * = ***|
NSUBST: D = + / x, E = + / x, F = + / x, H = + / x
: vaults_hard_standard(_G)
MAP
          ...
         ..(..
         .....
        .......
        ...0...
        .......
        .......
         xDDDx
   .... xx...xx ....
 ......xx*...*xx......
.......H.......E.......
.(..0..H...9...E..0..(.
.......H.......E.......
 ......xx*...*xx......
   .... xx...xx ....
         xFFFx
        .......
        .......
        ...0...
        .......
         .....
         ..(..
          ...
ENDMAP

NAME:   nicolae_vaults_corridor_and_loot_room
TAGS:   vaults_orient_e
KITEM:  8 = |
KMONS:  0 = 0 / 0 band w:5
KMONS:  8 = 8 band
NSUBST: D = + / n
SUBST:  0 = .0, % = ..%%%**
: vaults_hard_standard(_G)
MAP
.......x%%%x
.0...9.+.8%x
.......x%%%x
...xxxxxnnnx
...x...x....
.0.x.0.+.0..
...x...x....
...xxDxxx+xx
.......x...x
.0...0.D.0.x
.......x...x
ENDMAP

NAME:   nicolae_vaults_crenellated_ambush
NSUBST: ' = 4=0 / 4=.0 / ..%
SUBST:  0 = 0000998
: vaults_hard_standard(_G)
MAP
x'x'x'x
'.....'
x.....x
'..(..'
x.....x
'.....'
x'x'x'x
ENDMAP

NAME:  nicolae_vaults_diffraction_hallways
SUBST: 0 = .009, 9 = .998, * = .**|
: vaults_hard_standard(_G)
MAP
..........
x.xxxxxx.x
x...00...x
x.x.xx.x.x
x.x9**9x.x
x.x9**9x.x
x.x.xx.x.x
x...00...x
x.xxxxxx.x
..........
ENDMAP

NAME:    nicolae_vaults_disappearing_quadrants
SHUFFLE: FMNS, DEH, JKL, OPQ, RZ-
SUBST:   FJORD = ., MEKPZ = x, N : xx., S : xx., H : xx., L : xx., Q : xx., \
         - : xx., 0 = .0, 9 = ...9, 0 = 0009, 9 = 9998, * = ***|
: vaults_hard_standard(_G)
MAP
......................
.(..DDEE......JJKK..(.
..DDD..EEE..JJJ..KKK..
..D......E..J......K..
.DD.0..0.EEJJ.0..0.KK.
.D...xx...EJ...xx...K.
.H...xx...FM...xx...L.
.HH.0..0.FFMM.0..0.LL.
..H......F..M......L..
..HHH..FFF99MMM..LLL..
....HHFF.9**9.MMLL....
....RRSS.9**9.NNOO....
..RRR..SSS99NNN..OOO..
..R......S..N......O..
.RR.0..0.SSNN.0..0.OO.
.R...xx...SN...xx...O.
.-...xx...ZQ...xx...P.
.--.0..0.ZZQQ.0..0.PP.
..-......Z..Q......P..
..---..ZZZ..QQQ..PPP..
.(..--ZZ......QQPP..(.
......................
ENDMAP

NAME:  nicolae_vaults_enemy_cabinets
TAGS:  vaults_orient_s
KITEM: 0 = %
KITEM: 9 = *
KITEM: 8 = |
KMONS: 0 = 0
KMONS: 9 = 9
KMONS: 8 = 8
SUBST: 0 = 099988
: vaults_hard_standard(_G)
MAP
0x0x0x0
.......
..x.x..
.......
x..x..x
x.....x
x.....x
ENDMAP

NAME: nicolae_vaults_little_guard_posts
: vaults_hard_standard(_G)
MAP
..xxxx
..+.9x
x++..x
x..++x
x9.+..
xxxx..
ENDMAP

NAME:  nicolae_vaults_murder_corner
TAGS:  vaults_orient_s vaults_orient_w
KITEM: 9 = *
KITEM: 8 = |
KMONS: 9 = 9
KMONS: 8 = 8
: vaults_hard_standard(_G)
MAP
x9.x.8
x.....
xx.0.x
......
...x.9
...xxx
ENDMAP

NAME:   nicolae_vaults_museum
WEIGHT: 3
KITEM:  M = any weapon randart / any armour randart / any jewellery randart / \
            any magical staff randart / any randbook
KMONS:  R = vault warden band
KMONS:  S = vault sentinel
KMONS:  s = vault guard w:30 / ironbound mechanist / \
            ironbound preserver / ironbound convoker
KFEAT:  M = alarm trap
KMASK:  M = no_monster_gen
KMASK:  M = opaque
KPROP:  M = no_tele_into
NSUBST: ! = R / S / s0..., D = m / n
SUBST:  0 = 009, 9 = 998
: vaults_hard_standard(_G)
FTILE:  MRSs = floor_metal_gold
MAP
.............
.!....!....!.
..nnn...nnn..
..nMn.0.nMn..
..nnm...mnn..
.....DDD.....
.!.0.DMD.0.!.
.....DDD.....
..nnm...mnn..
..nMn.0.nMn..
..nnn...nnn..
.!....!....!.
.............
ENDMAP

NAME:  nicolae_vaults_mush_room
TAGS:  vaults_orient_s
KMONS: 8 = 8 band
KMONS: 9 = 9 band
SUBST: * = **|, 0 = ...0000
: vaults_hard_standard(_G)
MAP
    0...0
  .........
 ...........
..0...9...0..
.............
.............
+xx.0...0.xx+
..xx.....xx..
...xx...xx...
....x.0.x....
.8..x...x..8.
x***x...x***x
xxxxx...xxxxx
ENDMAP

NAME:    nicolae_vaults_off_center_swirl
SHUFFLE: PQRS/pqrs
NSUBST:  PD = + / x, QE = + / x, RF = + / x, SH = + / x, 0 = 9 / 0.
SUBST:   pqrs = .
: vaults_hard_standard(_G)
MAP
    .P...
  ..0P.0.q0
 ppppDp%QEQQ
 ....Pxxxq..
....0%xxx%0..
.....sxxxR...
SSSSSHS%rFrrr
....0s.0.R0..
.....s...R...
 ....s...R..
 ....s...R..
  ...s...R.
    .s...
ENDMAP

NAME:    nicolae_vaults_security_offices_1
TAGS:    vaults_orient_n
SHUFFLE: DEF
SUBST:   D = +, EF = n, 0 = ...000998
: vaults_hard_standard(_G)
MAP
.....
.....
DEFED
.....
00000
ENDMAP

NAME:  nicolae_vaults_security_offices_2
TAGS:  vaults_orient_e
KITEM: 0 = % w:5 / * / | w:5
KMONS: 0 = 0 / 9 / 9 band / 8
: vaults_hard_standard(_G)
MAP
........x
........x
........x
+xnxx...x
...0n....
...0n.(..
...0n....
ENDMAP

NAME:  nicolae_vaults_security_offices_3
SUBST: 0 = 000998, * = **|
: vaults_hard_standard(_G)
MAP
...xxxxx...
.(.xxxxx.(.
...xx*xx...
...+.0.x...
...n...n...
...n0*0n...
...n...n...
...x.0.+...
...xx*xx...
.(.xxxxx.(.
...xxxxx...
ENDMAP

NAME:    nicolae_vaults_security_offices_4
SHUFFLE: DE, FH
SUBST:   D : xxn .:5, E : xnn .:5, F : xxn .:5, H : xnn .:5, 9 = 9998
: vaults_hard_standard(_G)
MAP
x...xxxxx
..D..+.9x
.DED.n..x
..D0.xnnx
x.......x
xnnx.0F..
x..n.FHF.
x9.+..F..
xxxxx...x
ENDMAP

NAME:  nicolae_vaults_security_offices_5
SUBST: 0 = .0009
: vaults_hard_standard(_G)
MAP
...xxxxx...
.(.xx..+...
...xx..x...
...xx+xx...
...n0.0n...
...n.0.n...
...n0.0n...
...xnnnx...
...........
.(.......(.
...........
ENDMAP

NAME:   nicolae_vaults_security_offices_6
NSUBST: D = + / x, E = + / x
SUBST:  O = .0
: vaults_hard_standard(_G)
MAP
.............
.O....(....O.
.............
xDnnx...xnnEx
x.0%n...n*9.x
x.9*n...n%0.x
xDnnx...xnnEx
.............
.O....(....O.
.............
ENDMAP

NAME:    nicolae_vaults_shipping_containers_1
SHUFFLE: DE, FH, JK, LM, NO
SUBST:   DFJLN = +, E : xxxx+, H : xxxx+, K : xxxx+, M : xxxx+, O : xxxx+, \
         - = ......%0, % = %%%**|, 0 = 000998
: vaults_hard_standard(_G)
MAP
........................
......xFFx..............
..xDDxx--xxJJxxLLx.xNNx.
..x--xx--xx--xx--x.x--x.
..x--xx--xx--xx--x.x--x.
..x--xx--xx--xx--x.x--x.
..x--xxHHxx--xx--x.x--x.
..xEEx....xKKxxMMx.xOOx.
........................
........................
ENDMAP

NAME:    nicolae_vaults_shipping_containers_2
SHUFFLE: DE, FH, JK, LM
SUBST:   DFJL = +, E : xxxx+, H : xxxx+, K : xxxx+, M : xxxx+, \
         - = ......%0, % = %%%**|, 0 = 000998
: vaults_hard_standard(_G)
MAP
.......xxxxxx.
.xDDx..J----K.
.x--x..J----K.
.x--x..xxxxxx.
.x--x.........
.x--xxxxxxx...
.xEExF----H...
.....F----H...
.....xxxxxx...
.......xxxxxx.
xxxxxx.L----M.
x----+.L----M.
x----+.xxxxxx.
xxxxxx........
ENDMAP

NAME:    nicolae_vaults_shipping_containers_3
SHUFFLE: DE, FH, JK
SUBST:   DFJ = +, E : xxxx+, H : xxxx+, K : xxxx+, \
         - = ......%0, % = %%%**|, 0 = 000998
: vaults_hard_standard(_G)
MAP
..............
......xxxxxx..
xDDx..F----H..
x--x..F----H..
x--x..xxxxxx..
x--x..........
x--x..........
xEEx.xxxxxx...
.....J----K...
.....J----K...
.....xxxxxx...
ENDMAP

NAME:    nicolae_vaults_shipping_containers_4
SHUFFLE: DE, FH
SUBST:   DF = +, E : xxxx+, H : xxxx+, \
         - = ......%0, % = %%%**|, 0 = 000998
: vaults_hard_standard(_G)
MAP
.xxxxxx..
.D----E..
.D----E..
.xxxxxx..
..xxxxxx.
..F----H.
..F----H.
..xxxxxx.
.........
ENDMAP

NAME:    nicolae_vaults_shipping_containers_5
SHUFFLE: DEFH
SUBST:   DEF = +, H : xxxx+, - = ......%0, % = %%%**|, 0 = 000998
: vaults_hard_standard(_G)
MAP
xxxxxx.......
x----+.......
x----+.......
xxxxxx.......
.........xFFx
...xxxxxxx--x
...+----xx--x
...+----xx--x
...xxxxxxx--x
...xxxxxxxHHx
...D----E....
...D----E....
...xxxxxx....
ENDMAP

NAME:    nicolae_vaults_shipping_containers_6
SHUFFLE: DE, FH, JK/ML, LM
SUBST:   DFJL = +, E : xxxx+, H : xxxx+, K = x, M : ++++x, \
         - = ......%0, % = %%%**|, 0 = 000998
: vaults_hard_standard(_G)
MAP
................
................
.xxxxxx.xxxxxx..
.D----E.F----H..
.D----E.F----H..
.xxxxxx.xxxxxx..
..xxxxxxxxxxxx..
..+----xx----+..
..+----xx----+..
..xxxxxxxxxxxx..
..xxxxxx........
..J----Kxxxxxx..
..J----KL----M..
..xxxxxxL----M..
........xxxxxx..
................
ENDMAP

NAME:    nicolae_vaults_shipping_containers_7
SHUFFLE: DE/FH/JK, FH, JK
SUBST:   DEFJ = +, H : xxxx+, K : xxxx+, \
         - = ......%0, % = %%%**|, 0 = 000998
: vaults_hard_standard(_G)
MAP
.....xxxxxx.
.....D----E.
.....D----E.
.....xxxxxx.
...xxxxxx...
...F----H...
...F----H...
...xxxxxx...
..xxxxxx....
..J----K....
..J----K....
..xxxxxx....
ENDMAP

NAME:  nicolae_vaults_shock_wave
TAGS:  vaults_orient_w
SUBST: 0 = ..0009, 9 = 9998, % = %%%*, * = ***|
: vaults_hard_standard(_G)
MAP
            .....
        .....xxx.
    .....xxx.x*x.
......xx.x%x.x+x.
..0x..0x..0x..9x.
..0x..0x..0x..9x.
......xx.x%x.x+x.
    .....xxx.x*x.
        .....xxx.
            .....
ENDMAP

NAME:  nicolae_vaults_storing_the_good_stuff
TAGS:  vaults_orient_w no_windows
KITEM: 98 = any weapon randart w:15 / any armour randart w:15 / \
            any jewellery randart w:15 / any magical staff randart w:5 / \
            gold good_item w:5 / | w:5
KMONS: 9 = 9
KMONS: 8 = 8
SUBST: 0 = .009
: vaults_hard_standard(_G)
MAP
.....x98
....0x**
..n++x++
.0n.0+.0
.0n.0+.0
..n++x++
....0x**
.....x98
ENDMAP

NAME:  nicolae_vaults_surprise_closet_hard
TAGS:  allow_dup
KMONS: 9 = 9
KMONS: 8 = 8
KITEM: 9 = *
KITEM: 8 = |
SUBST: 9 : 998
: vaults_hard_standard(_G)
MAP
9
ENDMAP

NAME:  nicolae_vaults_tangent_ellipses
KMONS: 8 = 8 band
SUBST: * = ***|, 0 = ...0, 9 = ..9, 0 = 0009
: vaults_hard_standard(_G)
MAP
.....xxxxxxxxxxxxxxx.....
.....xx...........xx.....
..0.0.+..0.0.0.0..+.0.0..
......xx.........xx......
..0.0..xxx.....xxx..0.0..
xx.......xxx+xxx.......xx
xx+x....xx.....xx....x+xx
x..xx..xx...9...xx..xx..x
x...x.xx.........xx.x...x
x.0.xxx..9.xxx.9..xxx.0.x
x....x....xx*xx....x....x
x.0..x...xx*.*xx...x..0.x
x....+.9.x*.8.*x.9.+....x
x.0..x...xx*.*xx...x..0.x
x....x....xx.xx....x....x
x.0.xxx..9.x+x.9..xxx.0.x
x...x.xx.........xx.x...x
x..xx..xx...9...xx..xx..x
xx+x....xx.....xx....x+xx
xx.......xxx+xxx.......xx
..0.0..xxx.....xxx..0.0..
......xx.........xx......
..0.0.+..0.0.0.0..+.0.0..
.....xx...........xx.....
.....xxxxxxxxxxxxxxx.....
ENDMAP

NAME:   nicolae_vaults_thirteen_compartments
NSUBST: D = + / x, E = + / x, F = + / x, H = + / x, \
        p = p / x, q = q / x, r = r / x, s = s / x, \
        Jp = + / x, Kp = + / x, Lq = + / x, Mq = + / x, \
        Nr = + / x, Or = + / x, Ps = + / x, Qs = + / x, - = + / x
SUBST:  9 = 999., 0 = ...%0009, 9 = 99998, * = ***|
: vaults_hard_standard(_G)
MAP
.................
.................
..xDDxJJxKKxEEx..
..D..J..p..K..E..
..D.0J.0p0.K0.E..
..xQQx--x--xLLx..
..Q..-.....-..L..
..Q.0-.9*9.-0.L..
..xssx.*x*.xqqx..
..P.0-.9*9.-0.M..
..P..-.....-..M..
..xPPx--x--xMMx..
..H.0O.0r0.N0.F..
..H..O..r..N..F..
..xHHxOOxNNxFFF..
.................
.................
ENDMAP

NAME:  nicolae_vaults_whirlpool_walls
KITEM: L = * w:15 / | w:5
KMONS: 0 = 0 band
KMONS: L = 9 w:15 / 8 w:5
SUBST: ( = .(0
: vaults_hard_standard(_G)
MAP
.............
...xxx..(....
..x...x...x..
....(..x...x.
.(.....x.(.x.
...xxxLx...x.
..x..LxL..x..
.x...xLxxx...
.x.(.x.....(.
.x...x..(....
..x...x...x..
....(..xxx...
.............
ENDMAP

###############################################################################
#
# <<2>> Themed threat vaults.
#
###############################################################################

NAME:    minislime_mu
TAGS:    transparent
DEPTH:   Vaults, !Vaults:$
WEIGHT:  15
MONS:    slime creature, large slime creature, very large slime creature
MONS:    great orb of eyes, entropy weaver, glowing orange brain
MONS:    formless jellyfish
KITEM:   R = gold no_pickup q:1
ITEM:    scroll of teleportation pre_id q:2 / wand of digging charges:2
ITEM:    scroll of teleportation pre_id q:2 w:20 / \
         wand of digging charges:2 w:20 / dagger ego:distortion pre_id
: local d = you.depth()
: nsubst('J = ' .. d .. ':4 / 3 = 5 6:' .. d * 4 .. ' 7:' .. d * 3 .. ' / *:1')
: subst('1 = 1 2:' .. 4 + d * 3 .. ' 3:' .. 3 + d * 2)
SHUFFLE: %!'"
NSUBST:  % = 1:d / * = %$, ! = 1:d / * = %$, ' = 1:d / * = %$, " = 1:e / * = %$
KMASK:   %$de = opaque
TILE:    m = dngn_transparent_wall_green
: vaults_hard_standard(_G)
FTILE:   R = floor_metal_gold
MAP
  ........ ......
  ..............J
..JJ..mmmm.mmm...J.
..J.mmm%m.Jm'mm....
...mm%%%m..m''mm...
...m%%%%m.mm'''mm..
..mm%%%%mJ.m''''m..
..m%%%%%mm.m''''m..
..mmmmmmm..mmmmmm..
 ..Jm..Jm.....mJ..
..m...m...R.mJ..m..
..mmmmmmm...mmmmm..
..m!!!!!m..mm"""m..
..mm!!!!m.mm""""m..
...mm!!!m.Jm"""mm..
....mm!mmm.m""mm...
.J...m!mJ..m"mm....
..J..mmmm.mmmm..J..
  .............JJ
  ....... .......
ENDMAP

NAME:   minmay_crystal_thing
TAGS:   no_monster_gen no_item_gen no_pool_fixup vaults_hard vault_orient_e
ORIENT: float
# Extra-large vaults get higher weight in V to help with layout restrictions.
WEIGHT: 30
DEPTH:  Vaults, !Vaults:$
MONS:   crystal guardian, orange crystal statue, ironbound mechanist
ITEM:   any magical staff / any book / any jewellery w:15 / any scroll w:30 / \
        potion of magic pre_id / potion of brilliance pre_id / \
        phial of floods w:3 / tin of tremorstones w:5 / gold w:40
KFEAT:  _ = altar_sif_muna
KFEAT:  ~ = W
KPROP:  ~ = no_tele_into
FTILE:  ._+123d = floor_crystal
MAP
                                     bbbbbbbbbbbbb
                                     bwwwwwwwwwwwb
                      bbb            bwWWWWWWWWWwb
                     bbwbb           bwWb.....bWwb
                    bbwwwbb          bwW.1...1.Wwb
   bbbbb           bbwwWwwbb         bwWb.....bWwb
   bdddb          bbwwWWWwwbb        bwWWWW.WWWWwb
   bd1db         bbwwWW1WWwwbb       bwwwwW.Wwwwwb
   bdddb        bbwwWW...WWwwbb   bbbbbbbwW.Wwbbbb
   bb.bbbbbb   bbwwWW..W..WWwwbb  bwwwwwwwW.Wwwwwx
   b...WwwwbbbbbwwWW..WWW..WWwwbb bwWWWWWWW.WWWWWx
   b3..WWWwwbbbwwWW..WWwWW..WWwwbbbwwWb...b.b....x.
bbbbb...WWwwwwwwWW..WWwwwWW..WWwwwwwwW...........x.
bdddb...1WWWWWWWW..WWwb~bwWW..WWWWWWWW...........+.
bd1d.._...........WWww~2~wwWW....................+.
bdddb...1WWWWWWWW..WWwb~bwWW..WWWWWWWW...........+.
bbbbb...WWwwwwwwWW..WWwwwWW..WWwwwwwwW...........x.
   b3..WWWwwbbbwwWW..WWwWW..WWwwbbbwwWb...b.b....x.
   b...WwwwbbbbbwwWW..WWW..WWwwbb bwWWWWWWW.WWWWWx
   bb.bbbbbb   bbwwWW..W..WWwwbb  bwwwwwwwW.Wwwwwx
   bdddb        bbwwWW...WWwwbb   bbbbbbbwW.Wwbbbb
   bd1db         bbwwWW1WWwwbb       bwwwwW.Wwwwwb
   bdddb          bbwwWWWwwbb        bwWWWW.WWWWwb
   bbbbb           bbwwWwwbb         bwWb.....bWwb
                    bbwwwbb          bwW.1...1.Wwb
                     bbwbb           bwWb.....bWwb
                      bbb            bwWWWWWWWWWwb
                                     bwwwwwwwwwwwb
                                     bbbbbbbbbbbbb
ENDMAP

# Crown of Dyrovepreva's guarded_unrand vault, moved from Depths.
NAME:   minmay_guarded_unrand_dyrovepreva
TAGS:   no_monster_gen no_item_gen transparent vaults_hard
DEPTH:  Vaults, !Vaults:$
MONS:   patrolling crystal guardian, ironbound mechanist
MONS:   orange crystal statue
ITEM:   crown_of_dyrovepreva no_pickup
KPROP:  'd123 = no_tele_into
FTILE:  'd123 = floor_crystal
MAP
      ......   ......
     ...bb... ...bb...
    ...bbbb.....bbbb...
    ..bbbbbb...bbbbbb..
   ..bbbbbbbb3bbbbbbbb..
 ...bb'''bbb'''bbb'''bb...
...bb'''''b'''''b'''''bb...
..bbb''''1'''''''1''''bbb..
.bbbb'''''b'''''b'''''bbbb.
.bbbbb'''bbb'''bbb'''bbbbb.
..bbbbb'bbbbbbbbbbb'bbbbb..
...bbb''.bbb'''bbb'''bbb...
 ...b'''''b''2''b'''''b...
  ..b'''''b'1d1'b'''''b..
 ...b'''''b'''''b'''''b...
...bbb'''bbb'''bbb'''bbb...
..bbbbb'bbbbb'bbbbb'bbbbb..
.bbbbb'''bbb'''bbb'''bbbbb.
.bbbb'''''b'''''b'''''bbbb.
..bbb''''1'''''''1''''bbb..
...bb'''''b'''''b'''''bb...
 ...bb'''bbb'''bbb'''bb...
   ..bbbbbbbbbbbbbbbbb..
    ..bbbbbb...bbbbbb..
    ...bbbb.....bbbb...
     ...bb... ...bb...
      ......   ......
ENDMAP

# Ring of the Mage's guarded_unrand vault, moved from Depths.
NAME:   minmay_guarded_unrand_mage
TAGS:   no_monster_gen no_item_gen transparent no_pool_fixup vaults_hard
DEPTH:  Vaults, !Vaults:$
WEIGHT: 5
MONS:   arcanist / ogre mage / boggart
MONS:   orange crystal statue / obsidian statue
KMONS:  3 = lich w:40 / ancient lich / dread lich
KITEM:  3 = ring_of_the_mage no_pickup
KITEM:  $ = $ no_pickup
KFEAT:  z = c
KPROP:  '23+> = no_tele_into
TILE:   c = dngn_stone_wall_blue
: tile("z = " .. crackle_def(_G))
FTILE:  '23+> = floor_metal_gold
MAP
.......             .......
.ccccc..           ..ccccc.
.c$1.c...         ...c.1$c.
.c1..+....       ....+..1c.
.c...c.....     .....c...c.
.cc+cc......   ......cc+cc.
...........................
 ......WWWWWWWWWWWWW......
  .....WwwwwwwwwwwwW.....
   ....WwzcnczcnczwW....
    ...Wwc>''c'''cwW...
     ..Wwn'3'+'2'nwW..
      .Wwc'''c'''cwW.
      .Wwzccczc+czwW.
      .Wwc'''c'''cwW.
     ..Wwn'2'+'2'nwW..
    ...Wwc'''c''>cwW...
   ....Wwzc=czcnczwW....
  .....WwwwwwwwwwwwW.....
 ......WWWWWWWWWWWWW......
...........................
.cc+cc......   ......cc+cc.
.c...c.....     .....c...c.
.c1..+....       ....+..1c.
.c$1.c...         ...c.1$c.
.ccccc..           ..ccccc.
.......             .......
ENDMAP

NAME:    abrahamwl_protected_by_tso_1
TAGS:    patrolling no_monster_gen no_item_gen no_pool_fixup vaults_orient_e
WEIGHT:  4
COLOUR:  _2 = yellow
FTILE:   _A2| = floor_limestone
FTILE:   .!13+TG = floor_metal_gold
: init_protected_by_tso(_G)
MAP
 xxxxx
 xcccx xxxxxxxxxxxxxx
 xc|cxxxxcccccccccccx
 xc_cxxxxc_........cx
 xc_cxxxxc_......3.cxx.
 xc_ccccxc_.G...G..cxx.
xxc+ccGccc.........cxx.
xcc__....+.........=xx.
xcA2_....+....1....=!+.
xcc__....+.........=xx.
xxc+ccGccc.........cxx.
 xc_ccccxc_.G...G..cxx.
 xc_cxxxxc_......3.cxx.
 xc_cxxxxc_........cx
 xc|cxxxxcccccccccccx
 xcccx xxxxxxxxxxxxxx
 xxxxx
ENDMAP

NAME:    abrahamwl_protected_by_tso_2
TAGS:    patrolling no_monster_gen no_item_gen no_pool_fixup vaults_orient_e
WEIGHT:  4
SUBST:   T : T G:1
SHUFFLE: %|
COLOUR:  _2 = yellow
FTILE:   _A2 = floor_limestone
FTILE:   .!13+TG = floor_metal_gold
: init_protected_by_tso(_G)
MAP
 xxxxx
 xcccxxx
xxc|cxcxxxxxxxxxxxx
xcc+ccccccccccccccx
xc_Wxxxx.........cx
xc_wWxxx.......3.cxx
xc_wwWxx..G.T.G..cxx
xc_wwWxx.........cxx
xc_www.+.........=xx.
xcA_2__+.....1...=!+.
xc_www.+.........=xx.
xc_wwWxx.........cxx
xc_wwWxx..G.T.G..cxx
xc_wWxxx.......3.cxx
xc_Wxxxx.........cx
xcc+ccccccccccccccx
xxc%cxcxxxxxxxxxxxx
 xcccxxx
 xxxxx
ENDMAP

NAME:    abrahamwl_protected_by_tso_3
TAGS:    patrolling no_monster_gen no_item_gen no_pool_fixup vaults_orient_e
WEIGHT:  4
SHUFFLE: |%
SUBST:   T : T F:1
COLOUR:  _2 = yellow
FTILE:   _A2 = floor_limestone
FTILE:   .!13+TFG = floor_metal_gold
: single_cloud(_G, "F", "blessed fire", false)
: init_protected_by_tso(_G)
MAP
     xxxxx
    xxcccx
  xxxxc%cxxxxxxxxxxxx
 xxcccc+ccccccccccccx
xxxcWWWWWx....3....cx
xxxcW.T.Tx.........cxx
xxxcW....x..G...G..cxx.
xxxcW_...x.........cxx.
xcccT____+.........=xx.
xc|+A_2__+....1....=!+.
xcccT____+.........=xx.
xxxcW_...x.........cxx.
xxxcW....x..G...G..cxx.
xxxcW.T.Tx.........cxx
xxxcWWWWWx....3....cx
 xxcccc+ccccccccccccx
  xxxxc*cxxxxxxxxxxxx
    xxcccx
     xxxxx
ENDMAP

NAME:   wander_protected_by_tso
TAGS:   patrolling no_monster_gen no_item_gen vaults_orient_e
WEIGHT: 4
COLOUR: _2 = yellow
FTILE:  _|%AU2 = floor_limestone
FTILE:  .!13+G = floor_metal_gold
: init_protected_by_tso(_G)
MAP
 xxxxxxxxxxxxxxxxxx
xxcccccxccccccccccxxxx
xcc.%.cccG..G.3G.cccxx
xc.U_U..+.........=cx.
xc|_A_2_+.....1...=!+.
xc.U_U..+.........=cx.
xcc.%.cccG..G.3G.cccxx
xxcccccxcccccccccxxxx
 xxxxxxxxxxxxxxxxx
ENDMAP

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

NAME:    blue_anna_index_fallen_heroes_tomb
TAGS:    vaults_orient_s no_wall_fixup
MONS:    spectral centaur warrior / \
         spectral orc knight w:20 / spectral dire elephant
MONS:    ironbound preserver, phantasmal warrior
MONS:    fire giant / frost giant w:15 / stone giant, war gargoyle
ITEM:    war axe randart / arbalest randart / great mace randart / \
         chain mail randart / kite shield randart
SHUFFLE: ABCDEFH
NSUBST:  1 = 1:2 / 1:23 / *:1, 5 = 1:4 / *:5
SUBST:   AB = x, C : x1, D : xxT., EFH = .
TILE:    G = dngn_statue_axe
TILE:    c = wall_crypt
TILE:    x = wall_undead
: decorative_floor(_G, '-', "mourning vase")
: vaults_hard_standard(_G, true)
FTILE:   - = floor_metal_gold
MAP
vvvvvvvvvvvvvvvvvvvvv
v...................v
v.A.....B.T.B.....A.v
v.........*.........v
v..ccccG-.B.-Gcccc..v
v.....c1.....1c.....v
v.....c.......c.....v
vvvv..cG-.C.-Gc..vvvv
v$$x..n1.....1n..x$$v
vd$x..n.......n..x$dv
v..v..cG-...-Gc..v..v
v..5..c1.....1c..5..v
v..2..c.......c..2..v
vccccccG-.C.-Gccccccv
v...................v
v.E.......D.......E.v
v...vvv.D...D.vvv...v
v.5.v.....A.....v.5.v
v.E.v...........v.E.v
vvvvvvvvv...vvvvvvvvv
ENDMAP

# The Hell Knights are playing the Vault tonight. Rock! \m/ (Shiori)
NAME:    shiori_index_metal_show
TAGS:    vaults_hard vaults_orient_e
TAGS:    no_monster_gen no_item_gen no_wall_fixup
WEIGHT:  5
# the fans
MONS:    arcanist ; ring mail . mace / death knight w:4
MONS:    vault guard w:20 / vault sentinel / ironbound preserver / \
         ironbound mechanist
MONS:    orc knight, ironbound thunderhulk / ogre mage w:5 ; dire flail . robe
MONS:    deep elf high priest / deep elf death mage / deep elf annihilator / \
         deep elf demonologist / deep elf sorcerer
MONS:    entropy weaver w:5 / war gargoyle
KMONS:   0 = vault guard draugr / two-headed ogre zombie / \
             guardian sphinx zombie
# the staff
KMONS:   S = patrolling vault warden
# the bouncers
KMONS:   B = patrolling deep troll / patrolling ettin
# the performers
KMONS:   K = patrolling hell knight
KMONS:   M = patrolling Margery w:1 / patrolling hell knight, \
             patrolling hell knight
# and snacks
KITEM:   ? = potion of moonshine pre_id q:3, \
             any potion w:30 / potion of mutation pre_id q:1
: kitem("$ = gold q:" .. crawl.random_range(33, 133) .. " no_pickup")
KITEM:   MK` = human skeleton
KFEAT:   Y = fountain_blood
KFEAT:   ! = cache_of_meat
NSUBST:  ' = 3:1 / 4:0 / 1:410 / *:., " = 3:1 / 2:4 / 3:0 / *:., M = 1:M / *:`
SHUFFLE: 123, 456
SUBST:   G = G-
TILE:    v = dngn_metal_wall_red
COLOUR:  MK` = magenta
FTILE:   MKY` = floor_rough_red
: vault_granite_statue_setup(_G, 'G', "gravestone")
: decorative_floor(_G, '-', "mop and bucket")
MARKER:  Y = lua:fog_machine{ cloud_type = "thin mist", \
                              pow_max = 15, delay_min = 100, delay_max = 150, \
                              size = 2, size_buildup_amnt = 10, \
                              size_buildup_time = 1000 }
MAP
vvvvvvvvvvvvvvv
vvvvvvvvvvvvvvv..
vv?+`KKKK`+S$$v...
vv!v`MMMM`vv$$v'...
vvvvvY``Yvvvvvv''..
vv........vvvvv''..
vv?m.v..v.vv''+B'..
vv?m""""""vv''v''..
vv?m""""""vv''+B'..
vv?m"v""v"vv''v''..
vv!m""""""vv..+B'..
vvSm""""""vv..v''..
vvvvvvBBvvvv..v''..
vvG"..........v''..
vv""..........v'..
vvvvvvvvvvvvvvv..
vvvvvvvvvvvvvvv
ENDMAP

##############################################################################
# The Constructs Gauntlet (by Mu, modernized by HangedMan)
#
# Each room is progressively more challenging; both the constructs, and their
# creators.
NAME:   constructs_gauntlet_mu_hangedman
TAGS:   no_monster_gen no_item_gen no_pool_fixup no_descent
TAGS:   vaults_orient_w vaults_hard
DEPTH:  Vaults, !Vaults:$
MONS:   gargoyle, peacekeeper, thermic dynamo
MONS:   dancing weapon, crystal guardian, war gargoyle
KMONS:  A = arcanist
KMONS:  B = deep elf zephyrmancer
KMONS:  C = deep elf annihilator
KMONS:  D = lich
KMONS:  E = ironbound mechanist
KMONS:  F = ancient lich / Boris w:2, ancient lich / dread lich w:2
ITEM:   randbook disc:forgecraft / manual of forgecraft w:5
KFEAT:  yz = .
COLOUR: y = yellow
COLOUR: z = lightblue
FTILE:  y = floor_rough_red
FTILE:  z = floor_rough_blue
MARKER: y = lua:fog_machine { \
                pow_max = 10, delay_min = 10, delay_max = 40, \
                size = 4, size_buildup_amnt = 1, \
                size_buildup_time = 25, cloud_type = "flame" }
MARKER: z = lua:fog_machine { \
                pow_max = 10, delay_min = 10, delay_max = 40, \
                size = 4, size_buildup_amnt = 1, \
                size_buildup_time = 25, cloud_type = "freezing vapour" }
: vault_metal_statue_setup(_G, "G", "earthen conduit")
: vaults_hard_standard(_G)
FTILE:  ABCDEFyz = floor_metal_gold
MAP
 c......+.....cc......+....$c
 cycccccc.....cczcccccc...6$c
 c.....cc*.E5.cc.....cc..F.$G
 cccccycc|.5..cccccczcc.6.>$c
 c.....cc*$$..+......cc||||dc
 c.cccccccccccccccccccccccccc
 c+cccccccccccccccccccccccccc
 c.....cllllllcc%$$..cwwwwwwc
 c...4.clcccclcc$>.3.cwccccwc
 G..D..+.cllllcc$3C..+.cwwwwc
 c%4...ccclccccc..3..cccwcccc
 c$$$%%ccclllll+.....cccwwwwc
 ccccccccccccccccccccccccccwc
 cccccccccccccccccccccccccc+c
.cG.....+...$$ccWWWWWW+.....c
.c.cccccc..1.$ccWcccccc...2.c
.c....Gcc..A..ccWWWWWWc..B..G
.ccccc.cc..1..cccccccWc.2.1$c
.+.....cc.....+WWWWWWWc...$%c
ENDMAP

NAME:   dpeg_vaults_hating_casters
MONS:   ghost moth
KFEAT:  m = iron_grate
SUBST:  % = %%%$* , * = **|
NSUBST: . = 6:0 / *:.
SUBST:  0 = 00009, 8 = 889
SUBST:  _ : x. , + : +==
NSUBST: = = 1:+ / *=+x
KPROP:  1 = no_tele_into
: vaults_hard_standard(_G)
MAP
    @@@
xxxx+++xxxx
x%%.....%%x
x%..000..%x
x_..mmm.._x
x_..m1m.._x
x_..mmm.._x
x...***...x
x8.......8x
xxxxxxxxxxx
ENDMAP

NAME:   kennysheep_ogre_elephant_herders
TAGS:   no_trap_gen orient_s
DEPTH:  Vaults, !Vaults:$
MONS:   ogre mage, ironbound thunderhulk, dire elephant
KMONS:  B = bush
SUBST:  * = **%
NSUBST: 1 = 1:1 / 1:1. / 1:2 / 1:2. / *:., 3 = 2:3 / 3 = 3. / .
TILE:   G = dngn_statue_elephant
: single_cloud(_G, "F", "flame", true)
: vault_metal_statue_setup(_G, "g", "mystic cage")
: vaults_hard_standard(_G, true)
FTILE:  B = floor_sprouting_stone
MAP
  xxxxxx
  xBxxBx  xxxxxx
  xB.33xxxx.1**x
  x.3.3.3.B1.1*x
  xB.3B.3...1.1x
xxx.3..3.....1.x
xB...33........x
x.......G..G...x
xxB...g......g.x
 xxxx....FF....x
    x....FF....x
    x.g......g.x
    x...G..G...x
     ...........
ENDMAP

NAME:  nicolae_vaults_library_corner
TAGS:  vaults_orient_e vaults_orient_s
# The deep elf librarian is doing some reshelving. There might be a second
# (or even third) librarian hanging out in the reading nooks. And of course,
# some ironbound vault security.
KITEM: L = any manual, any book good_item / any scroll good_item / nothing, \
           any book / any scroll / nothing
KITEM: RN = any book good_item / any scroll good_item
KMONS: LN = deep elf annihilator / deep elf sorcerer / deep elf high priest / \
           deep elf death mage / deep elf demonologist
KMONS: R = arcanist / lich / ogre mage / deep troll earth mage
KMONS: S = vault sentinel / vault warden / ironbound preserver / \
           ironbound convoker
SUBST: R = R:80 N, S = SSS.
TILE:  c = wall_studio
: vaults_hard_standard(_G, false, ".nLNRS")
MAP
cRcRcRc
R.....c
c.....c
R..LcS.
c..cn..
R..S...
ccc....
ENDMAP

NAME:   nicolae_vaults_loss_of_containment
MONS:   glowing shapeshifter
ITEM:   large rock q:1
NSUBST: ' = 1:d / 2:Gx / * = xxxd, S = 3:S / S..
SUBST:  - = x.
: vault_metal_statue_setup(_G, "G", "mystic cage")
: vaults_hard_standard(_G)
MAP
...........
.---.1.---.
.-1..-..1-.
.-.'''''.-.
...'...'...
.1-'.1.'-1.
...'...'...
.-.'''''.-.
.-1..-..1-.
.---.1.---.
...........
ENDMAP

NAME:    nicolae_vaults_oozy_zoo
KITEM:   O = * / | w:3
KMONS:   O = slime creature w:40 / glowing orange brain / great orb of eyes / \
             large slime creature / very large slime creature w:5 / \
             void ooze w:5
KMASK:   O = no_trap_gen
KPROP:   O = no_tele_into
SHUFFLE: xn
NSUBST:  n = 1== / n
: vaults_hard_standard(_G)
FTILE:   =nO = floor_pebble_green
MAP
.........
.........
..xnxnx..
..nOOOn..
..xOOOx..
..nOOOn..
..xnxnx..
.........
.........
ENDMAP

NAME:   nicolae_vaults_stand_back
KITEM:  EH = * w:15 / | w:5
KMONS:  E = patrolling eidolon
KMONS:  F = patrolling ironbound frostheart
KMONS:  H = patrolling ironbound thunderhulk
NSUBST: F = 2=F / 0
: vaults_hard_standard(_G, false, ".EFH0")
MAP
x..........x
............
..x......x..
............
....x.Fx....
....FEH.....
.....HEF....
....xF.x....
............
..x......x..
............
x..........x
ENDMAP

NAME:  nicolae_vaults_you_can_take_it_with_you
TAGS:  vaults_orient_w
KMONS: L = patrolling dread lich / patrolling ancient lich
KMONS: P = death knight / hell knight / phantasmal warrior / lich / \
           shadow wraith / freezing wraith / flayed ghost / eidolon
SUBST: p = P.., * = **|
: vaults_hard_standard(_G, false, ".+nLP*|")
MAP
....n...n**|.
.p..n.p.n**P.
..x+x...xxx..
xxx...x..px+x
xp....n......
x..p..n..P.L.
xp....n......
xxx...x..px+x
..x+x...xxx..
.p..n.p.n**P.
....n...n**|.
ENDMAP

NAME:    regret_index_vaults_magi_blasting
TAGS:    vaults_orient_n vaults_orient_w
NSUBST:  1 = 2:1 / 1:. / * = 11.
SHUFFLE: ABCDEF, +-
SUBST:   AB = x, C : xx., D : x.., EF = ., - : +x, + : +++.
NSUBST:  12 = 2:.
: index_vaults_room_themes(_G, "magic", true)
FTILE:   .+1234def = floor_crystal
MAP
...
...xxxxxxxxxxxx
.............1xxx
 x.b...A....B...
 x..x....xx.....2
 x...b.xxxxxx1.C.
 x....xx...3xx....
 x.A.xx4.....xx.D.
 x...x...be2..-...
 x..xx..bbcd..xx..
 x..xx..ecbb..xx..
 x...x3.2db...+...
 x.B.xx.....1xx.E.
 x1..1xx....xx...d
 xx....x-xx+x....
  x..C...xx.....d
  x 2..D....E..d
      .......d
ENDMAP

NAME:    regret_index_vaults_faire_storage
TAGS:    patrolling vaults_orient_w vaults_orient_s
SHUFFLE: ABCDE
SUBST:   A : Iv, B : v., C : v., DE = .,  m : m., * = %**
: index_vaults_room_themes(_G, "icebox", true)
: vaults_hard_standard(_G)
MAP
    vvvv*....D.......
 vvvv*e..C...2..I4I..
 v*d........vvv.vvv.A
 v...1..I1I.I2I..m...
 vB.vvv.vvv.....I3I..
 v..I1I..m..vvv.vvv.B
 v......I1I.I2I..3...
.vA.vvv.vvv........d*
.+..I1I..1...C..e*vvv
.+.......D....*vvvv
.+++vvvvvvvvvvvv
.....
ENDMAP

NAME:    regret_index_vaults_park_twin
TAGS:    patrolling vaults_orient_e vaults_orient_s
SHUFFLE: ABCDE, Ss, +-
SUBST:   AB = x, C : x., DE = ., s = `, F : F`, - : +x, | = |**%
: index_vaults_room_themes(_G, "garden", true)
MAP
     xx1123
    xx`...12x
   pFxs`.C.|x
  pw`xSs.D.|x
 xF`S``...d1x
xxxx`xn+-xxxx
x`sS`n3......
1.`s.+.T...A.
1....-..2B...
2.CD.x..B
31..dx.A.
 2||1x...
 xxxxx...
ENDMAP

NAME:   nicolae_vaults_agitated_armoury
TAGS:   vaults_orient_n
KMONS:  1 = dancing weapon ; any weapon good_item
KMONS:  2 = dancing weapon ; any weapon randart
KMONS:  3 = undying armoury
NSUBST: D = 3 / 3111 / 2 / 2111 / 3=1 / 3=` / 1```
KPROP:  123` = no_tele_into
: vaults_hard_standard(_G)
FTILE:  ` = floor_metal_gold
MAP
xx.......xx
`nn.....nn`
D.==...==`D
```nnnnn```
`D```D```D`
```D```D```
 D```D```D
  `D```D`
   ``D``
ENDMAP

NAME:   nicolae_vaults_concentrated_fire
TAGS:   vaults_orient_n vaults_orient_s
NSUBST: * = 3=d / 3=* / *dd...
NSUBST: 1 = 3=1 / 2=12 / 1.., 3 = 4 / 2=3 / 34 / 3..
: index_vaults_room_themes(_G, "rangers", true)
: vaults_hard_standard(_G)
MAP
          xx...xx
          x.....x
 xxxx    xx.....xx    xxxx
 x**xx   x...1...x   xx**x
xx...xxx x.......x xxx...xx
xU.3...xxx.1...1.xxx...3.Ux
x....2...............2....x
x3.......U...1...U.......3x
x....2...............2....x
xU.3...xxx.1...1.xxx...3.Ux
xx...xxx x.......x xxx...xx
 x**xx   x...1...x   xx**x
 xxxx    xx.....xx    xxxx
          x.....x
          xx...xx
ENDMAP

NAME:    nicolae_vaults_crypt_galaxy
SHUFFLE: DEFHJ, KLMN
SUBST:   DE : u, F : ., H : u., J : u., K : u, L : ., M : u., N : u.
NSUBST:  p = 2=1 / 1=2 / 3=112..d / .d, q = 2=1 / 1=2 / 3=112..d / .d
NSUBST:  * = 3=* / d / d**|
: index_vaults_room_themes(_G, "warriorcrypt", true)
: vaults_hard_standard(_G)
MAP
vvvvvvvvvvvvvvvv.....
vD...+.E.......F.....
v.p..+.p..p.p..p..G..
v..p.+.....H.........
vJ...vvucccccccu.....
vv...KcccL***Mcvvvvv
 v.p..+.......+...Nv
 v..p.+.3.4.3.+.q..v
 vN...+.......+..q.v
 vvvvvcM***LcccK...vv
.....ucccccccuvv...Jv
.........H.....+.q..v
..G..q..q.q..q.+..q.v
.....F.......E.+...Dv
.....vvvvvvvvvvvvvvvv
ENDMAP

NAME:    nicolae_vaults_elemental_giants
KMONS:   1 = stone giant
KMONS:   2 = fire giant / frost giant
KMONS:   3 = titan
KITEM:   d = giant club ego:flaming / giant spiked club ego:flaming / \
           giant club ego:freezing / giant spiked club ego:freezing / \
           giant club ego:electrocution / giant spiked club ego:electrocution /\
           giant club ego:heavy / giant spiked club ego:heavy / \
           large rock / animal skin
SHUFFLE: apqrsuyz
SUBST:   ap : x, qr : M, s : xM, u : xM, y : xM, z : xM
NSUBST:  M = 1=3 / 2=2 / 2=1 / 3=11d / 2=2d / ., d = 3=d / 3=* / 3=d*. / .
: vaults_hard_standard(_G)
MAP
        ...
       .....
      .......
     xxy.r.yxx
    xxd.....dxx
   xxz.u.q.u.zxx
  .xd.........dx.
 ..y.u.s.p.s.u.y..
...................
...r.q.p.a.p.q.r...
...................
 ..y.u.s.p.s.u.y..
  .xd.........dx.
   xxz.u.q.u.zxx
    xxd.....dxx
     xxy.r.yxx
      .......
       .....
        ...
ENDMAP

NAME:    nicolae_vaults_lava_storage_facility
KMONS:   1 = yaktaur captain ; arbalest ego:flaming pre_id w:15 | \
             hand cannon ego:flaming pre_id w:3
: local f = "great sword ego:flaming pre_id | long sword ego:flaming pre_id |"..
: " battle axe ego:flaming pre_id | war axe ego:flaming pre_id | great mace " ..
: "ego:flaming pre_id | dire flail ego:flaming pre_id | bardiche ego:flaming "..
: "pre_id | glaive ego:flaming pre_id . ring mail ego:fire_resistance pre_id|"..
: "chain mail ego:fire_resistance pre_id | " ..
: "plate armour ego:fire_resistance pre_id"
: kmons("2 = hell knight / orc warlord ; " .. f .. " / tengu reaver ; " .. f ..
:       " / vault guard ; " .. f .. " / vault warden ; " .. f )
KMONS:   3 = fire giant / red very ugly thing / deep elf annihilator
KMONS:   4 = golden dragon
KMONS:   R = red ugly thing / lindwurm
SHUFFLE: DEFHJ
SUBST:   D = G, E : GR, F : GR, H : GR, R = R.., J = R, * = |**%
SUBST:   p = a3, a = 12.., 3 = 333.., 4 = 4.
KPROP:   l = no_tele_into
KMASK:   l = no_monster_gen
: vault_metal_statue_setup(_G, "G", "fiery conduit")
: vaults_hard_standard(_G)
FTILE:   R = floor_metal_gold
MAP
....xxxxxxxxxxxxx....
....xlllx***xlllx....
....xlllx.4.xlllx....
x.D.xlllx.H.xlllx.D.x
x...xnnnx...xnnnx...x
x.a...p...3...p...a.x
x...................x
x.E.a.F.3.J.3.F.a.E.x
x...................x
x.a...p...3...p...a.x
x...xnnnx...xnnnx...x
x.D.xlllx.H.xlllx.D.x
....xlllx.4.xlllx....
....xlllx***xlllx....
....xxxxxxxxxxxxx....
ENDMAP

NAME:    nicolae_vaults_magic_librarian_arc
SHUFFLE: PQRSZ/ZSRQP, Pp/Qq/Rr/Ss/Zz, Pp, Qq, Rr
SUBST:   PQRSz = c, pqrsZ = ., D = 112
NSUBST:  d = 2=d / 2=e / 3=de.. / ., * = 4=* / 2=**|...
NSUBST:  1 = 4=1 / 3=211... / ., 2 = 2=2 / 2=322... / ., 3 = 2=3 / 2=433... / .
: vault_metal_statue_setup(_G, "G", "arcane conduit")
: index_vaults_room_themes(_G, "magic", true)
: vaults_hard_standard(_G)
MAP
     xxxxxxxxx..
   xxxcGcccccG....
  xxcd.p.*d*dc.1..1
 xxd...q....*c......
 xc...2r..3.dc......
xxd....s....*c.1..1..
xc..2..z.....c.......
xGPQRSZG3.4.3GZSRQPGx
.......c.....z..2..cx
..1..1.c*....s....dxx
 ......cd.3..r2...cx
 ......c*....q...dxx
  1..1.cd*d*.p2dcxx
   ....GcccccGcxxx
     ..xxxxxxxxx
ENDMAP

NAME:    nicolae_vaults_office_building
KMONS:   1 = vault guard
KMONS:   2 = vault sentinel / ironbound convoker / ironbound preserver
KMONS:   3 = ironbound frostheart / ironbound thunderhulk
KMONS:   4 = vault warden
SHUFFLE: Pp/Qq/Rr, HJ
SUBST:   P = x, H : xxxn, p = +, qrz = x:70 nn+
NSUBST:  QR = 4=1. / 2=2 / 2=2. / 3.. / ., J = 3 / 2=3. / 2. / *
NSUBST:  * = | / 3=* / 2=*. / .
:lua_marker('+', props_marker { connected_exclude="true" })
: vaults_hard_standard(_G)
MAP
      P.Q.PxR.P.R
      .R.R.p.Q.Q.
      Q.1.QrP.1.P
      .R.R.p.Q.Q.
      P.Q.PxR.P.R
      qpxrqxpqxrq
   Q.R.Qx.....pQ.R.Q
   .P.P.r.HJH.x.P.P.
   R.1.Rx.*4*.pR.1.R
   .P.P.r.JHJ.x.P.P.
   Q.R.Qx.....pQ.R.Q
   rqxxpxzzxzzxrxxqp
R.P.Rq.....z.....rP.Q.P
.Q.Q.p.*JH.z.HJ*.q.R.R.
P.1.Pq.H4J.z.J4H.rQ.1.Q
.Q.Q.p.JH*.z.*HJ.q.R.R.
R.P.Rq.....z.....rP.Q.P
   rpxrqxrxxxpxpqxrp
   P.Q.PxQ.R.QxR.P.R
   .R.R.q.P.P.r.Q.Q.
   Q.1.QpR.1.RqP.1.P
   .R.R.q.P.P.r.Q.Q.
   P.Q.PxQ.R.QxR.P.R
ENDMAP

NAME:    nicolae_vaults_shooty_hallways
SHUFFLE: DEF, HJK, LMN
SUBST:   DHL : x, EJM : ., FKN = U.
NSUBST:  p = 2 / 3=1 / 1. / ., q = 3 / 2=2 / 1 / 1.. / .
NSUBST:  r = 4 / 2=3 / 2 / 1 / 21.... / .
: index_vaults_room_themes(_G, "rangers", true)
: vaults_hard_standard(_G)
MAP
  x.....xxxxxxx
  x.....x.....xxxxxxx
  xDEFEDx..q..+.....x
  x.....xHJKJHx..r..x
 xx..p..x..q..xLMNMLx
 x.....xx.....x.....x
 x..p..xq...qxx..r..x
 xFEDEFx.....x.....xx
 x.....xKJHJKx..r..x
xxp...px..q..xNMLMNx
x.....xx.....x.....x
x..p..x..q..xxr...rx
xDEFEDx.....x.....xx
x.....xHJKJHx..r..x
x..p..+..q..xLMNMLx
xxxxxxx.....x*d*d*x
      xxxxxxxd*d*dx
            xxxxxxx
ENDMAP

NAME:   nicolae_vaults_under_constructs-ion
KMONS:  1 = crystal guardian
KMONS:  2 = peacekeeper / war gargoyle
KMONS:  3 = dancing weapon
: local glifz = "DEFHJKLMN"
: for i = 1, string.len(glifz), 1 do
:    subvault(string.sub(glifz, i, i) .. " : nico_constructs_doodad")
: end
NSUBST: J = 1 / *
NSUBST: E = 2 / %%. / ., H = 2 / %%. / ., K = 2 / %%. / ., M = 2 / %%. / .
NSUBST: DFLN = 1 / 1... / 2 / 2... / 3=3 / 3=3. / .
: vaults_hard_standard(_G)
MAP
.............
.DDD.EEE.FFF.
.DDD.EEE.FFF.
.DDD.EEE.FFF.
.............
.HHH.JJJ.KKK.
.HHH.JJJ.KKK.
.HHH.JJJ.KKK.
.............
.LLL.MMM.NNN.
.LLL.MMM.NNN.
.LLL.MMM.NNN.
.............
ENDMAP

NAME:   nicolae_vaults_underconstruct_subvault
TAGS:   unrand allow_dup no_dump nico_constructs_doodad
NSUBST: D = x / _, F = x / _
CLEAR:  _
MAP
DDD
xxx
FFF
ENDMAP
