###############################################################################
# float.des: This is the place where floating regular vaults should go. These
#            are defined as vaults with an ORIENT: float line. Vaults with
#            other ORIENT arguments (encompassing, north, northwest etc.)
#            are considered big and reside in large.des. Vaults without any
#            ORIENT line are minivaults and behave somewhat differently; these
#            are stored in the files listed in mini.des.
#            Vaults using global lua functions go into individual .des files.
#
#            All maps dealing with the Vaults branch system, including Vaults:8
#            reside in vaults.des.
###############################################################################

# Set the default depth for vaults. Be sure to adapt the DEPTH of particulary
# easy or tough vaults. Also, exclude unthemely branches with !Lair etc.
default-depth: D:12-26

##############################################################################
# Elevator
#
NAME:    lemuel_elevator
DEPTH:   D:2-26, Vaults:2-7, Elf:2-4, Crypt:2-4, Zot:2-4, Tar:2-6, Dis:2-6, Geh:2-6, Coc:2-6
ORIENT:  float
TAGS:    allow_dup extra
SUBST:   m:mn
SHUFFLE: {}, ]}) , [{(
MAP
mmmm
m{}m
mmmm
ENDMAP

##############################################################################
# Kobold bridge
# Could perhaps use colour.
#
NAME:   minmay_kobold_bridge
TAGS:   no_monster_gen
DEPTH:  D:1-2
ORIENT: float
WEIGHT: 3
MONS:   kobold / nothing w:3
MAP
xxxxxx@xxxxxx
xxxx.....xxxx
xxx.......xxx
xxxw.....wxxx
xxxww..1wwxxx
xxxww...wwxxx
xxxww1..wwxxx
xxxww..1wwxxx
xxxww.1.wwxxx
xxxww...wwxxx
xxxww1..wwxxx
xxxw.....wxxx
xxx.......xxx
xxxx.....xxxx
xxxxxx@xxxxxx
ENDMAP

##############################################################################
# Rooms
#
NAME:    minmay_opposing_rooms
DEPTH:   D:4-
ORIENT:  float
SHUFFLE: 0%
MAP
xxxxxxxxxxxxxxxxxxxxx
xxxx........xxx%.%xxx
xx......x...xx....%xx
xx..9..xx...x......%x
x......xx...+.......x
@....xxxx...x......%x
xxxxxxxxx...xx....%xx
xxx0.0xxx...xxx%.%xxx
xx0....xx...xxxxxxxxx
x0......x...xxxx....@
x.......+...xx......x
x0......x...xx..9..xx
xx0....xx...x......xx
xxx0.0xxx........xxxx
xxxxxxxxxxxxxxxxxxxxx
ENDMAP

##############################################################################
# Klotski a.k.a. what we learned from the elders.
#
NAME:    minmay_klotski
SHUFFLE: }])>
DEPTH:   D:6-12
ORIENT:  float
SUBST:   0 = 0.., 9 = 9., 8 = 88.
MONS:    bush
MAP
xxxxxxxxxxxxxxxxxxxxx
x....+.........+...9x
x1...x...0.0...x....x
x...1x..0.0.0..x.0..x
x1...x.0.....0.x..0.x
x...1x..0...0..x.0..x
x1...x.0.....0.x..0.x
x...1x.........x.0..x
x1...x.9.9.9.9.x....x
x...1x8.8...8.8x9...x
x+xxxxxxxx+xxxxxxxx+x
x...9x$$$$$$$$$xG...x
x.0..x$$$$$$$$$x....x
x..0.x$$$$$$$$$x....x
x.0..x$$$$$$$$$x....x
x..0.xxxxxxxxxxx....x
x.0..+....x0...+....x
x..0.x..T.x.0..x....x
x.0..x.T..x..0.x....x
x9...x....x...0x...Gx
xxxxxxxxx+x+xxxxxxxxx
     x....x....x
     x....x....x
     x....x....x
     x}...x...]x
     xxxxxxxxxxx
ENDMAP

##############################################################################
# Statue pair
#
NAME:    minmay_separated_statues
DEPTH:   D:8-16
ORIENT:  float
MONS:    silver statue, orange crystal statue, ice statue
SHUFFLE: 123
MAP
     ......
    ......xx
   xxx.....xx
  xx*xx.....xx
 xx...xx.....xx
xx*.1..xx..2.*xx
 xx.....xx...xx
  xx.....xx*xx
   xx.....xxx
    xx......
     ......
ENDMAP

##############################################################################
# Statue gallery
#
NAME:    minmay_statue_hallways
DEPTH:   D:8-
ORIENT:  float
MONS:    orange crystal statue / silver statue / ice statue
MAP
       xxx            xxx            xxx
       x1x            x1x            x1x
       x*x            x|x            x*x
      xx.xx          xx.xx          xx.xx
      x...x          x...x          x...x
     xx...xx        xx...xx        xx...xx
   xxx.....xxx    xxx.....xxx    xxx.....xxx
xxxx.........xxxxxx.........xxxxxx.........xxxx
@.............................................@
...............................................
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

##############################################################################
# Stone golems
#
NAME:   minmay_stone_box
DEPTH:  D:10-16
ORIENT: float
KMONS:  " = stone golem
KITEM:  " = any scroll / any potion
MAP
cccccccccc
c{......>c
c........c
c........c
c...""...c
c...""...c
c........c
c........c
c<......}c
cccccccccc
ENDMAP

##############################################################################
# Wavy paths in crystal walls
#
NAME:   minmay_wavy_crystal
DEPTH:  D:10-
ORIENT: float
MAP
bbbbbbbbbbbb@.@bbbbbb
@...bbbbbbbb...bbbbbb
......bbbbbb...bbbbbb
@......bbbbb...bbbbbb
bbbb...bbbbb...bbbbbb
bbbbb...bbbbb...bbbbb
bbbbb...bbbbb.....bbb
bbbbb...bbbbbb.....bb
bbbbb...bbb..bbb...bb
bbbbb...bb9bb.bb....b
bbbbb...bb|bb.bb....b
bbbbbb...bbb.bb....bb
bbbbbb.............bb
bbbbbbb...........bbb
bbbbbbbbb.......bbbbb
bbbbbb..bbb...bbb..bb
bbbbb.bb9bb...bb9bb.b
bbbbb.bb|bb...bb|bb.b
bbbbbb.bbb.....bbb.bb
@...................@
............b........
@.........bbbbb.....@
bbbbbbbbbbbbbbbbbbbbb
ENDMAP

##############################################################################
# A traditional vault
#
NAME:    minmay_two_paths
ORIENT:  float
DEPTH:   D:12-26
MAP
cccccccccccccccc
c.9.c......c.9.c
c.c.c.c88c.c.c.c
c.c.c.c$$c.c.c.c
c.c.c.c%%c.c.c.c
c.c.c.c**c.c.c.c
c.c.9.c||c.9.c.c
c.cccccccccccc.c
c.cccccccccccc.c
c.9.c......c.9.c
c.c.c.c..c.c.c.c
c.c.c.c..c.c.c.c
c.c.c.c..c.c.c.c
c.c.c.c..c.c.c.c
c9c.9.c00c.9.c9c
ccccccc..ccccccc
ENDMAP

##############################################################################
# Skeleton sneak attack
#
NAME:   minmay_skeletal_surprise
TAGS:   no_monster_gen no_item_gen
DEPTH:  D:18-26
ORIENT: float
MONS:   skeletal warrior
KMONS:  $ = skeletal warrior / large skeleton / bone dragon w:1 / nothing w:40
KITEM:  $ = $
MAP
ccccccccccccc
c$$$ccccc$$$c
c$$$ccccc$$$c
c$$$ccccc$$$c
cccc1ccc1cccc
ccccc...ccccc
ccccc.}.ccccc
ccccc...ccccc
cccc1ccc1cccc
c$$$ccccc$$$c
c$$$ccccc$$$c
c$$$ccccc$$$c
ccccccccccccc
ENDMAP

NAME:   firewood_loft
TAGS:   extra
DEPTH:  D:1-26
ORIENT: float
KITEM:  " = staff, quarterstaff, quarterstaff
KITEM:  ' = staff, staff / any magical staff w:2 / any rod w:1
MAP
xxxxx
x"']x
xxxxx
ENDMAP


################################################################################
# Staircase flavour vaults.
#
NAME:    minmay_staircase_windowed_small
TAGS:    extra luniq_staircase
DEPTH:   D:2-26
ORIENT:  float
WEIGHT:  5
SHUFFLE: )]}([{
SUBST:   ? = cn
SUBST:   c : c x:2 v:1 b:1
SUBST:   n : n:18 G:1 .:1
SUBST:   G : ...G
MAP
ccccccccc
cG.GcG.Gc
c...+.).c
cG..c...c
cc+cc?n?c
cG..c...
c...+...
cG.Gc...
ccccc
ENDMAP

NAME:    minmay_staircase_windowed_large
TAGS:    extra luniq_staircase
DEPTH:   D:2-26
ORIENT:  float
WEIGHT:  5
SHUFFLE: )]}([{
SUBST:   c : c x:2 v:1 b:1
SUBST:   n : n:18 G:1 .:1
SUBST:   G : ...G
MAP
ccccccccccccc
cG...GcG...Gc
c.....c.....c
c.....+..)..c
c.....c.....c
cG...GcG...Gc
ccc+ccccnnncc
cG...Gc.....
c.....c.....
c.....+.....
c.....c.....
cG...Gc.....
ccccccc
ENDMAP

NAME:    minmay_staircase_statues
TAGS:    extra luniq_staircase
DEPTH:   D:2-26
ORIENT:  float
WEIGHT:  5
SHUFFLE: )]}([{
MAP
G.G
.).
G.G
ENDMAP

NAME:    minmay_staircase_statues_hall_small
TAGS:    extra luniq_staircase
DEPTH:   D:2-26
ORIENT:  float
WEIGHT:  3
SHUFFLE: )]}([{
SUBST:   c : c x:2 v:1 b:1
MAP
   ccccc
   cG.Gc
   c...c
cccc...cccc
cG.......Gc
c.).......+
cG.......Gc
cccc...cccc
   c...c
   cG.Gc
   ccccc
ENDMAP

NAME:    minmay_staircase_statues_hall_large
TAGS:    extra luniq_staircase
DEPTH:   D:2-26
ORIENT:  float
WEIGHT:  2
SHUFFLE: )]}([{, AB
SUBST:   A = .
SUBST:   B = G
SUBST:   C = G.
SUBST:   c : c x:2 v:1 b:1
MAP
     ccccccc
     cB.A.Bc
     c.....c
     c.....c
     c.....c
cccccc.....cccccc
cB.............Bc
c................
cA.)....C.......@
c................
cB.............Bc
cccccc.....cccccc
     c.....c
     c.....c
     c.....c
     cB.A.Bc
     ccccccc
ENDMAP

NAME:    minmay_staircase_bubble
TAGS:    extra luniq_staircase
DEPTH:   D:2-26
ORIENT:  float
SUBST:   m = mmmm.
MAP
 .......
..bb.bb..
.bb...bb.
.b.....b.
.m..)..m.
.b.....b.
.bb...bb.
..bbmbb..
 .......
ENDMAP

NAME:    infiniplex_staircase_squiggle
ORIENT:  float
TAGS:    extra luniq_staircase
DEPTH:   D:2-26
WEIGHT:  3
SHUFFLE: }]){[(
MAP
    xxxxx
xxxxx...x
x}..x.x.xx
xxx.x.x..@
  x...xxxx
  xxxxx
ENDMAP

NAME:    infiniplex_staircase_zigzag_1
ORIENT:  float
TAGS:    extra luniq_staircase
DEPTH:   D: 2-26
WEIGHT:  3
NSUBST:  @ 1:@ / *:x
SHUFFLE: })]{([
MAP
xxxxxxxxx
x}..x...x
xxx.x.x.x
x...x.x.x
x.xxx.x.x
x.....x.x
xxxxxxx.x
@.......x
x@xxxxxxx
ENDMAP

NAME:    infiniplex_staircase_zigzag_2
ORIENT:  float
TAGS:    extra luniq_staircase
DEPTH:   D:2-26
WEIGHT:  3
SHUFFLE: })]{([
MAP
xxxxxxxxxxxxx
x}..x...x...x
xxx.x.x.x.x.x
xxx...x.x.x.x
xxxxxxx.x.x.x
xxxxxxx...x.x
xxxxxxxxxxx@x
ENDMAP

NAME:    infiniplex_staircase_zigzag_3
ORIENT:  float
TAGS:    extra luniq_staircase
DEPTH:   D:2-26
WEIGHT:  3
SHUFFLE: })]{([
MAP
xxxxxxxxx@x
xxxxx...x.x
xxxxx.x.x.x
x}..x.x.x.x
xxx...x.x.x
xxxxxxx.x.x
xxxxxxx...x
xxxxxxxxxxx
ENDMAP

NAME:    infiniplex_staircase_zigzag_4
ORIENT:  float
TAGS:    extra luniq_staircase
DEPTH:   D:2-26
WEIGHT:  3
NSUBST:  @ 1:@ / *:x
SHUFFLE: })]{([
MAP
xxxxxxxxx
x.......x
x.xxxxx.x
x.....x.x
xxxxx.x.x
x}..x.x.x
xxx.x.x.x
x...x.x.x
x.xxx.x.x
x.....x.@
xxxxxxx@x
ENDMAP

NAME:    infiniplex_staircase_zigzag_5
ORIENT:  float
TAGS:    extra luniq_staircase
DEPTH:   D:2-26
WEIGHT:  3
NSUBST:  @ 1:@ / *:x
SHUFFLE: })]{([
MAP
xxxxxxx@x
x.....x.@
x.xxx.x.x
x...x.x.x
xxx.x.x.x
x}x.x.x.x
x.x.x.x.x
x...x.x.x
xxxxx.x.x
x.....x.x
x.xxxxx.x
x.......x
xxxxxxxxx
ENDMAP

NAME:    infiniplex_staircase_spiral
ORIENT:  float
TAGS:    extra luniq_staircase
DEPTH:   D:2-26
WEIGHT:  3
SHUFFLE: })]{([
MAP
xxxxxxxxx
@.......x
xxxxxxx.x
x.....x.x
x.xxx.x.x
x.x}..x.x
x.xxxxx.x
x.......x
xxxxxxxxx
ENDMAP

NAME:    infiniplex_staircase_spiral_double
ORIENT:  float
TAGS:    transparent extra luniq_staircase
DEPTH:   D:2-26
WEIGHT:  3
SHUFFLE: })]{([
SUBST:   m : mxxxx
MAP
xxxxxxxxxxx
@.........x
xmxxxxxmx.x
x.......x.x
x.xxxxx.x.x
x.m..}..m.x
x.x.xxxxx.x
x.x.......x
x.xmxxxxxmx
x.........@
xxxxxxxxxxx
ENDMAP

NAME:    infiniplex_staircase_x
ORIENT:  float
TAGS:    extra luniq_staircase
DEPTH:   D:2-26
WEIGHT:  3
SUBST:   D : .x
SHUFFLE: }]){[(
MAP
@xx   xx@
x.xx xx.x
xx.xxx.xx
 xx.D.xx
  xD}Dx
 xx.D.xx
xx.xxx.xx
x.xx xx.x
@xx   xx@
ENDMAP

NAME:    infiniplex_staircase_split_hallway
ORIENT:  float
TAGS:    transparent extra luniq_staircase
DEPTH:   D:2-26
WEIGHT:  3
SHUFFLE: })]{([
MAP
  x@x
 xx.xx
xxx.xxx
xx...xx
x.x+x.x
x.x.x.x
x.x}x.x
x.x.x.x
x.x+x.x
xx...xx
xxx.xxx
 xx.xx
  x@x
ENDMAP

NAME:    infiniplex_staircase_trident
ORIENT:  float
TAGS:    extra luniq_staircase
DEPTH:   D:2-26
WEIGHT:  3
NSUBST:  } = 1:} / *:.
NSUBST:  ~ = 1:~ / *:.
SHUFFLE: })]{([
MAP
xxxxxxx
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
xx...xx
 xx.xx
  x@x
ENDMAP

NAME:    infiniplex_staircase_hallway_doors
ORIENT:  float
TAGS:    transparent extra luniq_staircase
DEPTH:   D: 2-26
WEIGHT:  3
SHUFFLE: DEHJK
SUBST:   D : +
SUBST:   E : +xx
SUBST:   H : +xx
SUBST:   J : +xx
SUBST:   K : +xx
SHUFFLE: py/qz
SUBST:   p = .
SUBST:   q = x
SUBST:   y = @
SUBST:   z = x
SHUFFLE: })]{([
MAP
    xxxxxxxxxxxxxxxxxzxyx
    @.................ppx
xxxxxHxDxExDxKxDxExDxHxxx
xxx}....................J
xxxxxHxDxExDxKxDxExDxHxxx
    @.................ppx
    xxxxxxxxxxxxxxxxxzxyx
ENDMAP

NAME:    infiniplex_staircase_diamond
ORIENT:  float
TAGS:    extra luniq_staircase allow_dup
DEPTH:   D:2-26
WEIGHT:  3
SUBST:   c : x:45 .:15 c:10 m:5
NSUBST:  ! = 1:+ / *:!
SUBST:   ! = +x
SHUFFLE: }]){[(
MAP
   x!x
  xx.xx
 xx...xx
xx..c..xx
x}.ccc..!
xx..c..xx
 xx...xx
  xx.xx
   x!x
ENDMAP

NAME:    infiniplex_staircase_star
ORIENT:  float
TAGS:    transparent extra luniq_staircase
DEPTH:   D:2-26
WEIGHT:  3
SUBST:   D : .x
SUBST:   x : x:40 c:5 m:4 b:1
NSUBST:  ! = 1:@ / *:!
SUBST:   ! = @...
SHUFFLE: }]){[(
MAP
...!...!...
....DxD....
....xxx....
!...DxD...!
.DxD...DxD.
.xxx.}.xxx.
.DxD...DxD.
!...DxD...!
....xxx....
....DxD....
...!...!...
ENDMAP

NAME:    infiniplex_staircase_door_maze
ORIENT:  float
TAGS:    extra luniq_staircase
DEPTH:   D:2-26
WEIGHT:  3
NSUBST:  D = 1:+ / *:x
NSUBST:  E = 1:+ / *:x
NSUBST:  H = 1:+ / *:x
SHUFFLE: }]){[(
MAP
xExExExEx
E.D.D.H.E
x+x+x+x+x
E.D.D.x.E
x+x+x+x+x
E.D}D.x.E
x+xxx+x+x
E.+.+.H.E
xExExExEx
ENDMAP

NAME:    infiniplex_staircase_9_rooms
ORIENT:  float
TAGS:    extra luniq_staircase no_monster_gen
DEPTH:   D:2-26
WEIGHT:  2
# Room contents
NSUBST:  } = 1:} / *:0
SHUFFLE: }]){[(
NSUBST:  0 = 1:% / 2:0 / *:.
# Doors
NSUBST:  @ = 1:+ / *:Z
NSUBST:  D = 1:+ / *:Z
NSUBST:  E = 1:+ / *:Z
NSUBST:  H = 1:+ / *:Z
NSUBST:  J = 1:Z / *:+
SUBST:   Z = +xxxxxxxxx
MAP
xxExxxZxxx+xx
x...x...x...x
E.0.E.}.J.0.+
x...x...x...x
xxExxxJxxxJxx
x...x...x...x
+.}.+.}.J.}.Z
x...x...x...x
xxDxxxDxxxHxx
x...x...x...x
D.0.+.}.H.0.H
x...x...x...x
xxDxxxDxxxHxx
ENDMAP

