################################################################################
# vaults_rooms_standard.des: Subvaults for the Vaults.
#
# Content: These are the subvaults that place a small number of monsters.
################################################################################
#
# All of the subvaults in here should use the tag vaults_room
#
# 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.
#
# For the most part, any )s [a potential staircase placement]
# should avoid placing near more than four walls, and definitely not
# in corridor or otherwise chokepoints.
#
# These subvaults will be common building material for the Vaults branch,
# so keep gimmickry to an absolute minimum or at the very least tiny weight.
# Stick with walls, doors, 0, and 0 band, for the most part.
# Also, use allow_dup only on the generic layouts.
#
################################################################################

: crawl_require('dlua/vault.lua')

{{

 -- This defines rough standards used for monster placement in these subvaults.
 -- Try to stick with using this for most subvaults, depending on openness:
 -- "small for ~11x11, "large" for ~>14x14, and "medium" for some in between.
 -- Otherwise, use "custom", or not bother with the function.

function vaults_room_setup(e, nsubst_glyph, nsubst_size)
  e.tags("vaults_room")
  e.mons("0 band")
  if nsubst_size == "small" then
    e.nsubst(nsubst_glyph .. " = 1:1 / 2 = 1.. / *:.")
  elseif nsubst_size == "medium" then
    e.nsubst(nsubst_glyph .. " = 2:1 / 1 = 1.. / *:.")
  elseif nsubst_size == "large" then
    e.nsubst(nsubst_glyph .. " = 2:1 / 2 = 1. / *:.")
  end
end

}}

NAME:     vaults_standard_mumra_x
SUBST:    ) = )..
: vaults_room_setup(_G, "'", "small")
MAP
''.....''
'x..)..x'
.xx...xx.
..xx'xx..
...xxx...
.).'x'.).
...xxx...
..xx'xx..
.xx...xx.
'x..)..x'
''.....''
ENDMAP

NAME:     vaults_standard_mumra_enter_the_diamond
TAGS:     allow_dup vaults_orient_e vaults_orient_w
: vaults_room_setup(_G, ".", "small")
MAP
...........
....xxx....
...xx.xx...
..xx...xx..
.xx.....xx.
.....).....
.xx.....xx.
..xx...xx..
...xx.xx...
....xxx....
...........
ENDMAP