NAME:    infiniplex_staircase_pillars_1
ORIENT:  float
TAGS:    extra luniq_staircase uniq_infiniplex_staircase_pillars
DEPTH:   D:2-26
WEIGHT:  3
SUBST:   c : x:45 .:15 c:10 m:5
SHUFFLE: }p/)q/]r
SUBST:   ) = x
SUBST:   ] = x
SUBST:   q = x
SUBST:   r = x
SHUFFLE: })]{([
MAP
   xxx
   x)x
  xxqxx
xxx...xx
x}p.c..@
xxx...xx
  xxrxx
   x]x
   xxx
ENDMAP

NAME:    infiniplex_staircase_pillars_2
ORIENT:  float
TAGS:    extra luniq_staircase uniq_infiniplex_staircase_pillars
DEPTH:   D:2-26
WEIGHT:  3
SUBST:   c : x:45 .:15 c:10 m:5
SHUFFLE: }p/)q/]r
SUBST:   ) = x
SUBST:   ] = x
SUBST:   q = x
SUBST:   r = x
SHUFFLE: })]{([
# entry
SHUFFLE: D@/E'/H"
SUBST:   E = x
SUBST:   H = x
SUBST:   ' = x
SUBST:   " = x
MAP
   xxx
   x)x   x@x
  xxqxx xxDxx
xxx...xxx...xx
x}p.c.....c.E'
xxx...xxx...xx
  xxrxx xxHxx
   x]x   x"x
   xxx
ENDMAP

NAME:    infiniplex_staircase_pillars_3a
ORIENT:  float
TAGS:    extra luniq_staircase uniq_infiniplex_staircase_pillars
DEPTH:   D:2-26
WEIGHT:  3
SUBST:   c : x:45 .:15 c:10 m:5
SHUFFLE: }p/)q/]r
SUBST:   ) = x
SUBST:   ] = x
SUBST:   q = x
SUBST:   r = x
SHUFFLE: })]{([
# entry
SHUFFLE: D@/E'/H"
SUBST:   E = x
SUBST:   H = x
SUBST:   ' = x
SUBST:   " = x
MAP
   xxx
   x)x
  xxqxx xxxxx
xxx...xxx...x
x}p.c.....c.x
xxx...xxx...x
  xxrxx xx.xx
   x]x   x.x
   xxx  xx.xx
       xx...xx
       "H.c.D@
       xx...xx
        xxExx
         x'x
ENDMAP

NAME:    infiniplex_staircase_pillars_3b
ORIENT:  float
TAGS:    extra luniq_staircase uniq_infiniplex_staircase_pillars
DEPTH:   D:2-26
WEIGHT:  2
SUBST:   c : x:45 .:15 c:10 m:5
SHUFFLE: }p/)q/]r
SUBST:   ) = x
SUBST:   ] = x
SUBST:   q = x
SUBST:   r = x
SHUFFLE: })]{([
# entry
SHUFFLE: D@/E'/H"
SUBST:   E = x
SUBST:   H = x
SUBST:   ' = x
SUBST:   " = x
MAP
   xxx
   x)x         x@x
  xxqxx xxxxx xxDxx
xxx...xxx...xxx...xx
x}p.c.....c.....c.E'
xxx...xxx...xxx...xx
  xxrxx xxxxx xxHxx
   x]x         x"x
   xxx
ENDMAP

NAME:    infiniplex_staircase_river
ORIENT:  float
TAGS:    extra luniq_staircase
DEPTH:   D:2-26
WEIGHT:  3
NSUBST:  D = 1:W / *:w
NSUBST:  E = 1:W / *:w
NSUBST:  H = 1:W / *:w
NSUBST:  } = 1:} / *:.
SHUFFLE: }]){[(
MAP
xxxxxx
x....x
x.}}.x
x.}}.x
x....x
xww..x
xwDDwx
xwEEwx
xwHHwx
x..wwx
x....x
x@..@x
ENDMAP

NAME:    infiniplex_staircase_pool_1
ORIENT:  float
TAGS:    transparent extra luniq_staircase no_pool_fixup no_monster_gen
DEPTH:   D:2-26
WEIGHT:  3
# Water
SUBST:   D = WW.
SUBST:   E = W..
# Place @(s)
NSUBST:  ! = 1:@ / *:!
SUBST:   ! = @...
SHUFFLE: }]){[(
MAP
     .!.
   ..EDE..
  !EDWWWDE!
 .EwwwWwwwE.
 .DwcwWwcwD.
.EWwwwWwwwWE.
!DWWWW}WWWWD!
.EWwwwWwwwWE.
 .DwcwWwcwD.
 .EwwwWwwwE.
  !EDWWWDE!
   ..EDE..
     .!.
ENDMAP

NAME:    infiniplex_staircase_pool_2
ORIENT:  float
TAGS:    transparent extra luniq_staircase no_monster_gen
DEPTH:   D:2-26, Lair:*, Swamp:*
WEIGHT:  3 (D), 10 (Swamp)
# Water
SUBST:   D = WW.
SUBST:   E = W..
SUBST:   Z = wwW
# Guarentee a path
NSUBST:  S = 1:W / *:w
# Place @(s)
NSUBST:  ! = 1:@ / *:!
SUBST:   ! = @...
SHUFFLE: }]){[(
MAP
  !EEDEE!
 EDWZZZWDE
!DZwwwwwZD!
EWwwwwwwwWE
EZwwDEDwwZE
DZwwE}EwwZD
EZwwDEDwwZE
EWwSWwwwwWE
!DZSSSwwZD!
 EDWZZZWDE
  !EEDEE!
ENDMAP

# This is replaced by infiniplex_staircase_pool_lava for low levels
NAME:    infiniplex_staircase_pool
ORIENT:  float
TAGS:    extra luniq_staircase
DEPTH:   D:2-20, Lair:*, Swamp:*
WEIGHT:  2 (D), 20 (Swamp)
SUBST:   D = ww.
SUBST:   E = w..
NSUBST:  ! = 1:@ / *:!
SUBST:   ! = @...
SHUFFLE: }]){[(
MAP
   ...
  !....E!
 .D.}.DwDE
 EwDEDwwwD.
Ewwwwwwwww!
Dwwwwwwwww.
Ewwwwwwww.
!wwwwwwwE.
 .DwwwDE!
  ..!...
ENDMAP

#  This is about the same as infiniplex_staircase_pool but with lava.
#    There are a few small changes to accout for lava being impassible.
NAME:    infiniplex_staircase_pool_lava
ORIENT:  float
TAGS:    extra luniq_staircase
DEPTH:   D:21-26
WEIGHT:  2
SUBST:   D = ll.
SUBST:   E = l..
NSUBST:  ! = 1:@ / *:!
SUBST:   ! = @...
SHUFFLE: }]){[(
MAP
   ...
  !....E!.
 .D.}.DlDE.
.ElDEDlllD.
Elllllllll!
Dlllllllll.
Ellllllll.
!lllllllE.
 .DlllDE!
  ..!...
ENDMAP

##############################################################################
# Cavepeople
#
NAME:   erik_1
ORIENT: float
WEIGHT: 5
TAGS:   no_monster_gen
DEPTH:  D:7-11, Lair
#
SHUFFLE: rR/sS/uU/vV/wW/yY/zZ, uU/nN
SUBST: r=n, R=N, s=n, S=N
SUBST: n=., N=@
SUBST: u=x, v=x, w=x, y=x, z=x
SUBST: U=x, V=x, W=x, Y=x, Z=x
#
SUBST: 1 = 1:20 ., 2=2., 3=23, 4=24
MONS:  jackal/hound, human, Edmund/Jessica/Sigmund, Ijyb/Psyche
MONS:  sheep/nothing
MAP
         xSxxxxx    xxxxxxxxxxUx
         xxssxxx    xx1xxxxxxuxx
xxxxxxxxxxxxxssx    x111xxxxxuxx
xxxzzzxxxxxxxxxsxxxxxx1xxxxxxuxx
Zzzxzxzxx555xxsxxxxxxx1xxxxxuxxx
xxxxxxxzxx5xxx.xxx..x1xxxxxuxxxx
   xxxxzxx5xxxx......xxxxxuuxxxx
   xxxzxxxx5xx...2...cccxxxux
   xxxzxxxx....2224..+$cxxuxx
   xxxxz.......2ll22.cccxxxux
   xxxxxx......3222.xxxxxxuxxxxxxxxx
   xxxxxxyxxxx2.......xxuuxxvvvvxxxx
   xxxxxyxxxx.......xx..vxvvxxxxvxxx
xxxxxxyyxxxxxrxxxxx.xxwxxvxxxxxxxvvx
xxxyxyxxxxxxrxxrxxxx.xxwxxxxxxxxxvxx
xyyyyxxxxxxxxrrxrrxxxxxxwxxxxxxxvxxx
xyxxxx     xxxxrxrrxxxxxxwwxxxxxxvvxxxxx
Yxxxxx     xxxxxxxrxxxxxxxxwxxxxxxxvvxvV
xxxxxx   xxxxxxxrrx       xxwxxxxxxxxvxx
         xxxrrrrxxx       xxwxxxxxxxxxxx
         xxRxxxxxxx       xxWxx
ENDMAP

##############################################################################
# Old Forge (1KB)
#
NAME:    old_forge
DEPTH:   D:4-12
ORIENT:  float
KITEM:   ? = long sword unrand:singing_sword, damaged short sword, \
             damaged long sword, damaged hand axe
KITEM:   ! = damaged executioner's axe, damaged short sword, \
             damaged long sword, damaged morningstar
KITEM:   + = damaged eveningstar, damaged short sword, \
             damaged long sword, damaged war axe
KITEM:   & = damaged hammer / nothing
MONS:    fungus, plant
MONS:    giant mite, scorpion
MONS:    rat / porcupine, green rat / orange rat
MONS:    bat
KFEAT:   w = web
SHUFFLE: ?!+
SUBST:   c:cccvvb , b=cc.
SUBST:   1 : 1112
SUBST:   1=1. , 2=2.... , 3=3. , 4=4. , 5=5. , 6=6.
SUBST:   ':.x''' , '=.x , .=......ww17
MAP
              xxxxxxxxxxxxxxxx
             xxx11'cccccccxxxx
            xxx'...c..?v3cx1xx
           xx111.3.c&'.v3c14xx
           x111'.......&&c4xxx
           xxx3.11..1xxccc.44x
             xxx.1.1113x..'xxx
              xxx'&..11.'xxx
               x1xxx'..xxx
               xxx xx'.'xx
                    xxx44xxxx
                      xx'.44xx
                       xxxx.'x
                          xx@x
ENDMAP

##############################################################################
# Sometimes You Just Gotta Run
#
NAME:    erik_ogre
DEPTH:   D:6-10
ORIENT:  float
SHUFFLE: 1X / 1X / 2l / 3Y
SUBST:   X=x, Y:x.
MONS:    ogre, iron devil, nothing
ITEM:    potion of heal wounds / potion of speed / potion of berserk rage /\
         scroll of blinking
MAP
        xx@xx
        x...x
        xX.Xx
        xX1Xx
        xX.Xx
        xx.xx
        xx.xx
        xx.xx
        x...x
        x...x
        x...x
        x.d.x
        x...x
        x.d.x
        x...x
     xxxx...xxxx
     x....[....x
xxxxxx..x(.{x..xxxxxx
x...x...x...x...x...x
x....x..xx]xx..x....x
xxxxxx...xxx...xxxxxx
     xxxxx xxxxx
ENDMAP

##############################################################################
# Starter slime pit
#
# The slime creature or amoeba may seem too tough for the level where this
# appears, but since they are normal speed with no range attacks, they can
# be escaped.
#
NAME:   lemuel_slime
DEPTH:  D:6-16, Lair
ORIENT: float
MONS:   w:20 ooze / jelly / fungus
MONS:   slime creature / giant amoeba / oklob plant
MAP
xxxxxxxxxx
xxxx111xxx
xx1111111x
@+1112111x
xx1111111x
xxxx111xxx
xxxxxxxxxx
ENDMAP

##############################################################################
# Beware the mummy's curse (Lemuel)
#
NAME:    lemuel_MiniTomb
ORIENT:  float
DEPTH:   D:15-26, Crypt
MONS:    large zombie / nothing
MONS:    mummy, patrolling guardian mummy, patrolling greater mummy
MONS:    large zombie
MONS:    mummy / nothing
SHUFFLE: 2F, cbv
SUBST:   F = G:99 F:1
KMONS:   F = orange crystal statue / silver statue / ice statue
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxx3$$xxxxxxxxxxxxx
ccxxxxxxxxccc=cccccccccxxxx
cccxxxxxxxc.....c...1$cxxxc
@Fcx6$.xxxc..1..c...25ccccc
cccccc=cccc.62..c...15c$$$c
@+111.....+.63..=..F11=4||c
cccccc=cccc.62..c...15c$$$c
@Fcx6$.xxxc..1..c...25ccccc
cccxxxxxxxc.....c...1$cxxxc
ccxxxxxxxxccc=cccccccccxxxx
xxxxxxxxxxx3$$xxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

##############################################################################
# An old-fashioned vault, by Lemuel
#
NAME:  lemuel_traditional_vault
DEPTH: D:12-27, Vaults
ORIENT: float
SUBST: 9 = 9 0 8:2
SUBST: 0 = 0 .
KFEAT: $ = ^
KITEM: $ = gold
MAP
........................
wwwwwwwwwwwwwwwwwwwwwwww
wcccccccccc==ccccccccccw
wc$..................$cw
wc.........99.........cw
wc..cccccccccccccccc..cw
wc0.c$....9999....$c.0cw
wc..c.....9999.....c..cw
wc..c..cccc++cccc..c..cw
wc..c..c$......$c..c..cw
wc..c..c...99...c..c..cw
wc..c..c..cccc..c..c..cw
wc00c..c..c||c..c..c00cw
wc00c..c..c||c..c..c00cw
wc..c..c..c++c..c..c..cw
wc..c..c..9889..c..c..cw
wc..c..c$.9889.$c..c..cw
wc..c..cccccccccc..c..cw
wc..c......99......c..cw
wc0.c$............$c.0cw
wc..ccccccc++ccccccc..cw
wc.........00.........cw
wc$........00........$cw
wccccccccccccccccccccccw
wwwwwwwwwwwwwwwwwwwwwwww
........................
ENDMAP

##############################################################################
# Anthole (zaba)
# Intentionally used ORIENT: float in order to enforce rooms+corridors.
#
NAME:   zaba_anthole
ORIENT: float
TAGS:   allow_dup
DEPTH:  D:3-9, Lair
MONS:   worker ant / nothing w:5
MAP
   @
 xx+xx
xx...xx
x.111.x
x.111.x
xx...xx
 xx+xx
   @
ENDMAP

#############################################################################
# Insect pit (Lemuel)
#
NAME:   lemuel_insect_pit
TAGS:   no_rotate
ORIENT: float
DEPTH:  D:5-12, Elf, Vaults
SUBST:  1 = 1:70 2:60 3:25
MONS:   goliath beetle w:20 / giant cockroach w:30 / butterfly w:20
MONS:   bumblebee / giant centipede / giant mite w:30
MONS:   killer bee / scorpion / soldier ant w:5
MAP
cccccccc+cccccccc
c...............c
c...............c
c....vvvvvvv....c
c....v11111v....c
c....=11111=....c
c....v11111v....c
c....vvvvvvv....c
c...............c
c...............c
cccccccc+cccccccc
ENDMAP

#############################################################################
# Troll bridge (Lemuel)
#
NAME:   lemuel_troll_bridge
DEPTH:  D:9-18
ORIENT: float
TAGS:   no_pool_fixup patrolling
KPROP:  1 = no_rtele_into
SUBST:  1 = 1:50 2 3:5
MONS:   troll
MONS:   rock troll
MONS:   iron troll
MAP
xxxxx...........................xxxxxx
xwwwx...........................xxxxxx
xwwwx...........................xxxxxx
xwwwx...........................xxxxxx
xwwwwwwwwwwwwwwwww.wwwwwwwwwww..xxxxxx
xxwwwwwwwwwwwxxxxw.wwwwwwwwwwwwwwwwxxx
xxwwwwwwwwwwwx11xw.wxxxxwwwwwwwwwwwwxx
xxwwwwwwwwwwwx11=...=11xwwwwwwwwwwwwwx
xxxwwwwwwwwwwxxxxw.wx11xwwwwwwwwwwwwwx
xxxxxwwwwwwwwwwwww.wxxxxwwwwwwwwwwwwwx
xxxxx...wwwwwwwwww.wwwwwwwwwwwwwwwwwwx
xxxxx...........................xwwwwx
xxxxx...........................xxwwwx
xxxxx...........................xxwwwx
xxxxx...........................xxxxxx
ENDMAP

##############################################################################
# An Ice Statue vault
#
NAME:    lemuel_ice_statue
MONS:    ice statue
TAGS:    no_pool_fixup
ORIENT:  float
DEPTH:   D:7-20, Elf
SUBST:   * : *$
SUBST:   * = |:5 * .
SUBST:   T = TU
SHUFFLE: xb/cc, ABC
: if crawl.coinflip() then
KFEAT:   X = < / >
KITEM:   X = any good_item
SUBST:   A=., B=., C=.
: else
SUBST:   X=*, B=., C=.
KFEAT:   A = teleport trap
: end
MAP
xxxxxxxxxxxxxxxxx
xbbbbbbbbbbbbbbbb
xb**....www.....T
xb**..A.www......
xbX*..B.w1w.....@
xb**..C.www......
xb**....www.....T
xbbbbbbbbbbbbbbbb
xxxxxxxxxxxxxxxxx
ENDMAP

##############################################################################
# Lions and Tigers and Bears, oh my! (or at least bears)
#
NAME:   lemuel_bear_cage
ORIENT: float
DEPTH:  D:7-21
MONS:   black bear / grizzly bear / polar bear
MONS:   hippogriff / griffon
MONS:   yak / sheep / weight:3 death yak
MONS:   hound / wolf / hog
SUBST:  1 = 1:30 2 3 4 .
MARKER: + = lua:props_marker { \
            door_open_prompt="This door is covered in warnings. Open " .. \
                             "it anyway?", \
            door_description_prefix="warning-scrawled " \
        }
MAP
cccccccccc
c.1.1.1.1c
c1.1.1.1.c
c.1.1.1.1c
c1.1.1.1.c
c.1.1.1.1c
cnn++++nnc
..........
@........@
..........
xxxxxxxxxx
ENDMAP

##############################################################################
# Vampire Tower by Lemuel Pitkin
#
NAME:    lemuel_vampire_tower
ORIENT:  float
DEPTH:   D:12-26, Vaults, Crypt
MONS:    rat / porcupine / w:6 green rat / w:3 orange rat / w:20 bat
MONS:    flying skull, human zombie
MONS:    vampire, vampire mage, vampire knight
KITEM:   > = any good_item
KFEAT:   > = >
KFEAT:   ; = altar_yredelemnul/altar_kikubaaqudgha
SHUFFLE: defg
SUBST:   d = =, e = x, f = x, g = x
SUBST:   s = =, ! = x, ? = x
SUBST:   1 = 1 .:20
SUBST:   1 : 1:30 2
SUBST:   + = +=
SUBST:   w:w.
NSUBST:  ? = 2:L / *:?
SUBST:   ? = L:1 x
SUBST:   ? = x
SUBST:   L = |*$
MAP
F..wwwwwwwwwwwwwwwww..F
..wwwwwwwwwwwwwwwwwww..
.www111xxxx+xxxx111www.
www111xxx22322xxx111www
ww111xx.+23432+.xx111ww
ww11dx..ccccccc..xe11ww
ww1xx..ccc|>|ccc..xx1ww
wwxx..ccccc6ccccc..xxww
wwx..ccc33+4+33ccc..xww
wwx.ccccccc+cccc?cc.xww
wwx.c***x.....x???c4xww
wwx.c***=..5..x???c.xww
wwx4cc**x4.;.4x??cc.xww
wwx..ccxx.....x?cc..xww
wwxx..ccx..4..xcc..xxww
ww1xx..cc.....cc..xx1ww
ww11fx..ccc.ccc..xg11ww
ww111xx..cc+cc..xx111ww
www111xx..333..xx111www
.www111xxxxxxxxx111www.
..wwwwwwwwwwwwwwwwwww..
F..wwwwwwwwwwwwwwwww..F
ENDMAP


#############################################################################
# Oklob gauntlet
# average of 2.3 oklobs, and at most 5 of them
#
NAME:    dpeg_oklob_gauntlet
DEPTH:   D:18-26, Lair, Snake, Elf
MONS:    plant, oklob plant
ORIENT:  float
SHUFFLE: ]}) / def
NSUBST:  ' = 5:2 *:1
NSUBST:  2 = 1:2 *:112
SUBST:   1=1w, "=ww.
SUBST:   d=|*, e=|*, f=|*
MAP
xxxxxxxxxxxxx
xxxxx]})xxxxx
xxxxx...xxxxx
x'ww.....ww'x
x'"......."'x
x'"......."'x
x'"......."'x
x'"......."'x
x'ww.....ww'x
xxxxxx+xxxxxx
ENDMAP

#############################################################################
# Oklob shooting range
#
# Disallowing this vault on branch starts, as brown stairs can't help there.
# Chance for a plant to turn oklob based on dungeon level. Elf:5 is hard, but
# considered okay. Has between 1 and 3 oklob plants.
# Single oklob at absolute depth 10, expect 2 oklobs at depth 20.
# Rarely (2.5% chance) the whole vault is enclosed. This is the hardest case,
# and the walls are always diggable then.
#
NAME:    dpeg_oklob_shooting_range
DEPTH:   D:18-26, Lair:2-, Elf:2-5
WEIGHT:  2
ORIENT:  float
SHUFFLE: ab" / AB'
SUBST:   a=[, b=(, A=., B=., '=., "=>
#
SUBST:   x : y:1 x:5 .:34
SUBST:   x = x:2 .
SHUFFLE: xcv
SUBST:   y = x
#
NSUBST:  1 = 1:2 1:3 *:1
: wt = (you.absdepth()-10)/2
: mons("oklob plant w:" .. wt .. " / plant")
MONS:    plant, oklob plant
MAP
xxxxxxxxxxxxxxx
xxxx...1...xxxx
xx...........xx
xx...........xx
x......"......x
x......'......x
x1...aA{Bb...1x
x......'......x
x......"......x
xx...........xx
xx...........xx
xxxx...1...xxxx
xxxxxxxxxxxxxxx
ENDMAP

##############################################################################
# Swampy vault
#
NAME:    onia_ninara_swampy_vault
TAGS:    no_pool_fixup no_monster_gen
DEPTH:   D:16-20, Lair:3-, Snake
ORIENT:  float
SHUFFLE: AB@
SUBST:   x = .:30 W x:4
SUBST:   A : x, B : x
SUBST:   D = .:30 W
KFEAT:   E = w:20 . / x / w:50 W / w:30 w / ~
KFEAT:   F = w:150 w / w:70 W / ~ / . / x
KFEAT:   G = x / . / w / W
KFEAT:   H = . / W
KMONS:   D = Plant / w:200 nothing
KMONS:   E = w:2 slime creature / swamp worm /\
             w:2 vampire mosquito / w:1 electric eel / w:1000 nothing
KMONS:   F = w:2 slime creature / swamp worm /\
             w:2 vampire mosquito / w:2 electric eel / w:1000 nothing
KMONS:   H = swamp drake / swamp dragon / hydra / w:20 nothing
KITEM:   H = any good_item / any potion / w:20 nothing / gold
MAP
xxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxx
xxxxxxGGGxxxxxxGEDEExxxxGGxxxxxxx
xxxxGHHFFGGGGFFFEEDEEGGFFFxxGGxxx
xxFFFHHFFFFFGFFFFEEDEEFFFFFFFFGxx
xGGFFFFDDEEFFFFFEEDEEFFFFFFFFFFGx
xxGFFFFEEDDEEFFEEDEEFFFEEEFFFFGxx
xGFFFFFFFEEDEEEDDEEEEEEEDDEEEFFGx
xGGFFFFFFFEEDEDEEEEEEEDDEEDDDEEDB
xxGFFFFFFFFEEDEDDEDDDDEEEEEEEDDxx
xxxGFFFFFFEEDEEEEDEEEEEFFFFFFFFxx
xxxxFFFFFEEDEEFFFFDDFFFFFFFFFGGGx
xxxGFFFFEEDEEFFFFFFEDEFFFFFFFxxxx
xGGFFFFFFDEEFFFFFFFFEDFFFFFFGGxxx
xGFFFFFFEEDEEFFFFFFFFEDEFFFGxxxxx
xxGxxxGFEEDEEFFFFGGGFFHHHGxxxxxxx
xxxxxxxGFEEDEEGGxxxxxGFHGxxxxxxxx
xxxxxxxxGFDEGGxxxxxxxxxGxxxxxxxxx
xxxxxxxxxxAxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

##############################################################################
# Another low-level vault - LP
#
NAME:    lemuel_reptile_caves
DEPTH:   D:10-13, Lair, Snake
ORIENT:  float
MONS:    giant gecko / giant newt, crocodile, iguana
MONS:    fire drake / swamp drake
MONS:    adder, water moccasin
SUBST:   4 = 34
SUBST:   3 = 3:20 2
SUBST:   2 = 2:20 1
SUBST:   1 = 1.
SHUFFLE: ab/cd
SUBST:   a = w, b = x, c = x, d = .
SHUFFLE: 123/566
SUBST:   X=x.
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxXW**wXxxxxxxxxxxxxxxX**XXx
xXwWwwwXxxxxxxX33xxxxxX423Xx
xXWww232XxxxxX121xxxxX.13Xxx
xXXWww2XxxxxxX.1xxxxxw222Xxx
xxXXWwwwaaxxxxXWxxaaaw1121Xx
xxxXWww1XaaaaaWwaaaxXWw211Xx
xxxxXW23xxxxxaWwwxxxXww11XXx
xxxxXX1XxxxxxxxWwwxxxxX.Xxxx
xxxxxxX.XxxxXwWwwwxxx...Xxxx
xxxxxxx..Xxxx2xWwxxX..XXxxxx
xxxxxxxX.12111xw3X211bxxxxxx
xxxxxxxxxxXXXxxW2xxxxbbxxxxx
xxxxxxxxxxxxxxxw1Xxxxxbbxxxx
xxxxxxxxxxxxxXww1Xxxxxxbxxxx
xxxxxxxxxxxXwwww111@...Xxxxx
ENDMAP

##############################################################################
# A guard of gargoyles
#
NAME:    gargoyle_guard
ORIENT:  float
TAGS:    patrolling no_monster_gen
DEPTH:   D:10-18
# you should be able to arrive both via stairs and via corridor
SUBST:   { = {([)]}
MONS:    gargoyle, metal gargoyle / gargoyle
MAP
xxxxxxxxxxxxxxxxxxx
xxxxxxxxx2xxxxxxxxx
xxxxx1x1x.x1x1xxxxx
xxxxx.........xxxxx
xxxx...........xxxx
xxxx...........xxxx
xxx...G..{..G...xxx
xxxx...........xxxx
xxxx...........xxxx
xxxxx.........xxxxx
xxxxx1x1x.x1x1xxxxx
xxxxxxxxx.xxxxxxxxx
xxxxxxxxx.xxxxxxxxx
xxxxxxxxx.xxxxxxxxx
xxxxxxxxx@xxxxxxxxx
ENDMAP

##############################################################################
# Ogre Cave, by Lemuel
#
NAME:    lemuel_ogre_cave
ORIENT:  float
DEPTH:   D:9-15, Orc
TAGS:    no_pool_fixup
MONS:    ogre, two-headed ogre, ogre mage / Erolcha, plant / fungus
MONS:    ogre zombie, two-headed ogre zombie
SHUFFLE: WX/ZY , 12/12/67
SUBST:   W:ww. , X:. , Z:x , Y:+.=
SHUFFLE: *5/WW
SUBST:   *=. , W=wW , !:$.
SUBST:   5 = 5 6 = ^:5 I:5 F:5
MAP
              xxxxx
          xxxxxx12xx
         xx*..x.122xx
 xxxxxxxxx5xxx...11xx
xxWxxxxxxx*xxxxx....xx
xxWWxxxxxx.xxxxxx**xxxx
xWWWxxxxxx.xxxxxxx**xxxxx
WWWW**xxxxx.xxxxxxx5xxxxxxxx
xWWWW..xxxxx.xxxxxx.xccccccx
xxWW....1xxx.xxxxx.xxc$$$$cx
@..X...111..xxxxxx.xxc$$$$cx
xxWWW...11xxxxxxx.xxxc!!!!cx
xWWW....*xxxxxxx*..xxc+ccccx
xxWWW..**xxxxxx*....x..xxxxx
 xxWWWW*xxxxxxx*.11.Y.xx
  xxWWWWWxxxxxxx1221xxx
  xxxxWWWWxxxxxxx23xx
  xxxxxWWxxxxxxxxx|xx
  xxWWWWxxxxxxxxxxxx
  WWWWxxx
ENDMAP

##############################################################################
# Slaugherhouse (Zaba)
#
# Butchers have either knives (daggers) or hand axes. They have some chance
# of opening the doors so animals can go for a walk, that's intended.
#
NAME:   slaughterhouse
DEPTH:  Lair:7-, D:11-18
TAGS:   no_monster_gen
ORIENT: float
WEIGHT: 5
MARKER: F = lua:fog_machine { \
                pow_max = 10, delay_min = 10, delay_max = 40, \
                size = 4, size_buildup_amnt = 4, \
                size_buildup_time = 25, cloud_type = "freezing vapour" \
            }
MONS:   death yak w:5 / sheep w:3 / yak w:7
MONS:   generate_awake human ; dagger | hand axe
SUBST:  F=d, 2=2.
ITEM:   meat ration w:5 / sausage / nothing
MAP
 cccccc       ccccccc
 cddddcxxxxxxxxcddddc
 cdFdd+..+..+..+ddFdc
 cddddcxxx..xxxcddddc
 cccccc..x..x..cccccc
.........x2.x.........
.nnnnnn..x..x..nnnnnn.
.n1111nxxx..xxxn1111n.
.n1111+..+..+..+1111n.
.n1111nxxx..xxxn1111n.
.nnnnnn..x..x..nnnnnn.
.........x.2x.........
 xxxxxx..x..x..xxxxxx
 x...2xxxx..xxxx2...x
 x..2.+..+..+..+.2..x
 x...2xxxx..xxxx2...x
 xxxxxx  x..x  xxxxxx
         x++x
          @.
ENDMAP

##############################################################################
# The Shining One Protects a Powerful Item, vault series by abrahamwl
#
# The basic theme of these vaults is that the Shining One has placed a
# powerful item under the guard of an angel or daeva.

NAME:    abrahamwl_protected_by_tso_1
ORIENT:  float
TAGS:    patrolling no_monster_gen no_item_gen no_pool_fixup allow_dup
TAGS:    luniq_protected_by_tso
WEIGHT:  4
DEPTH:   D:23-27, Vaults
MONS:    generate_awake angel / generate_awake daeva / w:1 angel / w:1 daeva
COLOUR:  - : yellow
SUBST:   - : +
KMASK:   + = no_secret_doors
MARKER:  ! = lua:message_at_spot ( "You almost think you hear a voice: \
                                   \"Seek not undue power, mortal.\"", \
                                   "warning" )
SUBST:   ! : .
MAP
         xxxxx
   xxxxxxxXXXxxxxxxx
   xXXXXXXX1XXXXXXXx
   xX|...-...-...|Xx
   xXXXXXX...XXXXXXx
   xxxxxXX...XXxxxxx
     xxxXG...GXxxx
    xxxxXX...XXxxxx
    xXXXXX...XXXXXx
    xXxxxx---xxxxXx
    xX...........Xx
    xX...........Xx
    xX..G.....G..Xx
    xX...........Xx
    xX.....1.....Xx
    xX...........Xx
    xX..G.....G..Xx
    xX...........Xx
    xX...........Xx
    xXXXXXX-XXXXXXx
    xxxxxxx!xxxxxxx
       xxxx+xxxx
           @
ENDMAP

NAME:    abrahamwl_protected_by_tso_2
ORIENT:  float
TAGS:    patrolling no_monster_gen no_item_gen no_pool_fixup allow_dup
TAGS:    luniq_protected_by_tso
WEIGHT:  4
DEPTH:   D:18-27, Vaults
MONS:    generate_awake angel / generate_awake daeva / w:1 angel / w:1 daeva
KFEAT:   A = altar_the_shining_one
KITEM:   A = w:1 acquire:the_shining_one any / nothing
: if crawl.one_chance_in(3) then
SUBST:   | = .
SUBST:   % = |
SUBST:   ? = =
: else
SUBST:   % = X
SUBST:   ? = X
: end
COLOUR:  _ : yellow
SUBST:   _ : .
SUBST:   T = T F:1
COLOUR:  - : yellow
SUBST:   - : +
KMASK:   + = no_secret_doors
MARKER:  ! = lua:message_at_spot ( "You almost think you hear a voice: \
                                   \"Seek not undue power, mortal.\"", \
                                   "warning" )
SUBST:   ! : .
MAP
    xxxxxxxxxxxxxxx
  xxxXXXXXXXXXXXXXxxx
  xXXX_____A_____XXXx
  xX%?Wwwww_wwwwW=|Xx
  xXXXxWwww_wwwWxXXXx
  xxxXxxWWw_wWWxxXxxx
   xXXxxxx._.xxxxXXx
   xxXxxxx---xxxxXxx
    xX...........Xx
    xX...........Xx
    xX..G.....G..Xx
    xX...........Xx
    xX.....1.....Xx
    xX...........Xx
    xX..G.....G..Xx
    xX...........Xx
    xX...........Xx
    xXXXXXX-XXXXXXx
    xxxxxxx!xxxxxxx
       xxxx+xxxx
           @
ENDMAP

NAME:    abrahamwl_protected_by_tso_3
ORIENT:  float
TAGS:    patrolling no_monster_gen no_item_gen no_pool_fixup allow_dup
TAGS:    luniq_protected_by_tso
WEIGHT:  4
DEPTH:   D:18-27, Vaults
MONS:    generate_awake angel / generate_awake daeva / w:1 angel / w:1 daeva
KFEAT:   A = altar_the_shining_one
KITEM:   A = w:1 acquire:the_shining_one any / nothing
: if crawl.one_chance_in(3) then
SUBST:   | = .
SUBST:   % = |
SUBST:   ? = =
: else
SUBST:   % = X
SUBST:   ? = X
: end
COLOUR:  _ : yellow
SUBST:   _ : .
SUBST:   T = T F:1
COLOUR:  - : yellow
SUBST:   - : +
KMASK:   + = no_secret_doors
MARKER:  ! = lua:message_at_spot ( "You almost think you hear a voice: \
                                   \"Seek not undue power, mortal.\"", \
                                   "warning" )
SUBST:   ! : .
MAP
      xxxxxxxxxxx
     xxxxxXXXxxxxx
    xxxxxxX|Xxxxxxx
    xXXXXXX=XXXXXXx
   xxXWWWWTATWWWWXx
  xxxXW.._____..WXx
  xXXXWt..___..tWXx
  xX%?W...___...WXx
  xXXXWt..___..tWXx
  xxxXxxxx---xxxxXx
    xX...........Xx
    xX...........Xx
    xX..G.....G..Xx
    xX...........Xx
    xX.....1.....Xx
    xX...........Xx
    xX..G.....G..Xx
    xX...........Xx
    xX...........Xx
    xXXXXXX-XXXXXXx
    xxxxxxx!xxxxxxx
       xxxx+xxxx
           @
ENDMAP

##############################################################################
# Eyes! by Minmay
#
NAME:   minmay_eyes
DEPTH:  D:14-24
ORIENT: float
KFEAT:  m = iron_grate
MONS:   eye of devastation / great orb of eyes w:2
MONS:   golden eye / shining eye w:2
MONS:   giant orange brain
MAP
...................................
.cccccccccccc.........cccccccccccc.
.c.............................m2c.
.c.1.............1.............mmc.
.c...............................c.
.c...cccccccccnnnnnnnccccccccc...c.
.c...c.......................c...c.
.c...c.1.........1.........1.c...c.
.c...c.......................c...c.
.c...c...ccccccnnnnncccccc...c...c.
.c...c...c...............c...c...c.
.c...c...c.1.....1.....1.c...c...c.
.c...c...c...............c...c...c.
.n...c...c...cccmmmccc...c...c...n.
.n...n...c...c3.....3c...c.......n.
.n...n...n...c..%.%..c...n.......n.
.n...n...n.....%|*|%.m...n.......n.
.n.1.n.1.n.1....*|*..m.1.n.1...1.n.
.n...n...n.....%|*|%.m...n.......n.
.n...n...n...c..%.%..c...n.......n.
.n...n...c...c3.....3c...c.......n.
.n...c...c...cccmmmccc...c...c...n.
.c...c...c...............c...c...c.
.c...c...cmm.....1.....1.c...c...c.
.c...c...c2m.............c...c...c.
.c...c...cccccc.....cccccc...c...c.
.c...c.......................c...c.
.c...c.1.........1.........mmc...c.
.c...c.....................m2c...c.
.c...cccccccccnnnnnnnccccccccc...c.
.c...............................c.
.c.1.............1.............1.c.
.c...............................c.
.ccccccccccccnnnnnnnnncccccccccccc.
...................................
ENDMAP

##############################################################################
# Elemental Laboratory (by Mu.)
#
NAME:   mu_elemental_laboratory
DEPTH:  D:13-26, Elf:1-4
ORIENT: float
TAGS:   no_monster_gen no_item_gen no_pool_fixup
MARKER: ! = lua:fog_machine { \
                pow_max = 10, delay_min = 10, delay_max = 40, \
                size = 2, size_buildup_amnt = 5, \
                size_buildup_time = 25, cloud_type = "flame" \
            }
MARKER: ? = lua:fog_machine { \
                pow_max = 10, delay_min = 10, delay_max = 40, \
                size = 2, size_buildup_amnt = 5, \
                size_buildup_time = 25, cloud_type = "thin mist" \
            }
MARKER: * = lua:fog_machine { \
                pow_max = 10, delay_min = 10, delay_max = 40, \
                size = 2, size_buildup_amnt = 5, \
                size_buildup_time = 25, cloud_type = "black smoke" \
            }
KMONS:  1 = fire elemental
NSUBST: ; = 3:2 / *=.ll
KMONS:  2 = molten gargoyle
KMONS:  e = earth elemental
SUBST:  E = exxx....
NSUBST: ' = 3:3 / 3:W / *:.
KMONS:  3 = clay golem
NSUBST: w = 3:4 / *:w
KMONS:  4 = water elemental
KFEAT:  4 = deep_water
NSUBST: " = 3:5 / *:.
KMONS:  5 = vapour
KMONS:  6 = air elemental
KMONS:  7 = fire vortex
#
: if you.in_branch("elf") then
KMONS:  Z = col:flash deep elf sorcerer \
        name:deep_elf_elementalist n_rpl n_des tile:mons_deep_elf_elementalist \
        spells:iron_shot;summon_air_elementals;sticky_flame_range;\
        summon_water_elementals;haste;blink actual_spells \
        ; robe ego:fire_resistance race:elven | \
        robe ego:cold_resistance race:elven | \
        robe ego:resistance race:elven . dagger ego:freezing race:elven | \
        dagger ego:flaming race:elven | dagger ego:electrocution race:elven
: else
KMONS:  Z = col:flash wizard hd:15 name_descriptor tile:mons_master_elementalist \
        name:master_elementalist name_replace \
        spells:iron_shot;summon_air_elementals;sticky_flame_range;\
        summon_water_elementals;haste;blink actual_spells \
        ; robe ego:fire_resistance | robe ego:cold_resistance | \
        robe ego:resistance \
        . dagger ego:freezing | dagger ego:flaming | \
        dagger ego:electrocution
: end

KITEM:  B = randbook disc:air / randbook disc:fire / randbook disc:ice / \
            randbook disc:earth
KITEM:  | = staff of fire / staff of cold / staff of earth / staff of air / \
            staff unrand:elemental_staff
MAP
       ccccccccc
      ccE+'''cwcc
     ccEEc'''cwwcc
    ccEEEc'''cwwwcc
   ccEEEEc'''cwwwwcc
  ccEEEEEc'''cwwwwwcc
 ccEEEEEEc''Wcwwwwwwcc
ccEEEEEEEc'WW+wwwwwwwcc
cEEEEEEEEcccccwwwwwwwwc
ccccccc+ccB|Bcccccccc+c
c;;;;;;;c$...$c"""""""c
c;;;;;;;c$.Z.$c""?"?""c
c;;;;;;;c$...$c"""""""c
c+cccccccc...cc+ccccccc
c........c+++c........c
cc..!1.!1c...c.6..6..cc
 cc......c7.7c......cc
  cc.....c...c.....cc
   cc.1!.c.*.c.6..cc
    cc...c...c...cc
     cc..c.7.c..cc
      cc.c...+.cc
       c+ccccccc
        @
ENDMAP

##############################################################################
# Guardian serpents guard a snake-like passage. (nrook)
#
NAME:    nrook_guardian_serpent_snake_passage
ORIENT:  float
DEPTH:   D:9-27
TAGS:    no_monster_gen no_rotate
MONS:    patrolling guardian serpent
SHUFFLE: yY/zZ
SUBST:   y=., Y==, Z=x, z=b
COLOUR:  *. = lightgreen
SUBST:   ' = .
MAP
            xxxxxxxxxxxxxxx
            xxxxbbbbbbbbxxx'
            xxbbb..*...bbbx'
            xbb...bbbb...yY1
            xb..bbbbbbbbbbx@
            xb.bbxxxxxxxxxx'
            xb..bbbbxx
            xbb.*..bbx
            xxbbbb..bx
 xxxxxxxxxxxxxxxxbb.bx
'xbbbbxxxxxxxxxxxbb.bx
1Zz..bbbxxxxxxxbbb..bx
@xbb...bbbbbbbbb.*.bbx
'xxbbb...*.......bbbxx
 xxxxbbbbbbbbbbbbbxxxx
ENDMAP

##############################################################################
# Shantytown, noun: An area containing a collection of shacks,
#                   shanties or makeshift dwellings. By Core Xii
#
NAME:   corexii_shantytown
DEPTH:  D:4-8
ORIENT: float
TAGS:   no_monster_gen no_item_gen
NSUBST: + = 1:+ / *:=
SUBST:  = = + x:100
NSUBST: A = 1:+ / *:x, B = 1:+ / *:x, C = 1:+ / *:x, D = 1:+ / *:x
NSUBST: E = 1:+ / *:x, F = 1:+ / *:x, G = 1:+ / *:x, H = 1:+ / *:x
NSUBST: I = 1:+ / *:x, J = 1:+ / *:x, K = 1:+ / *:x, L = 1:+ / *:x
NSUBST: M = 1:+ / *:x, N = 1:+ / *:x, O = 1:+ / *:x, P = 1:+ / *:x
NSUBST: Q = 1:+ / *:x, R = 1:+ / *:x, S = 1:+ / *:x, T = 1:+ / *:x
NSUBST: U = 1:+ / *:x, V = 1:+ / *:x
# There are 111 - glyphs, which leads to about 27 monsters
SUBST:  - = 2:20 d .:50
ITEM:   any food / any weapon / any missile / w:5 any armour / \
        w:5 any potion / w:5 any scroll, w:1 any misc
MONS:   plant / w:40 nothing, goblin / hobgoblin / kobold / orc / w:5 gnoll
MAP
.......................
..1..x++x..1..x+++++x..
.1x++x--x++x++x-----+..
..+--A--B--C--E-----+..
..+--A--B--C--E-----+..
.1xxAxxBxCCx--xEExEExx.
..1+--R....xDDx..F---+.
..1+--R..........F---+.
.1xxRxx.xSSSxTTx.xFx+x.
..+--Q..S---T--T...+1..
..+--Q..S---T--T...+1..
.xxPxx.xxSSxxTxx.xGxx1.
.+--P..V---U--U..G--+..
.+--P..V---U--U..G--+..
.xxOxx.V---xUUx..xHHxx.
..+--O.xVVVx.....H---+.
..+--O........xJJx---+.
.xxNNxMMx..xKKx--xIIxx.
.+---N--xLLx--J--I--+..
.+---N--M--L--x++x--+..
.x+++x++x--L--+11+--+..
.1...1..x++x++x..x++x1.
.......................
ENDMAP

##############################################################################
# Cluster of small buildings with basic monsters and loot, by Core Xii
#
NAME:   corexii_shack_village
DEPTH:  D:3-9
ORIENT: float
TAGS:   no_monster_gen no_item_gen
NSUBST: A = 1:+ / *:x, B = 1:+ / *:x, C = 1:+ / *:x, D = 1:+ / *:x
NSUBST: E = 1:+ / *:x, F = 1:+ / *:x, G = 1:+ / *:x, H = 1:+ / *:x
# 39 - glyphs, leading to about 10 monsters.
SUBST:  - = 2:20 d .:50
SUBST:  T = T:50 V G 1 .:20
ITEM:   any food / any weapon / any missile / w:5 any armour / w:5 any potion
MONS:   plant / w:40 nothing, goblin / hobgoblin / kobold / orc
MAP
....................
.1xAAx1.xxxxx111111.
.1x--x1.B---xxxxxxx.
.1x--x1.B---C--D--x.
.1xAAx1.xBBBx--D--x.
............xCCxDDx.
..........T.........
.11.xFFFx...........
.xEEx---xGGx1.xHHx1.
.x--E---G--x1.H--x1.
.x--E---G--x1.H--x1.
.xxxxxxxxxxx1.xxxx1.
....................
ENDMAP

##############################################################################
# Ice Spiral vaults by Lemuel

# There is a path to the center that the freezing clouds never appear on.
# It's pretty obvious. -LP
#
NAME:    lemuel_ice_spiral_1
WEIGHT:  1
ORIENT:  float
TAGS:    no_item_gen no_monster_gen
MONS:    ice beast / nothing
ITEM:    nothing, nothing
SHUFFLE: 1ef
SUBST:   + : +=
SUBST:   * : *$
SUBST:   * = ***.|
MARKER:  1 = lua:fog_machine { cloud_type = "freezing vapour", \
             pow_min = 2, pow_max = 4, delay = 17, start_clouds = 1, \
             size = 2, walk_dist = 0, spread_rate= 0 }
MARKER:  e = lua:fog_machine { cloud_type = "freezing vapour", \
             pow_min = 2, pow_max = 4, delay = 19, start_clouds = 1, \
             size = 2, walk_dist = 0, spread_rate= 0 }
MARKER:  f = lua:fog_machine { cloud_type = "freezing vapour", \
             pow_min = 2, pow_max = 4, delay = 23, start_clouds = 1, \
             size = 2, walk_dist = 0, spread_rate= 0 }
MARKER:  G = lua:props_marker { stop_explore = "frost-covered granite \
             statue.", feature_description = "frost-covered granite statue" }
MAP
mG++Gmmmmmmmmmmmmmmmmmm
m......f..1..1...e...fm
m....1...f..e..f...1..m
m......e..............m
m....f...............em
m......1..............m
m....1.....e.1.f......m
m...........f.e.1....1m
m......e..............m
m....e......***.......m
m......1....***.f....fm
m.....................m
m....f1..e1.f..1e.....m
m....................em
m.....................m
m.....................m
m....................1m
mf..1..e..f..e..f..e..m
mmmmmmmmmmmmmmmmmmmmmmm
ENDMAP

# Wait for the freezing cloud to disappear, then run to the next gap,
# then wait. It creates an agreeable sense of tension. -LP
#
NAME:    lemuel_ice_spiral_2
ORIENT:  float
DEPTH:   D:5-27, Vaults
TAGS:    no_item_gen uniq_spiral layout_rooms layout_city
MONS:    nothing
ITEM:    nothing, nothing
SHUFFLE: Bb/Mm/Mm/Mm
COLOUR:  B = blue
SUBST:   M=. , m=n, B=. , b=c
SUBST:   + : +=
SUBST:   * : *$
MARKER:  1 = lua:fog_machine { cloud_type = "freezing vapour", \
              pow_min = 5, pow_max = 5, delay = 120, start_clouds = 1, \
              size = 2, walk_dist = 0, spread_rate= 0 }
MARKER:  e = lua:fog_machine { cloud_type = "freezing vapour", \
              pow_min = 9, pow_max = 9, delay = 200, start_clouds = 1, \
              size = 2, walk_dist = 0, spread_rate= 0 }
MARKER:  G = lua:props_marker { stop_explore = "frost-covered granite \
             statue.", feature_description = "frost-covered granite statue" }
MAP
mG+Gmmmmmmmmmmmmmmmmm
mBBB111B111BeeeeeeeBm
mmmmmmmmmmmmmmmmmmmBm
m*****eeeeeee111B111m
mmmmmmmmmmmmmmmmmmmmm
ENDMAP

##############################################################################
# Flame loot (Lemuel)
#
NAME:   lemuel_Flame_loot_2
DEPTH:  D:9-27
ORIENT: float
ITEM:   nothing
SUBST:  * = |**...
SUBST:  * : *$
SUBST:  L = ll.
MONS:   molten gargoyle / fire drake / lindwurm / nothing w:20
MARKER: d = lua:fog_machine { cloud_type = "flame", \
             pow_min = 10, pow_max = 10, delay = 10, \
             size = 2, walk_dist = 0, spread_rate= 0 }
MAP
ccccc...ccccc
ccccc...ccccc
ccccc...ccccc
ccccc.d.ccccc
ccccc...ccccc
ccccc...ccccc
ccccc.d.ccccc
ccccc...ccccc
ccccc...ccccc
ccccc...ccccc
c...LLlLL...c
c..LLlllLL..c
c.LLll*llLL.c
cLLll***llLLc
cLll**1**llLc
cLlll***lllLc
cLLlll*lllLLc
c.LLlllllLL.c
c..LLlllLL..c
ccccccccccccc
ENDMAP

##############################################################################
# Firewalk (Lemuel)
#
NAME:    lemuel_firewalk_3
DEPTH:   D:16-27
TAGS:    uniq_firewalk abyss ruin_abyss
WEIGHT:  2
ORIENT:  float
ITEM:    nothing, nothing, nothing
SHUFFLE: def
MARKER:  d = lua:fog_machine { cloud_type = "flame", \
             pow_min = 2, pow_max = 4, delay = 39, start_clouds = 1, \
             size = 2, walk_dist = 2, spread_rate= 0 }
MARKER:  e = lua:fog_machine { cloud_type = "flame", \
             pow_min = 2, pow_max = 6, delay = 59, start_clouds = 1, \
             size = 2, walk_dist = 2, spread_rate= 0 }
MARKER:  f = lua:fog_machine { cloud_type = "flame", \
             pow_min = 2, pow_max = 8, delay = 79, start_clouds = 1, \
             size = 2, walk_dist = 2, spread_rate= 0 }
MARKER:  G = lua:props_marker { stop_explore = "scorch-marked granite \
             statue.", feature_description = "scorch-marked granite statue" }
MAP
xxxxxxxG@Gxxxxxxx
x...............x
x...............x
x.d..e.....f..d.x
x...............x
x...............x
x...............x
x.e..f.....d..e.x
x...............x
x...............x
x...............x
x.f..d.....e..f.x
x...............x
x...............x
x...............x
x.d..e.....f..d.x
x...............x
x...............x
x......$$$......x
x.e.f..$$$..d.e.x
x......$$$......x
xxxxxxxxxxxxxxxxx
ENDMAP

#############################################################################
# The Elephants' Graveyard (by Mu.)
#
NAME:   mu_elephants_graveyard
ORIENT: float
TAGS:   no_monster_gen no_rotate no_vmirror
DEPTH:  D:13-26, Lair:1-7

  # next: we generate more dire elephants at greater depths
  # we also turn the shallow water into deep water at the lowest depths,
  # just in case elephants are ever allowed to drown the unwary
: if you.absdepth() < 18 then
MONS:   elephant, fungus, plant
: elseif you.absdepth() < 22 then
MONS:   elephant / dire elephant, fungus, plant
: else
MONS:   w:1 elephant / dire elephant, fungus, plant
SUBST: W : w
:end

: dgn.delayed_decay(_G, '%', 'w:1 elephant corpse / w:5 elephant skeleton / nothing')
SUBST:  . = .:69 1:1
SUBST:  P = 3
SUBST:  a = .2
SUBST:  b = 23
SUBST:  c = 3tt

MAP
............................
............................
............................
............................
........tttttttttttt........
......tttccccccccccttt......
.....ttcccbbbbbbbbccctt.....
....ttccbbbaaaaaabbbcctt....
....tccbbaaa...1aaabbcct....
...ttcbbaa...%%...aabbctt...
..ttccbaa..%%%%%%..aabcctt..
..tccbba..%%%%%%%%..abbcct..
..tcbbaa.%%.PPP%%%%.aabbct..
..tcbaa..%%.PWPP%%%..aabct..
..tcba1.%%%11WPP%%%%..abct..
..tcba.%%%%11WWP%%%%%.abct..
..tcba.%%%%.WWWP%%%%%.abct..
..tcba..%%%.WWWP%%%%1.abct..
..tcbaa.1%%..WWP.%%..aabct..
..tcbbaa.%%%..WP.%%.aabbct..
..tccbba..%%%.WW....abbcct..
..ttccbaa......WW..aabcctt..
...ttcbbaa......W.aabbctt...
....tccbbaaaa..aaaabbcct....
....ttccbbbba..abbbbcctt....
.....ttccccca..accccctt.....
......tttttta..atttttt......
............................
............1..1............
............................
.............@@.............
ENDMAP

##############################################################################
# Marble ring (evilmike)
# outer ring contains 10 to 30 monsters, mean of 16.7
#
NAME:   evilmike_marble_ring
DEPTH:  D:14-, Vaults:1-7
ORIENT: float
COLOUR: b-+89*| = white
FTILE:  b-+89*| = FLOOR_MARBLE
TILE:   b = WALL_MARBLE
NSUBST:  0 = 3:9 / 7:0 / 20=0.. / *:.
# can rarely be a statue gallery, otherwise use stone pillars
: if crawl.one_chance_in(4) then
SUBST:  c = G, v = .
: else
SUBST:  v: ...c
: end
SUBST:  b = c, - = .
MAP
xxxxxxxxxxx@xxxxxxxxxxx
x.....................x
x.c.c.c.c.c.c.c.c.c.c.x
x..v.v.v.v.v.v.v.v.v..x
x.c.................c.x
x..v...............v..x
x.c...00000000000...c.x
x..v..0bbbbbbbbb0..v..x
x.c...0b---8---b0...c.x
x..v..0b-b---b-b0..v..x
x.c...0b--|||--b0...c.x
x..v..0b9-***-9b0..v..x
x.c...0b--***--b0...c.x
x..v..0b-b---b-b0..v..x
x.c...0b-------b0...c.x
x..v..0bbbb+bbbb0..v..x
x.c...00000000000...c.x
x..v......T.T......v..x
x.c.................c.x
x..v.v.v.v.v.v.v.v.v..x
x.c.c.c.c.c.c.c.c.c.c.x
x.....................x
xxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

##############################################################################
# evilmike's hourglass vault
#
NAME:   evilmike_hourglass
DEPTH:  D:14-
ORIENT: float
NSUBST: . = 7:0 / 2:9 / 1:8 / *:.
NSUBST: ' = 7:0 / 2:9 / 1:8 / *:.
SUBST:  . = .:90 ~
NSUBST: % = 6:* / 3:| / *=%$
SUBST:  - = .
MAP
xxxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxx
xx%%xxxxxxxxxxxxxx-xxxxxxxxxxxxxx$$xx
xx%%%%xxxxxxxxxxxx-xxxxxxxxxxxx$$$$xx
xx%%%%%%xxxxxxxxxx-xxxxxxxxxx$$$$$$xx
xx''''''''xxxxxxxx-xxxxxxxx........xx
xx''''''''''xxxxxx-xxxxxx..........xx
xx''''''''''''xxxx-xxxx............xx
xx'''''''''''''-xx-xx-.............xx
xx'''''''''''''-------.............xx
xx'''''''''''''-------.............xx
xx'''''''''''''-xx-xx-.............xx
xx''''''''''''xxxx-xxxx............xx
xx''''''''''xxxxxx-xxxxxx..........xx
xx''''''''xxxxxxxx-xxxxxxxx........xx
xx$$$$$$xxxxxxxxxx-xxxxxxxxxx%%%%%%xx
xx$$$$xxxxxxxxxxxx-xxxxxxxxxxxx%%%%xx
xx$$xxxxxxxxxxxxxx-xxxxxxxxxxxxxx%%xx
xxxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxx
ENDMAP

##############################################################################
# Inaccessible box (evilmike)
#
NAME:   evilmike_inaccessible_box
DEPTH:  D:14-
ORIENT: float
SUBST:  x : xxxm
NSUBST: 9 = 6:. / *:9
NSUBST: 0 = 6:. / *:0
KPROP:  .089*| = no_rtele_into
SUBST:  ' = .
MAP
'''''''''''''''''''''
'cccmcccccccccccmccc'
'c.....x.....x.....c'
'c..0..x..9..x..0..c'
'm.000.m.999.m.000.m'
'c..0..x..9..x..0..c'
'c.....x.....x.....c'
'cxxmxxcxxmxxcxxmxxc'
'c.....x..*..x.....c'
'c..9..x.|8|.x..9..c'
'c.999.m*8|8*m.999.c'
'c..9..x.|8|.x..9..c'
'c.....x..*..x.....c'
'cxxmxxcxxmxxcxxmxxc'
'c.....x.....x.....c'
'c..0..x..9..x..0..c'
'm.000.m.999.m.000.m'
'c..0..x..9..x..0..c'
'c.....x.....x.....c'
'cccmcccccccccccmccc'
'''''''''''''''''''''
ENDMAP

##############################################################################
# Path along pillars (evilmike)
#
NAME:   evilmike_pillar_path
DEPTH:  D:14-
ORIENT: float
SUBST:  c: cvxbwl.t
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxx......xvvvvvx......x
xxxxxxx...0..xv*|*vx..8...x
@.x...x.0cc..xv|c*+...cc8.x
x...x....cc0.xv*|*vx.8cc..x
xxxxxxx..0...xvvvvvx...8..x
xxxxxxx......xxxxxxx......x
xxxxxxxxxx.xxxxxxxxxxx.xxxx
      xxx..xxxxxxxxxxx..xxx
      xxx.xxxxxxxxxxxxx.xxx
      xxx..xxxxxxxxxxx..xxx
      xxxx.xxxxxxxxxxx.xxxx
      xxx..xxxxxxxxxxx..xxx
      xxx.xxxxxxxxxxxxx.xxx
      x......xxxxxxx......x
      x...0..xxxxxxx..9...x
      x.9cc..x...x....cc9.x
      x..cc9...x...x.9cc..x
      x..0...xxxxxxx...9..x
      x......xxxxxxx......x
      xxxxxxxxxxxxxxxxxxxxx
ENDMAP

##############################################################################
# Boring beetle workplace (evilmike)
#
NAME:   evilmike_boring_beetle
DEPTH:  D:14-
ORIENT: float
NSUBST: m = 4:| / 4:* / 9:0 / 4:9 / 2:8 / 10:. / 150:x / *:m
SUBST:  n = m
MONS:   generate_awake boring beetle
MAP
vvvvvvvvvvvvvvvvvvv
vmmmmmmmmmmmmmmmmmv
vmmmmmmmmmmmmmmmmmv
vmmmmmmmmmmmmmmmmmv
vmmmmmmmmmmmmmmmmmv
vmmmmmmmmmmmmmmmmmv
vmmmmmmmmmmmmmmmmmv
vnmmmmmmmmmmmmmmmmv
vnnmmmmmmmmmmmmmmmv
@nnnmmmmmmmmmmmmm1v
vnnmmmmmmmmmmmmmmmv
vnmmmmmmmmmmmmmmmmv
vmmmmmmmmmmmmmmmmmv
vmmmmmmmmmmmmmmmmmv
vmmmmmmmmmmmmmmmmmv
vmmmmmmmmmmmmmmmmmv
vmmmmmmmmmmmmmmmmmv
vmmmmmmmmmmmmmmmmmv
vvvvvvvvvvvvvvvvvvv
ENDMAP

##############################################################################
# Cross vault (evilmike)
#
NAME:   evilmike_cross
DEPTH:  D:14-, Vaults:1-7
ORIENT: float
MAP
...................
.......xxxxx.......
.......x...x.......
.......+.8.+.......
.......x...x.......
.......xx.xx.......
.......0x.x0.......
.xx+xx0cc+cc0xx+xx.
.x...xxc*%*cxx...x.
.x.9.xxc%G%cxx.9.x.
.x...xxc*%*cxx...x.
.xx+xx0ccccc0xx+xx.
.......0xxx0.......
.......xxxxx.......
.......x...x.......
.......+.9.+.......
.......x...x.......
.......xxxxx.......
...................
ENDMAP

##############################################################################
# Lava path (evilmike)
# Has mostly lava and sometimes water, a bit sewer-like.
#
NAME:   evilmike_lava_path
DEPTH:  D:14-
ORIENT: float
TAGS:   no_pool_fixup
SUBST:  w: wlll
NSUBST: . = 10:0 / 4:9 / *:.
SUBST:  . = .:90 ~
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
wwwwwwwwwwxxxxxxwwwxxxxxxxxxxxx
@........wwxxxxxw|wxxxxxxxxxxxx
wwwwwwww..wwxxxxw*wxxxxxxxxxxxx
@......ww..wwxxxw8wwwwwwwwwwwwx
wwwwww..ww..wwxxw............wx
xxxxxww..ww..wwxw8www.wwwwww.wx
xxxxxxww..ww..wxw*wxw.w......wx
xxxxxxxww..ww.wxw|wxw.w.wwwwwwx
xxxxxxxxww..w.wxwwwxw.w.wxxxxxx
xxwwwxxxxww.w.wxxxxxw.w.wxxxxxx
xxw|wxxxxxw.w.wxxxxww.w.wxxxxxx
xxw|wxxxxxw.w.wxxxww..w.wxxxxxx
xxw*wxxxxxw.w.wxxww..ww.wxxxxxx
xxw*wxxxxxw.w.wxww..ww..wxxxxxx
xxw8wwwwwww.w.www..ww..wwxxxxxx
xxw.........w.....ww..wwxxxxxxx
xxwwwwwwwww.wwwwwww..wwxxxxxxxx
xxxxxxxxxxw.........wwxxxxxxxxx
xxxxxxxxxxwwwwwwwwwwwxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

##############################################################################
# Celtic spiral tile pattern (rotated 45 degrees)
# http://en.wikipedia.org/wiki/Celtic_maze
NAME:   mumra_celtic_spiral_tile
ORIENT: float
TAGS:   allow_dup
DEPTH:  D:1-10
WEIGHT: 2
MAP
            xxxxxxxxxxxxx
            x...........x
            x.xxxxx.xxx.x
            x.x...x.x.x.x
            x.xxx.x.x.x.x
            x.....x.x...x
      xxxxxxxxxxxxx.xxxxxx@xxxx
      x...........x...........x
      x.xxxxx.xxx.x.xxx.xxxxx.x
      x.x...x.x.x.x.x.x.x...x.x
      x.xxx.x.x.x.x.x.x.x.xxx.x
      x.....x.x...x...x.x.....x
xxxxxxxxxxx.x.xxxxxxxxx.xxxxxxx
x...........x...........x
x.xxxxx.xxx.x.xxx.xxxxx.x
x.x...x.x.x.x.x.x.x...x.x
x.xxx.x.x.x.x.x.x.x.xxx.x
x.....x.x...x...x.x.....x
xxxx@xx.xxxxxxxxx.xxxxxxx
      x...........x
      x.xxxxxxxxx.x
      x.x...x...x.x
      x.xxx.x.xxx.x
      x.....x.....x
      xxxxxxxxxxxxx
ENDMAP

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

NAME:   nooodl_glass_maze
ORIENT: float
SUBST:  M = cm..
NSUBST: N = 1:+ / *:m
MAP
cccccccccccccccc@c
c*..........M....c
c.cc.cc.cc.cc.cc.c
c.ccMcc.cc.cc.ccMc
c.M......M...0...c
c.cc0cc.cc.cc.cc.c
c.cc.ccNccNcc.ccMc
c..M..N....N.....c
c.cc.cc.*0.cc.cc.c
cMcc.cc.0*.ccMcc.c
c...0.N....N.....c
c.cc.ccNccNcc.cc.c
cMcc.cc.cc.cc.cc.c
c....M...M.M...M.c
c.cc.cc.cc.cc.cc.c
c.cc.cc.cc.cc.cc.c
c..M....M.....0.*c
c@cccccccccccccccc
ENDMAP

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

NAME:    hangedman_screamer
ORIENT:  float
TAGS:    no_monster_gen
DEPTH:   D:9-, Crypt
MONS:    patrolling flying skull
MONS:    small zombie / large zombie / small skeleton / large skeleton
: if you.absdepth() > 19 then
MONS:    vampire knight / ghoul / phantasmal warrior
KMONS:   4 = Boris / lich / unborn deep dwarf
KMONS:   5 = lich / unborn deep dwarf
: elseif you.absdepth() > 13 then
MONS:    skeletal warrior / rotting hulk / eidolon
KMONS:   4 = Frances / vampire mage / deep dwarf necromancer
KMONS:   5 = vampire mage / deep dwarf necromancer
: else
MONS:    wight / necrophage / shadow
KMONS:   4 = Josephine / skeletal warrior / necromancer
KMONS:   5 = skeletal warrior / necromancer
: end
SHUFFLE: Aa / Bb / Cc / Dd / Ee
SUBST:   4 = 4 3:2, 2 = 2 3:2, ABCD = ., abcd = @, Ee = x
: if you.branch() == "Crypt" then
SUBST:   x = c
: end
MAP
    xxxxxxxxx
    x2233322x
xaaxx22x5x22xxccx
xAAx.x2x+x2x.xCCx
xAAxx.xx1xx.xxCCx
xAAxxx.x*x.xxxCCx
x...............x
x...............x
xBBxxx.x*x.xxxDDx
xBBxx.xx1xx.xxDDx
xBBx.x2x+x2x.xDDx
xbbxx22x4x22xxddx
    x2233322x
    xxxxxxxxx
ENDMAP

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

NAME:    hangedman_arrow_trap
ORIENT:  float
DEPTH:   D:12-
SHUFFLE: {( / })
MAP
xx=xxxxxxxxxxxx=xx
x.xxxx|x{(x|xxxx.x
x..x9x9x..x9x9x..x
xx..x9xx..xx9x..xx
xxx..x0x00x0x..xxx
xxxx..xx00xx..xxxx
xxxxx..x++x..xxxxx
xxxxxx......xxxxxx
xxxxxxx....xxxxxxx
xxxxxxxx||xxxxxxxx
xxxxxxxxxxxxxxxxxx
ENDMAP

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

NAME:   nicolae_whirlpool
TAGS:   patrolling no_pool_fixup no_rotate
ORIENT: float
MONS:   centaur, centaur warrior
DEPTH:  D:6-20
: if you.absdepth() < 13 then
SUBST:  1 = ..1
SUBST:  2 = 1
: end
KMONS:  ' = plant / nothing w:100
SUBST:  ' = W
KFEAT:  @ = W
MAP
@ww@wwwwwwww@
ww'ww''''''ww
w'ww'wwwwww'w
w'w'ww''''ww@
w'w'w'wwww'ww
w'w'w1.1'ww'w
w'w'w.2.w'w'w
w'ww'1.1w'w'w
ww'wwww'w'w'w
@ww''''ww'w'w
w'wwwwww'ww'w
ww''''''ww'ww
@wwwwwwww@ww@
ENDMAP

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

NAME:   grunt_hell_entry_demonic_statue
TAGS:   no_monster_gen no_rtele_into
ORIENT: float
DEPTH:  D:16-21
MONS:   blue devil / orange demon / red devil / w:5 iron devil
MONS:   ice devil / sun demon / soul eater
MONS:   shadow demon / blizzard demon / hell beast
ITEM:   skeleton
KFEAT:  b = .
: if you.absdepth() > 18 then
KFEAT:  A = enter_hell
: else
KFEAT:  A = stone_arch
: end
KMONS:  A = silver statue
MARKER: A = lua:fog_machine { cloud_type = "grey smoke", \
            pow_min = 20, pow_max = 30, delay = 50, \
            size = 1, walk_dist = 3, start_clouds = 1 }
KMONS:  b = w:100 nothing / w:5 crimson imp / w:2 white imp / w:2 iron imp \
            / w:1 shadow imp
KPROP:  b = nothing / w:5 bloody
KITEM:  b = nothing / w:1 gold
MARKER: + = lua:restrict_door()
MARKER:  H = lua:props_marker { stop_explore = "statue" }
KFEAT:   HI = G
MAP
      xxxxxxx
    xxxbbbbbxxx
  xxxbbbbbbbbbxxx
  xbbbbGbbbGbbbbx
 xxbG1bbbbbbd1Gbxx
 xdb2bb2bGb2bb2bbx
xxbbbbGbbbbbGbbbbxx
xbbGb2bbd3*bb2bGbbx
xbbbbbb%**d*bbbbdbx
xbd1bGb%*A*%bGb1bbx
xb%bbbb%*d*dbbbbbbx
xbbGbbbd%b*bbbbGbbx
xxbbbbGbbbbbGdbbbxx
 xbb1bb2bGd2bb1bbx
 xxbG1bbbbbbb1Gbxx
  xbbbbG1b1Gbbbbx
  xxxbbbbb%bbbxxx
    xxxbdbbbxxx
    xxxv===vxxx
    xxxH...Ixxx
    xx@@@@@@@xx
ENDMAP

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

NAME:   wad_pebble_path
DEPTH:  D:2-26
ORIENT: float
WEIGHT: 4
FTILE: ' = floor_pebble
MONS:   plant
MAP
c..............@..............c
.x.............'.............x.
x.x........I..'''..I........x.x
cx.x.........'''''.........x.xc
ccx.x.....I.'''''''.I.....x.xcc
cccx.x.......'''''.......x.xccc
ccccx.x....I..'''..I....x.xcccc
cccccx.x...x..c'c..x...x.xccccc
......x.xcxxxc.'.cxxxcx.x......
cccccx.x...x..c'c..x...x.xccccc
ccccx.x.......'''.......x.xcccc
cccx.x........'''........x.xccc
ccx.x.........'''.........x.xcc
cx.x..........'''..........x.xc
x.x.......c.cc'''cc.c.......x.x
.x.......c.c.cc'cc.c.c.......x.
c........cccccc+cccccc........c
ENDMAP

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

NAME:   wad_lake_hut
DEPTH:  D:2-26
ORIENT: float
WEIGHT: 4
FTILE: ' = floor_pebble
FTILE: "1 = floor_dirt
COLOUR: "1 = brown
MONS:   plant
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxx1"1"WxxxxxxxxxxWWWwwwWWWWxx
xxx""""WWWWxccccxWWWWWWwwwWWWWx
xx"1""WWWWx.cccc.xWWWWWWwwWWWxx
x11""Wxxxxcc.''.ccxxxxWWwwWxxxx
x""""WWwwxcc''''ccxxWWWwwwWWWWx
x""""Wwwwxcc''''ccxWWWwwwWWWWWx
x"11Wwxxxxcc.''.ccxWwwwwxxxxxxx
x1"WWwwwWWxcc++ccxWwwwWW"11""1x
x"""WWwwwWWxc..cxWWWwwwWW""xx=x
xx"1"WWwwxxxxx=xxxxWWwwwWW"x''x
xx""1WWwxxWW.....xxxWWwwWWWx''x
x1"""Wxxx"W..''..WWxxWwwWWWx''x
x""Wxxx""WW.''''..WWxxWwwW"x''x
xWxxx""1WWx''''''x.W"xxww"1xxxx
xxx""""WWxxx.''.xxxWx"xxwww""1x
x""xx1WWwwx..''..xwwW""xxwww""x
x""1"WWWww..''''..ww"xx"xxww1"x
x1"""1WWwwx''''''xwwW"xx"xxww1x
x"xx""WW.xxx.''.xxx.WW1"""xxwwx
xx""""1Wwwx..''..xwwWW"""xxxxxx
xxx"1""Www..''''..wwWW""""1"xxx
xx"xx"WWwwx''''''xwwWW"x""xx"xx
xx""1"WW.xxx.''.xxx.WW""x"1"1xx
x"xx""WWwwx..''..xwwWW"""""1xxx
xx"1""1Www..''''..wwWW"""xx11xx
xxx"xx"1wwx''''''xwwWW"xx.11xxx
xxxx"1""Wxxx.''.xxx.WW".xx.xxxx
xxxxxx""""x..''..x..WWxx1xxxxxx
xxxxxxxxxxx.''@'.xxxxxxxxxxxxxx
ENDMAP

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

NAME:   wad_guarded_room
DEPTH:  D:6-26
ORIENT: float
WEIGHT: 4
FTILE: ' = floor_pebble
MONS:   plant
MAP
xx....xxxxxxxxxxxxxxxxxxxx
x.........+.xxxxxxxxxxxxxx
...xx...xxx..............x
...xxx....x..xx..xx0.xx..x
..xxx.....x..xx0.xx..xx..x
...xx...xxxxx..xx..xx..xxx
x......x.xxxx.0xx..xx.0xxx
xx....xxx..xxxx0.xx..xx..x
xx....xxx..xxxx..xx0.xx..x
x......x.xxxx..xx..xx.0xxx
...xx...xxxxx..xx..xx..xxx
...xxx..xxxxxxx0.xx..xx.0x
..xxx...xxxxxxx..xx..xx..x
...xx...xxxxx..xx.0xx..xxx
x......xxxxxx..xx..xx0.xxx
xx....xxxx.............xxx
xx....xxxx.xcccccc=ccccccx
x......xxx.xc..xxx.xxx..cx
...xx...xx.xcxxxx...xxxxcx
...xxx..+..xcxxxx0'0xxxxcx
..xxx...xxxxcxxx9.'.9xxxcx
...xx...xxxxcxxxxx'xxxxxcx
x......xxxxxcxx..0'0..xxcx
xx....xxxxxxcxx.T.'.T.xxcx
xx....xxxxxxcxx..'''..xxcx
x......xxxxxcxx..'''..xxcx
...xx...xxxxcxx.T.'.T.xxcx
...xxx..xxxxcx%%%xxx%%%xcx
..xxx...xxxxc**xxxxxxx**cx
...xx...+..xcnncccccccnncx
x......xxx...............@
xx....xxxxxxxxxxxxxxxxxxxx
ENDMAP

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

NAME:   wad_statue_garden
DEPTH:  D:8-26
ORIENT: float
WEIGHT: 4
FTILE: ' = floor_pebble
FTILE: 12"t> = floor_grass
COLOUR: 12" = green
FTILE: ; = floor_dirt
COLOUR: ; = brown
MONS:   plant, bush
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
x""""""1;;;;;;;xxxxxxxxxxxxxxxcxxxxxxxxxxxxxxxx.+.9xx
x""""""";"t"t";xxxxxGxcxGxcxGxcxGxcxGxcxGxxxxxx.xxxxx
x""""""1;;;;;;;+.....+.................+.....+;;x'%'x
x""""""";;"";;xxxx.xGxcxGxcxGc=cGxcxGxcxGx.xxx.;x.'0x
x""""""1;2222;"t"c+ccccccccccc'ccccccccccc+c...;x'0'x
x"""""1";2tt2;t"tc.cn%xxx'.'.'''.'0'xxx%nc.c...;xxx+x
x1"1"1"1;2222;"t"c.nc%+...'0'.'9'.'...+%cn.c...;;;;;x
x""WWWWW;;"";;cccc.cn*xxG'.'.'''.'.'Gxx*nc.cccc;xxx+x
x"WWwwwWW;;;;;c'.'.cn%+...'.'.'.'0'...+%nc.'.'c;x'.'x
x""WWWWW;;"";;c.G..nc*x..'.'.'U'.'.'..x%cn..G.c;x*'9x
x1"1"1"1;2222;c'.'.cn%+...'0'.'.'.'...+*nc.'.'c;x'.'x
x"""""1";2tt2;cccc.cn%xxG'.'.'''.'.'Gxx%nc.cccc;xxx+x
x""""""1;2tt2;t11c.nc*+..0'.'.'.'.'...+*cn.c...;;;;;x
x""""""";2tt2;t>1c.cn%xxx'.'8'''.'0'xxx%nc.cxx.;xxx+x
x""""""1;2tt2;t"1c+ccccccccccccccccccccccc+cxx.;x'.'x
x""""""";2222;t"tx.xxx.x.x.x.x.x.x.x.x.xxx.xx..;x0'%x
x1"1"1"1;;"";;;.xx.xx...................xx.xx..;x'0'x
xxxxxxxx;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;xxxxx
ENDMAP

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

NAME:   wad_bat_island
DEPTH:  D:8-16
ORIENT: float
WEIGHT: 4
FTILE: >.12t = floor_grass
COLOUR: .12 = green
FTILE: ; = floor_grass_dirt_mix
COLOUR: ; = brown
MONS:   plant, bat, shark
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxx>xxxxxwwwwwwxxxwxwxxxxxxxwxxwxxxwwwxxxxxx
xxxx1;WWxwwwwwwwwwwwwwxxxxxwwwwwwwwwwwwxxxxx
xxxxx;1Wxxxxwwwwwwwwwwwwwwxxwwwwxwwwwwwwwwxx
xxx21;WWwwxxxwwwwwwwwwwwwwwwwwwxxxwwwwwwwwwx
xxxt;WWwwwwwwwwwwWWWWWwww3wwwwwwxwwwwwwwwwwx
xx1;WWwwwww3xwwwWW;;;WWwwwwWWwwwwwwwwwwwwwxx
xx;WWwwwwxwwwwwWW;2.t;WWwwWwwWwwwwwWWWWwwxxx
xxWWwwwwxxwwwwWW;.12.2;WWWwwwwWWWwWxxxxWwwxx
xxxwWWWxxxwwwwWW;t..1t;WWwwwwwwwwWxxxwwwWwwx
xxxwwwwWWxwwwwWW;2tt2.;WWwwww3wwwwwwwwwwWwwx
xxwwwwwwwWxWWWwWW;.1t;WWwwwwwwwwwwwwwwwxWwwx
xwwww3wwwwWwwwwwWW;;;WWwwwwwwxxwwwwwwwxWwxwx
xxwwwwwwwwwwxwwwwWWWWWwwwwwxxxxwwwwwwwWwwwxx
xxwwwwxxwwwxxxwwwwwwwwwwwwwwwwwwwwwwwwWwwwwx
xxwwwxxxwwwwxwwwwwwwwWWWWwwwwwwwwwWWwWWwwwxx
xxwwxxxwwwwwwxxwwwwWWxxxxWWWwwwWWWwwWxwwwxxx
xxxxxxwwwwwxxxwxwwWxxxwxwwwwWWWwxxxxxwwxxxxx
xxxxxxxwxxxxxwxxx@xxxxxwxxxxxxwxwxwxxxxwwxxx
ENDMAP

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

NAME: wad_mega_maze
ORIENT: float
WEIGHT: 4
NSUBST: ? = 1:n / 1:= / *:X
SUBST:  X : cccvvb
MAP
X@XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X....XXXXXXXX0X.X.............~...........X....X
XXXX.XX.......X.X.XXX.XXXXXXXX.XXXXXXXX.X.X.XX.X
X....XX.XXXXXXX.X...X.XG.....X.XXXXXXXX.X...XX.X
X.XXXXX.X.......XXX.X.XXXXXX.X.X.....XX.XXXXXX.X
X.XXXXX.X.XXXXX...X.X.X....X.X.X.XXX.XX.X......X
X....XX.X.XXXXXXXXX.X.X.XX.X.X.X.XXX.X%9X.XXXXXX
XXXX.XX.X...........X.X.XXXX.X.X.XXX.XXXX.XG...X
X.....X.XXXXXXX.XXXXX.X....X.X.X.XXX......XXXX.X
X.XX.XX..X....X.....X.X.XX.X.X.X.?X?XXXXXXXXXX.X
X.XXXXXX.X.XX.XXXXXXX.XGXX.....X.?|?...XX....X.X
X......X.X.XXXXXXXXXXXXXXXXXXXXX.?|?.X.XX.XX.X.X
XXXXXX.X.X..........~............?|?.X....XX.X.X
X.XXXX.X.X.XXXXXXXX.X.XXXXXXXXXX.???XXXXXXXX.X.X
X.XXXX.X.X.X.XX...X.X.XXXXX....X.XX..........X.X
X......X...X....XXX.X.X...X.XX.X.XX.XXX.XXXXXX.X
XXXXXX.XXXXXXX.XXXX.X.XXX.X.XX.X....XXX........X
X....X.XXXXX.....X..X.XXX.X.XX.XXXXXXXXXXXXXXXXX
X.XX.X.XXXXXXX.X.X.XX.XX..X.XX...X......XXX....X
X.XX...XXX.XXX.X.X.XX.XX.XX.XXXX.X.XXXX.....XX.X
X.XXXXXXXX.X...X...XX.XX.....9*X.X....XXX.XXXX.X
X.XXXXXXXX.XXXXXXXXXX.XXXXXXXXXX.X.XXXX0X.X.GX.X
X.XXXXXXXX............~..........X.XXX..X.X.XX.X
X.X...XXXX.XXXXXXXXXX.XXXXXXXXXX.X.....XX.X.XX.X
X.X.X.XXXX.X........X.XX.......X.XXXXXXXX.X.XX.X
X...X........XXXXXX0X....XXXXX............X....X
XXXXXXXXXXXXXXXXXXXXX@XXXXXXXXXXXXXXXXXXXXXXXXXX
ENDMAP

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

NAME: wad_river_or_something
ORIENT: float
DEPTH:  D:2-16
WEIGHT: 4
MAP
xx@xxxxxxxxxxxxxxxxxxxxxxxxxx
xx..0....0....0....+........x
xxG%xxxG%xxxG%xxxG%x........x
xxxxxxxxxxxxxxxxxxxx+xxxxxxxx
xx0........0.......~.......xx
xwwwwwwwwwwwwwwwwwwwwwwwwwwwx
xwwwwwwwwwwwwwwwwwwwwwwwwwwwx
xx.........................xx
xxxx.xxxxxxxxxxxxxxxxxxxxxxxx
xxx.xxx~.xxxxxxxxx..xxxxxG.xx
xx.xx0.xx.xxxxxxx.xx.xxxxxx.x
x.xxxxxxxx.xxx...xxxx..xxxx~x
x.x...xxx.x.x.xxx.xxxxx.xx.xx
xx.xxx...xxx.xxxxx.xx%0x..xxx
xxxxxxxxxxxxxxxxxxx.xxxxxxxxx
.x.0..x.x..0.x....x.x....x...
..x..x...x..x.....~.......x..
..................x.x........
...................@.........
ENDMAP

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

NAME: wad_crossroads
DEPTH:  D:2-15
ORIENT: float
WEIGHT: 4
FTILE: 'G = floor_pebble
SUBST:  X : cccvvb
MAP
Xxxxxxxxxxxxx..@..xxxxxxxxxxxxX
xxx.xxxxx'...xx'xx...'xxxxx.xxx
x0x...xx'.xxxx'''xxxx.'xx...x0x
Xx.xx......'.''x''.'......xx.xX
XXx%x...xxxx''xxx''xxxx...x.xXX
XXXx.xx....'.''x''.'....xx.xXXX
XXXXx.x...xxxx'''xxxx...x.xXXXX
XXXXXx.xx..xGxX'XxGx..xx.xXXXXX
@.....x.xXxxxX.'.XxxxXx.x.....@
XXXXXxxxxxxx.xX'Xx.xxxxxxxXXXXX
XXXXx.x.x..x..'''..x..x.x.xXXXX
XXXxxx.x....x.'G'.x....x.xxxXXX
XXx.x.....x..x'''x..x.....x.xXX
Xxxx.......x..'G'..x.......xxxX
x0x.....xxX.XX'''XX.Xxx.....x0x
xx....xxxX.X.XX'XX.X.Xxxx..%.xx
XxxxxxxxxXXXXXX@XXXXXXxxxxxxxxX
ENDMAP

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

NAME:   wad_arrow_thing
DEPTH:  D:8-26
ORIENT: float
WEIGHT: 4
FTILE:  ' = floor_pebble
SUBST:  X : cccvvb
MAP
XXXXXXXXXXXXXXXXXXXXXXX
X..%X.............X%..X
X0G.X.GXGXG.GXGXG.X.G0X
X.0.X.X.........X.X.0.X
X+XXX.X.XXXXXXX.X.XXX+X
X.......~.............X
XXXXX+XXXXXXXXXXX+XXXXX
XXXX...X.X.X.X.X...XXXX
XXX.....'..X..'.9...XXX
@.....%'''.+~'''......@
XXX..0..'..X..'.....XXX
XXXX...X.X.X.X9X...XXXX
XXXXX+XXXXnXnXXXX+XXXXX
XXXXX.XXX..*..XXX.XXXXX
XXXXXX.XXX..0XXX.XXXXXX
XXXXXXX.XXX9XXX.XXXXXXX
XXXXXXXX.XX=XX.XXXXXXXX
XXXXXXXXX.X.X.XXXXXXXXX
XXXXXXXGXX.X.XXGXXXXXXX
X0......XXX.XXX.~...0%X
XXXXXXX.+..X..+.XXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
ENDMAP

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

NAME:   wad_cavern_with_rooms
DEPTH:  D:8-26
ORIENT: float
WEIGHT: 4
FTILE: ' = floor_pebble
MONS:   plant
MAP
xxxxxxxxxxxxxxxxx@xxxxxxxxxx
xxxxxx...xxxxxxx..xxxxxxxxxx
xxxxxx..%xxxxxxx...xxxxxxxxx
x%..xx.x~xxxxxxx....xxxxxxxx
x...+.x.xxxxxxx..'..xxxxxxxx
x...xxxx.xxx....'.'..xxxxxxx
xxxxxxxxx......'.'.'~..xxxxx
xxxx1.WWW..xxx..'.'.xx+xxxxx
xx...WW....+0x~..'..x....xxx
x1.........xxx......x...0xxx
xxx.xxxx...'........xxxxxxxx
xxxxx0.+..'.'...~.xxxxxxxxxx
xxxxxxxx.'.'.'.xx+x%..x9..xx
xxxxxxxxx.'.'xxxx.x...+...xx
xxxxxxxxxx.'xxxxx....0x...xx
xxxxxxxxxxx@xxxxxxxxxxxxxxxx
ENDMAP

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

NAME:   wad_courtyard
DEPTH:  D:12-26
ORIENT: float
WEIGHT: 4
FTILE:  "+ = floor_pebble
FTILE:  ; = floor_limestone
COLOUR: ; = white
SUBST:  X : cccvvb
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
x.%9x0x0x.x%xXXXXXXXXXXXx.x0x%x0x9%.x
x...x...x...xX8..***..8Xx...x...x...x
x...x...x...xX.;;;;;;;.Xx...x...x...x
x...........xX.........Xx...........x
x...........xXXX+XXX+XXXx...........x
x........xxxxxxx"xxx"xxxxxxx........x
xWWWWWWxxx0....+".x."+....0xxxWWWWWWx
xwwwwwwx%+.;;;.x".x."x.;;;.+9xwwwwwwx
xwWWWWWxxx0....x+xxx+x....0xxxWWWWWwx
xwW......xxxxxxx.".".xxxxxxx......Wwx
xwW............xxx+xxx............Wwx
xwW............xG.".Gx............Wwx
xwW......xxx...xxx+xxx...xxx......Wwx
xwW...xxxxXx......"......xXxxxx...Wwx
xwW...x..xxx...W.."..W...xxx..x...Wwx
xwW........0..WWW.".WWW..0........Wwx
xwW...........WWW.".WWW...........Wwx
xwW.......xxx..W.."..W..xxx.......Wwx
xwW....xxxxxx..T.."..T..xXxxxx....Wwx
xwW....x..xxx..W.."..W..xxx..x....Wwx
xwW.......0...WWW.".WWW...0.......Wwx
xwW...........WWW.".WWW...........Wwx
xwW........xxx.W.."..W.xxx........Wwx
xwW.....xxxxXx...."....xXxxxx.....Wwx
xwW.....x..xxx...."....xxx..x.....Wwx
xwW.............x.".x.............Wwx
xwWWWWWWWWWWWWWxxx.xxxWWWWWWWWWWWWWwx
xwwwwwwwwwwwwwwwx...xwwwwwwwwwwwwwwwx
xxxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxx
ENDMAP

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

NAME:    hangedman_surveillance_ring
TAGS:    no_monster_gen no_item_gen transparent patrolling
ORIENT:  float
DEPTH:   D:16-25, Vaults:2-6
WEIGHT:  3
MONS:    generate_awake giant eyeball, eye of devastation, giant orange brain
MONS:    generate_awake golden eye, slime creature, brown ooze
KFEAT:   > = known shaft trap
KMASK:   ' = !no_monster_gen
KMASK:   ' = !no_item_gen
SHUFFLE: {[(<
SUBST:   ( = (:70 <, [ = [:50 <
MAP
  '''''''''''''''''
  ''''''cnnnc''''''
''''ccccc.}.ccccc''''
'''cc%.c..4..c.%cc'''
''cc%..+.cnc.+..%cc''
''c%.3%cnc6cnc%3.%c''
''c..%cc.....cc%..c''
''cc+cc.......cc+cc''
'cc..n.........n..cc'
'n..cc....{....cc..n'
'n.1n2...[>(...2n1.n'
'n..cc....<....cc..n'
'cc..n.........n..cc'
''cc+cc.......cc+cc''
''c..*cc.....cc*..c''
''c*55*ccc.ccc*55*c''
''cc*54n.+++.n45*cc''
'''cc*.n..2..n.*cc'''
''''ccccc...ccccc''''
  ''''..c+++c..''''
  ''''.........''''
ENDMAP

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

NAME:    hangedman_cross_stitches
ORIENT:  float
TAGS:    transparent no_monster_gen
DEPTH:   D:5-, Vaults, Elf, Snake
WEIGHT:  5 (Elf, Snake), 10
KMONS:   " = 0
KMONS:   ` = 9
KITEM:   "` = % / $ w:5
KMASK:   , = !no_monster_gen
SHUFFLE: XzZ / '"`
SUBST:   XzZ = x, ' = ., x : x:90 c
MAP
           ,,,,,,,,,,,,,,,,,,,,,
          ,,,,,,,,,,,,,,,,,,,,,,,
         ,,.X..'..X..'..X..'..X.,,
        ,,.'x'XxX'x'XxX'x'XxX'x',,
       ,,.,,X..'..X..'..X..'..X.,,
      ,,.X,,'..z..`..z..'..X...,,
     ,,.'x'XxX"x"ZxZ"x"XxX'x'.,,
    ,,..,X..'..z..`..z..'..X.,,
   ,,.X,,'..z..`..z..'..X...,,
  ,,.'x'XxX"x"ZxZ"x"XxX'x'.,,
 ,,...X..'..z..`..z..'..X.,,
,,.X..'..X..'..X..'..X...,,
,,'x'XxX'x'XxX'x'XxX'x'.,,
,,.X..'..X..'..X..'..X.,,
 ,,,,,,,,,,,,,,,,,,,,,,,
  ,,,,,,,,,,,,,,,,,,,,,
ENDMAP

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

NAME:    hangedman_cross_veins
ORIENT:  float
TAGS:    transparent no_monster_gen no_pool_fixup abyss
DEPTH:   D:8-, Elf, Snake
WEIGHT:  5 (Elf, Snake), 10
KMONS:   12 = 0
KMONS:   34 = 9
KMONS:   5 = 9 / 8
KITEM:   1 = $ / % w:5
KITEM:   23 = % / $ w:5
KITEM:   45 = * / % w:5
: if you.branch() == "Abyss" then
SUBST:   x = xxmmccbv, X = xxccvb, . = .:990 W, ' = .:55 WWwl G:5, 23 = 1, 45 = 2
: elseif you.absdepth() > 20 then
SUBST:   x : x m:5, X : xxxcccbv, ' : .:70 w:20 l
: elseif you.absdepth() > 13 then
SUBST:   x : x m:3, X : xcc, ' : .:80 wW
: else
SUBST:   x : x m:2, ' : .:90 W
: end
MAP
  xxxxxxxx
 xxXXXXXxxx
xxxX1'1Xxxxx
xXXXX.XXXXxx
xX.XX.XX1Xxx
+.'..'..'Xxxxxx
xX.XX.XX1Xxxxxxx
xXXXX.XXXXXXXXxxx
xxxX.'.XX5.'4Xxxxx
xXXXX.XXXXX.XXXXxx
xX2XX.XX.XX.XX4Xxx
xX'..'..'..'..'Xxxxxx
xX3XX.XX.XX.XX.Xxxxxxx
xXXXX.XXXXX.XX5XXXXXxxx
xxxX3'3XxX.'.XXX1'1Xxxx
xxxXXXXXXXX.XXXXX.XXXXx
 xxxxxxX3XX.XX.XX.XX1Xx
  xxxxxX'..'..'..'..'Xx
     xxX3XX.XX.XX.XX1Xx
     xxXXXX.XXXXX.XXXXx
     xxxxX3'2XxX.'.Xxxx
      xxxXXXXXxXX.XXxx
       xxxxxxxxxx+xxx
ENDMAP

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

NAME:   hangedman_cross_cluster
TAGS:   patrolling transparent no_monster_gen
DEPTH:  D:8-, Vaults
ORIENT: float
MONS:   place:D:3 w:98 / lesser demon w:1 / place:D:3 zombie w:1
SUBST:  C = CTUV, y : xc, z : ccvb
KMASK:  ' = !no_monster_gen
MAP
              '''''''''
             '''.xxx.'''
            '''...x...'''
           ''''x.1x1.x''''
        '''''''xxxyxxx'''''''
       ''''''''x.0x0.x''''''''
       ''.xxx.....x.....xxx.'''
     '''...x.....xxx.....x...'''
 '''''''x.1x$.x'''''''x.$x1.x'''''''
''''''''xxxyxxx'''''''xxxyxxx''''''''
'''xxx..x.$x0.x..ccc..x.0x$.x..xxx.''
''..x......x......c......x......x...'
'x.1x$.x..xxx..c.%c%.c..xxx..x.$x1.x'
'xxxyxxx'''''''ccczccc'''''''xxxyxxx'
'x.$x0.x'''''''c.9c9.c'''''''x.0x$.x'
'...x.....ccc.....c.....ccc.....x...'
''.xxx.....c.....ccc.....c.....xxx.''
'''''...c.%c9.c.......c.9c%.c...'''''
 '''''..ccczccc..|C|..ccczccc..'''''
'''''...c.%c9.c.......c.9c%.c...'''''
''.xxx.....c.....ccc.....c.....xxx.''
'...x.....ccc.....c.....ccc.....x...'
'x.$x0.x'''''''c.9c9.c'''''''x.0x$.x'
'xxxyxxx'''''''ccczccc'''''''xxxyxxx'
'x.1x$.x..xxx..c.%c%.c..xxx..x.$x1.x'
'...x......x......c......x......x...'
''.xxx..x.$x0.x..ccc..x.0x$.x..xxx.''
''''''''xxxyxxx'''''''xxxyxxx''''''''
 '''''''x.1x$.x'''''''x.$x1.x'''''''
     '''...x.....xxx.....x...'''
       ''.xxx.....x.....xxx.''
       ''''''''x.0x0.x''''''''
         ''''''xxxyxxx''''''
          '''''x.1x1.x'''''
            '''...x...'''
             '''.xxx.'''
              '''''''''
ENDMAP

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

NAME:    hangedman_stitches_corridor
TAGS:    no_monster_gen no_item_gen
DEPTH:   D:14-
ORIENT:  float
KFEAT:   ~ : needle trap / dart trap / . w:80
KFEAT:   " : shallow_water / . w:90
KFEAT:   ^ : alarm trap / . w:190
KMASK:   '~ = !no_monster_gen
SUBST:   1 = 0.
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xx"x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x@
x"""''''''''''''''''''''''''''''''''@
xx"xx'G'xxxxxxxxxxxxx'G'xxxxxxxxxxxxx
x~'xcccccx"x.x.x.x"xcccccx"x~x~x~x"xx
xx''c$0.c"""....."""c%0%c"""'''''"""x
x~'xc0%1+x"xx.G.xx"x+0%9cx"xx'G'xx"xx
xx''ccccc..xcccccx..ccccc..xcccccx'~x
x~'mmmmmmm..c*9$c..xxxxxxx..c.0$c''xx
xx''ccccc..xc9*$+x^.ccccc..x+1%0cx'~x
x~'xc0%1+x..ccccc.^x+$*9cx..ccccc''xx
xx''c$0.c..xxxxxxx..c$9*c..mmmmmmm'~x
x~'xcccccx..ccccc..xcccccx..ccccc''xx
xx"xx'G'xx"xc9%0+x"xx'G'xx"x+1%0cx'~x
x"""'''''"""c%0%c"""....."""c.0$c''xx
xx"x~x~x~x"xcccccx"x.x.x.x"xcccccx'~x
xxxxxxxxxxxxx'G'xxxxxxxxxxxxx'G'xx"xx
@''''''''''''''''''''''''''''''''"""x
@x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x~x"xx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

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

NAME:    hangedman_opposites_gauntlet
TAGS:    no_monster_gen patrolling
ORIENT:  float
DEPTH:   D:14-26, Vaults:1-6
MONS:    spriggan rider ; wand of frost . crossbow ego:flame . bolt q:25 / \
         spriggan rider ; wand of flame . crossbow ego:frost . bolt q:25
MONS:    two-headed ogre ; giant club ego:holy_wrath . \
         great mace ego:draining . wand of confusion | wand of slowing
MONS:    rakshasa ; scythe ego:anti-magic | trident ego:anti-magic . \
         dart ego:exploding q:25 / mermaid ; splint mail . javelin ego:poisoned q:6
MONS:    fire giant ; battleaxe ego:freezing
MONS:    frost giant ; great sword ego:flaming
MONS:    ettin ; giant club ego:holy_wrath . great mace ego:draining . \
         wand of confusion | wand of slowing / golden dragon
MONS:    vampire knight ; wand of lightning | wand of draining / \
         greater naga ; splint mail . halberd ego:anti-magic | glaive ego:anti-magic
KMONS:   A = fire drake / flaming corpse / fire elemental
KMONS:   B = lindwurm / mottled dragon / efreet w:5
KMONS:   C = fire crab / hell knight
KMONS:   D = small simulacrum w:5 / polar bear
KMONS:   E = harpy simulacrum w:5 / snapping turtle simulacrum w:5 / ice dragon
KMONS:   F = hydra simulacrum w:5 / golden dragon simulacrum w:5 / azure jelly
KMONS:   G = insubstantial wisp / air elemental w:5
KMONS:   H = air elemental / sixfirhy / vapour w:5
KMONS:   I = spriggan air mage / storm dragon
KMONS:   J = stone golem w:5 / earth elemental w:5 / basilisk
KMONS:   K = catoblepas / iron golem w:5 / boulder beetle
KMONS:   L = iron dragon / crystal golem
KMONS:   M = orc warrior ; long sword ego:holy_wrath / holy swine / \
             merfolk ; trident ego:holy_wrath
KMONS:   N = paladin / apis / phoenix w:5
KMONS:   O = angel / cherub
KMONS:   P = hellwing / red devil / hell hound
KMONS:   Q = hell beast / smoke demon / ynoxinul
KMONS:   R = shadow demon / reaper / cacodemon w:5
KMONS:   S = eidolon / skeletal warrior / large zombie w:5
KMONS:   T = flayed ghost / guardian mummy / rotting hulk
KMONS:   U = death ooze / bone dragon / profane servitor w:5
KMONS:   V = elephant / very ugly thing / wolf spider
KMONS:   W = dire elephant / alligator / emperor scorpion
KMONS:   Y = anaconda / alligator snapping turtle
KMONS:   X = rock troll / orc knight / hill giant
KMONS:   Z = iron troll / naga warrior / minotaur
KMONS:   a = spriggan defender w:5 / merfolk impaler w:5 / orc warlord
KMONS:   d = deep elf mage / wizard / boggart
KMONS:   e = deep elf conjurer / ogre mage / great orb of eyes
KMONS:   f = deep elf annihilator / sphinx w:5 / lich w:5
KMONS:   g = centaur / yaktaur / deep dwarf artificer w:5
KMONS:   h = centaur warrior / yaktaur captain / cyclops
KMONS:   i = stone giant / merfolk javelineer w:5
KFEAT:   ! = granite_statue
KFEAT:   u = fountain_sparkling
KMASK:   @' = !no_monster_gen
KITEM:   | = superb_item, star_item / any w:20
: if you.absdepth() < 20 then
SHUFFLE: ABDE / GHJK / MNPQ / VWde, PQ / ST, VW / XZ, de / gh
: else
SUBST: B = C, A = B, E = F, D = E, H = I, G = H, K = L, J = K
SUBST: N = O, M = N, Q = R, P = Q, 2 = 6, 3 = 7
SHUFFLE: BCEF / HIKL / NOQR / WYef, QR / TU, WY / Za, ef / hi
NSUBST:  1 = 1:4 / 1:5
: end
MAP
      vvvcbbb
    vvv..2..bbb
   vv1...u...1bb
  vv...b...v...bb
 vv...bb+c+vv...bb
vv...bb.....vv...bb
v|3bbb.......vvv3|b
v|bbM.........Pvv|b
bbbNMvvv...bbbPQvvv
vvvvvvvv+c+bbbbbbbb
bbbHGvvv...bbbJKvvv
b*bbG.........Jvv*v
b*Abbb.......vvvD*v
bBA..bb.....vv..DEv
vvv...bb+c+vv...bbb
b$vv...b...v...bb$v
b$$vv.........bb$$v
bb$.vvv.....bbb.$vv
 bb..!v++c++b!..vv
  bb...........vv
   bbb.u.}.u.vvv
     bnbbnvvnv
     '@'''''@'
ENDMAP

###############################################################################
# Nasty temple of Zin. Note that the boss is locked in a room until
# the player opens it... and the player can see it ahead of time.

NAME:   evilmike_silver_temple
TAGS:   no_monster_gen
DEPTH:  D:20-27
ORIENT: float
MONS:   daeva god:Zin, angel god:Zin, cherub god:Zin
: if you.absdepth() > 24 then
MONS:   silver star
: else
KMONS:  4 = Mennas, angel god:Zin
: end
NSUBST: A = 3 / '
KFEAT:  _ = altar_zin
FTILE:  '+_!$%*|1234D = floor_vault
TILE:   v = dngn_metal_wall_white
TILE:   c = dngn_transparent_wall_white
COLOUR: v = white
MARKER: D = lua:restrict_door()
SUBST:  D = +, !' = .
: set_feature_name("metal_wall", "silver wall")
MAP
............@@@@@@@............
....vvvvvvv...T.T...vvvvvvv....
...v.v%%%vv.........v%%%%v.v...
..v.vv'A'vvv..T.T..vv%vv%vv.v..
.v.v.v'''vvv.......vv3''2v.v.v.
.vvvvv'''vvvv.T.T.vvvv''vvvvvv.
.v'2'+'''vvvv.....vvv''''v'''v.
.v'''vvvvvvvvv...vvvv'vv'''v'v.
.v'''v'''vvvvv...vvvv'vv'''v'v.
.v'''v'''vv3'vv.vv'3v''''v'''v.
.v'''+'''vv''vvDvv''vvvvvvvv+v.
.v+vvv'A'vv+vvv'vvv+vvvvvvvv1v.
.v1'vv%%%v'''''''''''vvvvvv''v.
.vv''vvvvv'v'v'''v'v'vvvvv''vv.
..vv'''''+'''''''''''+'''''vv..
.v.vv''vvv'v'v'''v'v'vvv''vv.v.
.vv.vv''vv'''''''''''vv''vv.vv.
.....vv''vvvv'''''vvvv''vv.....
...v.vvv''vvv'2'1'vvv''vvv.v...
.v...vvvv''vvv'''vvv''vvvv...v.
...v.vvvvv'3vvvnvvv3'vvvvv.v...
.v...vvvvvvDv'''''Dvvvvvvv...v.
...v.v$$$$v''''4''''v****v.v...
.v...v$$$$D'''v_v'''D*||*v...v.
...v.v$$$$vvvvvvvvvvv****v.v...
.....vvvvvvvvvvvvvvvvvvvvv.....
...............................
ENDMAP

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

NAME:   evilmike_horseshoe
DEPTH:  D:12-27
ORIENT: float
MAP
   xxxxxxxxxxxxxxxxxxxxx
  xxcccccccccccccccccccxx
 xxcc...c.........c...ccxx
xxcc....+.x9.8.9x.+....ccxx
xcc.....c.........c.....ccx
xc.9...cccccc+cccccc...9.cx
xc.x..cc**%%%%%%%**cc..x.cx
xc...ccccccccccccccccc...cx
xcc+ccxxxxxxxxxxxxxxxcc+ccx
xc...cx     @@@     xc...cx
xc.x.cx             xc.x.cx
xc.0.cx             xc.0.cx
xc...cx             xc...cx
xc.9.cx             xc.9.cx
xc...cx             xc...cx
xc.0.cx             xc.0.cx
xc.x.cx             xc.x.cx
xc...cx             xc...cx
xcc+ccxx           xxcc+ccx
xc...ccxx         xxcc...cx
xc....ccxx       xxcc....cx
xc.....ccx       xcc.....cx
xcc.....cx       xc.....ccx
xxcc....cx       xc....ccxx
 xxcc...cx       xc...ccxx
  xxcc+ccx       xcc+ccxx
ENDMAP

###############################################################################
# Death Spiral stair vault (in two versions, with the smaller one being for
# non-D branches)

NAME:   grunt_deathspiral_large
TAGS:   patrolling uniq_deathspiral
DEPTH:  D:16-26
ORIENT: float
SHUFFLE: )]}>
SUBST:  } = }>
SUBST:  ] = ]>
KMONS:  0 = 0 band
KMONS:  8 = 8 band
MAP
   xxxxxxxxxxxxccccc@
   xxxxxxxxxcccc.....
   xxxxxxxxcc........
   xxxxxxccc....ccccccccccccxxxxxxxxxxxx
   xxxxxcc....ccc..........cccxxxxxxxxxx
   xxxxcc...ccc..............cccxxxxxxxx
   xxxcc...cc.....cccccccc.....cccxxxxxx
   xxxc...cc...cccc......cccc....ccxxxxx
   xxcc..cc...cc............ccc...ccxxxx
   xxc..cc...cc.....ccc.......cc...ccxxx
   xcc..c...cc...cccc%ccccc....cc...cxxx
   xc..cc..cc..ccc........ccc...cc..ccxx
   cc..c...c..cc....0.......cc...cc..ccx
   c...c..cc..c....ccccccc...cc...c...cx
   c..cc..c..cc..ccc0....ccc..cc..cc..cx
   c..c...c..c..cccc+ccc...cc..cc..c..cc
   c..c...c..c.cc0..8.0cc...c...c..cc..c
   c..c..cc..c.c0*....*0cc..cc..c...c..c
   c..c..c%..c.c........cc...c..cc..c..c
@..c..c..cc.0c0+8..}]...ccc..c...c..c..c
c..c..c...c..ccc...)>..8+0c0.cc..c..c..@
c..c..cc..c...cc........c.c..%c..c..c
c..c...c..cc..cc0*....*0c.c..cc..c..c
c..cc..c...c...cc0.8..0cc.c..c...c..c
cc..c..cc..cc...ccc+cccc..c..c...c..c
xc..cc..cc..ccc....0ccc..cc..c..cc..c
xc...c...cc...ccccccc....c..cc..c...c
xcc..cc...cc.......0....cc..c...c..cc
xxcc..cc...ccc........ccc..cc..cc..cx
xxxc...cc....ccccc%cccc...cc...c..ccx
xxxcc...cc.......ccc.....cc...cc..cxx
xxxxcc...ccc............cc...cc..ccxx
xxxxxcc....cccc......cccc...cc...cxxx
xxxxxxccc.....cccccccc.....cc...ccxxx
xxxxxxxxccc..............ccc...ccxxxx
xxxxxxxxxxccc..........ccc....ccxxxxx
xxxxxxxxxxxxcccccccccccc....cccxxxxxx
                   ........ccxxxxxxxx
                   .....ccccxxxxxxxxx
                   @cccccxxxxxxxxxxxx
ENDMAP

NAME: grunt_deathspiral_small
TAGS: patrolling uniq_deathspiral
DEPTH: D:16-26, Vaults:1-7, Crypt:1-4, Dis:1-6, Geh:1-6, Tar:1-6, Coc:1-6, \
       Zot:1-4
ORIENT: float
SHUFFLE: )]}>
SUBST:  } = }>
SUBST:  ] = ]>
# Like the door vault, pick interesting monsters for the 8s in branches,
# but use normal OOD for D and Vaults.
# Also remove the bits of loot for Hell branches and Zot.
: if you.branch() == "Crypt" then
KMONS:  8 = bone dragon / lich / ancient lich / w:5 death cob / \
            w:5 curse toe / w:5 large zombie / w:5 large skeleton / eidolon / \
            w:20 reaper / soul eater / w:30 place:Crypt
: elseif you.branch() == "Dis" then
KMONS:  8 = w:5 shadow fiend / w:5 ice fiend / w:5 brimstone fiend / \
            w:5 hell sentinel / iron dragon / tormentor / iron golem / \
            place:Dis
SUBST:  *% = .
: elseif you.branch() == "Geh" then
KMONS:  8 = brimstone fiend / w:5 hell sentinel / hellion / balrug / \
            fire giant / place:Geh
SUBST:  *% = .
: elseif you.branch() == "Tar" then
KMONS:  8 = w:15 shadow fiend / reaper / w:5 soul eater / shadow dragon / \
            lich / ancient lich / w:15 place:Tar
SUBST:  *% = .
: elseif you.branch() == "Coc" then
KMONS:  8 = w:15 blizzard demon / frost giant / w:5 titan / w:15 ice fiend / \
            w:5 large simulacrum / place:Coc
SUBST:  *% = .
: elseif you.branch() == "Zot" then
KMONS:  8 = w:35 nonbase draconian / orb of fire / electric golem / \
            killer klown / death cob / w:5 curse toe / w:5 ancient lich
SUBST:  *% = .
:else
KMONS:  8 = 8 band
: end
KMONS:  0 = 0 band
MAP
  xxxxxccccc@
  xxxxcc.....
  xxxcc.cccccccccccxxxxxx
  xxcc.cc.........cccxxxx
  xcc.cc.ccccccccc..ccxxx
  xc.cc.cc..0....ccc.ccxx
  cc.c.cc.ccccccc..cc.ccx
  c.cc.c.cc%0...ccc.cc.cc
  c.c.cc.ccc+ccc..cc.cc.c
  c.c.c.cc.080.ccc.cc.c.c
  c.c.c.c.*...*.ccc.c.c.c
  c.c.c.c0..}..0c%c.c.c.c
@.c.c0c0+8.].).8+0c0c.c.@
c.c.c.c%c0..>..0c.c.c.c
c.c.c.ccc.*...*.c.c.c.c
c.c.cc.ccc.080.cc.c.c.c
c.cc.cc..ccc+ccc.cc.c.c
cc.cc.ccc...0%cc.c.cc.c
xcc.cc..ccccccc.cc.c.cc
xxcc.ccc....0..cc.cc.cx
xxxcc..ccccccccc.cc.ccx
xxxxccc.........cc.ccxx
xxxxxxccccccccccc.ccxxx
            .....ccxxxx
            @cccccxxxxx
ENDMAP