NAME:     vaults_standard_mumra_lines
TAGS:     vaults_orient_e vaults_orient_w
SUBST:    ( = .:2 (:1
: vaults_room_setup(_G, ".", "large")
MAP
....xx.(...
.....xx....
......xx...
.......xx..
.....x.....
....xx.....
...xx......
..xx..xx...
.xx....xx..
xx......xx.
x..xx....xx
....xx....x
.....xx....
...(..xx.(.
.......xx..
ENDMAP

NAME:     vaults_room_corners
TAGS:     allow_dup no_monster_gen
SUBST:    G : xxxxG..........
: vaults_room_setup(_G, ".", "custom")
MAP
xx...xx
xxG.Gxx
.G...G.
...1...
.G...G.
xxG.Gxx
xx...xx
ENDMAP

NAME:     vaults_room_fours
TAGS:     allow_dup
SUBST:    w : x:20 w:5
: vaults_room_setup(_G, ".", "custom")
NSUBST:   . = 1:( / *:.
MAP
.......
.ww.ww.
.ww.ww.
...1...
.ww.ww.
.ww.ww.
.......
ENDMAP

# With apologies to NetHack.
# You'd expect the second room to be completely full of monsters,
# but that would be just a little unfair.
NAME:     vaults_room_grunt_arrival_ludios
WEIGHT:   15 (Vaults:1), 3
TAGS:     vaults_room vaults_orient_e
SUBST:    0 = 00.
SHUFFLE:  {([<
MAP
xxxxxx..
.0.0.x..
0.0.0+..
.0.0.x..
0.0.0x..
..x+xxxx
..x...(x
..x..{[x
ENDMAP

NAME:     vaults_room_door_hall
TAGS:     allow_dup
: vaults_room_setup(_G, ".", "small")
NSUBST:   ( = 1:( / *:.
MAP
......(xxx
.......xxx
..xxxxxxxx
..x....x..
..+....+..
..+....+..
..x....x..
..xxxxxxxx
.......xxx
......(xxx
ENDMAP

NAME:     vaults_room_grunt_arrival_checkpoint
TAGS:     vaults_room vaults_orient_e no_monster_gen no_item_gen no_trap_gen
WEIGHT:   5 (Vaults:1), 3
MONS:     vault guard
MAP
xxxxxxxxxx
xxxx.T.xxx
xxxx...xxx
x..n1.1n..
x(.+...+..
x..n1.1n..
xxxx...xxx
xxxx.T.xxx
xxxxxxxxxx
ENDMAP

NAME:     vaults_room_boxed
NSUBST:   - = 1:+ / 2=x+ / *:x
: vaults_room_setup(_G, ".", "large")
MAP
xxxx.......xxxx
xxxx.......xxxx
xxxxxxx+xxxxxxx
xxx.........xxx
..x.x-----x.x..
..x.-.....-.x..
..x.-.....-.x..
..+.-.....-.+..
..x.-.....-.x..
..x.-.....-.x..
..x.x-----x.x..
xxx.........xxx
xxxxxxx+xxxxxxx
xxxx.......xxxx
xxxx.......xxxx
ENDMAP

NAME:    v_pattern_1
TAGS:    luniq_lattice
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
.x.x...x.x.
x.x.x.x.x.x
.x.x.x.x.x.
x.x.x.x.x.x
.x.x.x.x.x.
..x.x.x.x..
.x.x.x.x.x.
x.x.x.x.x.x
.x.x.x.x.x.
x.x.x.x.x.x
.x.x...x.x.
ENDMAP

NAME:    v_pattern_2
TAGS:    luniq_lattice
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
.x.x...x.x.
x.x.x.x.x.x
.x.x.x.x.x.
x.x.....x.x
.x.......x.
..x..0..x..
.x.......x.
x.x.....x.x
.x.x.x.x.x.
x.x.x.x.x.x
.x.x...x.x.
ENDMAP

NAME:    v_pattern_3
TAGS:    vaults_room luniq_lattice
SHUFFLE: wuyz / ''''
NSUBST:  w = 1:+ / *:x
NSUBST:  u = 1:+ / *:x
NSUBST:  y = 1:+ / *:x
NSUBST:  z = 1:+ / *:x
SUBST:   ' = .
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
...x...x...
.0.wx.xy.0.
...x.x.x...
xwxwx.xyxyx
.x.x.x.x.x.
..x.x.x.x..
.x.x.x.x.x.
xzxzx.xuxux
...x.x.x...
.0.zx.xu.0.
...x...x...
ENDMAP

NAME:    v_pattern_4
TAGS:    luniq_lattice
SUBST:   y:x.
: vaults_room_setup(_G, ".", "small")
NSUBST:  ( = 1:( / *:.
MAP
.x.x.(.x.x.
x.x.x.x.x.x
.x.x.x.x.x.
x.x.xxx.x.x
.x.xyyyx.x.
(.xxyxyxx.(
.x.xyyyx.x.
x.x.xxx.x.x
.x.x.x.x.x.
x.x.x.x.x.x
.x.x.(.x.x.
ENDMAP

NAME:    v_pattern_5
TAGS:    luniq_lattice
SHUFFLE: zy
SUBST:   z = .
NSUBST:  y = 1:.+ / *:x
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
.x.x...x.x.
x.x.x.x.x.x
.xzxzxzxzx.
x.xyxyxyx.x
.xzx.0.xzx.
..xy0.0yx..
.xzx.0.xzx.
x.xyxyxyx.x
.xzxzxzxzx.
x.x.x.x.x.x
.x.x...x.x.
ENDMAP

NAME:    v_alt_pattern_2
TAGS:    allow_dup
NSUBST:  w = 1:+ / *:x
NSUBST:  u = 1:+ / *:x
NSUBST:  y = 1:+ / *:x
NSUBST:  z = 1:+ / *:x
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
...w...u...
.x.x.x.x.x.
...w...u...
wxwx.x.xuxu
...........
.x.x.x.x.x.
...........
zxzx.x.xyxy
...z...y...
.x.x.x.x.x.
...z...y...
ENDMAP

# Creates stairs in chokepoints, don't spawn on V:$
NAME:    v_alt_pattern_5
DEPTH:   Vaults:1-3
NSUBST:  y = 1:+ / *:x
NSUBST:  z = 1:+ / *:x
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
...........
.xzxzxzxzx.
.z...0...z.
.x.xyxyx.x.
.z.y...y.z.
.x.x0.0x.x.
.z.y...y.z.
.x.xyxyx.x.
.z...0...z.
.xzxzxzxzx.
...........
ENDMAP

NAME:    v_alt_pattern_6
TAGS:    allow_dup
SHUFFLE: wyux
SUBST:   w:., y:., u:.
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
...........
.x.x.x.x.x.
.w.w.w.w.w.
.y.y.y.y.y.
.u.u.u.u.u.
...........
.u.u.u.u.u.
.y.y.y.y.y.
.w.w.w.w.w.
.x.x.x.x.x.
...........
ENDMAP

NAME:    v_misc_1
TAGS:    allow_dup
SUBST:   +:++., y:++.
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
....x..x....
....+..+....
....x..x....
...xxyyxx...
x+xx....xx+x
...y....y...
...y....y...
x+xx....xx+x
...xxyyxx...
....x..x....
....+..+....
....x..x....
ENDMAP

NAME:    v_misc_2
TAGS:    allow_dup
SUBST:   a:x.
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
...........
...x...x...
...x...x...
.xxx...xxx.
...........
.....a.....
...........
.xxx...xxx.
...x...x...
...x...x...
...........
ENDMAP

NAME:    v_misc_3
TAGS:    allow_dup
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
...........
...........
..xxxxxxx..
..xxxxxxx..
..xxxxxxx..
..xxxxxxx..
..xxxxxxx..
..xxxxxxx..
..xxxxxxx..
...........
...........
ENDMAP

NAME:    v_misc_4
TAGS:    allow_dup
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
............
............
..xxx..xxx..
..xxx..xxx..
..xx....xx..
............
............
..xx....xx..
..xxx..xxx..
..xxx..xxx..
............
............
ENDMAP

NAME:    v_misc_5
TAGS:    allow_dup
NSUBST:  y = 1:+ / *:x
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
...........
...........
..xyyyyyx..
..y.....y..
..y.....y..
..y.....y..
..y.....y..
..y.....y..
..xyyyyyx..
...........
...........
ENDMAP

NAME:    v_misc_9
TAGS:    allow_dup
NSUBST:  y = 1:+ / *:x
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
..x.....x..
..y.....y..
..y.....y..
..y.....y..
..y.....y..
..xyyyyyx..
...........
...........
...........
...........
...........
ENDMAP

NAME:    v_misc_10
TAGS:    allow_dup
NSUBST:  y = 1:+ / *:x
NSUBST:  z = 1:+ / *:x
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
...........
...........
xzzx...xyyx
...z...y...
...z...y...
...z...y...
...z...y...
...z...y...
xzzx...xyyx
...........
...........
ENDMAP

NAME:    v_misc_11
TAGS:    vaults_orient_n vaults_orient_s allow_dup
NSUBST:  y = 1:+ / *:x
NSUBST:  z = 1:+ / *:x
NSUBST:  u = 1:+ / *:x
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
...........
...........
xyyxxxxxyyx
...........
...........
xzzxxxxxzzx
...........
...........
xuuxxxxxuux
...........
...........
ENDMAP

NAME:    v_misc_12
TAGS:    vaults_orient_n vaults_orient_s allow_dup
NSUBST:  y = 1:+ / *:x
NSUBST:  z = 1:+ / *:x
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
....x.x....
....z.y....
....z.y....
....z.y....
....z.y....
xzzzx.xyyyx
...........
...........
...........
...........
...........
ENDMAP

NAME:    v_misc_18
TAGS:    allow_dup
SUBST:   y : .+
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
...x...x...
...x...x...
...xxyxx...
xxx.....xxx
..x.....x..
..y.....y..
..x.....x..
xxx.....xxx
...xxyxx...
...x...x...
...x...x...
ENDMAP

NAME:    v_misc_26
TAGS:    allow_dup
SHUFFLE: abcd+
SUBST:   u:xxx., y:x..., U:x, a:x, b:x, c:x, d:x
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
...c...c...
...a...b...
..+x...x+..
dbx.....xad
....yuy....
....uUu....
....yuy....
dax.....xbd
..+x...x+..
...b...a...
...c...c...
ENDMAP

NAME:    v_misc_27
TAGS:    allow_dup
SHUFFLE: abc+
SUBST:   a:x, b:x, c:x
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
....x..x....
...+x..x+...
cbax....xabc
............
............
cbax....xabc
...+x..x+...
....x..x....
ENDMAP

NAME:    v_misc_28
TAGS:    allow_dup
SHUFFLE: a+
SUBST:   +:++., a:.
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
....x..x....
....x..x....
....x..x....
...ax..xa...
xxxx+..+xxxx
............
............
xxxx+..+xxxx
...ax..xa...
....x..x....
....x..x....
....x..x....
ENDMAP

NAME:    v_misc_29
TAGS:    allow_dup
SUBST:   +:.++
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
....x..x....
....x..x....
....x..x....
...xx..xx...
...x....x...
...+....+...
...x....x...
...xx..xx...
....x..x....
....x..x....
....x..x....
ENDMAP

NAME:    v_misc_30
TAGS:    allow_dup
: vaults_room_setup(_G, ".", "small")
NSUBST:  . = 1:( / *:.
MAP
...x...x...
...........
...x...x...
x.xxxxxxx.x
...x...x...
...........
...x...x...
x.xxxxxxx.x
...x...x...
...........
...x...x...
ENDMAP

NAME:    v_misc_31
TAGS:    vaults_room luniq_cells
WEIGHT:  5
SUBST:   0 = 0009''
NSUBST:  u = 1:+ / *:x, y = 1:+ / *:x, z = 1:+ / *:x, w = 1:+ / *:x
NSUBST:  ' = 1:M. / *:., . = 1:( / *:.
: local dec = "mop and bucket"
: if crawl.x_chance_in_y(1, 3) then
:   dec = "fur brush"
: end
: decorative_floor(_G, 'M', dec)
MAP
...........
...........
..xux+xzx..
..u0x0x0z..
..xxxxxxx..
..+0xxx0+..
..xxxxxxx..
..y0x0x0w..
..xyx+xwx..
...........
...........
ENDMAP

NAME:    v_misc_32
TAGS:    vaults_room luniq_cells
WEIGHT:  5
SUBST:   0 = 0009''
NSUBST:  u = 1:+ / *:x, y = 1:+ / *:x, z = 1:+ / *:x, w = 1:+ / *:x
NSUBST:  ' = 1:M. / *:., . = 1:( / *:.
: local dec = "mop and bucket"
: if crawl.x_chance_in_y(1, 3) then
:   dec = "fur brush"
: end
: decorative_floor(_G, 'M', dec)
MAP
...........
...........
..xxxxxxx..
..x0z0y0x..
..xzx+xyx..
..x0+.+0x..
..xux+xwx..
..x0u.w0x..
..xxx+xxx..
...........
...........
ENDMAP

NAME:    v_misc_33
TAGS:    allow_dup
NSUBST:  y = 1:+ / *:x
NSUBST:  z = 1:+ / *:x
NSUBST:  w = 1:+ / *:x
NSUBST:  u = 1:+ / *:x
: vaults_room_setup(_G, "'", "small")
NSUBST:  . = 1:( / *:.
MAP
..............
..............
..xxxx..xxxx..
..x''w..z''x..
..x''w..z''x..
..xwwx..xzzx..
..............
..............
..xuux..xyyx..
..x''u..y''x..
..x''u..y''x..
..xxxx..xxxx..
..............
..............
ENDMAP

NAME:    v_rooms_1
TAGS:    vaults_orient_n vaults_orient_s vaults_orient_w
NSUBST:  y = 1:+ / *:x
NSUBST:  z = 1:+ / *:x
NSUBST:  w = 1:+ / *:x
NSUBST:  u = 1:+ / *:x
NSUBST:  s = 1:+ / *:x
NSUBST:  t = 1:+ / *:x
: vaults_room_setup(_G, ".", "large")
NSUBST:  . = 1:( / *:.
MAP
...x..x.....x.x......
...y..z.....z.w......
...y..xzzzzzx.w......
xyyx..........w......
.......xtttx..xxxwwwx
xssssx.t...t...u.....
.....s.t...t...u.....
.....s.xtttx...u.....
.....x.........u.....
ENDMAP

NAME:    v_rooms_2
NSUBST:  y = 1:+ / *:x
NSUBST:  z = 1:+ / *:x
NSUBST:  w = 1:+ / *:x
NSUBST:  u = 1:+ / *:x
NSUBST:  s = 1:+ / *:x
NSUBST:  t = 1:+ / *:x
: vaults_room_setup(_G, ".", "large")
NSUBST:  . = 1:( / *:.
MAP
....x..x...x.x...x...
....+..x...x.x...u...
....xyyxx+xx.x...u...
xyyxx........xuuux...
...+.............t...
...x....xxwwwx...t...
xxxx.xzzx....x.xsxttt
...+.z..w....x.s.....
...x.z..w....x.s.....
ENDMAP

NAME:    v_rooms_3
TAGS:    vaults_orient_n vaults_orient_s
NSUBST:  y = 1:+ / *:x
NSUBST:  z = 1:+ / *:x
NSUBST:  w = 1:+ / *:x
NSUBST:  u = 1:+ / *:x
NSUBST:  s = 1:+ / *:x
NSUBST:  t = 1:+ / *:x
: vaults_room_setup(_G, ".", "medium")
MAP
...x.x....x......
...y.x....s......
...y.xttttx......
...y......s......
...y......xxssssx
xyyxux...........
.....u.xwwx.xzzzx
.....u.w..w.z....
.....u.w..w.z....
.....x.x..x.x....
ENDMAP

NAME:    v_rooms_4
TAGS:    allow_dup
: vaults_room_setup(_G, ".", "medium")
NSUBST:  . = 1:( / *:.
MAP
.......x.....
.......x.....
.......x.....
.......x.....
.......x.....
xxxxxx+x.....
.....+.+.....
.....x+xxxxxx
.....x.......
.....x.......
.....x.......
.....x.......
.....x.......
ENDMAP

NAME:    v_rooms_5
TAGS:    allow_dup
: vaults_room_setup(_G, ".", "large")
NSUBST:  . = 1:( / *:.
MAP
.....x..x.....
.....+..x.....
.....x..x.....
.....x..x.....
.....x..x.....
xxxxxx..xxxx+x
..............
..............
x+xxxx..xxxxxx
.....x..x.....
.....x..x.....
.....x..x.....
.....x..+.....
.....x..x.....
ENDMAP

NAME:    v_rooms_6
TAGS:    allow_dup
: vaults_room_setup(_G, ".", "large")
NSUBST:  . = 1:( / *:.
MAP
....x........+....
....+........x....
....xxxxxxxxxx....
....x........x....
....x........x....
....+........+....
....+........+....
....x........x....
....x........x....
....xxxxxxxxxx....
....+........x....
....x........+....
ENDMAP

NAME:   hangedman_vaults_slither
SUBST:  b : aX., B : AX., c : aC..., C : Ax..., a : Ax., A : xx., X : xx.
: vaults_room_setup(_G, "0", "large")
MAP
        x........x............
        x.a..a.a.x.B..CC.0.CC@
        x.a......x.......C....
        x.......Cx.B.xxxxxxxxx
        x.a.xa...x...x
        x...x0..BxB0Bx
        xb0bxb..0x...x
        x...x...Ax.A.x
xxxxxxxxx.b.xc.......x
....c.......x......A.x
@cc.0.cc..b.x.A.A..A.x
............x........x
ENDMAP

NAME:    hangedman_vaults_pinch
TAGS:    vaults_room
SHUFFLE: ac, AC
SUBST:   b : axX..., B : AxX..., c : ax, C : Ax, a : Axx., A : xxx.
SUBST:   d : x.., D : x.., X : x
: vaults_room_setup(_G, "0", "small")
MAP
      x.......
      x.D..BA.
      x....CB.
      x..BC...
      x..AB...
      x.0...D.
xxxxxxx0......
.......xxxxxxx
.d...0.x
...ba..x
...cb..x
.bc....x
.ab..d.x
.......x
ENDMAP

NAME:    hangedman_vaults_stagger
: vaults_room_setup(_G, ".", "custom")
SHUFFLE: abc, ABC, de / de / ed, DE / DE / ED
NSUBST:  a = 1:1 / 1:0 / *:.
SUBST:   A = 0.., bBcC = ., dD = +, eE = x
MAP
.........xxxx
.........xa.x
..xxeddexx..x
..xc........xxxx
xxx.....bb.cxA.x
  x..xxDEEDxx..x
  x.axC.BB.....xxx
  xxxx........Cx..
     x..xxeddexx..
     x.Ax.........
     xxxx.........
ENDMAP

NAME:    hangedman_vaults_variations
SHUFFLE: abc, ABC, 12
: vaults_room_setup(_G, "0", "custom")
NSUBST:  1 = 1:1 / 1 = 0. / *:., 2 = 1:0 / * = 0.
SUBST:   aA : x., bB : x:1 .:9, cC = .
MAP
     x...x
     xa.ax
     x...xxxxx
     x.....11x
     x..bc..1x
    xx....(..x
xxxxx+xxxx.c.xxx
.A.....22x.b..a.
....BC..2x......
.A....(..x....a.
xxxxxx.C.+xxxxxx
     x.B.xx
     x...x
     x...x
     xA.Ax
     x...x
ENDMAP

NAME:    hangedman_vaults_unwind
SHUFFLE: ABCD
SUBST:   A : x:90 ., B : xx., C : x., D : x.., E : x .:90
: vaults_room_setup(_G, ".", "custom")
NSUBST:  0 = 1:1 / 1:0 / * = 0:6 .:4
MAP
     x..................
     x......E...........
     x...D..x...........
     x.....C...D........
     x....0BA0..........
     x.Ex.AxxBC...xxxxxx
xxxxxx...CBxxA.xE.x
..........0AB0....x
........D...C.....x
...........x..D...x
...........E......x
..................x
ENDMAP

NAME:    hangedman_vaults_stitches
TAGS:    vaults_room
SUBST:   b : aX., B : AX., c : aC..., C : Ax..., a : Ax., A : xx., X : xx.
: vaults_room_setup(_G, "0", "large")
MAP
     x.....x     x.......
     x.b...x     x...A...
     x.0c..x     x.A.0.A.
     x...b.xxxxxxx.......
xxxxxx......0......xxxxxx
.......xxxxxxx.B...x
.a.0.a.x     x..C0.x
...a...x     x...B.x
.......x     x.....x
ENDMAP

NAME:    hangedman_vaults_nodes
SUBST:   a : xx., b : xx., A : x., B : x.
: vaults_room_setup(_G, "0", "large")
MAP
    x..............x
    x..B.A....a.b..x
    x.A0..B..b..0a.x
    x.B..0A..a0..b.x
xxxxx..A.B....b.a..xxxxx
........................
...ba...xxxxxxxx...AB...
..a.0b..x      x..B0.A..
..b..a..x      x..A..B..
...ab...x      x...BA...
........x      x........
ENDMAP

NAME:    hangedman_vaults_corner
SHUFFLE: abc
SUBST:   a = x, bc = ., A : x., B : x., C : x., D : x., E : x.
: vaults_room_setup(_G, "0", "medium")
MAP
.......abc.....
...B...abc..E..
...A...abc..D..
.BA0AB.abc.C.C.
...A...abc.C0C.
...B...abc..D..
.......abc..E..
aaaaaaa.0......
bbbbbbb0xxxxxxx
ccccccc.x
........x
...CC...x
.ED.0DE.x
...CC...x
........x
ENDMAP

NAME:    hangedman_vaults_hat
SHUFFLE: defg, =-
SUBST:   a = x.., b : x., c : x., d : x., e : x.., f : x.., g : x...
SUBST:   = = x, - = +, + : +:19 .:1
: vaults_room_setup(_G, "0", "large")
MAP
       x...x
       x.a.x
       x.0.x
    xxxxx+xxxxx
    x.........x
    x0b.c.c.b0x
    x.........x
xxxxxxx=-x-=xxxxxxx
.....0.......0.....
.d..e..f.g.f..e..d.
...................
ENDMAP

NAME:   hangedman_vaults_capsules
SUBST:  A : x..., B : x.., C : x., D : xx.
: vaults_room_setup(_G, "0", "small")
MAP
 xxx......
xxA..x.DC.
xA0..x..D.
x..xxx0...
...xBBxxx.
.xxxBBx...
....xxx..x
.D..x..0Ax
.CD.x..Axx
......xxx
ENDMAP

NAME:    hangedman_vaults_stream
SHUFFLE: ab, AB
SUBST:   aA : x, bB : ., c : x., C : x.
: vaults_room_setup(_G, "0", "large")
MAP
  x............
  x..A..0......
xxxC.BABBAABBA.
..C0..BAABBAABA
....c......0..B
.ab..c.........
..ab..xxxxx....
.0ba..xxxxxxxxx
..ba..xx
..ab..xx
..ab..xx
..ba0..x
..ba...x
..ab...x
...ab..x
ENDMAP

NAME:    hangedman_vaults_river_flow
SHUFFLE: abcdefghij
SUBST:   ab = x, c : xx., d : x., e : x:1 .:9, fghij = .
: vaults_room_setup(_G, "0", "small")
MAP
      x.......x
      xfee....x
      x....ffex
xxxxxxx.......x
.........gh....
.ab.0.cd....gh.
....ab.0.cd....
.gh....ab.0.cd.
....gh.........
x.......xxxxxxx
xeef....x
x....effx
x.......x
ENDMAP

NAME:    hangedman_vaults_trim
TAGS:    allow_dup
SHUFFLE: abcd / abcd / dcba / badc
SUBST:   aA : xx., bB : x., cC : x., dD : x.
: vaults_room_setup(_G, "0", "small")
MAP
.x.....x.....x..
..0AB0...ab.....
.....CD...0cd0..
..x.....x.....x.
ENDMAP

NAME:    hangedman_vaults_cutoff
TAGS:    allow_dup
SHUFFLE: aA / aA / Aa, bB / bB / Bb, cC / cC / Cc, dD / dD / Dd, eE / eE / Ee
SUBST:   a : x., b : x., c : x., d : x., e : x., ABCDE = .
: vaults_room_setup(_G, "0", "small")
MAP
...x.......x.......
.A.x.B.(.C.x.D.0.E.
.a.x.b.x0c0x.d.x.e.
.A.0.B.x.C.(.D.x.E.
.......x.......x...
ENDMAP

NAME:    hangedman_vaults_locks
SHUFFLE: ABCDEF, +-, =~
SUBST:   A : x:9 .:1, B : xx., C : x., D : x., E : x.., F : x...
SUBST:   -~ = x, = = +
: vaults_room_setup(_G, "0", "small")
MAP
  xxxxx.........xxxxx
  x...x.E..F..E.x...x
  x.B.+....(....=.B.x
xxx.0.x--x.0.x~~x.0.xxx
.........+.F.=.........
.A..C..D.x...x.D..C..A.
.........xxxxx.........
ENDMAP

NAME:    hangedman_vaults_slice
TAGS:    vaults_room allow_dup
SHUFFLE: ABCDEF, abde / abde / baed
SUBST:   aA : x:9 .:1, bB : xxx.., C : x., dD : x.., eE : x:1 .:9, F : .
: vaults_room_setup(_G, "0", "small")
MAP
................
.D.(..E..0xx.ba.
...0xx.CC.Fx0...
.AB.Fx0..e..(.d.
................
ENDMAP

NAME:    hangedman_vaults_maws
TAGS:    allow_dup
SHUFFLE: abcd, ABCD
SUBST:   abAB = ., c = xx., d = x.., C = xx., D = x.., E = x., F = x.
: vaults_room_setup(_G, "0", "small")
MAP
........xxxxx
.E0F........x
xxxxx..abcd0x
x.....(.....x
x0ABCD..xxxxx
x........E0F.
xxxxx........
ENDMAP

NAME:    hangedman_vaults_nails
TAGS:    allow_dup
SHUFFLE: ab / ab / ab / ba, cd / cd / cd / dc
SUBST:   aA : x:9 .:1, bB : x., cC : x.., dD : x..
: vaults_room_setup(_G, "0", "small")
MAP
...............
.d.c.d.(.......
...b.....BAxAB.
...a0..0..0A...
.baxab.....B...
.......(.D.C.D.
...............
ENDMAP

NAME:    hangedman_vaults_restitches
TAGS:    allow_dup
SHUFFLE: aAeE / aAeE / AaEa, bBfF / bBfF / BbFf
SHUFFLE: cCgG / cCgG / CcGg, dDhH / dDhH / DdHh
SHUFFLE: eEfFgGhH / eEfFgGhH / gGhHeEfF / hHgGfFeE
SUBST:   ae : x:5 .:3, bf : x:5 .:3, cg : x:5 .:3, dh : x:5 .:3
SUBST:   AE : x:7 .:3, BF : x:7 .:3, CG : x:7 .:3, DH : x:7 .:3
: vaults_room_setup(_G, "0", "small")
MAP
..............
.....B.....H..
.AaA.b0GgG0h..
.....B.....H..
..D.....F.....
..d0CcC0f.EeE.
..D.....F.....
..............
ENDMAP

NAME: ontoclasm_vaults_eye
: vaults_room_setup(_G, "0", "small")
SUBST: ( = ((0.
MAP
  .....
 ..xxx..
..xxxxx..
...0.0xx.
.x..(..x.
.xx0.0...
..xxxxx..
 ..xxx..
  .....
ENDMAP

NAME: grunt_vaults_swirl
TAGS: vaults_room
KMONS: 0 = 0 band
NSUBST: 0 = 2:0 / *:.
MAP
 xx.......xx
xx....xxxx.xx
x...xxx.0xx.x
...xxx+xx.xx.
...xx...xx.x.
..xx..0..xx..
..xx.0(0.xx..
..xx..0..xx..
.x.xx...xx...
.xx.xx+xxx...
x.xx0.xxx0..x
xx.xxxx....xx
 xx.......xx
ENDMAP

NAME: grunt_vaults_twisty
TAGS: vaults_room
SHUFFLE: ABCD
SHUFFLE: Aa, Bb, Cc, Dd
NSUBST: A = 1:+ / *:x
NSUBST: B = 1:+ / *:x
NSUBST: C = 1:+ / *:x
NSUBST: D = 1:+ / *:x
SUBST: abcd = .
NSUBST: 0 = 2:0 / *:.
KMONS: 0 = 0 band
MAP
 xx....xx
xx..xx..xx
x0.xxxx0.x
x0.xxxxx..
xx..xxxxx.
xxx..xxxxx
xxxx00xxxx
xxxxx..xxx
.xxxxx..xx
..xxxxx.0x
x..xxxx.0x
xx0.xx..xx
 xx....xx
ENDMAP

NAME: grunt_vaults_funnel
TAGS: vaults_room
KMONS: 0 = 0 band
MAP
    xxx.x
  xxx...x
 xx.....x
......xxx
..(.0.+..
......xxx
 xx.....x
  xxx...x
    xxx.x
ENDMAP

NAME: grunt_vaults_trifunnel
TAGS: vaults_room
KMONS: 0 = 0 band
MAP
    xxx.xxxxxxx.xxxxxxx.x
  xxx...xxxxx...xxxxx...x
 xx.....xxx.....xxx.....x
......xxx.....xxx.....xxx
....0.+...(.0.+.....0....
......xxx.....xxx.....xxx
 xx.....xxx.....xxx.....x
  xxx...xxxxx...xxxxx...x
    xxx.xxxxxxx.xxxxxxx.x
ENDMAP

NAME: ontoclasm_vaults_chip
TAGS: vaults_room allow_dup
SUBST: P = 0. , G : ...G
KMONS: 0 = 0 band
MAP
.x...x.
.xx.xx.
..G.G..
.P.0.P.
..G.G..
.xx.xx.
.x...x.
ENDMAP

NAME:   dpeg_vaults_monster_box
TAGS:   vaults_room
MONS:   0 band
SUBST:  - : @.., _ : @..
SUBST:  b : xxxxb0009.
NSUBST: 9 = 1:S / *:9
KFEAT:  S = armour shop / weapon shop
NSUBST: . = 1:1 / * = 0........
MAP
..@@..
..bb..
-.bb.-
..bb..
..__..
ENDMAP

NAME:   dpeg_vaults_monster_row
TAGS:   vaults_room allow_dup
: local d = you.depth()
: mons("centaur warrior draugr w:" .. 9 - d .. " / " ..
:      "yaktaur captain draugr w:" .. d)
MONS:   necromancer
: mons("phantasmal warrior w:" .. 9 - d .. " / flayed ghost w:" .. d)
SUBST:  0 : 0000z
NSUBST: 0 = 1:0 / 2:. / * = 0009..
NSUBST: z = 2:1 / 2:2 / 1:3 / 2:% / * = 11113'''
FTILE:  '123% = floor_necro_squares
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxx
xx00xx00xx00xx00xx00xx00xx
xx..xx..xx..xx..xx..xx..xx
..........................
ENDMAP

NAME: nicolae_vaults_mini_display_case
TAGS: vaults_room vaults_orient_w no_monster_gen
SUBST: % = %%$*
MAP
......
.xxxx+
.m%+.0
.m%x0.
.xxxx+
......
ENDMAP

NAME: nicolae_vaults_three_branches
TAGS: vaults_room
SHUFFLE: (%
MONS: 0 band
NSUBST: 0 = 1:1 / 2 = 0.. / *:.
MAP
xxxxxx...
x.%xxx.(.
x%%.xxx..
xx.00xxx.
xxx00.xx.
xxxx...x.
..xxx.x..
.(.xxx.(.
.........
ENDMAP

NAME: nicolae_vaults_triangles
TAGS: vaults_room
SUBST: 0 = 0..., ( = (((0
MAP
xxxxxxx.xxxxxxx
x....x.(.x....x
x.(.x.....x.(.x
x..xxxx+xxxx..x
x.xxx0...0xxx.x
xx.x0x.0.x0x.xx
x..x..x.x..x..x
.(.+.0.x.0.+.(.
x..x..x.x..x..x
xx.x0x.0.x0x.xx
x.xxx0...0xxx.x
x..xxxx+xxxx..x
x.(.x.....x.(.x
x....x.(.x....x
xxxxxxx.xxxxxxx
ENDMAP

NAME: nicolae_vaults_twisting_passages
TAGS: vaults_room
SUBST: 0 = 00.
MAP
xxxx.......xxxx
x..xxxx.xxxx..x
x.0...x0x...0.x
xx.xx.....xx.xx
.x.xxx...xxx.x.
.x..xxx(xxx..x.
.xx..xxxxx..xx.
..0..(xxx(..0..
.xx..xxxxx..xx.
.x..xxx(xxx..x.
.x.xxx...xxx.x.
xx.xx.....xx.xx
x.0...x0x...0.x
x..xxxx.xxxx..x
xxxx.......xxxx
ENDMAP

NAME:     vaults_mumra_minichess
TAGS:     vaults_room
NSUBST:   . = 12 = 0. / *:.
MAP
  ..xx..
  ..xx..
..xx..xx..
..xx..xx..
xx..xx..xx
xx..xx..xx
..xx..xx..
..xx..xx..
  ..xx..
  ..xx..
ENDMAP

NAME:     vaults_mumra_minichess_inversion
: vaults_room_setup(_G, ".", "small")
SUBST:    . = ......0
MAP
    ..
    ..
  ..xx..
  ..xx..
..xx..xx..
..xx..xx..
  ..xx..
  ..xx..
    ..
    ..
ENDMAP

NAME:     vaults_mumra_hex
: vaults_room_setup(_G, ".", "small")
SUBST:    . = .........0
MAP
   .....
  .......
 .........
.....(.....
 .........
  .......
   .....
ENDMAP

NAME:     vaults_mumra_hexcomb
TAGS:     vaults_room
SUBST:    0 = 0..
MAP
     ...
   x.000.x
 ...x...x...
0.(.0xxx0.(.0
 ...x...x...
   x.000.x
     ...
ENDMAP

NAME:    hangedman_vaults_snaps
TAGS:    vaults_room
MONS:    0 band
SHUFFLE: X+ / X+ / +X, 1' / 1' / '1
NSUBST:  1 = 1:1 / 1:000.
SUBST:   X : xx+, ' = .
MAP
.......xxx
........1x
.........x
x..xX+x..xxxx
x..x..x'.x..x
x..x.'x..x..x
xxxx..x+Xx..x
   x.........
   x1........
   xxxx......
ENDMAP

NAME: nicolae_vaults_alarming
TAGS: vaults_room
NSUBST: s = 1:S / *:.
KITEM: i = any
KMONS: S = vault sentinel
KFEAT: i = trap_alarm / .
MAP
xxsxsxx
xi...ix
s.....s
x..(..x
s.....s
xi...ix
xxsxsxx
ENDMAP

NAME: nicolae_vaults_arrows
TAGS: vaults_room
SUBST: $ = $:27 %:9 *:3 |:1
KMONS: 0 = 0 band
MAP
xxxxxxxxx...xxxxxxxxx
x......$n...n$......x
x.0.xxxxx...xxxxx.0.x
x....xx...0...xx....x
x.x...xx.....xx...x.x
x.xx...xx...xx...xx.x
x.xxx...xx.xx...xxx.x
x$x.xx...x+x...xx.x$x
xnx..xx.......xx..xnx
......xx.....xx......
...0...+..0..+...0...
......xx.....xx......
xnx..xx.......xx..xnx
x$x.xx...x+x...xx.x$x
x.xxx...xx.xx...xxx.x
x.xx...xx...xx...xx.x
x.x...xx.....xx...x.x
x....xx...0...xx....x
x.0.xxxxx...xxxxx.0.x
x......$n...n$......x
xxxxxxxxx...xxxxxxxxx
ENDMAP

NAME: nicolae_vaults_big_ls
TAGS: vaults_room
SUBST: g : xg
NSUBST: a = 1:+ / *:x
NSUBST: b = 1:+ / *:x
NSUBST: c = 1:+ / *:x
NSUBST: d = 1:+ / *:x
NSUBST: e = 1:+ / *:x
NSUBST: f = 1:+ / *:x
NSUBST: g = 1:+ / *:x
NSUBST: h = 1:+ / *:x
NSUBST: i = 1:+ / *:x
NSUBST: j = 1:+ / *:x
NSUBST: k = 1:+ / *:x
NSUBST: l = 1:+ / *:x
SUBST: x = x:80 n:10 +:5
SUBST: . = .:75 %:5 0:5
KMONS: 0 = 0 band
MAP
x.a.b.c.d.e.x
..a.b.c.d.e..
aaa.b.c.d.eee
....b.c.d....
bbbbb.c.ddddd
......c......
ffffffxgggggg
......j......
hhhhh.j.kkkkk
....h.j.k....
iii.h.j.k.lll
..i.h.j.k.l..
x.i.h.j.k.l.x
ENDMAP

NAME: nicolae_vaults_border_crossing
TAGS: vaults_room
SHUFFLE: AB
KMONS: W = vault warden
SUBST: G : xxx...GTb, A : +, B : +x
KMONS: 1 = 0 band
MAP
x.1.0.x
xx...xx
xG.W.Gx
xxABAxx
xG.W.Gx
xx...xx
x.0.1.x
ENDMAP

NAME: nicolae_vaults_stairing_the_circle
TAGS: vaults_room
NSUBST: ( = 1:0 / 2:0( / 2:0(( / *:(.
KMONS: 0 = 0 band
MAP
  xxx.....xxx
 xx....(....xx
xx..(.....(..xx
x.....xxx.....x
x.(.xxxxxxx.(.x
....xxxxxxx....
...xxxxxxxxx...
.(.xxxxxxxxx.(.
...xxxxxxxxx...
....xxxxxxx....
x.(.xxxxxxx.(.x
x.....xxx.....x
xx..(.....(..xx
 xx....(....xx
  xxx.....xxx
ENDMAP

NAME: nicolae_vaults_what_the_h
TAGS: vaults_room
SUBST: % = %$
KMONS: 0 = 0 band
MAP
...........
....x0x....
..(.xxx.(..
....x%x....
.xxx...xxx.
.0x%.(.%x0.
.xxx...xxx.
....x%x....
..(.xxx.(..
....x0x....
...........
ENDMAP

NAME: nicolae_vaults_windows_and_doors_thing
TAGS: vaults_room no_monster_gen
SHUFFLE: AC/BD, EF
SUBST: B = m, C = 0, D = %, E = +, F : xxxm
NSUBST: A = 1:+ / *:x
KMONS: 0 = 0 band
MAP
...........
.xAxBxxxxx.
.x.xDFC..A.
.x.E.xxExx.
.xCx....DB.
.xFx.(.xFx.
.BD....xCx.
.xxExx.E.x.
.A..CFDx.x.
.xxxxxBxAx.
...........
ENDMAP

NAME: nicolae_vaults_yaktaur_gun_rack
TAGS: vaults_room no_monster_gen no_item_gen
MONS: yaktaur w:8 / yaktaur band w:4 / yaktaur captain w:2 / yaktaur captain band w:1
KITEM: c = arbalest w:7 / arbalest good_item w:1 / \
           hand cannon w:1 / triple crossbow w:1
MAP
xxxxxxx
xc.c.cx
x......
x.1....
x......
x.c.c.x
xxxxxxx
ENDMAP

NAME: nicolae_vaults_ninety_degrees
TAGS: vaults_room vaults_orient_s vaults_orient_w
NSUBST: a = + / x, b = + / x
SUBST: ( = (.00%%
MAP
...
......
.(......
.....(...
aaaa......
...aaa..(..
.....aa.....
.(....aa....
....(..aa.(..
bbb..(..a....
..bb....aa...
...bb....a....
.(..b.(..a.(..
....b....a....
ENDMAP

NAME: nicolae_vaults_sealed_display
WEIGHT: 5
TAGS: vaults_room no_windows no_descent
KMASK: >* = no_monster_gen
KMONS: 0 = 0 band / 0
MAP
xxxxxxx
x..%x>x
x+xxx+x
x..x**x
x.0x**x
x..xmmx
x.....x
x.....x
xxxx..x
ENDMAP

NAME: nicolae_vaults_puzzle_piece
TAGS: vaults_room allow_dup
SUBST: A : ._, B : ._, C : ._, D : ._, ) = )))0
KMONS: 0 = 0 band
CLEAR: _
MAP
        AAA
       AAAAA
       AAAAA
   ....AAAAA....
   ....AAAAA....
   ..)..AAA..)..
   .............
 DDDD.........BBBB
DDDDDD.......BBBBBB
DDDDDD...)...BBBBBB
DDDDDD.......BBBBBB
 DDDD.........BBBB
   .............
   ..)..CCC..)..
   ....CCCCC....
   ....CCCCC....
       CCCCC
       CCCCC
        CCC
ENDMAP

NAME: nicolae_vaults_disjoint_gnomons
TAGS: vaults_room allow_dup
NSUBST: A = + / x, B = + / x, C = + / x, D = + / x, E = + / x, F = + / x, \
        ) = 3:0 / 3:) / 3:% / 3:.%0 / *:.
MAP
...........
.)...)...).
...........
...xBBBBBBx
...A.......
.).A.)...).
...A.......
...A...xCCx
...A...C...
.).A.).C.).
...x...x...
           ...x...x...
           .).D.).F.).
           ...D...F...
           xDDx...F...
           .......F...
           .)...).F.).
           .......F...
           xEEEEEEx...
           ...........
           .)...)...).
           ...........
ENDMAP

NAME: nicolae_vaults_network_s
TAGS: vaults_room
SHUFFLE: Aa/Bb/Cc/Dd/Ee
SUBST: Aa = ., bcde = %, % = .....%%000
NSUBST: B = . / x, C = . / x, D = . / x, E = . / x, F = . / x, G = . / x, \
        H = . / x, I = . / x, J = . / x, K = . / x
KITEM: 0 = nothing / any w:5
KMONS: 0 = 0 / 0 band w:5
MAP
    x..........
    x..........
xxxxx.xHxDxGx..
..K%K.H%xdx%G..
..xxx.xxxDxxx..
..AaA.CcC.EeE..
..xxxBxxx.xxx..
..J%xbx%I.F%F..
..xJxBxIx.xxxxx
..........x
..........x
ENDMAP

NAME: nicolae_vaults_network_barrier
TAGS: vaults_room vaults_orient_e vaults_orient_w
NSUBST: % = 1:0 / 5 = ....0% / * = .
NSUBST: AB = 1:., BCD = 1:., DEF = 1:., FGH = 1:., HIJ = 1:., JK = 1:., \
   LM = 1:., MNO = 1:., OPQ = 1:., QRS = 1:., STU = 1:., UV = 1:., Z = 1:. / *:x
NSUBST: ab = 1:., bcd = 1:., def = 1:., fgh = 1:., hij = 1:., jk = 1:., \
   lm = 1:., mno = 1:., opq = 1:., qrs = 1:., stu = 1:., uv = 1:., z = 1:. / *:x
SUBST: ABCDEFGHIJKLMNOPQRSTUVabcdefghijklmnopqrstuv = x
KITEM: 0 = nothing / any w:5
KMONS: 0 = 0 / 0 band w:5
MAP
...A%Z%L...a%z%l...
...xBxMx...xbxmx...
...C%Z%N...c%z%n...
...xDxOx...xdxox...
...E%Z%P...e%z%p...
...xFxQx...xfxqx...
...G%Z%R...g%z%r...
...xHxSx...xhxsx...
...I%Z%T...i%z%t...
...xJxUx...xjxux...
...K%Z%V...k%z%v...
ENDMAP

NAME: nicolae_vaults_network_square
TAGS: vaults_room
SHUFFLE: Aa/Bb/Cc/Dd, Ee/Ff
SUBST: AaBbCcEe = ., df = %
NSUBST: % = 1:0 / 5 = ...0% / * = ......%
NSUBST: D = . / 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
KITEM: 0 = nothing / any w:5
KMONS: 0 = 0 / 0 band w:5
MAP
.............
.xTxExFxGxHx.
.T%xexfx%x%H.
.xxxExFxGxxx.
.S%S.AaA.I%I.
.xxxDxUxBxxx.
.R%RdU%UbJ%J.
.xxxDxUxBxxx.
.Q%Q.CcC.K%K.
.xxxOxNxMxxx.
.P%x%x%x%x%L.
.xPxOxNxMxLx.
.............
ENDMAP

NAME: nicolae_vaults_network_periphery
TAGS: vaults_room
SUBST: % = .....%%000
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
NSUBST: M = x / ., N = x / ., O = x / ., P = x / .
KITEM: 0 = nothing / any w:5
KMONS: 0 = 0 / 0 band w:5
MAP
.M.M.M.M.....
.xAxBxCx.xDxN
.A%x%x%C.D%D.
.xAxBxCx.xxxN
.........E%E.
PxLx.....xxxN
.L%L..)..F%F.
Pxxx.....xFxN
.K%K.........
Pxxx.xIxHxGx.
.J%J.I%x%x%G.
PxJx.xIxHxGx.
.....O.O.O.O.
ENDMAP

NAME: nicolae_vaults_network_star
TAGS: vaults_room
SUBST: % = ...%00
NSUBST: % = 1:0 / 7 = ...%00 / * = .....%
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
KITEM: 0 = nothing / any w:5
KMONS: 0 = 0 / 0 band w:5
MAP
.............
.)...xBx...).
.....B%B.....
...xAxIxCx...
...A%I%I%C...
.xHxLxMxJxDx.
.H%L%M%M%J%D.
.xHxLxMxJxDx.
...G%K%K%E...
...xGxKxEx...
.....F%F.....
.)...xFx...).
.............
ENDMAP

NAME: nicolae_vaults_network_quincunx
TAGS: vaults_room
SUBVAULT: A : nico_quincunx
SUBVAULT: B : nico_quincunx
SUBVAULT: C : nico_quincunx
SUBVAULT: D : nico_quincunx
SUBVAULT: E : nico_quincunx
MAP
...................
.........).........
...................
...xAAAx...xBBBx...
...AAAAA...BBBBB...
...AAAAA...BBBBB...
...AAAAA...BBBBB...
...xAAAxCCCxBBBx...
.......CCCCC.......
.).....CCCCC.....).
.......CCCCC.......
...xDDDxCCCxEEEx...
...DDDDD...EEEEE...
...DDDDD...EEEEE...
...DDDDD...EEEEE...
...xDDDx...xEEEx...
...................
.........).........
...................
ENDMAP

NAME: nicolae_vaults_network_quinsquares
TAGS: vaults_room
SUBVAULT: A : nico_quincunx
SUBVAULT: B : nico_quincunx
SUBVAULT: C : nico_quincunx
SUBVAULT: D : nico_quincunx
SUBVAULT: E : nico_quincunx
NSUBST: a = x / ., b = x / ., c = x / .
MAP
.............
.xAAAxaxBBBx.
.AAAAA.BBBBB.
.AAAAAaBBBBB.
.AAAAA.BBBBB.
.xAAAxaxBBBx.
.b.b.b.......
.xDDDxcxEEEx.
.DDDDD.EEEEE.
.DDDDDcEEEEE.
.DDDDD.EEEEE.
.xDDDxcxEEEx.
.............
ENDMAP

NAME: nicolae_vaults_network_quincunx_subvault
TAGS: unrand nico_quincunx allow_dup
SUBST: % = ....%0
NSUBST: BDF = 1:x, ABHI = 1:., KFJE = 1:., CDIJ = 1:.
SUBST: ABCDEFGHIJK = x
KITEM: 0 = nothing / any w:5
KMONS: 0 = 0 / 0 band w:5
MAP
 .xA
G%H%B
xKxIx
F%J%C
 ExD
ENDMAP

NAME: nicolae_vaults_bisected_exclaves
TAGS: vaults_room opaque no_tele_into
WEIGHT: 2
SHUFFLE: abcdefghijk
SUBST: abcd = m, e : xm, f : xm, ghijk = x, % = %%0
MAP
.....a.....
.xex.x..)..
.f%d.b.....
.x.xcx.xix.
.g...0.j%h.
.x.xkxkx.x.
.h%j.0...g.
.xix.xcx.x.
.....b.d%f.
..)..x.xex.
.....a.....
ENDMAP

NAME: nicolae_vaults_inception_corners
TAGS: vaults_room
WEIGHT: 3
SHUFFLE: abcdef
SUBST: a = +, bcdef = x, ) = )00. %:5, % = %., 0 = 0.
MAP
......fx....xf......
.)...de......ed...).
...%bc..)..)..cb%...
..%xa..........ax%..
..ba            ab..
.dc.            .cd.
fe..            ..ef
x...            ...x
..).            .)..
....            ....
....            ....
..).            .)..
x...            ...x
fe..            ..ef
.dc.            .cd.
..ba            ab..
..%xa..........ax%..
...%bc..)..)..cb%...
.)...de......ed...).
......fx....xf......
ENDMAP

NAME:   nicolae_vaults_closet_pinwheel_1
TAGS:   vaults_room allow_dup
KITEM:  L = % / nothing w:15
KMONS:  L = 0 / nothing w:15
NSUBST: p = + / x, q = + / x, r = + / x, s = + / x
# The s glyph intentionally doesn't appear in the middle of the shape; this
# ensures at least one opening to the outside.
MAP
.........
..xpxL...
..p.xqqx.
.LpLqL.q.
.xxpxrxx.
.s.LxLrL.
.xssx.r..
...Lxrx..
.........
ENDMAP

NAME:   nicolae_vaults_closet_pinwheel_2
TAGS:   vaults_room allow_dup
KITEM:  L = % / nothing w:15
KMONS:  L = 0 / nothing w:15
NSUBST: p = + / x, q = + / x, r = + / x, s = + / x
MAP
...........
.(.xpx...(.
...p.pL....
...p.xxqqx.
..LxLpL..q.
.xsxxxqxqx.
.s..LrLxL..
.xssxx.r...
....Lr.r...
.(...xrx.(.
...........
ENDMAP

NAME:   nicolae_vaults_closet_pinwheel_3
TAGS:   vaults_room allow_dup
KITEM:  L = % / nothing w:15
KMONS:  L = 0 / nothing w:15
NSUBST: p = + / x, q = + / x, r = + / x, s = + / x
MAP
...........
.(.xpxL..(.
...p.xqx...
..xx.p.xqx.
.Lp.LpL..q.
.xxxxxqqxx.
.s..LrL.rL.
.xsx.r.xx..
...xsx.r...
.(..Lxrx.(.
...........
ENDMAP

NAME:   nicolae_vaults_closet_pinwheel_4
TAGS:   vaults_room allow_dup
KITEM:  L = % / nothing w:15
KMONS:  L = 0 / nothing w:15
NSUBST: p = + / x, q = + / x, r = + / x, s = + / x
MAP
...L....
.xpxqqx.
.p.pL.q.
.pLxxqxL
LxxxxLr.
.s.Lr.r.
.xssxrx.
....L...
ENDMAP

NAME:   nicolae_vaults_closet_pinwheel_5
TAGS:   vaults_room allow_dup
KITEM:  ! = % / nothing w:15
KMONS:  ! = 0 / nothing w:15
: if crawl.coinflip() then
# outer ring guaranteed exit
NSUBST: D = + / x, Js = + / x, Pp = + / x, Sr = + / x, LQRq = + / x, \
        HM = + / x, FL = + / x, EK = + / x
: else
# inner ring guaranteed exit
NSUBST: s = +, DJ = + / x, Pp = + / x, Sr = + / x, QRq = + / x, \
        EK = + / x, HM = + / x, FL = + / x
: end
MAP
...........
.xDDx..xEx.
.D.!xxpx.E.
.xxJxx.K!E.
..s.!P!xxx.
..xxSxQxx..
.xxx!R!.q..
.H!M.xxLxx.
.H.xrxx!.F.
.xHx..xFFx.
...........
ENDMAP

NAME:   nicolae_vaults_closet_pinwheel_6
TAGS:   vaults_room
KITEM:  - = % / nothing w:15
KMONS:  - = 0 / nothing w:15
NSUBST: D = D / x, E = E / x, F = F / x, H = H / x, \
        J = J / x, K = K / x, L = L / x, M = M / x
: if crawl.coinflip() then
# guaranteed corner exit
NSUBST: D = + / x, JNs = + / x, Qas = + / x, HMZ = + / x, PZrq = + / x, \
        OKpq = + / x, ERK = + / x, FLS = + / x
: else
# guaranteed side exit
NSUBST: N = +, DJa = + / x, Qas = + / x, ERK = + / x, KOp = + / x, \
        HMZ = + / x, PZrq = + / x, FLS = + / x
: end
MAP
...........
.xDxNxEEEx.
.D.J.R.-.E.
.D-J-xKKKx.
.D.J.p.-.O.
.xaxsxqxSx.
.Q.-.r.L.F.
.xMMMx-L-F.
.H.-.Z.L.F.
.xHHHxPxFx.
...........
ENDMAP

NAME:    nicolae_vaults_cornered_office
TAGS:    vaults_room allow_dup
KMONS:   0 = 0 band
SHUFFLE: Pp, Qq, Rr, Ss
SUBST:   0 = .0, PQRS = ., pqrs = _
CLEAR:   _
MAP
     P   p
     PP pp
     PP0pp
     P...p
     .....
ssss.xx+xx.QQQQ
 ss..x...x..QQ
  0..+.(.+..0
 SS..x...x..qq
SSSS.xx+xx.qqqq
     .....
     r...R
     rr0RR
     rr RR
     r   R
ENDMAP

NAME:  nicolae_vaults_door_testing_chamber
TAGS:  vaults_room
SUBST: ' = 0%++..
: lua_marker('+', props_marker { connected_exclude="true" })
MAP
..x..'..x..
..'..x..'..
'x+x'+'x+x'
..'..x..'..
..x..'..x..
x'+'x+x'+'x
..x..'..x..
..'..x..'..
'x+x'+'x+x'
..'..x..'..
..x..'..x..
ENDMAP

NAME:  nicolae_vaults_doubleplus_tesselated
TAGS:  vaults_room
KFEAT: ' = closed_clear_door
SUBST: 0 = ...0, . = % .:180
MAP
...x.x...x.x
x'xx+xx'xx+x
.0.x.x.0.x.x
x.x.0.x.x.0.
x+xx'xx+xx'x
x.x.0.x.x.0.
.0.x.x.0.x.x
x'xx+xx'xx+x
.0.x.x.0.x.x
x.x.0.x.x.0.
x+xx'xx+xx'x
x.x...x.x...
ENDMAP

NAME:  nicolae_vaults_ellipses_ellipsis
TAGS:  vaults_room
KMONS: 0 = 0 band
SUBST: ( = (((0
MAP
   .....xxxxxxx.....xxxxxxx.....
 ....(....xxx....(....xxx....(....
...........x...........x...........
...(...(...+...(...(...+...(...(...
...........x...........x...........
 ....(....xxx....(....xxx....(....
   .....xxxxxxx.....xxxxxxx.....
ENDMAP

NAME:   nicolae_vaults_frosty_reception
TAGS:   vaults_room
KMONS:  1 = ironbound frostheart
NSUBST: 1 = 1 / 10 / 0.
MAP
     ...x...
   ...x...x...
 ...x...x...x...
..x...1...1...x..
x...x.x.x.x.x...x
..x...1...1...x..
  ..x...x...x..
    ..x...x..
      ..x..
ENDMAP

NAME:  nicolae_vaults_heart-shaped_vault
TAGS:  vaults_room allow_dup
SUBST: ( = (((0, 0 = .0
MAP
 .0   0.
.... ....
0.(...(.0
 .......
  ..(..
   ...
    0
ENDMAP

NAME:   nicolae_vaults_heist
TAGS:   vaults_room
WEIGHT: 5
KITEM:  H = any weapon good_item randart / any armour good_item randart / \
            any jewellery good_item randart / any manual / \
            any magical staff good_item randart
KMONS:  D = vault warden band
KMONS:  S = vault sentinel
KMONS:  s = vault guard
KFEAT:  H = trap_alarm
KMASK:  H = no_monster_gen
KMASK:  H = opaque
KPROP:  H = no_tele_into
NSUBST: ! = D / S / s..
MAP
.........
.........
..!.!.!..
...mmm...
..!mHm!..
...mmm...
..!.!.!..
.........
.........
ENDMAP

NAME:  nicolae_vaults_meiosis
TAGS:  vaults_room
SUBST: ( = (0
MAP
 ...          ...
.....xxxxxxxx.....
..(............(..
.......xxxx.......
 ................
 x...(..xx..(...x
 x..............x
 x.x...xxxx...x.x
 x.x.x.xxxx.x.x.x
 x.x.x.xxxx.x.x.x
 x.x...xxxx...x.x
 x..............x
 x...(..xx..(...x
 ................
.......xxxx.......
..(............(..
.....xxxxxxxx.....
 ...          ...
ENDMAP

NAME:  nicolae_vaults_mitosis
TAGS:  vaults_room
SUBST: ( = (0
MAP
  ...xxxxxx...
 ..............
 ..(..xxxx..(..
................
.......xx.......
...(........(...
.......xx.......
................
 ..(..xxxx..(..
 ..............
  ...xxxxxx...
ENDMAP

NAME:    nicolae_vaults_more_shelving_1
TAGS:    vaults_room vaults_orient_e vaults_orient_w
SHUFFLE: Pp/Qq
SUBST:   P = x, p = ', Qq = ., ' = .%0
MAP
x'x'x'x'x
.........
x'x'xpxqx
xxxxxPxQx
x'x'xpxqx
.........
x'x'x'x'x
ENDMAP


NAME:   nicolae_vaults_more_shelving_2
TAGS:   vaults_room vaults_orient_n vaults_orient_s
KITEM:  L = %
KMONS:  L = 0
NSUBST: D = + / x, E = + / x, ' = L / L.., - = L / L..
MAP
xxxx...xxxx
'..x.(.x..-
x..x...x..x
'..D...E..-
x..D...E..x
'..D...E..-
x..D...E..x
'..D...E..-
x..x...x..x
'..x.(.x..-
xxxx...xxxx
ENDMAP

NAME:  nicolae_vaults_sesquioval_fish
TAGS:  vaults_room allow_dup
SUBST: 0 = .0
MAP
xx..xxx.
x0..0x0.
x....x..
........
........
x....x..
x0..0x0.
xx..xxx.
ENDMAP

NAME:  nicolae_vaults_shrinking_rooms_1
TAGS:  vaults_room
SUBST: 0 = 00.
MAP
        .
      xx+xx
      x...x
     .+.0.+.
      x...x
   . xxx+xxx .
 xx+xx.....xx+xx
 x...x.(.(.x...x
.+.0.+.....+.0.+.
 x...x.(.(.x...x
 xx+xx.....xx+xx
   . xxx+xxx .
      x...x
     .+.0.+.
      x...x
      xx+xx
        .
ENDMAP

NAME:  nicolae_vaults_shrinking_rooms_2
TAGS:  vaults_room
SUBST: 0 = 0.
MAP
        ..
        ..
       ....
     ........
     ..0..0..
   ..xx....xx..
   ..x......x..
  ..0..(..(..0..
..................
..................
  ..0..(..(..0..
   ..x......x..
   ..xx....xx..
     ..0..0..
     ........
       ....
        ..
        ..
ENDMAP

NAME:  nicolae_vaults_sightless_eye
TAGS:  vaults_room
KITEM: 0 = %
KMONS: 0 = 0
MAP
    ....
  ........
....x++x....
....+00+....
....+00+....
....x++x....
  ........
    ....
ENDMAP

NAME:  nicolae_vaults_six-pack
TAGS:  vaults_room allow_dup
SUBST: 0 = 0.
MAP
..x..x..
.0x0.x0.
........
xx.xx.xx
........
.0x.0x0.
..x..x..
ENDMAP

NAME:  nicolae_vaults_spaceships
TAGS:  vaults_room
SUBST: 0 = .0
MAP
................
.x....x....x....
.xxx..xxx..xxx..
.0xxx.0xxx.0xxx.
.xxx..xxx..xxx..
.x....x....x....
...(....(....(...
 ....x....x....x.
 ..xxx..xxx..xxx.
 .xxx0.xxx0.xxx0.
 ..xxx..xxx..xxx.
 ....x....x....x.
 ................
ENDMAP

NAME:  nicolae_vaults_steering_wheel
TAGS:  vaults_room
SUBST: 0 = ..%0
MAP
      0.
      .....
   .0xxx.(.
   ..xxx.....
 ...xx...xx.0
 .(.x0...0xxx
 ..........xx.0
..xx...(...xx..
0.xx..........
  xxx0...0x.(.
  0.xx...xx...
  .....xxx..
    .(.xxx0.
    .....
       .0
ENDMAP

NAME:    nicolae_vaults_stepped_doors
TAGS:    vaults_room vaults_orient_w vaults_orient_e
SHUFFLE: DE, FHJ, KLMN
SUBST:   DFK = +, EHJLMN = x, 0 = ...0, % = .%%%
MAP
      %K%
   .F.0L0.F.
.D.0H..M..H0.D.
0E..J.0N0.J..E0
.D.0H..M..H0.D.
   .F.0L0.F.
      %K%
ENDMAP

NAME:  nicolae_vaults_storage_closets_1
TAGS:  vaults_room vaults_orient_w vaults_orient_e
KITEM: L = % w:20 / nothing w:30
KMONS: L = 0 / nothing w:15
MAP
xLLxLLxLLx
x..x..x..x
x+xx+xx+xx
..........
..........
..........
xx+xx+xx+x
x..x..x..x
xLLxLLxLLx
ENDMAP

NAME:    nicolae_vaults_storage_closets_2
TAGS:    vaults_room vaults_orient_e
KITEM:   L = % w:20 / nothing w:30
KMONS:   L = 0 / nothing w:15
SHUFFLE: DE
SUBST:   D = +, E = x
MAP
L.E...D.Lx
L.D...E.Lx
xxx...xxxx
L.x.......
L.+.......
L.x.......
xxx...xxxx
L.D...E.Lx
L.E...D.Lx
ENDMAP

NAME:   nicolae_vaults_storage_closets_3
TAGS:   vaults_room
KITEM:  L = % w:20 / nothing w:30
KMONS:  L = 0 / nothing w:15
NSUBST: P = + / x, Q = + / x, R = + / x, S = + / x, \
        p = L / ., q = L / ., r = L / ., s = L / .
MAP
...........
...........
..xPPxQQx..
..P.pxq.Q..
..PpLxLqQ..
..xxxxxxx..
..RrLxLsS..
..R.rxs.S..
..xRRxSSx..
...........
...........
ENDMAP

NAME:  nicolae_vaults_surprise_closet
TAGS:  vaults_room allow_dup
KITEM: 0 = %
KMONS: 0 = 0
MAP
0
ENDMAP

NAME:  nicolae_vaults_taking_the_gang_shopping
TAGS:  vaults_room
KMONS: S = vault warden band / yaktaur captain band / orc warlord band / \
           ironbound preserver band
KFEAT: S = weapon shop / armour shop
MAP
...x...
...x...
.......
xx.S.xx
.......
...x...
...x...
ENDMAP

NAME:   nicolae_vaults_turnstiles
TAGS:   vaults_room
NSUBST: 0 = 2=0 / 0...
MAP
.............
.(....(....(.
.............
xn0xn0xn0xn0x
x..n..n..n..x
x0nx0nx0nx0nx
.............
.(....(....(.
.............
ENDMAP

NAME:  nicolae_vaults_weapon_check
TAGS:  vaults_room vaults_orient_s
KITEM: L = any weapon / any armour w:5
KFEAT: - = iron_grate
SUBST: M = 0.
MAP
.........
..M...M..
+xxx+xxx+
L.-...-.L
LM-M.M-ML
L.-.0.-.L
L.-...-.L
L.x-+-x.L
xxx...xxx
ENDMAP

NAME:    nicolae_vaults_wine_cellar
TAGS:    vaults_room vaults_orient_e
KITEM:   ' = any potion w:15 / potion of moonshine / nothing
SHUFFLE: Pp/Qq/Rr
: if crawl.coinflip() then
NSUBST:  J = 2=x.. / ., DEFH = x.. / .
: else
NSUBST:  D = x.. / ., E = x.. / ., F = x.. / ., H = x.. / ., J = .
: end
NSUBST:  . = 2=0 / 2=0. / .
SUBST:   Pp = ., QR = x, qr = '
MAP
x'x'x'xx
'.D.E.pP
xDxJxExx
'.J.J.qQ
xFxJxHxx
'.F.H.rR
x'x'x'xx
ENDMAP

NAME:  nicolae_vaults_wrenched
TAGS:  vaults_room
KITEM: 0 = %
KMONS: 0 = 0
SUBST: ' = ...0
MAP
............
.......x'x..
.xx'xx.xxx..
.'xxx'.'x'..
.xx'xx.xxx..
.......x'x..
..x'x.......
..xxx.xx'xx.
..'x'.'xxx'.
..xxx.xx'xx.
..x'x.......
............
ENDMAP

####
# Heavily themed vaults rooms, using a function in vault.lua.
# Meant to add a little focused spice into a branch that only gets a small
# number of themed vaults any more. Since these are both a small fraction of
# total vaults and don't use bands, they place slightly more monsters.

NAME:    regret_index_vaults_magi_inspection_point
NSUBST:  1 = 2:1 / 1:. / * = 11.
SHUFFLE: ABCDE
SUBST:   A = x, B : xx., C : x.., DE = ., - : +x
SUBST:   c : cx, 2 = 11222.., 3 = 233
: index_vaults_room_themes(_G, "magic", false)
MAP
  ..xxxxxxxxxxx..
  ..xxcxxbxxcxx..
  ..xxe..3..dxx..
 ....xx.x1x.xx....
...B..xx-+-xx..B...
..A.C1.+...+.1C.A..
.DxbxD.+.2.+.DxbxD.
..C.A1.+.d.+.1A.C..
...B..xxxbxx...B..
 ....xx    xx....
  ..xx      xx..
  ..x        x..
  ..x        x..
ENDMAP

NAME:    regret_index_vaults_magi_fracturing_power
NSUBST:  1 = 2:1 / 1:. / * = 11.
SHUFFLE: ABCDE
SUBST:   A = x, B : xx., C : x.., DE = ., - : +., + : +...
SUBST:   c : cx, 2 = 1222., 3 = 2333
: index_vaults_room_themes(_G, "magic", false)
MAP
             .....
            ......
   xxxxxxxxxxb+F..
  xx3.....x..-++..
  x1.E.D..x...-b..
  xc.....xx....x.
  x.xxx.1x..C..x
  x....xxbx....x
  x1.B.dex.xxx.x
  x....dx.....cx
  xc.....xd....x
  x.xxx.xed.B.1x
  x....xbxx....x
  x..C..x1.xxx.x
 .x....xx.....cx
..b-...x..D.E.1x
..++-..x.....2xx
..F+bxxxxxxxxxx
......
.....
ENDMAP

NAME:    regret_index_vaults_magi_shocking_road
TAGS:    vaults_orient_n vaults_orient_s
NSUBST:  1 = 2:1 / 1:. / * = 11.
SHUFFLE: AH / BI / CJ / DK / EL, Ss, +-
SUBST:   H : AAA.., I : BBB.., J : CCC.., KL = .
SUBST:   AB = x, C : xx., D : x., E = .
SUBST:   + : +., c : cx, 2 = 1222., 3 = 2333
: index_vaults_room_themes(_G, "magic", false)
MAP
   x...b....x
  x....A.H.x
  x.I.B....x
 x....C.J.x
x1.K..D..x
x....x..dx
1..L.b.+x
xxe....+3xx
  xxc1.++.1cxx
     xx2+....exx
       x+.b.L..1
      xd..x....x
      x..D..K.1x
     x.J.C....x
    x....B.I.x
    x.H.A....x
   x....b...x
ENDMAP

NAME:    regret_index_vaults_faire_fishracks
TAGS:    vaults_orient_n vaults_orient_s
SHUFFLE: ABC
NSUBST:  A = 1:. / *:v, B = 2:. / *:v, C = 1:v. / *:.
NSUBST:  J = 2:. / *:I, K = 2:. / *:I, L = 2:. / *:I, M = 2:. / *:I
NSUBST:  1 = 1:1 / 1:. / * = 11.
SUBST:   z = v.., m : m..
: index_vaults_room_themes(_G, "icebox", false)
MAP
   ...A...
  ....A....
 .....A.....
....z.A.z....
d.....A.....1
vJJJJIIIKKKKv
e....1B1....1
2z....B....zm
mz....B....z3
1....1B1....e
vLLLLIIIMMMMv
1.....C.....d
....z.C.z....
 .....C.....
  ....C....
   ...C...
ENDMAP

NAME:    regret_index_vaults_faire_sandwich
NSUBST:  1 = 1:1 / 1:. / * = 11.
SHUFFLE: ABCDE
SUBST:   A = I, B : I., C : v..., DE = ., m : m..
: index_vaults_room_themes(_G, "icebox", false)
MAP
I.....
F.v..B.
..v.A...
..v......
..Ivvv..D.
..Em1vdC...
.1..1v2d1...
 ....vvvv....
  ...1d3v1..1.
   ...Cdv1mE..
    .D..vvvI..
     ......v..
      ...A.v..
       .B..v.F
        .....I
ENDMAP

NAME:    regret_index_vaults_faire_tray
TAGS:    vaults_orient_n vaults_orient_s
NSUBST:  1 = 1:1 / 1:. / * = 11.
SHUFFLE: ABCDEF
SUBST:   A : Iv, B : I., C : v.., D : v.., EF = ., m : m..
: index_vaults_room_themes(_G, "icebox", false)
MAP
mAA..BB..CC
............1DDedEE12
..vv....vv...........
..vI1II1II....Iv.....
.....vI....II1II1Iv..
...........vv....vv..
31EEdeDD1............
          CC..BB..AAm
ENDMAP

NAME:    regret_index_vaults_park_passage
TAGS:    vaults_orient_e vaults_orient_s
WEIGHT:  8
NSUBST:  1 = 2:1 / 3:. / * = 11.
SHUFFLE: ABCDEG, Ss, +-
SUBST:   AB = x, C : x., D : x., EG = ., F = F``, s = `, - : +x
: index_vaults_room_themes(_G, "garden", false)
MAP
 C...D.....x
C.1....E....
.1xx--xxxxx.
..xT....dxx
..+.2.s..1x
D.+..S`S.Ax
..x.s`s``1x
..x..S`F1Bx
.Exd..`1p3x
..xx1A1B2xx
..xxxxxxxx
x..
ENDMAP

NAME:    regret_index_vaults_park_slither
TAGS:    vaults_orient_w vaults_orient_e
WEIGHT:  8
NSUBST:  1 = 2:1 / 3:. / * = 11.
SHUFFLE: ABCDE, Ss, +-
SUBST:   AB = x, C : x., DE = ., s = `, F : F```, - : +x, + : ++++.
: index_vaults_room_themes(_G, "garden", false)
MAP
     xxxxxxxxxxxx
     xx1.s`S2.1xx
     x2.D`F`D.C.x
     xd1..`S`...x.....
 xxxxxxxxxxxsdB.+..B..
.AA.1x...``p`...-.....
.....-...`p``...x1.AA.
..B..+.Bdsxxxxxxxxxxx
.....x...`S`...dx
     x.C.D`F`D13x
     xx1.2S`s..xx
     xxxxxxxxxxxx
ENDMAP

NAME:    regret_index_vaults_park_cavernous
WEIGHT:  8
NSUBST:  1 = 2:1 / 3:. / * = 11.
SHUFFLE: ABCDE, Ss, +-
SUBST:   AB = x, C : x., DE = ., s = `, F : F```, - : +x, + : ++.
: index_vaults_room_themes(_G, "garden", false)
MAP
 xxxxxxxxxxxx..
xxd....B....x..
xd........A....
x.C.xxxxxxxA...
x....xpsSsx...E
xD.T.-.1`Sx..xxxxx
x....+..1`x...E.1xx
x.C.xxx3`Fxxx....1x
x1....xxxF`2xxx.C.x
xx1.E...x`1..+....x
 xxxxx..xS`1.-.T.Dx
    E...xsSspx....x
    ...Axxxxxxx.C.x
    ....A........dx
    ..x....B....dxx
    ..xxxxxxxxxxxx
ENDMAP

NAME:    regret_index_vaults_shooting_gallery
TAGS:    vaults_orient_n
SHUFFLE: ABCDEF
SUBST:   AB : x, C : Ux.., D : xx..., EF = ., z : x.
NSUBST:  12 = 1:. / 1:1, 1 = 2:1 / 1:. / * = 11.
: index_vaults_room_themes(_G, "rangers", false)
MAP
   .A...   ...A.
...................
zxxxxx...B...xxxxxz
...................
..xU.xxxB.Bxxx.Ux..
1....2C.....C1....1
...................
 2.xxD..d3d..Dxx.2
  E...1d   d1...E
ENDMAP

NAME:    regret_index_vaults_shooting_goal
TAGS:    vaults_orient_w vaults_orient_e vaults_orient_s
KFEAT:   S = weapon shop
SHUFFLE: ABCDEF
SUBST:   AB : x, C : Ux.., D : xx..., EF = .
NSUBST:  12 = 1:. / 1:1, 1 = 2:1 / 1:. / * = 11.
: index_vaults_room_themes(_G, "rangers", false)
MAP
        xxxxx
       xxd3dxx
      xxd.E.dxx
...x..x1.....1x..x...
........C.1.D........
.xxx.xA.2.S.2.Ax.xxx.
........D...C........
...x.. 1..E..1 ..x...
        ..2..
         .B.
        ..x..
        .....
        x.x.x
        ..x..
        ..x..
        .....
ENDMAP

NAME:    regret_index_vaults_charnel_closets
TAGS:    vaults_orient_n vaults_orient_s
SHUFFLE: ABCDE
SUBST:   A : cvGG, B : cvuu, C : vv..., D : vv..., E = .
NSUBST:  12 = 1:. / 1:1, 1 = 2:1 / 1:. / * = 11.
: index_vaults_room_themes(_G, "warriorcrypt", false)
MAP
   ..       ....
   ..vcc ccv....
   .Cv2uuu1v.A1.
ccv..v+++++v....vcc
c1+.....d.......+1c
cu+dB..D.E.D..Bd+uc
c1+.......d.....+2c
ccv....v+++++v..vcc
   .2A.v1uuu3vC.
   ....vcc ccv..
   ....       ..
ENDMAP

NAME:    regret_index_vaults_charnel_boxing
TAGS:    vaults_orient_n vaults_orient_w
SHUFFLE: ABCDE
SUBST:   A : cvGG, B : cvuu, C : vv..., D : vv..., E = .
NSUBST:  12 = 1:. / 1:1, 1 = 2:1 / 2:. / * = 11.
: index_vaults_room_themes(_G, "warriorcrypt", false)
MAP
 .....v
 .....vvvvvvv
 ..1..+.....d
 .A.A.+.B..C1
 ..1..+......
vvvvvvv..1..2
vu.2..+......
c.D.E.+.C..B1
c3.d.1+.....d
c.E.D.vvvvvvv
vu.2.uv
vvcccvv
ENDMAP

NAME:   nicolae_vaults_cooling_towers
TAGS:   vaults_orient_e vaults_orient_w
NSUBST: - = d / e / de / m / 2=dem. / ., 3 = 3 / 2 / ..1, 1 = 4=1 / 2=1. / m....
: index_vaults_room_themes(_G, "icebox", false)
MAP
      1..1
   1........1
 ..............
..II-3-II-3-II..
.IvvI.IvvI.IvvI.
.IvvI.IvvI.IvvI.
..II-3-II-3-II..
 ..............
   1........1
      1..1
ENDMAP

NAME:   nicolae_vaults_variations_on_themes
TAGS:   vaults_orient_w vaults_orient_e
SUBST:  D : _E, E : _.., F : _H, H : _.., J : _K, K : _.., L : _M, M : _..
SUBST:  N : _O, O : _.., P : _Q, Q : _.., R : _S, S : _.., Z : _a, a : _..
SUBST:  p : _q, q : _.., r : _s, s : _..
NSUBST: 2 = 3 / 2 / ..2, 1 = 3=1 / 112 / .
NSUBST: * = 2=d / 2=e / 2=de.. / 3=* / .....*1
CLEAR:  _
: local ritheme = util.random_from({"magic", "icebox", "garden", "rangers",
:   "warriorcrypt"})
: index_vaults_room_themes(_G, ritheme, false)
MAP
        **NN**
    **JJ..OO..RR**
..DD..KK..2...SS..pp..
..EE..1.......1...qq..
..1.......2.......1...
...1.......2.......1..
..HH...1.......1..ss..
..FF..MM...2..aa..rr..
    **LL..QQ..ZZ**
        **PP**
ENDMAP
