###############################################################################
# float.des: This is the place for floating regular vaults (ones defined with
#            ORIENT: float). Vaults with other ORIENT arguments  (encompass,
#            north, northwest etc.) are split into large_abstract.des and
#            large_themed.des. Minivaults (those without ORIENT lines)
#            are split into mini_monsters.des and mini_features.des.
#            Sufficiently complicated-enough vaults
#            using global lua functions go into individual .des files.
#
# <<1>>      Decorative
# <<2>>      Themed threat
# <<3>>      Abstract / generic threat
#
# The dividing line between generic and themed is potentially vague;
# if specified monsters are used lightly and they're very common amd in-place
# or very generic monsters, opt for <3>, otherwise use <2>.
###############################################################################

: crawl_require('dlua/vault.lua')

{{
function minmay_elemental_octagon_setup(e)
    e.tags('uniq_elemental_octagon no_pool_fixup no_monster_gen no_item_gen')
    e.subst('a : xcvb m:5 .:5')
    e.subst('p : .:50 c:20 vbm')
    e.subst('q : .:20 xcvbmGTr')
    e.subst('r : .:60 cvbmGT')
    e.subst('D : .xcvbmGT')
    e.nsubst('1 = 4=1 / 4=1. / .')
    e.nsubst('d = 2 / d')
end

function grunt_megastairs_setup(e)
  e.orient("float")
  e.tags("extra luniq_generic_threat_stair buniq_grunt_megastairs")
  e.tags("transparent ruin_lair")
  e.depth("Lair, Depths, Crypt, Elf, Snake, Zot")
  e.subst("@ = @+")
  if you.depth() == 1 then
    e.shuffle("{[(")
    e.subst("{ = }")
    e.subst("[ = ]")
    e.subst("( = )G")
  elseif you.depth() == dgn.br_depth() then
    e.shuffle("{[(")
    e.subst("( = (G")
  else
    e.shuffle("{[(}])")
    e.subst("( = (<")
    e.subst(") = )>")
  end
  if you.in_branch("Depths") then
    e.subst("x : cccccvvvb")
  elseif not you.in_branch("Lair") then
    e.subst("x = c")
  end
  if you.in_branch("Lair") then
    e.mons("pile of debris")
    e.subst("G : GG11VVtt")
    e.nsubst("0 = 1:0 / 1:0. / 1:0... / *:.")
    e.ftile(".0x = floor_sprouting_stone")
    e.ftile("G1V{([})] = floor_sprouting_squares")
  else
    if you.in_branch("Depths") or you.in_branch("Snake") or
           you.in_branch("Elf") then
      e.subst("G : GGGGTTVt")
    else
      e.subst("G : GGGGTTV")
    end
    e.nsubst("0 = 2:0 / 2:0. / *:.")
  end
  e.kmons("0 = 0 band")
end
}}

# Set the default depth for vaults.  Be sure to adapt or specify
# the DEPTH of particularly easy, tough, or thematic vaults.
default-depth: D:12-, Depths, !Depths:$

###############################################################################
#
# <<1>> Decorative vaults.
#       No threats.
#
###############################################################################

# Since nobody really understood it was firewood storage,
# it is now instead a custodial closet.
NAME:   broom_closet
TAGS:   extra no_descent
DEPTH:  D, !D:$, Depths, !Depths:$
ORIENT: float
WEIGHT: 5
: if you.absdepth() > 8 then
KITEM:  d = club, quarterstaff, quarterstaff good_item
: else
KITEM:  d = club, quarterstaff, quarterstaff
: end
KITEM:  e = club, any magical staff
: decorative_floor(_G, '?', "mop and bucket")
MAP
xxxxxx
x?de]x
xxxxxx
ENDMAP

################################################################################
# Staircase flavour vaults.
#
NAME:    minmay_staircase_windowed_small
TAGS:    extra luniq_staircase decor transparent
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor transparent
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
ORIENT:  float
WEIGHT:  5
SHUFFLE: )]}([{
SUBST:   c : c x:2 v:1 b:1
SUBST:   n : n:18 G:1 .:1
SUBST:   G : ...G, M = M..
: decorative_floor(_G, 'M', "mop and bucket")
MAP
ccccccccccccc
cM...GcG...cc
c.....c.....c
c.....+..)..c
c.....c.....c
cG...GcG...Gc
ccc+ccccnnncc
cG...Gc.....
c.....c.....
c.....+.....
c.....c.....
cc...Gc.....
ccccccc
ENDMAP

NAME:    minmay_staircase_statues
TAGS:    transparent extra luniq_staircase decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
ORIENT:  float
WEIGHT:  5
SHUFFLE: )]}([{
MAP
G.G
.).
G.G
ENDMAP

NAME:    minmay_staircase_statues_hall_small
TAGS:    extra luniq_staircase decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor transparent
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor transparent
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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:    transparent extra luniq_staircase decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
WEIGHT:  3
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor transparent
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$
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 decor
DEPTH:   D:2-, !D:$, Depths:2-, !Depths:$, Lair, Swamp
WEIGHT:  3 (D), 10 (Swamp)
# Water
SUBST:   D = WW.
SUBST:   E = W..
SUBST:   Z = wwW
# Guarantee a path
NSUBST:  S = 1:W / *:w
# Place @(s)
NSUBST:  ! = 1:@ / *:!
SUBST:   ! = @...
SHUFFLE: }]){[(
MAP
  !EEDEE!
 EDWZZZWDE
!DZwwwwwZD!
EWwwwwwwwWE
EZwwDEDwwZE
DZwwE}EwwZD
EZwwDEDwwZE
EWwZWwwwwWE
!DZSSZwwZD!
 EDWZZZWDE
  !EEDEE!
ENDMAP

# This is replaced by infiniplex_staircase_pool_lava for low levels
NAME:    infiniplex_staircase_pool
ORIENT:  float
TAGS:    extra luniq_staircase decor transparent
DEPTH:   D, !D:$, 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 decor transparent
DEPTH:   Depths
WEIGHT:  2
SUBST:   D = ll.
SUBST:   E = l..
NSUBST:  ! = 1:@ / *:!
SUBST:   ! = @...
SHUFFLE: }]){[(
MAP
   ...
  !....E!.
 .D.}.DlDE.
.ElDEDlllD.
Elllllllll!
Dlllllllll.
Ellllllll.
!lllllllE.
 .DlllDE!
  ..!...
ENDMAP

##############################################################################
# Celtic spiral tile pattern (rotated 45 degrees)
# http://en.wikipedia.org/wiki/Celtic_maze
NAME:   mumra_celtic_spiral_tile
ORIENT: float
TAGS:   transparent allow_dup decor
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:   wad_pebble_path
DEPTH:  D:2-, !D:$, Depths:2-, !Depths:$
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-, !D:$, Depths:2-, !Depths:$
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..WWxx.xxxxxx
xxxxxxxxxxx.''@'.xxxxxxxxxxxxxx
ENDMAP

NAME:  minmay_weird_star
TAGS:  no_pool_fixup no_monster_gen no_descent
DEPTH:  D:8-, !D:$
ORIENT: float
MONS:  plant
SUBST: x : x:9 c:1
MAP
xxxxxxxxxxx@..@xxxxxxxxxxx
x|11xxxxxx......xxxxxx11|x
x11llxxxxx..ww..xxxxxll11x
x1llllxxxx.wwww.xxxxllll1x
xxlllllxxx.wbbw.xxxlllllxx
xxxlllllx..wbbw..xlllllxxx
xxxxllll...wbbw...llllxxxx
xxxxxll...wwbbww...llxxxxx
xxxxxx...wwbbbbww...xxxxxx
xxxxx...wwbbbbbbww...xxxxx
x......wwbbbbbbbbww......x
@..wwwwwbbbbbbbbbbwwwww..@
..wwbbbbbbbbbbbbbbbbbbww..
..wwbbbbbbbbbbbbbbbbbbww..
@..wwwwwbbbbbbbbbbwwwww..@
x......wwbbbbbbbbww......x
xxxxx...wwbbbbbbww...xxxxx
xxxxxx...wwbbbbww...xxxxxx
xxxxxll...wwbbww...llxxxxx
xxxxllll...wbbw...llllxxxx
xxxlllllx..wbbw..xlllllxxx
xxlllllxxx.wbbw.xxxlllllxx
x1llllxxxx.wwww.xxxxllll1x
x11llxxxxx..ww..xxxxxll11x
x|11xxxxxx......xxxxxx11|x
xxxxxxxxxxx@..@xxxxxxxxxxx
ENDMAP
####

NAME:    hangedman_decor_cross_pass
TAGS:    transparent extra decor no_pool_fixup
ORIENT:  float
DEPTH:   D:8-, Depths, Elf
SHUFFLE: _- / _- / -_, '" / '" / "', !? / !? / !?
SHUFFLE: HIJK / HIJK / IHKJ, LMNO / LMNO / MLON, PQRS / PQRS / QPSR
SUBST:   HJLNPR = ., I : z:6 .:1, K : z., M : z:6 .:1, O : z., Q : z:6 .:1, S : z.
SUBST:   A : z., B : z., C : z., ~"! = x, - : ++., ' : ++. ? : +++., = : xx+.
SUBST:   y : z.., Y = TVCtwz .:30
: init_hm_decor_walldepth(_G, "z")
MAP
           x...x
           x...x
       .xxxx...xxxx
       .!...HIJ...xxxxx
       .?...KAK...'...x
       .!...JIH...x...x
       .xxxx...x""x...xxxx
  .........x...x...LMN...x
  xx+xx....x...'...OBO...x
  x...x....xx=xx...NML...x
  x...x........xxxx...xx'xx
xxx...xxxx........x..."...x
...PQR...x..y.....x..."...x
...SCS...=........xx'xx...xxx
...RQP...x....Y....x...PQR...
xxx...xx-xx........=...SCS...
  x...~...x.....y..x...RQP...
  x...~...x........xxxx...xxx
  xx-xx...xxxx........x...x
   x...LMN...xx=xx....x...x
   x...OBO...-...x....xx+xx
   x...NML...x...x.........
   xxxx...x~~x...xxxx.
      x...x...HIJ...!.
      x...-...KAK...?.
      xxxxx...JIH...!.
          xxxx...xxxx.
             x...x
             x...x
ENDMAP

NAME:   kennysheep_cross_landing
TAGS:   no_pool_fixup extra decor
ORIENT: centre
SUBST:  c:ccxxbvt
DEPTH:  D:10-, Depths
MAP
          cc+cc
         ccw.wcc
        ccww.wwcc
        cww.9.wwc
        c...*...c
        cww...wwc
        ccww.wwcc
        cccw.wccc
  cccccccccc+cccccccccc
 ccw.wcccccw.wcccccw.wcc
ccww.wwcccww.wwcccww.wwcc
cww...wwcww.{.wwcww...wwc
+..9*...+.......+...*9..+
cww...wwcww(.[wwcww...wwc
ccww.wwcccww.wwcccww.wwcc
 ccw.wcccccw.wcccccw.wcc
  cccccccccc+cccccccccc
        cccw.wccc
        ccww.wwcc
        cww...wwc
        c...*...c
        cww.9.wwc
        ccww.wwcc
         ccw.wcc
          cc+cc
ENDMAP

NAME:   wander_river
TAGS:   transparent no_pool_fixup no_monster_gen extra
DEPTH:  D, Lair, !Lair:$
ORIENT: float
FTILE:  - = floor_pebble_lightgray
TILE:   G = dngn_statue_mermaid / dngn_statue_polearm w:5 / \
            dngn_statue_hydra w:5 / dngn_statue_princess w:5
MAP
                  .@@.
                  ....       WWWWWWWW
                  G--G   WWWWWwwwwwwWWWW
                  G--GWWWWwwwwwwwwwwwwwWWW
WWWW              W--WWwwwwwwwWWWWWWwwwwwWWW
WwwWWW         WWWW--wwwwwWWWWW    WWWWwwwwWW
WwwwwWWWW   WWWWwww--wwWWWW           WWWwwwwW
WWWwwwwwWWWWWwwwwww--WWW                WWWwwW
  WWWwwwwwwwwwwwWWW--W                    WWWW
    WWWWwwwwwWWWW G--G
       WWWWWWW    G--G
                  ....
                  .@@.
ENDMAP

NAME:    nicolae_BIG_FREAKIN_CUBE
TAGS:    transparent decor
DEPTH:   D:4-, Depths:1
ORIENT:  float
SHUFFLE: '`-
: if you.depth() == 1 then
SUBST:   S = Z
: elseif you.depth() ~= dgn.br_depth(you.branch()) then
SUBST:   S : SZ
: end
NSUBST:  S = 1=((< / 1={{< / 1=[[<, Z = 1=))> / 1=}}> / 1=]]>
CLEAR:   '`
MAP
              ---xcx'''
              xxx...xxx
        ```xcx.........xcx```
        xxx...xxx...xxx...xxx
  '''xcx.........xcx.........xcx---
  xxx...xxx...xxx...xxx...xxx...xxx
cx.........xcx....S....xcx.........xc
x.xxx...xxx...xxx...xxx...xxx...xxx.x
-x...xcx.........xcx.........xcx.....x'
-x....x.xxx...xxx...xxx...xxx.x......x'
-x.....x...xcx.........xcx.....x.....x'
  x....x....x.xxx...xxx.x......x......x
  cx...x.....x...xcx.....x.....x.....xc
  x.xxx.x....x....x......x......x.xxx.x
  `x...xcx...x.....x.....x.....xcx.....x`
  `x....x.xxx.x....x......x.xxx.x......x`
  `x.....x...xcx...x.....xcx.....x.....x`
    x....x....x.xxx.x.xxx.x......x......x
    cx...x..S..x...xcx.....x..S..x.....xc
    x.xxx.x....x....x......x......x.xxx.x
    'x...xcx...x.....x.....x.....xcx.....x-
    'x....x.xxx.x....x......x.xxx.x......x-
    'x.....x...xcx...x.....xcx.....x.....x-
      x....x....x.xxx.x.xxx.x......x......x
      cx...x.....x...xcx.....x.....x.....xc
        xxx.x....x....x......x......x.xxx
        ---xcx...x.....x.....x.....xcx'''
              xxx.x....x......x.xxx
              ```xcx...x.....xcx```
                    xxx.x.xxx
                    '''xcx---
ENDMAP

NAME:   nicolae_cairo_tiling
TAGS:   transparent decor luniq_nicocairo
DEPTH:  D:4-, Depths:1
ORIENT: float
MAP
         xcx         xcx
 cx...xcx...xcx...xcx...xcx...xc
 x.xcx.x.....x.xcx.x.....x.xcx.x
x...x...x...x...x...x...x...x...x
c...x...cxxxc...x...cxxxc...x...c
x...x...x...x...x...x...x...x...x
 x.xcx.x.....x.xcx.x.....x.xcx.x
 cx...xcx...xcx...xcx...xcx...xc
 x.....x.xcx.x.....x.xcx.x.....x
 .x...x...x...x...x...x...x...x.
 .cxxxc...x...cxxxc...x...cxxxc.
 .x...x...x...x...x...x...x...x.
 x.....x.xcx.x.....x.xcx.x.....x
 cx...xcx...xcx...xcx...xcx...xc
 x.xcx.x.....x.xcx.x.....x.xcx.x
x...x...x...x...x...x...x...x...x
c...x...cxxxc...x...cxxxc...x...c
x...x...x...x...x...x...x...x...x
 x.xcx.x.....x.xcx.x.....x.xcx.x
 cx...xcx...xcx...xcx...xcx...xc
 x.....x.xcx.x.....x.xcx.x.....x
 .x...x...x...x...x...x...x...x.
 .cxxxc...x...cxxxc...x...cxxxc.
 .x...x...x...x...x...x...x...x.
 x.....x.xcx.x.....x.xcx.x.....x
 cx...xcx...xcx...xcx...xcx...xc
 x.xcx.x.....x.xcx.x.....x.xcx.x
x...x...x...x...x...x...x...x...x
c...x...cxxxc...x...cxxxc...x...c
x...x...x...x...x...x...x...x...x
 x.xcx.x.....x.xcx.x.....x.xcx.x
 cx...xcx...xcx...xcx...xcx...xc
         xcx         xcx
ENDMAP

NAME:   nicolae_cairo_tiling_large
TAGS:   transparent decor luniq_nicocairo
DEPTH:  D:4-, Depths:1
ORIENT: float
MAP
              xxc
              +.x
            cxx.x+x
            x.....x
            +.....cx+xc
            x.....x...x
          xxcxx.x+x...x+x
          +...+.x.......x
      xxcxx...xxcxx...xxc
      +.x.......x.+...+.x
    cxx.x+x...x+x.xxcxx.x+x
    x.....x...x.....x.....x
    +.....cx+xc.....+.....cxxxc
    x.....x...x.....x.....x...x
  xxcxx.x+x...x+x.xxcxx.x+x...x+x
  +...+.x.......x.+...+.x.......x
cxx...xxcxx...xxcxx...xxcxx...xxc
x.......x.+...+.x.......x.+...+
x+x...x+x.xxcxx.x+x...x+x.xxcxx
  x...x.....x.....x...x.....x
  cx+xc.....+.....cx+xc.....+
      x.....x.....x...x.....x
      x+x.xxcxx.x+x...x+x.xxc
        x.+...+.x.......x.+
        cxx...xxcxx...xxcxx
        x.......x.+...+
        x+x...x+x.xxcxx
          x...x.....x
          cx+xc.....+
              x.....x
              x+x.xxc
                x.+
                cxx
ENDMAP

NAME:    nicolae_cairo_tiling_large_dashed
TAGS:    transparent decor luniq_nicocairo
DEPTH:   D:4-, Depths:1
ORIENT:  float
SHUFFLE: aq
SUBST:   a = x, q = .
MAP
                   qacaq
         caq   qacaq...qacaq
         a.qacaq.a.......a.qac
        qq...a...qq.....qq...a
        a....q....a.....a....q
  caqqqac....q....caqqqac....q
  a.....a....q....a.....a....q
 qq.....qq...a...qq.....qq...a
 a.......a.qacaq.a.......a.qacaq
 caq...qacaq...qacaq...qacaq...qac
 a.qacaq.a.......a.qacaq.a.......a
qq...a...qq.....qq...a...qq.....qq
a....q....a.....a....q....a.....a
c....q....caqqqac....q....caqqqac
a....q....a.....a....q....a.....a
qq...a...qq.....qq...a...qq.....qq
 a.qacaq.a.......a.qacaq.a.......a
 caq...qacaq...qacaq...qacaq...qac
 a.......a.qacaq.a.......a.qacaq.a
 qq.....qq...a...qq.....qq...a...qq
  a.....a....q....a.....a....q....a
  caqqqac....q....caqqqac....q....c
  a.....a....q....a.....a....q....a
 qq.....qq...a...qq.....qq...a...qq
 a.......a.qacaq.a.......a.qacaq.a
 caq...qacaq...qacaq...qacaq...qac
   qacaq.a.......a.qacaq.a.......a
     a...qq.....qq...a...qq.....qq
     q....a.....a....q....a.....a
     q....caqqqac....q....caqqqac
     q....a.....a....q....a
     a...qq.....qq...a...qq
     caq.a.......a.qacaq.a
       qacaq...qacaq   qac
           qacaq
ENDMAP

NAME:   nicolae_cairo_tiling_very_big
TAGS:   transparent decor luniq_nicocairo
DEPTH:  D:4-, Depths:1
ORIENT: float
MAP
        cxxx+xxxc
        x.......x
       xx.......xx
       +.........+
      xx.........xx   xxcxx
      x...........x x+x...x+x
      cxx.......xxcxx.......xxcxx
      x.x+x...x+x.x...........x.x+x
     xx...xxcxx...xx.........xx...xxc
     +......x......+.........+......x
    xx......x......xx.......xx......x
    x.......x.......x.......x.......x
    c.......+.......cxxx+xxxc.......+
    x.......x.......x.......x.......x
    xx......x......xx.......xx......x
     +......x......+.........+......x
     xx...xxcxx...xx.........xx...xxc
      x.x+x...x+x.x...........x.x+x
    xxcxx.......xxcxx.......xxcxx
  x+x.x...........x.x+x...x+x.x
cxx...xx.........xx...xxcxx...xx
x......+.........+......x......+
x......xx.......xx......x......xx
x.......x.......x.......x.......x
+.......cxxx+xxxc.......+.......c
x.......x.......x.......x.......x
x......xx.......xx......x......xx
x......+.........+......x......+
cxx...xx.........xx...xxcxx...xx
  x+x.x...........x.x+x...x+x.x
    xxcxx.......xxcxx.......xxc
        x+x...x+x x...........x
          xxcxx   xx.........xx
                   +.........+
                   xx.......xx
                    x.......x
                    cxxx+xxxc
ENDMAP

##############################################################################
# A series of large floats that use the ruin tag and don't place monsters
#

NAME:   hellmonk_ruined_rings
TAGS:   transparent ruin
DEPTH:  D:6-, Lair, Depths:1
WEIGHT: 5
ORIENT: float
:if crawl.one_chance_in(4) and you.in_branch("D") then
TILE:   x = wall_brick_brown_vines
:elseif crawl.one_chance_in(4) then
TILE:   x = wall_sandstone
:end
:if you.in_branch("Lair") then
SUBST:  ' = WW...
:end
MAP
           .......
        ...xxx.xxx...
       .xxxxxx.xxxxxx.
      .xxx.........xxx.
     .xx.............xx.
    .xx.....xxxxx.....xx.
   .xx....xxxxxxxxx....xx.
  .xx....xxx'''''xxx....xx.
 .xx....xx''.....''xx....xx.
 .xx...xx'..xx.xx..'xx...xx.
 .xx..xx'..xxx.xxx..'xx..xx.
.xx...xx'.xx'...'xx.'xx...xx.
.xx..xx'.xx'.....'xx.'xx..xx.
.xx..xx'.xx'.vvv.'xx.'xx..xx.
.xx..xx'.xx'.vvv.'xx.'xx..xx.
.xx..xx'.xx'.vvv.'xx.'xx..xx.
.xx..xx'.xx'.....'xx.'xx..xx.
.xx...xx..xx'...'xx..xx...xx.
 .xx..xx...xxxxxxx...xx..xx.
 .xx...xx...xxxxx...xx...xx.
 .xx....xx.........xx....xx.
  .xx....xxx.....xxx....xx.
   .xx....xxxx.xxxx....xx.
    .xx.....xx.xx.....xx.
     .xx.............xx.
      .xx...........xx.
       .xxxxxxxxxxxxx.
          .xxxxxxx.
           .......
ENDMAP

NAME:   hellmonk_destroyed_diamonds
TAGS:   transparent
DEPTH:  D:6-, Lair, Depths:1
WEIGHT: 5
ORIENT: float
# This used to use the ruin tag, but ruined tiles don't get the floor tiles.
SUBST:  A : zz., B : zz., C : zz., D : zz., E : zz., F : zz., G : zz.
SUBST:  H : zz., I : zz., J : zz., K : zz., L : zz., M : zz., N : zz.
SUBST:  O : zz., P : zz., x = zz., z : xcc
: if crawl.coinflip() then
TILE:   c = stone_wall_shoals
: else
TILE:   c = wall_marble
: end
FTILE:  cx. = floor_sand
MAP
   .       .       .       .
  .x..   ..x..   ..x..   ..x.
 .xxx.. ..xxx.. ..xxx.. ..xxx.
.xxAxx...xxBxx...xxCxx...xxDxx..
 .xxA..x..xxB..x..xxC..x..xxD..x.
  .x..Exx..x..Fxx..x..Gxx..x..Hxx.
   ..xxExx...xxFxx...xxGxx...xxHxx..
     .xxx..x..xxx..x..xxx..x..xxx..x.
      .x..xxx..x..xxx..x..xxx..x..xxx.
       ..xxIxx...xxJxx...xxKxx...xxLxx..
         .xxI..x..xxJ..x..xxK..x..xxL..x.
          .x..Mxx..x..Nxx..x..Oxx..x..Pxx.
           ..xxMxx...xxNxx...xxOxx...xxPxx.
             .xxx.. ..xxx.. ..xxx.. ..xxx.
              .x..   ..x..   ..x..   ..x.
               .       .       .       .
ENDMAP

NAME:   hellmonk_crumbling_castle
TAGS:   transparent ruin
DEPTH:  D:6-, Depths:1
WEIGHT: 5
ORIENT: float
MONS:   pile of debris
SUBST:  + : 1++++
TILE:   c = wall_stone_smooth
TILE:   G = dngn_crumbled_column
MAP
                     ...
                    .ccc.
                   .ccccc.
                  .ccc.ccc.
                 .ccc...ccc.
                 .cc..V..cc.
                 .ccc...ccc.
                  .ccc.ccc.
                  .ccc+ccc.
                  .ccG.Gcc.
     .............ccc...ccc.............
    .ccccccccccccccc.....ccccccccccccccc.
    .ccccccccccccccG.....Gcccccccccccccc.
    .ccG........Gc.........cG........Gcc.
    .cc..........+.........+..........cc.
    .cc..........c.........c..........cc.
    .cccc+ccccccccc.......ccccccccc+cccc.
    .cccc...cccc.GccG...GccG.cccc...cc..
     ..cc....cc....cc...cc....cc....cc.
      .cc....c......cc+cc......c....cc.
      .cc....c......cc.cc......c....cc.
     ..cc....+......cc.cc......+....cc..
    .cccc....c.......c.c.......c....cccc.
   .ccccc...ccc......+.+......ccc...ccccc.
  .cc...c+cccccc.....c.c.....cccccc+c...cc.
 .cc......ccccccc...cc.cc...ccccccc......cc.
.cc.......cccccccccGcc.ccGccccccccc.......cc.
.cc.......cccccccccccc+cccccccccccc.......cc.
.ccG......cc.....ccccc.ccccc.....cc......Gcc.
 .cc.....cc.     .ccc...ccc.     .cc.....cc.
 .cccG..cc.       ...   ...       .cc..Gccc.
  .cccccc.                         .cccccc.
   ..ccc.                           .ccc..
     ...                             ...
ENDMAP

NAME:    nicolae_integral_box
TAGS:    transparent extra decor luniq_snakedec_large
DEPTH:   D, Depths:1, Snake
ORIENT:  float
SHUFFLE: Pp/Pp/Pp/Qq, Rr/Rr/Rr/Ss
SUBST:   PR : c, pr : _, QS : G, qs : c, H : cccG, F : TTT., T = TTTTTTVVVU
CLEAR:   _
MAP
              ccc
             cc..
            cc..@
           rc....  ppp
           rR...HcccPcccccc
           rc.............cc
            cc......F......cc
       rrr   cc.............cr
      ccRcc   ccccccPcccH...Rr
     cc...cc       ppp  ....cr
    cc.....cc           @..cc
    c.......c           ..cc   rrr
    c...H.@.c           ccc   ccRcc
    c...c                    cc...cc
    c...c                   cc.....cc
   pc...cp                  c.......c
   pP.F.Pp                  c...H.@.c
   pc...cp                  c...c
    c...c                   c...c
    c...c                  pc...cp
c.@.H...c                  pP.F.Pp
c.......c                  pc...cp
cc.....cc                   c...c
 cc...cc                    c...c
  ccRcc   ccc           c.@.H...c
   rrr   cc..           c.......c
        cc..@           cc.....cc
       rc....  ppp       cc...cc
       rR...HcccPcccccc   ccRcc
       rc.............cc   rrr
        cc......F......cc
         cc.............cr
          ccccccPcccH...Rr
               ppp  ....cr
                    @..cc
                    ..cc
                    ccc
ENDMAP

NAME:   nicolae_kite_square_tiling_large
TAGS:   transparent extra decor
DEPTH:  D:4-, Depths:1
ORIENT: float
SUBST:  + : +++.
MAP
          xxc   cxx           xxc
          +.x   x.+           +.x
      xxcxx.x+x+x.xxcxx   xxcxx.x+x
      +.......x.......+   +.......x
  xxcxx.......c.......xxcxx.......c
  +...+.......x.......+...+.......x
cxx...xxcxx.x+x+x.xxcxx...xxcxx.x+x+x
x.......x.+.x...x.+.x.......x.+.x...x
x+x...x+x.xxc...cxx.x+x...x+x.xxc...c
  x...x.....x...x.....x...x.....x...x
  c...cxx.x+x...x+x.xxc...cxx.x+x...x+x
  x...x.+.x.......x.+.x...x.+.x.......x
  x+x+x.xxcxx...xxcxx.x+x+x.xxcxx...xxc
    x.......+...+.......x.......+...+
    c.......xxcxx.......c.......xxcxx
    x.......+...+.......x.......+...+
  x+x+x.xxcxx...xxcxx.x+x+x.xxcxx...xxc
  x...x.+.x.......x.+.x...x.+.x.......x
  c...cxx.x+x...x+x.xxc...cxx.x+x...x+x
  x...x.....x...x.....x...x.....x...x
x+x...x+x.xxc...cxx.x+x...x+x.xxc...c
x.......x.+.x...x.+.x.......x.+.x...x
cxx...xxcxx.x+x+x.xxcxx...xxcxx.x+x+x
  +...+.......x.......+...+.......x
  xxcxx.......c.......xxcxx.......c
  +...+.......x.......+...+.......x
cxx...xxcxx.x+x+x.xxcxx...xxcxx.x+x+x
x.......x.+.x...x.+.x.......x.+.x...x
x+x...x+x.xxc...cxx.x+x...x+x.xxc...c
  x...x.....x...x.....x...x.....x...x
  c...cxx.x+x...x+x.xxc...cxx.x+x...x+x
  x...x.+.x.......x.+.x...x.+.x.......x
  x+x+x.xxcxx...xxcxx.x+x+x.xxcxx...xxc
    x.......+...+.......x.......+...+
    c.......xxcxx.......c.......xxcxx
    x.......+   +.......x.......+
    x+x.xxcxx   xxcxx.x+x+x.xxcxx
      x.+           +.x   x.+
      cxx           xxc   cxx
ENDMAP

NAME:    nicolae_triple_integral
TAGS:    transparent extra decor luniq_snakedec_large
DEPTH:   D, Depths:1, Snake
ORIENT:  float
SHUFFLE: DE
: if crawl.one_chance_in(3) and you.depth() > 1 then
SUBST:   D = ({[
: end
: if crawl.one_chance_in(3) and you.depth() ~= dgn.br_depth(you.branch()) then
SUBST:   E = )}]
: end
SUBST:   D : ..TTV, E : ..TTV, F : ..TTV, H : ..TTV, P : pppqq c:5 x:5, \
         Q : qqqpp c:5 x:5, p : xxxc, q : xxxc
MAP
      ppPpp       qqQqq       ppPpp
     pp...pp     qq...qq     pp...pp
    pp..F..pp   qq..H..qq   pp..F..pp
    p.......p   q.......q   p.......p
    P...P.@.P   Q...Q.@.Q   P...P.@.P
    p...p       q...q       p...p
    p...p       q...q       p...p
    p...p       q...q       p...p
    P.D.P       Q.E.Q       P.D.P
    p...p       q...q       p...p
    p...p       q...q       p...p
    p...p       q...q       p...p
P.@.P...P   Q.@.Q...Q   P.@.P...P
p.......p   q.......q   p.......p
pp..F..pp   qq..H..qq   pp..F..pp
 pp...pp     qq...qq     pp...pp
  ppPpp       qqQqq       ppPpp
ENDMAP

NAME:    nicolae_moon_pools
TAGS:    transparent no_pool_fixup
DEPTH:   D:8-, Depths:1
ORIENT:  float
KFEAT:   az`- = c
SHUFFLE: `-, a`/z-
COLOUR:  a` = white, z- = magenta
TILE:    a` = dngn_stone_wall_white
TILE:    z- = dngn_stone_dark
CLEAR:   _
MAP
                   ........
                   .wwwwww.
                   .wwa`ww.
                   .waaa`w.
                   .waaa`w.
     ........      .wwa`ww.      ........
     .wwwwww.      .wwwwww.      .wwwwww.
     .wwazww.      ........      .ww-aww.
     .waa`zw.                    .w-aaaw.
     .waa`zw.                    .w-aaaw.
     .wwazww.                    .ww-aww.
     .wwwwww.                    .wwwwww.
     ........                    ........
_
_
_
_
_
_
........                              ........
.wwwwww.                              .wwwwww.
.wwazww.                              .wwzaww.
.wa`zzw.                              .wz-aaw.
.wa`zzw.                              .wz-aaw.
.wwazww.                              .wwzaww.
.wwwwww.                              .wwwwww.
........                              ........
_
_
_
_
_
_
     ........                    ........
     .wwwwww.                    .wwwwww.
     .ww`zww.                    .wwzaww.
     .w`zzzw.                    .wzz-aw.
     .w`zzzw.                    .wzz-aw.
     .ww`zww.      ........      .wwzaww.
     .wwwwww.      .wwwwww.      .wwwwww.
     ........      .wwz-ww.      ........
                   .wzzz-w.
                   .wzzz-w.
                   .wwz-ww.
                   .wwwwww.
                   ........
ENDMAP

# https://www.youtube.com/watch?v=JbfhzlMk2eY
NAME:     nicolae_hitomezashi
TAGS:     transparent decor
DEPTH:    D:8-, Depths:1
ORIENT:   float
SUBVAULT: D : nico_hito
SUBVAULT: E : nico_hito
SUBVAULT: F : nico_hito
SUBVAULT: H : nico_hito
SUBVAULT: J : nico_hito
SUBVAULT: K : nico_hito
SUBVAULT: L : nico_hito
SUBVAULT: M : nico_hito
SUBVAULT: N : nico_hito
SUBVAULT: O : nico_hito
SUBVAULT: P : nico_hito
SUBVAULT: Q : nico_hito
SUBVAULT: R : nico_hito
SUBVAULT: S : nico_hito
SUBVAULT: Z : nico_hito
SUBVAULT: a : nico_hito
SUBVAULT: p : nico_hito
SUBVAULT: q : nico_hito
MAP
 DDD DDD DDD DDD DDD DDD DDD DDD
O...P...Q...R...S...Z...a...p...q
O...P...Q...R...S...Z...a...p...q
O...P...Q...R...S...Z...a...p...q
 EEE.EEE.EEE.EEE.EEE.EEE.EEE.EEE
O...P...Q...R...S...Z...a...p...q
O...P...Q...R...S...Z...a...p...q
O...P...Q...R...S...Z...a...p...q
 FFF.FFF.FFF.FFF.FFF.FFF.FFF.FFF
O...P...Q...R...S...Z...a...p...q
O...P...Q...R...S...Z...a...p...q
O...P...Q...R...S...Z...a...p...q
 HHH.HHH.HHH.HHH.HHH.HHH.HHH.HHH
O...P...Q...R...S...Z...a...p...q
O...P...Q...R...S...Z...a...p...q
O...P...Q...R...S...Z...a...p...q
 JJJ.JJJ.JJJ.JJJ.JJJ.JJJ.JJJ.JJJ
O...P...Q...R...S...Z...a...p...q
O...P...Q...R...S...Z...a...p...q
O...P...Q...R...S...Z...a...p...q
 KKK.KKK.KKK.KKK.KKK.KKK.KKK.KKK
O...P...Q...R...S...Z...a...p...q
O...P...Q...R...S...Z...a...p...q
O...P...Q...R...S...Z...a...p...q
 LLL.LLL.LLL.LLL.LLL.LLL.LLL.LLL
O...P...Q...R...S...Z...a...p...q
O...P...Q...R...S...Z...a...p...q
O...P...Q...R...S...Z...a...p...q
 MMM.MMM.MMM.MMM.MMM.MMM.MMM.MMM
O...P...Q...R...S...Z...a...p...q
O...P...Q...R...S...Z...a...p...q
O...P...Q...R...S...Z...a...p...q
 NNN NNN NNN NNN NNN NNN NNN NNN
ENDMAP

# The row subvaults at the edges of the main vault will each have one @ glyph,
# so that each side will have one guaranteed connection. @ glyphs not at the
# edge of the main subvault appear to be ignored, which conveniently means we
# don't need separate subvaults for edge rows and interior rows.
NAME:   nicolae_hito_row
TAGS:   unrand allow_dup nico_hito
DEPTH:  D:8-, Depths:1
NSUBST: @ = @ / .
MAP
ccc .@. ccc .@. ccc .@. ccc .@.
ENDMAP

NAME:   nicolae_squigglewinding
TAGS:   transparent decor
DEPTH:  D:8-, Depths, Snake
ORIENT: float
: local glyphs = "DEFHJKLMNOPQRSZ-"
: for i = 1, string.len(glyphs), 1 do
:    subvault(string.sub(glyphs, i, i) .. " : nico_subwinding")
: end
MAP
 xxc.@.cxxxxc.@.cxxxxc.@.cxxxxc.@.cxx
xDDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHHx
xDDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHHx
cDDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHHc
.DDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHH.
@DDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHH@
.DDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHH.
cDDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHHc
xDDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHHx
xDDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHHx
xJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMx
xJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMx
cJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMc
.JJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMM.
@JJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMM@
.JJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMM.
cJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMc
xJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMx
xJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMx
xNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQx
xNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQx
cNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQc
.NNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQ.
@NNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQ@
.NNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQ.
cNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQc
xNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQx
xNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQx
xRRRRRRRRRSSSSSSSSSZZZZZZZZZ---------x
xRRRRRRRRRSSSSSSSSSZZZZZZZZZ---------x
cRRRRRRRRRSSSSSSSSSZZZZZZZZZ---------c
.RRRRRRRRRSSSSSSSSSZZZZZZZZZ---------.
@RRRRRRRRRSSSSSSSSSZZZZZZZZZ---------@
.RRRRRRRRRSSSSSSSSSZZZZZZZZZ---------.
cRRRRRRRRRSSSSSSSSSZZZZZZZZZ---------c
xRRRRRRRRRSSSSSSSSSZZZZZZZZZ---------x
xRRRRRRRRRSSSSSSSSSZZZZZZZZZ---------x
 xxc.@.cxxxxc.@.cxxxxc.@.cxxxxc.@.cxx
ENDMAP

NAME:   nicolae_subvault_individual_squiggle
TAGS:   unrand transparent nico_subwinding allow_dup no_dump
DEPTH:  D:8-, Depths, Snake
ORIENT: float
MAP
xxc...cxx
xxc...ccx
cccc...cc
..cc.....
....c....
.....cc..
cc...cccc
xcc...cxx
xxc...cxx
ENDMAP

NAME:   nicolae_big_ol_wall_tiling
TAGS:   transparent decor
DEPTH:  D:8-, Depths:1
ORIENT: float
: local glyphs = "DEFHJKLMNOPQRSZ-"
: for i = 1, string.len(glyphs), 1 do
:    subvault(string.sub(glyphs, i, i) .. " : nico_winderwall")
: end
NSUBST: p = @ / ., q = @ / ., r = @ / ., s = @ / .
MAP
xxx..p..xx..p..xx..p..xx..p..xxx
x...ccc....ccc....ccc....ccc...x
x.DDDDDDDEEEEEEEFFFFFFFHHHHHHH.x
..DDDDDDDEEEEEEEFFFFFFFHHHHHHH..
.cDDDDDDDEEEEEEEFFFFFFFHHHHHHHc.
scDDDDDDDEEEEEEEFFFFFFFHHHHHHHcq
.cDDDDDDDEEEEEEEFFFFFFFHHHHHHHc.
..DDDDDDDEEEEEEEFFFFFFFHHHHHHH..
x.DDDDDDDEEEEEEEFFFFFFFHHHHHHH.x
x.JJJJJJJKKKKKKKLLLLLLLMMMMMMM.x
..JJJJJJJKKKKKKKLLLLLLLMMMMMMM..
.cJJJJJJJKKKKKKKLLLLLLLMMMMMMMc.
scJJJJJJJKKKKKKKLLLLLLLMMMMMMMcq
.cJJJJJJJKKKKKKKLLLLLLLMMMMMMMc.
..JJJJJJJKKKKKKKLLLLLLLMMMMMMM..
x.JJJJJJJKKKKKKKLLLLLLLMMMMMMM.x
x.NNNNNNNOOOOOOOPPPPPPPQQQQQQQ.x
..NNNNNNNOOOOOOOPPPPPPPQQQQQQQ..
.cNNNNNNNOOOOOOOPPPPPPPQQQQQQQc.
scNNNNNNNOOOOOOOPPPPPPPQQQQQQQcq
.cNNNNNNNOOOOOOOPPPPPPPQQQQQQQc.
..NNNNNNNOOOOOOOPPPPPPPQQQQQQQ..
x.NNNNNNNOOOOOOOPPPPPPPQQQQQQQ.x
x.RRRRRRRSSSSSSSZZZZZZZ-------.x
..RRRRRRRSSSSSSSZZZZZZZ-------..
.cRRRRRRRSSSSSSSZZZZZZZ-------c.
scRRRRRRRSSSSSSSZZZZZZZ-------cq
.cRRRRRRRSSSSSSSZZZZZZZ-------c.
..RRRRRRRSSSSSSSZZZZZZZ-------..
x.RRRRRRRSSSSSSSZZZZZZZ-------.x
x...ccc....ccc....ccc....ccc...x
xxx..r..xx..r..xx..r..xx..r..xxx
ENDMAP

NAME:   nicolae_subvault_for_big_wall_tiling
TAGS:   unrand transparent nico_winderwall allow_dup no_dump
DEPTH:  D:8-, Depths
ORIENT: float
MAP
..ccc..
...c...
c..c..c
c..n..c
c..c..c
...c...
..ccc..
ENDMAP

NAME:   nicolae_tiled_lozenges
TAGS:   transparent decor
DEPTH:  D:8-, Depths:1, Crypt, !Crypt:$
ORIENT: float
# By design, only one type of subvault is chosen out of the multiple options.
: local glyphs = "DEFHJKLMN"
: local subtype = tostring(crawl.roll_dice(1, 16))
: for i = 1, string.len(glyphs), 1 do
:    subvault(string.sub(glyphs, i, i) .. " : nico_loz_" .. subtype)
: end
MAP
                  c
                 .D.
                cDDDc
               .DDDDD.
              cDDDDDDDc
             .DDDDDDDDD.
            cDDDDDDDDDDDc
           .E.DDDDDDDDD.F.
          cEEEcDDDDDDDcFFFc
         .EEEEE.DDDDD.FFFFF.
        cEEEEEEEcDDDcFFFFFFFc
       .EEEEEEEEE.D.FFFFFFFFF.
      cEEEEEEEEEEEcFFFFFFFFFFFc
     .H.EEEEEEEEE.J.FFFFFFFFF.K.
    cHHHcEEEEEEEcJJJcFFFFFFFcKKKc
   .HHHHH.EEEEE.JJJJJ.FFFFF.KKKKK.
  cHHHHHHHcEEEcJJJJJJJcFFFcKKKKKKKc
 .HHHHHHHHH.E.JJJJJJJJJ.F.KKKKKKKKK.
cHHHHHHHHHHHcJJJJJJJJJJJcKKKKKKKKKKKc
 .HHHHHHHHH.L.JJJJJJJJJ.M.KKKKKKKKK.
  cHHHHHHHcLLLcJJJJJJJcMMMcKKKKKKKc
   .HHHHH.LLLLL.JJJJJ.MMMMM.KKKKK.
    cHHHcLLLLLLLcJJJcMMMMMMMcKKKc
     .H.LLLLLLLLL.J.MMMMMMMMM.K.
      cLLLLLLLLLLLcMMMMMMMMMMMc
       .LLLLLLLLL.N.MMMMMMMMM.
        cLLLLLLLcNNNcMMMMMMMc
         .LLLLL.NNNNN.MMMMM.
          cLLLcNNNNNNNcMMMc
           .L.NNNNNNNNN.M.
            cNNNNNNNNNNNc
             .NNNNNNNNN.
              cNNNNNNNc
               .NNNNN.
                cNNNc
                 .N.
                  c
ENDMAP

NAME:   nicolae_subvault_loz_alandas
TAGS:   unrand transparent nico_loz_1 allow_dup no_dump
DEPTH:  D:8-, Depths, Crypt
ORIENT: float
MAP
     .
    .cc
   c....
  .c.cccc
 c.c......
.c.c.c.c.c.
 ......c.c
  cccc.c.
   ....c
    cc.
     .
ENDMAP

NAME:   nicolae_subvault_loz_basketball
TAGS:   unrand transparent nico_loz_2 allow_dup no_dump
DEPTH:  D:8-, Depths, Crypt
ORIENT: float
MAP
     .
    c.c
   .c.c.
  c.....c
 .ccc.ccc.
c.........c
 .ccc.ccc.
  c.....c
   .c.c.
    c.c
     .
ENDMAP

NAME:   nicolae_subvault_loz_bricklayers
TAGS:   unrand transparent nico_loz_3 allow_dup no_dump
DEPTH:  D:8-, Depths, Crypt
ORIENT: float
MAP
     c
    ...
   c.c.c
  ...c...
 c.c.c.c.c
...c...c...
 c.c.c.c.c
  ...c...
   c.c.c
    ...
     c
ENDMAP

NAME:   nicolae_subvault_loz_corridors
TAGS:   unrand transparent nico_loz_4 allow_dup no_dump
DEPTH:  D:8-, Depths, Crypt
ORIENT: float
MAP
     .
    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
     .
ENDMAP

NAME:   nicolae_subvault_loz_fishbone
TAGS:   unrand transparent nico_loz_5 allow_dup no_dump
DEPTH:  D:8-, Depths, Crypt
ORIENT: float
MAP
     c
    .c.
   ..c.c
  .c...c.
 ....c...c
ccc.cc.c...
 ......c.c
  cc.ccc.
   .....
    c.c
     .
ENDMAP

NAME:   nicolae_subvault_loz_hallways_of_length
TAGS:   unrand transparent nico_loz_6 allow_dup no_dump
DEPTH:  D:8-, Depths, Crypt
ORIENT: float
MAP
     .
    .cc
   c....
  .ccccc.
 c.....c..
.ccc.c.ccc.
 ..c.....c
  .ccccc.
   ....c
    cc.
     .
ENDMAP

NAME:   nicolae_subvault_loz_long_right_angles
TAGS:   unrand transparent nico_loz_7 allow_dup no_dump
DEPTH:  D:8-, Depths, Crypt
ORIENT: float
MAP
     .
    .cc
   ..c..
  cc.c.cc
 c.....c..
.c.ccccc.c.
 ..c.....c
  cc.c.cc
   ..c..
    cc.
     .
ENDMAP

NAME:   nicolae_subvault_loz_loop_de_loops
TAGS:   unrand transparent nico_loz_8 allow_dup no_dump
DEPTH:  D:8-, Depths, Crypt
ORIENT: float
MAP
     .
    .c.
   c.c..
  .c.cccc
 ..c......
.ccc.c.ccc.
 ......c..
  cccc.c.
   ..c.c
    .c.
     .
ENDMAP

NAME:   nicolae_subvault_loz_ne_plus_ultra
TAGS:   unrand transparent nico_loz_9 allow_dup no_dump
DEPTH:  D:8-, Depths, Crypt
ORIENT: float
MAP
     .
    cc.
   c....
  .c.c.cc
 ....c...c
.c.ccccc.c.
 c...c....
  cc.c.c.
   ....c
    .cc
     .
ENDMAP

NAME:   nicolae_subvault_loz_polyominous
TAGS:   unrand transparent nico_loz_10 allow_dup no_dump
DEPTH:  D:8-, Depths, Crypt
ORIENT: float
MAP
     .
    cc.
   ....c
  cc.ccc.
 ..c.....c
.c.ccc.c.c.
 c.....c..
  .ccc.cc
   c....
    .cc
     .
ENDMAP

NAME:   nicolae_subvault_loz_pronged
TAGS:   unrand transparent nico_loz_11 allow_dup no_dump
DEPTH:  D:8-, Depths, Crypt
ORIENT: float
MAP
     c
    .c.
   ..c..
  c.ccc.c
 cc.c.c.cc
...........
 cc.c.c.cc
  c.ccc.c
   ..c..
    .c.
     c
ENDMAP

NAME:   nicolae_subvault_loz_rolling_hills
TAGS:   unrand transparent nico_loz_12 allow_dup no_dump
DEPTH:  D:8-, Depths, Crypt
ORIENT: float
MAP
     .
    c.c
   .c..c
  c.cc.c.
 .c..c....
c.cc.c.cc.c
 ....c..c.
  .c.cc.c
   c..c.
    c.c
     .
ENDMAP

NAME:   nicolae_subvault_loz_squiggly_walls
TAGS:   unrand transparent nico_loz_13 allow_dup no_dump
DEPTH:  D:8-, Depths, Crypt
ORIENT: float
MAP
     .
    cc.
   ..c..
  .c.ccc.
 ..c.....c
.ccc.c.ccc.
 c.....c..
  .ccc.c.
   ..c..
    .cc
     .
ENDMAP

NAME:   nicolae_subvault_loz_taking_ls
TAGS:   unrand transparent nico_loz_14 allow_dup no_dump
DEPTH:  D:8-, Depths, Crypt
ORIENT: float
MAP
     .
    .c.
   ..c..
  .c.ccc.
 ..c......
.ccc.c.ccc.
 ......c..
  .ccc.c.
   ..c..
    .c.
     .
ENDMAP

NAME:   nicolae_subvault_loz_tees_and_crosses
TAGS:   unrand transparent nico_loz_15 allow_dup no_dump
DEPTH:  D:8-, Depths, Crypt
ORIENT: float
MAP
     c
    ...
   ..ccc
  cc...c.
 .c..c....
c.c.ccc.c.c
 ....c..c.
  .c...cc
   ccc..
    ...
     c
ENDMAP

NAME:   nicolae_subvault_loz_within_cells_interlinked
TAGS:   unrand transparent nico_loz_16 allow_dup no_dump
DEPTH:  D:8-, Depths, Crypt
ORIENT: float
MAP
     .
    .c.
   ....c
  ccc.cc.
 ..c...c..
.c...c...c.
 ..c...c..
  .cc.ccc
   c....
    .c.
     .
ENDMAP

###############################################################################
#
# <<2>> Themed threat vaults.
#       Explicitly tries to evoke some idea,
#       using uncommon or out-of-place monsters for the depth.
#
###############################################################################

##############################################################################
# Earth elementals (formerly Stone Golems)
#
NAME:   minmay_stone_box
TAGS:   no_descent
DEPTH:  D:10-
ORIENT: float
WEIGHT: 5
MONS:   pile of debris
KMONS:  2 = earth elemental
KITEM:  2 = any scroll / any potion
KPROP:  l = no_tele_into
MAP
cccccccccccccc
cllllllllllllc
clcccccccccclc
clc{..11..>clc
clc........clc
clc........clc
clc1..22..1clc
clc1..22..1clc
clc........clc
clc........clc
clc<..11..}clc
clcccccccccclc
cllllllllllllc
cccccccccccccc
ENDMAP

##############################################################################
# Skeleton sneak attack
#
NAME:   minmay_skeletal_surprise
TAGS:   no_monster_gen no_item_gen no_descent
DEPTH:  Depths, !Depths:$
ORIENT: float
MONS:   ancient champion
KMONS:  D = draugr place:Depths:$ w:16 / lich w:4 / bone dragon w:2 / \
            ancient lich w:1 / dread lich w:1
KITEM:  D = star_item / superb_item
NSUBST: $ = 1:D / 3:$ / * = D$$$
FTILE:  .1D$} = floor_necro_squares
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

##############################################################################
# Cavepeople
#
NAME:   erik_cavepeople
TAGS:   no_monster_gen transparent
DEPTH:  D:7-11
ORIENT: float
WEIGHT: 5
MONS:   jackal / hound, yak, human
# XXX: Use some function to cover for used uniques,
# like in kennysheep_goblin_castle.
MONS:   Edmund / Jessica / Sigmund, Ijyb / Joseph
KITEM:  d = robe, leather armour, club, dagger
KFEAT:  e = cache_of_fruit
KFEAT:  f = cache_of_meat
SUBST:  1 = 11., 3 = 3., 4 = 34, 5 = 35, d = def
# Guarantee two winding tunnel into the center in this mess.
SHUFFLE: rR / sS / uU / vV / wW / yY / zZ, uU / nN
SUBST:   rsn = ., RSN = @, uUvVwWyYzZ = x
MAP
         xSxxxxx    xxxxxxxxxxUx
         xxssxxx    xx1xxxxxxuxx
xxxxxxxxxxxxxssx    x111xxxxxuxx
xxxzzzxxxxxxxxxsxxxxxx1xxxxxxuxx
Zzzxzxzxx222xxsxxxxxxx1xxxxxuxxx
xxxxxxxzxx2xxx.xxx..x1xxxxxuxxxx
   xxxxzxx2xxxx......ccccxuuxxxx
   xxxzxxxx2xx...3...+$dcxxux
   xxxzxxxx....3335..+$dcxuxx
   xxxxz.......3ll33.ccccxxux
   xxxxxx......4333.xxxxxxuxxxxxxxxx
   xxxxxxyxxxx3.......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-11
ORIENT:  float
ITEM:    singing sword, damaged executioner's axe, damaged eveningstar
KITEM:   g = damaged short sword / damaged long sword / \
             damaged morningstar / damaged war axe
KITEM:   h = damaged mace
MONS:    fungus, plant
: if you.depth() < 9 then
MONS:    adder, scorpion, bat
NSUBST:  . = 2:5 / 2 = 5. / * = ......^^1
: else
MONS:    yak, basilisk, shadowghast
NSUBST:  . = 1:5 / 1:5. / * = ......^^1
: end
KFEAT:   ^ = web
SUBST:   d = def
NSUBST:  h = 1:h / * = h.
SUBST:   c:cccvvb , b = cc.
SUBST:   1 : 1112
SUBST:   1 = 1. , 2=2...., 3 = 3., 4 = 4.
SUBST:   ' : .'''x, ' = .x
: decorative_floor(_G, 'gh', "assortment of trash")
MAP
   xxxxxxxxxxxxxxxx
  xxx11'cccccccxxxx
 xxx'...cggdv3cx1xx
xx111.3.ch'.v3c14xx
x111'.......hhc4xxx
xxx3.11..1xxccc.44x
  xxx.1.1113x..'xxx
   xxx'&..11.'xxx
    x1xxx'..xxx
    xxx xx'.'xx
         xxx44xxxx
           xx'.44xx
            xxxx.'x
               xx@x
ENDMAP

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

##############################################################################
# Beware the mummy's curse (Lemuel)
#
NAME:    lemuel_minitomb
TAGS:    patrolling no_monster_gen no_trap_gen
DEPTH:   Crypt, Depths
ORIENT:  float
MONS:    spectral thing, guardian mummy, obsidian statue
MONS:    mummy priest, royal mummy
KFEAT:   ^ = trap_alarm w:5 / trap_dispersal / trap_net / trap_zot
SUBST:   D = 1-, E = 2-, F = 4-, - = .:140 ^
TILE:    c = wall_tomb
TILE:    G = dngn_sarcophagus_pedestal_right
FTILE:   G+.^123456$*| = floor_sandstone
MAP
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxcccccxxxxxxxxxxxxx
xxxxxxxxxxc*$2cxxxxxxxxxxxxx
xxxxxxxxxxccc+cccccccccxxxxx
ccccccccxxc-----c---1$cxxxxx
@Gcc2$1cccc-----c---2Fcccccx
cccccc+cG1+-11E-+---14c$**cx
@+.....DDD+-132-+---11+5||cx
cccccc+cG1+-11E-+---14c$**cx
@Gcc2$1cccc-----c---2Fcccccx
ccccccccxxc-----c---1$cxxxxx
xxxxxxxxxxccc+cccccccccxxxxx
xxxxxxxxxxc*$2cxxxxxxxxxxxxx
xxxxxxxxxxcccccxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

#############################################################################
# Insect pit (Lemuel)
#
NAME:   lemuel_insect_pit
TAGS:   no_rotate
ORIENT: float
DEPTH:  D:5-11
MONS:   clockroach w:30 / butterfly w:20
MONS:   scorpion
MONS:   killer bee / scorpion / vampire mosquito w:5
KITEM:  * = *
SUBST:  1 = 1:70 2:60 3:25
: decorative_floor(_G, 'p', "flower patch")
MAP
cccccccc+cccccccc
c...............c
c...............c
c....vvvvvvv....c
c....v11111v....c
c....=11*11=....c
c....v11111v....c
c....vvvvvvv....c
c...............c
c...............c
cccccccc+cccccccc
ENDMAP

#############################################################################
# Troll bridge (Lemuel)
#
NAME:   lemuel_troll_bridge
TAGS:   no_pool_fixup patrolling no_monster_gen
DEPTH:  D:9-, Depths
ORIENT: float
: if you.in_branch("D") then
:     if you.depth() < 12 then
MONS:   yak, troll, deep troll
SUBST:  2 = .:100 2:90 3
:     else
MONS:   death yak, troll, deep troll
SUBST:  2 = .:50 2:60 3:30
:     end
# Depths
: else
MONS:   occultist, deep troll, iron troll, deep troll shaman
SUBST:  2 = 2:30 3 4
: end
MAP
xxxxx...........................xxxxxx
xwwwx...........................xxxxxx
xwwwx.............1.............xxxxxx
xwwwx...........................xxxxxx
xwwwwwwwwwwwwwwwww.wwwwwwwwwww..xxxxxx
xxwwwwwwwwwwxxxxxw.wwwwwwwwwwwwwwwwxxx
xxwwwwwwwwwwx222xw.wxxxxxwwwwwwwwwwwxx
xxwwwwwwwwwwx*22+...+22*xwwwwwwwwwwwwx
xxxwwwwwwwwwxxxxxw.wx222xwwwwwwwwwwwwx
xxxxxwwwwwwwwwwwww.wxxxxxwwwwwwwwwwwwx
xxxxx...wwwwwwwwww.wwwwwwwwwwwwwwwwwwx
xxxxx...........................xwwwwx
xxxxx............1.1............xxwwwx
xxxxx...........................xxwwwx
xxxxx...........................xxxxxx
ENDMAP

##############################################################################
# Lions and Tigers and Bears, oh my! (or at least bears)
#
NAME:   lemuel_bear_cage
TAGS:   no_monster_gen no_item_gen
ORIENT: float
DEPTH:  D:7-11
MONS:   black bear, polar bear, wolf, hog, yak, wyvern, manticore
KMONS:  D = dream sheep
KMONS:  E = death yak
: if you.depth() < 9 then
SUBST:  D = 1:30 2 3 4:5 5 6 7:5 D:5 E:5 .
: else
SUBST:  D = 1 2:30 3:5 4:5 5:5 6:5 7 D E .
: end
MAP
ccccccccc
c|D*D*D|c
cD%D%D%Dc
c.D.D.D.c
cD.D.D.Dc
c.D.D.D.c
cnn===nnc
.........
@.......@
.........
xxxxxxxxx
ENDMAP

##############################################################################
# Vampire Tower by Lemuel Pitkin
#
NAME:    lemuel_vampire_tower
TAGS:    no_monster_gen no_pool_fixup
DEPTH:   D:10-, Depths, Crypt
ORIENT:  float
{{
local egos = {["vampirism"] = 1, ["draining"] = 1}
local vamp_def = "vampire knight ; " ..
    dgn.monster_weapon("knight", egos, "randart") ..
    " . tower shield good_item | tower shield randart w:5" ..
    " . plate armour good_item | plate armour randart w:5" ..
    "     | shadow dragon scales good_item | shadow dragon scales randart"
}}
: if you.in_branch("D") then
:    if you.depth() < 13 then
MONS:    hell rat / vampire mosquito / draugr w:6 / zombie w:14 / \
         spectral thing w:5 / simulacrum w:5
MONS:    wolf / warg w:2 / hell hound w:2
MONS:    weeping skull
MONS:    basilisk / spectral black mamba / black mamba simulacrum / \
         spectral boulder beetle / boulder beetle simulacrum
MONS:    wraith
MONS:    shadowghast
MONS:    vampire
:    else
MONS:    draugr w:6 / zombie w:14 / wraith / spectral thing / simulacrum
MONS:    hell hound
MONS:    freezing wraith / laughing skull w:2
MONS:    spectral wolf spider / wolf spider simulacrum / spectral ice dragon \
         / ice dragon simulacrum / spectral deep troll / deep troll simulacrum
MONS:    vampire / necromancer w:5
MONS:    skeletal warrior / death knight
MONS:    vampire knight
:    end
: elseif you.in_branch("Crypt") then
MONS:    draugr / zombie / laughing skull / spectral thing / simulacrum
MONS:    jiangshi / sin beast / spectral caustic shrike w:2
MONS:    freezing wraith / phantasmal warrior / flayed ghost / shadow wraith
MONS:    spectre place:Crypt:$
MONS:    vampire mage / deep elf death mage w:5
MONS:    revenant soulmonger / eidolon / lich w:5
:   kmons("7 = jory / vampire bloodprince, vampire bloodprince w:20 / " .. vamp_def)
: else -- Depths
MONS:    zombie / laughing skull w:15 / spectral thing / simulacrum
MONS:    chonchon w:2 / jiangshi / sin beast / caustic shrike simulacrum w:2
MONS:    freezing wraith / phantasmal warrior / flayed ghost / shadow wraith
MONS:    spectral golden dragon / golden dragon simulacrum / \
         spectral caustic shrike / caustic shrike simulacrum / \
         spectral juggernaut / juggernaut simulacrum
MONS:    vampire mage / deep elf death mage w:5
MONS:    revenant soulmonger / eidolon / lich w:5
: kmons("7 = jory / " .. vamp_def .. ", vampire bloodprince / " .. vamp_def)
: end
KITEM:   _ = sanguine talisman / $, superb_item
KFEAT:   _ = altar_yredelemnul / altar_kikubaaqudgha
SHUFFLE: apqr
SUBST:   a = +, pqr = x, D = 56, G : Ggg
NSUBST:  1 = 10:1 / 8 = 1. / *:.
FTILE:   .+1234567_Y*| = floor_necro_squares
: vault_metal_statue_setup(_G, "g", "mystic cage")
MAP
G''wwwwwWwwWwwWwwwww''G
''wwwwwWwwwWwwwWwwwww''
'wWw111xxxx+xxxx111wWw'
www113xxx22422xxx311www
ww111xx.+24542+.xx111ww
ww13ax..ccccccc..xp31ww
ww1xx..ccc|_|ccc..xx1ww
wWxx..ccccc7ccccc..xxWw
Wwx..ccc44+6+44ccc..xwW
wwx.ccccccc+ccccccc.xww
wwx.c***c..D..ccccc5xww
wwx.c***+.....ccccc.xww
wwx5cc**cD.Y.Dccccc.xww
Wwx..cccc.....cccc..xwW
wWxx..ccc..D..ccc..xxWw
ww1xx..cc.....cc..xx1ww
ww13qx..ccc.ccc..xr31ww
ww111xx..cc+cc..xx111ww
www113xx..333..xx311www
'wWw111xxxxxxxxx111wWw'
''wwwwwWwwwwwwwWwwwww''
G''wwwwwWwwwwwWwwwww''G
ENDMAP

##############################################################################
# Swampy vault
#
NAME:    onia_ninara_swampy_vault
TAGS:    no_pool_fixup no_monster_gen
DEPTH:   Lair:3-, !Lair:$, Depths, !Depths:$
ORIENT:  float
SUBST:   " = .:2 x:1 W:4 P:1 w:3, - = .:9 W:2
: if you.in_branch("Lair") then
KMONS:   1 = tyrant leech / swamp worm w:50 / \
             vampire mosquito band / goliath frog / swamp drake w:15
KMONS:   23 = alligator / swamp dragon / hydra
NSUBST:  W = 3=1 / 3=1W / W
NSUBST:  8 = 3=3 / 2=31 / 1W
: else
KMONS:   1 = chonchon / tengu warrior w:5 / very ugly thing w:5 / \
             spriggan rider w:5 / spriggan air mage / \
             spriggan berserker w:5 ; boomerang q:1 . war axe ego:antimagic . \
                                      animal skin
KMONS:   23 = spark wasp / tengu reaver w:5 / shambling mangrove w:5 / \
              thorn hunter w:5 / tentacled monstrosity / \
              spriggan defender ; boomerang q:1 . lajatang . robe
KMONS:   45 = golden dragon / caustic shrike / alderking
NSUBST:  W = 7=1 / 3=2 / 1:24 / 2=12 / *:W
NSUBST:  8 = 2=5 / 2=3 / * = 1W
: end
KITEM:   3 = any good_item / any potion / gold
KITEM:   5 = superb_item / gold good_item / any potion q:4 w:20
KFEAT:   t = mangrove
KMONS:   P = plant
KFEAT:   1234P = W
NSUBST:  @ = 1:@ / *:X
SUBST:   x = w:30 x:4, X = x
SUBST:   ` = wwwxxt, ~ = w:9 x:1 t:1
KPROP:   wP = no_tele_into
FTILE:   @ = floor_moss
FTILE:   .5 = floor_sprouting_stone
MAP
XXXXXXXXXXXXXXxxx@xxxxxxxxxxxxxxx
Xxxxxx```xxxxxx`"-""xxxx``xxxxxxx
Xxxx`88~~````~~~""-""``~~~xx``xxx
Xx~~~88~~~~~`~~~~""-""~~~~~~~~`xx
X``~~~~--""~~~~~""-""~~~~~~~~~~`x
Xx`~~~~""--""~~""-""~~~"""~~~~`xx
X`~~~~~~~""-"""--"""""""--"""~~`x
X``~~~~~~~""-"-"""""""--""---""-@
Xx`~~~~~~~~""-"--"----"""""""--xx
xxx`~~~~~~""-""""-"""""~~~~~~~~xx
xxxx~~~~~""-""~~~~--~~~~~~~~~```X
xxx`~~~~""-""~~~~~~"-"~~~~~~~xxxX
x``~~~~~~-""~~~~~~~~"-~~~~~~``xxX
x`~~~~~~""-""~~~~~~~~"-"~~~`xxxxX
xx`xxx`~""-""~~~~```~~888`xxxxxxX
xxxxxxx`~""-""``xxxxx`~8`xxxxxxxX
xxxxxxxx`~-"``xxxxxxxxx`xxxxxxxxX
xxxxxxxxxx@xxxxxxXXXXXXXXXXXXXXXX
ENDMAP

##############################################################################
# Another low-level vault - LP
#
NAME:    lemuel_reptile_caves
TAGS:    transparent no_pool_fixup
DEPTH:   D:9-11, Lair, !Lair:$
ORIENT:  float
MONS:    frilled lizard, iguana, komodo dragon
MONS:    rime drake / swamp drake, adder, water moccasin, black mamba
KITEM:   ? = serpent talisman / serpent talisman randart w:2
SUBST:   4 = 34, 3 = 332, 2 = 221, 1 = 1.
SUBST:   X = x., Y = wx, Z = Wwx
: if you.in_branch("Lair") then
SHUFFLE: ab / ab / cd, 123 / 567
FTILE:   .123456*?abcd = floor_sprouting_stone
: else
SHUFFLE: ab / cd / cd, 123 / 566
: end
SUBST:   a = W, b = x, c = x, d = .
MAP
 xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxXW**wwxxxxxxxxxxxxxxX**XXx
xZwWwwwZxxxxxxX3?xxxxxX423Xx
xZWww232ZxxxxX131xxxxX.13Xxx
xZZWww2ZxxxxxX21xxxxxw222Xxx
xxZZWwwWaaxxxxXWxxaaaw1121Xx
xxxZWww1XaaaaaWwaaaxZWw211Xx
xxxxZW23xxxxxaWwwxxxZww11XXx
xxxxZZ1XxxxxxxxWwwxxxxZ.Xxxx
xxxxxxX.XxxxXwWwwwxxx...Xxxx
xxxxxxx..Xxxx2xWwxxX..XXxxxx
xxxxxxxX.12111xw3X211bxxxxx
 xxxxxxxxxXXXxxW2xxxxbbxxx
  xxxxxxxxxxxxxw1Xxxxxbbxx
    xxxxxxxxxYww1Xxxxxxbxxx
    xxxxxxxYwwww111@...Xxx
ENDMAP

##############################################################################
NAME:    gargoyle_guard
TAGS:    patrolling no_monster_gen vaults_hard vaults_orient_s
ORIENT:  float
DEPTH:   D:12-, !D:$, Vaults:2-, !Vaults:$
SUBST:   { = {([)]}
: if you.branch() == "D" then
MONS:    gargoyle, molten gargoyle
SUBST:   Xy = x
: else
MONS:    war gargoyle, peacekeeper
SUBST:   @y = ., l = %
NSUBST:  1 = 2 = *% / *:1
CLEAR:   X
FTILE:   .12$%*dG{ = floor_metal_gold
: end
ITEM:    staff of earth / medusa talisman w:5 / granite talisman w:5
TILE:    G = dngn_statue_angel / dngn_statue_imp / \
             dngn_statue_tengu / dngn_statue_dragon
MAP
XXXXXXXXXXXXXXXXXXX
XXXXXXXXxxxXXXXXXXX
XXXxxxxxx2xxxxxxXXX
XXxxx1x1xdx1x1xxxXX
XXxxx.........xxxXX
XXxx...........xxXX
XXxx...........xxXX
XXxl$.G..{..G.$lxXX
XXxx...........xxXX
XXxx...........xxXX
XXxxx.........xxxXX
XXxxx1x1x.x1x1xxxXX
XXxxxxxxx.xxxxxxxXX
XXxxxxxxx.xxxxxxxXX
XXXxxxxyy.yyxxxxXXX
XXXyyyyyy@yyyyyyXXX
ENDMAP

##############################################################################
# Ogre Cave, by Lemuel
#
NAME:    lemuel_ogre_cave
TAGS:    no_pool_fixup vaults_orient_w
ORIENT:  float
DEPTH:   D:9-, !D:$, Orc, Vaults, !Vaults:$
WEIGHT:  20 (Vaults), 10
: if you.in_branch("Vaults") then
TAGS:    no_monster_gen no_wall_fixup
MONS:    two-headed ogre / deep troll / dire elephant w:2
MONS:    ironbound preserver, ogre mage, ironbound thunderhulk
ITEM:    large rock no_pickup q:1
NSUBST:  23 = 1:2 / 1:3 / 1:4 / 1:24 / *:3
SUBST:   @> = ., W : xd., ~ = d, ?Y = +., A = $
:   vaults_hard_standard(_G)
: else
MONS:    ogre, two-headed ogre, ogre mage / Erolcha, fungus
MONS:    ogre zombie, two-headed ogre zombie
KITEM:   A = $
KFEAT:   A = >
SHUFFLE: 12 / 12 / 56
SUBST:   W : .ww4xxx, Y = +., ~ = WW4.., ? = 456+wwww.
: end
KFEAT:   F = cache_of_fruit / cache_of_meat
SUBST:   ! : $., F : F.
MAP
              xxxxx
          xxxxxx12xx
         xx~..x.122xx
 xxxxxxxxx?xxx...11xx
xxWxxxxxxx~xxxxx>...xx
xxWWxxxxxx.xxxxxx~~xxxx
xWWWxxxxxx.xxxxxxx~~xxxxx
xWWW~~xxxxx.xxxxxxx?xxxxxxxx
xWWWW..xxxxx.xxxxxx.xccccccx
xxWW....1xxx.xxxxx.xxc$$$Acx
@~.....111..xxxxxx.xxc$$$$cx
xxWWW...11xxxxxxx.xxxc!!!!cx
xWWW....~xxxxxxx~.Fxxc+ccccx
xxWWW..~~xxxxxx~...Fx..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
TAGS:   no_monster_gen patrolling
DEPTH:  Lair:3-, D:11-
ORIENT: float
WEIGHT: 5
MONS:   death yak w:5 / dream sheep w:3 / yak w:6
MONS:   generate_awake human ; dagger | hand axe
# these corpses are in the freezer, so never_decay is appropriate.
KITEM:  d = $, $, animal skin good_item
KITEM:  e = never_decay yak corpse / never_decay dream sheep corpse w:5
KFEAT:  f = cache_of_meat
KFEAT:  ~ = closed_clear_door
SUBST:  e = e:2 f:1 ':7, 2=2.
KPROP:  1de = no_tele_into
MARKER: F = lua:fog_machine { \
                pow_max = 10, delay_min = 30, delay_max = 50, \
                size = 3, size_buildup_amnt = 2, \
                size_buildup_time = 35, cloud_type = "freezing vapour" \
            }
: decorative_floor(_G, 'B', "fur brush")
MAP
cccccc       ccccccc
ceeeecxxxxxxxxceeeec
ceFee+..+..+..+eeFec
ceeeecxxx..xxxceeeec
cccccc  x..x  cccccc
        x2.x
nnnnnn  x..x  nnnnnn
n1111nxxx..xxxn1111n
n1d11~B.+..+.B~11d1n
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

##############################################################################
# And for now, something woody (1KB)
NAME:   kb_forest_paths
DEPTH:  D, Depths, Lair
ORIENT: float
MONS:   spriggan, spriggan rider, spriggan defender
MONS:   boggart, spriggan druid, alderking
KFEAT:  d = cache_of_fruit
KFEAT:  e = cache_of_baked_goods
: if you.absdepth() < 8 then
SUBST:  130 = ., 245 = 0
: elseif you.absdepth() < 13 then
SUBST:  1 = 1., 2 = 1, 35 = 0.
: elseif you.absdepth() < 22 then
SUBST:  3 = 0, 5 = 4
: else
SUBST:  2 = 3, 1 = 2, * = |
NSUBST: %* = 1:| / 1:6 / * = *
: end
SUBST:  d : dd., e = ee., } = }])
: if you.in_branch("Depths") then
FTILE:  @ = floor_moss
FTILE:  t = floor_sprouting_stone
FTILE:  .de0%*123456 = floor_sprouting_stone / floor_sprouting_squares w:25
: elseif you.in_branch("Lair") then
FTILE:  t = floor_moss
: else
FTILE:  .det0@%*123456 = floor_moss
: end
MAP
        xxxxxxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxxxxxx
    xxxxxtttttttttttttttttt.tttttttttttttttttttttxx
 xxxxtttttttttttttttttttttt...ttttttttttttttttttttx
xxttttttttttttttttttttttttttt..tttttttttttttt0}tttx
xttttttttt.tt......ttttttttttt..tttttttttttt..ttttx
xtttttttt.t...ttt.0.tttttttttt.tttttttttt2..ttttttx
xtt......tttttttt...ttttttttttt.tttttt...ttttttttxx
xt.ttttttttttttttt...1tttttttttt.tttt.tttttttttttxx
@.ttttttttttttttt..tttttttttttt1.tt...ttttttttttttx
xttttttttttttttt..tttttttttttttt5...ttttttttttttttx
xtttttttttttttttt..ttttttttttttttt.tttttttttttttttx
xtttttttttttttttt1.1.tttttttttttt.tttttttttt%.dtttx
xtttttttttttttttttt.0...tttttttttt..ttttttt.5*.ettx
xttttttttttttttttttttt1...ttttttttt.ttttttt.000%ttx
xttttttttttttttttttttttt...tttttttt.ttttt1..2.5tttx
xttttttttttttttttttttttttt....tttt.ttttttt.tt.t3ttx
xtttttttttttttttttttttttttttt.....tttttttt.tttttttx
.....ttttttttttttttttttttttt1..tttttttttt.ttttttttx
@.....tttttttt..1ttttttttttt1..tttttttt..ttttttttxx
xttttt..ttt0...tt...tt.......20dttttt..tttttttttxx
xttttttt....ttttttt....ttttttt..ttt..ttttttttttxx
xxxtttttttttttttttttttttttttttt....ttttttttttxxx
  xxxtttttttttttttttttttttttttttttttttttttxxxx
    xxxxxttttttttxxxxxxxxttttttttttttttxxxx
        xxxxxxxxxx      xxxxxxxxxxxxxxxx
ENDMAP

##############################################################################
# Eyes! by Minmay
#
NAME:   minmay_eyes
DEPTH:  Depths
ORIENT: float
MONS:   eye of devastation / great orb of eyes w:2
MONS:   golden eye / glass eye w:5
MONS:   glowing orange brain
KFEAT:  T = fountain_eyes
KFEAT:  m = iron_grate
SUBST:  G = G..
: vault_metal_statue_setup(_G, "G", "misfortune conduit")
MAP
...................................
.cccccccccccc.........cccccccccccc.
.c.............................m2c.
.c.1.............1.............mmc.
.c...............................c.
.c...cccccccccnnnnnnnccccccccc...c.
.c...cT.....................Gc...c.
.c...c.1.........1.........1.c...c.
.c...c.......................c...c.
.c...c...ccccccnnnnncccccc...c...c.
.c...c...cG.............Tc...c...c.
.c...c...c.1.....1.....1.c...c...c.
.c...c...c...............c...c...c.
.c...c...c...cccmmmccc...c...c...n.
.c...c...c...c3.....3c...c.......n.
.c...c...c...c..%.%..c...n.......n.
.c...c...c.9...%|*|%.m...n...0...n.
.c.1.c.1.c...1..*|*..m.1.n.1...1.n.
.c...c...c.8...%|*|%.m...n...0...n.
.c...c...c...c..%.%..c...n.......n.
.c...c...c...c3.....3c...c.......n.
.c...c...c...cccmmmccc...c...c...n.
.c...c...c...............c...c...c.
.c...c...cmm.....1.....1.c...c...c.
.c...c...c2m............Gc...c...c.
.c...c...cccccc..9..cccccc...c...c.
.c...c.......................c...c.
.c...c.1.........1.........mmc...c.
.c...cG....................m2c...c.
.c...ccccccccccccccccccccccccc...c.
.c...............................c.
.c.1.............1.............1.c.
.cT..............................c.
.ccccccccccccccccccccccccccccccccc.
...................................
ENDMAP

##############################################################################
# The Horrible House of Horrid Horrors (by Mu.)
NAME:   horrible_house_mu
TAGS:   transparent depths_entry chance_depths_entry no_monster_gen no_item_gen
DEPTH:  D:12-, !D:$, Depths
PLACE:  D:$
ORIENT: float
WEIGHT: 2 (D:$), 10
: if you.in_branch("Depths") then
MONS:   chonchon band, rakshasa / kobold fleshcrafter w:5, sin beast band
MONS:   vampire knight, orange crystal statue
KMONS:  0 = glowing orange brain / very ugly thing band
SUBST:  gU = .
NSUBST: ' = 2:0 / *:.
: elseif you.where() == dgn.level_name(dgn.br_entrance("Depths")) then
TAGS:   uniq_depths_entry
MONS:   boggart, rakshasa, very ugly thing
MONS:   flayed ghost, vampire mage
KITEM:  g = smoky gem
KFEAT:  U = enter_depths
SUBST:  | = %
FTILE:  'V12345$%G = floor_depthstone
TILE:   c = stone_wall_depths_entry
TILE:   G = depths_column
: else
MONS:   laughing skull band, vampire, unseen horror
MONS:   phantasmal warrior, orange crystal statue
SUBST:  gU = ', | = *
FTILE:  'V12345$%G = floor_necro_squares
: end
KMONS:  P = plant
SUBST:  p = P.
KMASK:  l = no_monster_gen
: decorative_floor(_G, 'V', "floral vase")
MAP
.....................
.pp...............pp.
.pcccccccccccccccccp.
..c'$$$|||U|||$$$'c..
..c''$$$'''''$$$''c..
..c'1''''l4l''''1'c..
..c'''llll'llll'''c..
..c'''lGllgllGl'''c..
..c'2lllc'5'clll2'c..
..c'''llcccccll'''c..
..c'''lllllllll'''c..
..c'3'''lllll'''3'c..
..c'''''''l'''''''c..
..c'''''''''''''''c..
..cV'''''''''''''Vc..
.pccnnnccc+cccnnnccp.
.pp.....pPPPp.....pp.
.........ppp.........
ENDMAP

##############################################################################
# Elemental Laboratory (by Mu.)
#
# I've reworked "master elementalist" monster originally created by Mu for this
# map into something that's a major threat. The contents of this vault have
# been updated accordingly to pose a greater challenge with more reward. It's
# now a rare runed door vault. --gammafunk
NAME:   mu_elemental_laboratory
TAGS:   no_monster_gen no_item_gen no_pool_fixup patrolling
DEPTH:  Depths, Elf, !Elf:$
ORIENT: float
WEIGHT: 5
KPROP:  qr = no_tele_into
ITEM:   randbook disc:fire, randbook disc:ice, randbook disc:earth
ITEM:   randbook disc:air
ITEM:   manual of fire magic / manual of ice magic / manual of earth magic \
        / manual of air magic
ITEM:   ring of evasion randart / ring of protection randart \
        / ring of protection from fire randart / ring of protection from cold randart
ITEM:   staff of fire / staff of cold / staff of earth / staff of air
: kmons("D = " .. master_elementalist_setup(_G, false))
KFEAT:  a = iron_grate
# Place fire cloud machines over lava and freezing vapour and storm clouds over
# deep water to prevent the relevant (not-fully-resistant or at least
# non-flying and non-giant) monsters from getting harmed by clouds.
KFEAT:  p = l
KFEAT:  rs = w
: if you.in_branch("Elf") then
# No fire elementals, since their flame clouds will tend to kill the elves in
# this room.
KMONS:  1 = salamander / deep elf pyromancer
KMONS:  2 = fire giant
KMONS:  3 = gargoyle / stone giant
KMONS:  4 = war gargoyle
KMONS:  5 = water elemental / elemental wellspring
KMONS:  6 = frost giant
KMONS:  7 = air elemental / deep elf zephyrmancer
KMONS:  E = storm dragon
: else -- Depths
KMONS:  1 = fire giant
KMONS:  2 = hellephant
KMONS:  3 = war gargoyle / stone giant / iron dragon
KMONS:  4 = iron giant
KMONS:  5 = frost giant
KMONS:  6 = shard shrike
KMONS:  7 = storm dragon
KMONS:  E = titan
: end
KFEAT:  5 = W
NSUBST: d = d / e / f / g / h / i / j / *
SUBST:  1 = 1.., - = 2pp..., 3 = 3.., x = xxx., ' = 4...., 5 = 5WW
SUBST:  " = 6..., 7 = 7..., ` = s, ; = Ess...
MARKER: p = lua:fog_machine { pow_min = 5, pow_max = 10, delay_min = 10, \
                delay_max = 40, size = 1, cloud_type = "flame", excl_rad = 0 }
MARKER: q = lua:fog_machine { pow_min = 5, pow_max = 10, delay_min = 10, \
                delay_max = 40, size = 1, cloud_type = "calcifying dust", \
                excl_rad = -1 }
MARKER: r = lua:fog_machine { pow_min = 5, pow_max = 10, delay_min = 10, \
                delay_max = 40, size = 1, cloud_type = "freezing vapour", \
                excl_rad = -1 }
MARKER: s = lua:fog_machine { pow_min = 5, pow_max = 10, delay_min = 10, \
                delay_max = 40, size = 1, cloud_type = "thunder", excl_rad = 0 }
TILE:   x = wall_pebble_lightgray
MAP
       ccccccccc
      cc3+.aqcwcc
     cc3xc.aacw5cc
    ccx3xc'''c5w5cc
   cc3xx3c'''c5ww5cc
  cc3x3x3c'''cw5ww5cc
 cc3xxx3xcaaWc5ww5wwcc
cc3xx3xxxcqaW+5w5wwwwcc
cxx33x33xccnccwww55555c
ccccccc+ccdddcccccccc+c
c-----..cd...dcra"""WWc
c--...--cd.D.dcaa"""aac
c-.-----cd...dc.."""arc
c+cccccccc...cc=ccccccc
c111lll1lc...c`77`77``c
ccll1l1l1c;.;c```7``7cc
 ccl1l1l1c;;.c`7```7cc
  ccl1ll1c;.;c7`7`7cc
   ccll1lc.;;c7``7cc
    cc1llc;.;c`7`cc
     cc1lc;;.c`7cc
      cc1c;;;+7cc
       c=ccccccc
ENDMAP

##############################################################################
# Guardian serpents guard a snake-like passage. (nrook)
#
NAME:    nrook_guardian_serpent_snake_passage
TAGS:    no_monster_gen no_rotate
ORIENT:  float
DEPTH:   D:11-, Snake
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

##############################################################################
# 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
DEPTH:   D:12-
WEIGHT:  1
ORIENT:  float
TAGS:    no_item_gen no_monster_gen
MONS:    ice beast / nothing
ITEM:    nothing, nothing
SHUFFLE: 1ef
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 }
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
TAGS:    uniq_spiral layout_rooms layout_city
TAGS:    no_item_gen no_monster_gen no_tele_into no_descent
DEPTH:   D:5-
ORIENT:  float
SUBST:   * : *$
MARKER:  D = 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 }
MAP
nn+nnnnnnnnnnnnnnnnnn
n...DDD.DDD.EEEEEEE.n
nnnnnnnnnnnnnnnnnnn.n
n*****EEEEEEEDDD.DDDn
nnnnnnnnnnnnnnnnnnnnn
ENDMAP

##############################################################################
# Flame loot (Lemuel)
#
NAME:   lemuel_flame_loot_2
TAGS:   no_descent
DEPTH:  D:9-, !D:$, Depths, !Depths:$
ORIENT: float
WEIGHT: 5
KMASK:  12* = no_monster_gen
KITEM:  1 = star_item
KITEM:  2 = superb_item
: if you.in_branch("D") then
SUBST:  b = l
:     if you.depth() < 13 then
KMONS:  1 = hell hound / lindwurm
KMONS:  2 = deep elf pyromancer / efreet
SUBST:  1 = 1..., * = *...
:    else
KMONS:  1 = hell hound / lindwurm / deep elf pyromancer / efreet
KMONS:  2 = fire dragon / fire giant / thermic dynamo
SUBST:  1 = 1., * = *..
:    end
# Depths
: else
KMONS:  1 = fire dragon / salamander tyrant / fire giant / balrug
KMONS:  2 = hellephant
SUBST:  * = *., b = bl
TILE:   b = bedevilled_crystal_gehenna
:   set_feature_name("crystal_wall", "bedevilled crystal wall")
: end
KFEAT:  2 = escape_hatch_down
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
clllllllllllc
clllllllllllc
clllll*lllllc
cllll*1*llllc
clll*121*lllc
cllll*1*llllc
clllll*lllllc
clllllllllllc
clllllblllllc
ccccccccccccc
ENDMAP

##############################################################################
# Firewalk (Lemuel)
#
NAME:    lemuel_firewalk_3
DEPTH:   Depths, Abyss
TAGS:    uniq_firewalk 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 }
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
TAGS:   no_monster_gen no_rotate no_pool_fixup vaults_orient_s
DEPTH:  Lair:2-, !Lair:$, Vaults, !Vaults:$
ORIENT: float
WEIGHT: 20 (Vaults), 10
SUBST:  % = .:5 %:3, P = 4, a = .4, b = 45
: if you.in_branch("Lair") then
MONS:   elephant, dire elephant, spriggan
SUBST:  ' = .
:   dgn.delayed_decay(_G, '%', 'elephant corpse w:1 / elephant skeleton w:5')
: else
MONS:   dire elephant, ogre mage, ironbound thunderhulk
SUBST:  W = w, c = n
NSUBST: . = 2:1 / *:.
CLEAR:  '@
:   dgn.delayed_decay(_G, '%', 'dire elephant corpse w:1 / ' ..
:                              'dire elephant skeleton w:5')
:   vaults_hard_standard(_G)
FTILE:  45nt = floor_pebble_brown
: end
MONS:   fungus, plant
SUBST:  . = .:69 1:1,  c = 5tt
: decorative_floor(_G, 'V', "mourning vase")
MAP
''''''''''''''''''''''''''''
''''''''''''''''''''''''''''
''''''''''''''''''''''''''''
''''''''''''''''''''''''''''
''''''''tttttttttttt''''''''
''''''tttccccccccccttt''''''
'''''ttcccbbbbbbbbccctt'''''
''''ttccbbbaaaaaabbbcctt''''
''''tccbbaaa2..3aaabbcct''''
'''ttcbbaa*V.%%.V*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

##############################################################################
# Megacathedral, for the bats on the brink of extinction. Or beyond. (due)

NAME:    due_megacathedral
TAGS:    no_monster_gen no_rotate no_vmirror no_hmirror
ORIENT:  float
DEPTH:   D:5-11, Orc
KITEM:   ' = large rock q:1 no_pickup
KFEAT:   _C = C
KFEAT:   opq = m
SHUFFLE: Dd / Ee / Ff / Hh / Ii / Jj / Kk / Ll / Mm / Nn, opq
: if you.in_branch("D") then
:   if you.depth() < 8 then
KMONS:   0C = bat name:megabat n_rpl n_spe n_des n_noc tile:mons_megabat / \
              fire bat w:2
MONS:    phantom / spectral human / bes kemwar, wraith
SUBST:   | = *
:   else
KMONS:   0C = bat draugr / fire bat
MONS:    wraith / shadowghast w:2, phantasmal warrior / flayed ghost
:   end
SUBST:   DEFHI = C, defhi = 0, JKLMN = VVG''', jklmn = 1, $ = .
TILE:    o = dngn_transparent_wall_white
TILE:    p : dngn_transparent_wall_blue / dngn_transparent_wall_green
TILE:    q : dngn_transparent_wall_red / dngn_transparent_wall_darkgray
TILE:    c = dngn_stone_dark
: else -- Orc
KMONS:   0C = obsidian bat
MONS:    orc sorcerer / orc high priest, spectral orc knight
SUBST:   = = +, DEFHI = C_, defhi = 001333, JKLMN = VVG''', jklmn = 1
TILE:    o = dngn_transparent_wall_darkgray
TILE:    p = dngn_transparent_wall_red
TILE:    q : dngn_transparent_wall_yellow / dngn_transparent_wall_brown
: end
MAP
             cccc.cccc
          ccccqcG.Gcqcccc
         cco..dcc+cce..occ
      ccccc..D$.c.c.$E..ccccc
     ccp.occ...cc.cc...cco.pcc
     con$.qcc+cc...cc+ccq.$foc
  ccccc.N.oco.........oco.F.ccccc
 ccoqoc.$.+c..pcc+ccp..c+.$.coqocc
 cpm..cc.cc..ccc...ccc..cc.cc..hpc
cc...$.ccc..cc..$.$..cc..ccc.$...cc
co..M...+....+...C...+....+...H..oc
cc...$.ccc..cc..$.$..cc..ccc.$...cc
 cp...cc.cc..ccc...ccc..cc.cc...pc
 ccoqoc.$.+c..pcc+ccp..c+.$.coqocc
  ccccc.L.oco.........oco.I.ccccc
     col$.qcc+ccG.Gcc+ccq.$ioc
     ccp.occ...cc=cc...cco.pcc
      ccccc..K$.c.c.$J..ccccc
         cco..kcc2ccj..pcc
          ccccqc|||cqcccc
             ccccccccc
ENDMAP

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

NAME:    hangedman_screamer
TAGS:    no_monster_gen
DEPTH:   D:11-, Depths, Crypt
ORIENT:  float
MONS:    patrolling laughing skull
MONS:    zombie / draugr w:4
: if you.in_branch("Crypt") then
MONS:    vampire knight / cognitogaunt w:5 / flayed ghost
MONS:    lich / revenant soulmonger /  bone dragon
KMONS:   5 = Jory / vampire bloodprince / revenant, \
             vampire bloodprince / revenant soulmonger
SUBST:   x = v
: else
:   if you.in_branch("Depths") then
MONS:    vampire knight / jiangshi / flayed ghost
MONS:    lich / vampire mage
KMONS:   5 = Boris / vampire bloodprince w:5 / ancient lich, \
             vampire bloodprince w:5 / ancient lich
:   elseif you.absdepth() > 13 then
MONS:    phantasmal warrior / skeletal warrior / eidolon
MONS:    vampire mage / death knight
# Really, nobody else even slightly undead? >_>
KMONS:   5 = Frances / vampire mage / death knight, vampire mage / death knight
:   else
MONS:    wight / wraith / shadowghast
MONS:    skeletal warrior / necromancer
KMONS:   5 = Josephine / skeletal warrior / necromancer, \
             skeletal warrior / necromancer
:   end
FTILE:   *2345+ = floor_necro_squares
: end
SHUFFLE: Aa / Bb / Cc / Dd / Ee / Ff
SUBST:   5 = 5 3:2, 2 = 2 3:2, ABCD = ., abcd = @, EeFf = x
MAP
   xxxxxxxxxxx
   xx2233322xx
xaaxx22x5x22xxccx
xAAx.x2x+x2x.xCCx
xAAxx.xx*xx.xxCCx
xAAxxx.x*x.xxxCCx
x.......1.......x
x.......1.......x
xBBxxx.x*x.xxxDDx
xBBxx.xx*xx.xxDDx
xBBx.x2x+x2x.xDDx
xbbxx22x4x22xxddx
   xx2233322xx
   xxxxxxxxxxx
ENDMAP

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

NAME:   nicolae_whirlpool
TAGS:   patrolling no_pool_fixup no_rotate no_monster_gen transparent
ORIENT: float
DEPTH:  D:6-, Vaults, !Vaults:$
WEIGHT: 5 (Vaults), 10
: if you.in_branch("Vaults") then
MONS:   yaktaur / vault sentinel ; arbalest . long sword | war axe | \
                                   falchion | morningstar . ring mail
MONS:   deep elf annihilator / deep elf sorcerer / lich
MONS:   yaktaur captain w:5 / orc warlord ; arbalest . war axe . ring mail / \
        vault warden ; arbalest . long sword . chain mail
KITEM:  | = | / * / %
KFEAT:  | = cache_of_baked_goods
SUBST:  @W' = .
:   vaults_hard_standard(_G)
: else
:   if you.depth() < 12 then
MONS:   centaur, orc wizard
SUBST:  1 = 1..., 3 = 1
:   else
MONS:   centaur, arcanist / deep elf zephyrmancer, centaur warrior
:   end
SUBST:  | = $
CLEAR:  '
: end
MAP
 '''''''''''''
'@ww@wwwwwwww@'
'wwWwwWWWWWWww'
'wWwwWwwwwwwWw'
'wWwWwwWWWWww@'
'wWwWwWwwwwWww'
'wWwWw121$wwWw'
'wWwWw%|%wWwWw'
'wWww$131wWwWw'
'wwWwwwwWwWwWw'
'@wwWWWWwwWwWw'
'wWwwwwwwWwwWw'
'wwWWWWWWwwWww'
'@wwwwwwww@ww@'
 '''''''''''''
ENDMAP

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

NAME:   wad_bat_island
DEPTH:  D:12-, !D:$
ORIENT: float
WEIGHT: 4
MONS:   plant, bat, snapping turtle
COLOUR: .12 = green
COLOUR: ; = brown
FTILE:  ; = floor_moss
FTILE:  >.F12t = floor_grass_dark
: decorative_floor(_G, 'p', "flower patch")
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.F1t;WWwwwwwwwwWxxxwwwWwwx
xxxwwwwWWxwwwwWW;2tt2.;WWwwww3wwwwwwwwwwWwwx
xxwwwwwwwWxWWWwWW;.1t;WWwwwwwwwwwwwwwwwxWwwx
xwwww3wwwwWwwwwwWW;;;WWwwwwwwxxwwwwwwwxWwxwx
xxwwwwwwwwwwxwwwwWWWWWwwwwwxxxxwwwwwwwWwwwxx
xxwwwwxxwwwxxxwwwwwwwwwwwwwwwwwwwwwwwwWwwwwx
xxwwwxxxwwwwxwwwwwwwwWWWWwwwwwwwwwWWwWWwwwxx
xxwwxxxwwwwwwxxwwwwWWxxxxWWWwwwWWWwwWxwwwxxx
xxxxxxwwwwwxxxwxwwWxxxwxwwwwWWWwxxxxxwwxxxxx
xxxxxxxwxxxxxwxxx@xxxxxwxxxxxxwxwxwxxxxwwxxx
ENDMAP

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

NAME:    hangedman_surveillance_ring
TAGS:    transparent no_monster_gen no_item_gen patrolling allow_dup
TAGS:    vaults_hard vaults_orient_n
ORIENT:  float
DEPTH:   D:12-, Vaults
: if you.branch() == "D" then
MONS:    howler monkey, shapeshifter
MONS:    slime creature, centaur warrior
MONS:    glowing orange brain, yaktaur
: else
MONS:    vault sentinel, glowing shapeshifter
MONS:    large slime creature, great orb of eyes
MONS:    glowing orange brain, vault warden
KFEAT:   T = fountain_eyes
FTILE:   .$%*+nTB[{(<>123456 = floor_metal_gold
: end
KFEAT:   > = shaft
KFEAT:   n = iron_grate
KFEAT:   B = cache_of_baked_goods
SHUFFLE: {[(
SUBST:   ( = (:70 <, [ = [:50 <
MAP
  .................
  ......ccccc......
....ccccc*B*ccccc....
...cc$.c..6..c.%cc...
..cc$..+.ccc.+..%cc..
..c$.5$ccc6ccc%32%c..
..c..$cn.....nc%..c..
..cc+cn.......nc+cc..
.cc..c.........c..cc.
.m..+c....<....c+..m.
.m1.+2.T.[{(.T.2+.1m.
.m..+c....>....c+..m.
.cc..c.........c..cc.
..cc+cc.......cc+cc..
..c..%cc.....cc$..c..
..c%34%cnc.cnc$53$c..
..cc%34+.cnc.+43$cc..
...cc%.+.....+.$cc...
....ccccc...ccccc....
  ......c+++c......
  .................
ENDMAP

###############################################################################
# Nasty temple of Zin.
NAME:   evilmike_silver_temple
TAGS:   no_monster_gen patrolling
DEPTH:  Depths, !Depths:$
ORIENT: float
MONS:   daeva god:Zin, angel god:Zin dbname:zin_angel, cherub god:Zin
: if you.depth() > 3 then
MONS:   pearl dragon / fravashi god:Zin w:2
: else
KMONS:  4 = Mennas, fravashi god:Zin
: end
NSUBST: A = 3 / '
KFEAT:  _ = altar_zin
FTILE:  '+_!$%*|1234 = floor_vault
TILE:   v = dngn_metal_wall_white
TILE:   n = dngn_transparent_stone_white
COLOUR: vn = white
SUBST:  !' = .
: vault_metal_statue_setup(_G, "G", "silver statue")
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''vv+vv''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''vvGv'''''vGvv''vv.....
...v.vvv''vvv'2'1'vvv''vvv.v...
.v...vvvv''vvv'''vvv''vvvv...v.
...v.vvvvv'3vvvnvvv3'vvvvv.v...
.v...vvvvvv+v'''''+vvvvvvv...v.
...v.v$$$$v''''4''''v****v.v...
.v...v$$$$+'''v_v'''+*||*v...v.
...v.v$$$$vGvvvvvvvGv****v.v...
.....vvvvvvvvvvvvvvvvvvvvv.....
...............................
ENDMAP

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

NAME:    hangedman_six_sided_sadism
TAGS:    patrolling no_monster_gen no_item_gen
DEPTH:   Depths
ORIENT:  float
MONS:    tengu warrior / deep troll / rakshasa / necromancer
MONS:    tengu conjurer / stone giant / occultist / kobold fleshcrafter / \
         phantasmal warrior / salamander mystic / hell knight
MONS:    fire giant / frost giant / ettin / salamander tyrant / \
         chonchon / vampire knight / vampire mage / spriggan berserker / \
         guardian sphinx / spriggan air mage / deep troll earth mage
MONS:    tengu reaver / titan / lich / alderking / \
         ancient lich w:5 / dread lich w:5
SHUFFLE: AB, CD, EF, GH, IJ, KL / MN, OP / QR, ST, ST / UV
SUBST:   ACEG : x, BDFH : ., c : cccvb, x : x:70 cb
SUBST:   IKO = 1, LPS = 2, T = 3, JMNQRUV = %
SUBST:   3 = 334, 2 = 223, 1 = 1:60 2:30 .
FTILE:   .@%*|1234+x = floor_mystic_chasm
MAP
             @`ccccccc`@
            ``cc.....cc``
           ``cc.V.S.U.cc``
          ``ccT.xxxxx.Tcc``
        ```cc..xxxxxxx..cc```
    `````ccc.Uxxxxxxxxx..ccc`````
   ``ccc+ccc..xxxxxxxxxV.ccccccc``
  ``cc.....cc..xxxxxxx..cc..3..cc``
 ``cc...I...ccS.xxxxx.Sc+.......cc``
@`cc.........cc.V.T.U.+c2..HGH..3cc`@
`cc..I..J..I..cc.....cc...Gx.xG...cc`
cc....JxxxJ....cc+++cc...GH%%%HG...cc
cc....JxxxJ....cc+++cc...HG%%%GH...cc
`cc..I..J..I..cc.*|*.cc...Hx.xH...cc`
@`cc.........cc*.1.2.*cc2..GHG..1cc`@
 ``cc...I...cc|.c...c.|cc.......cc``
  ``cc.....cc*.c.ccc.c.*cc..1..cc``
   ``cc+c+cc..c.c343c.c..cc+c+cc``
  ``cc.....cc*1..c3c..1*cc.....cc``
 ``ccM.....Kcc|2.....2*cc...%...cc``
@`ccN.......Lcc*.ccc.*cc..FF.FF..cc`@
`ccM..AA.BB..Kcc.*|*.cc...xE.Ex...cc`
cc.....AxB.....ccccccc...%E232E%...cc
cc.....BxA.....ccccccc...%E121E%...cc
`ccK..BB.AA..Mcc.O.P.cc...xE.Ex...cc`
@`ccL.......Nc+Q.....R+c..FF.FF..cc`@
 ``ccK.....M+c....D....c+...%...cc``
  ``cc.....ccQ.C.x.x.C.Rcc.....cc``
   ``ccccccc...CD...DC...ccccccc``
    `````ccc...DC...CD...ccc`````
        ```ccO.D.x.xDD.Pcc```
          ``cc....C....cc``
           ``ccP.....Pcc``
            ``cc.R.R.cc``
             @`ccccccc'@
ENDMAP

NAME:    hangedman_hanging_gardens
TAGS:    no_monster_gen no_pool_fixup allow_dup
ORIENT:  float
DEPTH:   Depths
MONS:    plant w:14 / fungus w:4 / bush w:2
MONS:    fire dragon / ice dragon / lindwurm / hell hog
MONS:    spark wasp w:5 / catoblepas / bunyip / emperor scorpion
MONS:    12-headed hydra / anaconda / torpor snail w:5 / \
         demonic crawler w:5 / skyshark / bunyip w:5 / sin beast w:5
MONS:    spriggan druid, spriggan berserker / spriggan defender
MONS:    guardian sphinx / alderking w:5 / caustic shrike
ITEM:    lupine talisman randart
KFEAT:   e = cache_of_fruit
NSUBST:  ' : 1:2 / 1:3 / 1:4 / 2 = 233444. / *:.
NSUBST:  " : 2:2 / 2:3 / 2:4 / 4 = 233444. / *:.
NSUBST:  C : 2:1 / * = c:299 1:1, * = 1:dd* / *:*
SUBST:   3 = 3 .:1, 6 = 66.
SUBST:   X = xx., 1 = 1:29 .:1, t = t:99 1:1, u = t, d = d..
SUBST:   . = .:2975 1:20 2:1 3:2 4:2, | = *||
TILE:    c = wall_marble
FTILE:   .dTt1234567Gcx+d%$*| = floor_grass_dark
COLOUR:  c = white
COLOUR:  .1234567d%$*| = green
MAP
   ccccccccccccccccccccccccccccccccc
   ctttttttttttttttttttttttttttttttcc
   ctd$$..""....""................2|c
cccct"5................1"........"%7c
ctttt*"................".ww.."tttttcc
ctd"*G*..................ww..tcccccc.
ct$5"*7.........".t..........tC1111..
ct$....T...WWW."dt.........."tC11...
ct.........WWW..t.1.....ttttttC...1.
ct.............t.11....tcCCCCCC.....
ct".......".t..........tC1111.......
ct"......"dt....1......tC11'.........
ct........t.1.....ttttttC...1.XXXXXXX
ct.......t.11.....cCCCCCC....Xxxxxxxx
ct................C1111......Xx
ct...1".........u.C11'......1Xx
ct"..".ww.........+...16XXXXXxx
ct"....ww..tcCCCC+c....Xxxxxxx
ct.........tC1111..u..'Xx
ct........"tC11'.....'1Xx
ct...."tttttC...16XXXXXxx
ct....tcCCCCC....Xxxxxxx
ct..".tc1111....'Xx
ct.2%.tc11'....'1Xx
cc.|7.cc...1.XXXXxx
.cccccc.....Xxxxxx
 .11111.....Xx
 ..........'Xx
..........'1Xx
XXXXXXXXXXXXxx
xxxxxxxxxxxxx
ENDMAP

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

NAME:    lightli_eight_chambers
TAGS:    no_monster_gen
ORIENT:  float
DEPTH:   Depths, !Depths:$
KMONS:   D = ice dragon / frost giant / blizzard demon / \
             walking frostbound tome w:5
KMONS:   E = storm dragon / spriggan air mage / spark wasp / titan w:5
KMONS:   F = fire dragon / fire giant / salamander tyrant / smoke demon / \
             balrug / hellephant w:5
KMONS:   H = stone giant w:20 / iron dragon / walking earthen tome / \
             juggernaut w:5 / walking crystal tome w:5
KMONS:   J = death scarab w:20 / guardian mummy / guardian sphinx / reaper / \
             mummy priest w:5 / royal mummy w:5
KMONS:   K = deep elf demonologist / deep elf sorcerer / deep elf death mage / \
             deep elf annihilator / deep elf high priest / \
             deep elf blademaster w:5 / deep elf master archer w:5
KMONS:   L = great orb of eyes / rockslime / void ooze / azure jelly / \
             acid blob w:5
KMONS:   M = ancient champion / vampire mage / vampire knight / \
             eidolon / revenant soulmonger / bone dragon / lich w:5
KMONS:   N = chonchon w:5 / tengu warrior / tengu conjurer / tengu reaver
KMONS:   O = spriggan berserker / spriggan air mage / spriggan defender
KMONS:   P = balrug w:12 / blizzard demon w:12 / shadow demon w:12 / \
             sin beast w:12 / hellion / reaper / tormentor
SHUFFLE: Dd / Ee / Ff / Hh / Jj / Kk / L' / M" / N` / O; / P~
FTILE:   Dd = floor_pebble_blue
FTILE:   Ee = floor_pebble_cyan
FTILE:   Ff = floor_volcanic
FTILE:   Hh = floor_pebble_brown
FTILE:   Jj = floor_tomb
FTILE:   Kk = floor_hall
FTILE:   L' = floor_slime
FTILE:   M" = floor_necro_squares
FTILE:   N` = floor_moss
FTILE:   O; = floor_sprouting_squares
FTILE:   P~ = floor_infernal_blank
FTILE:   .+ = floor_pebble_darkgray
MAP
xxvvvvvvvvvvvvvxx
xvvddvvvvvvveevvx
vvdDDdvvvvveeeevv
vddDDd+...+eEEEev
vddDDd+...+eEEEev
vvddddvvvvveeeevv
xvv++vv|||vv++vvx
xxv..v*****v..vxx
xxv..v%%%%%v..vxx
xvv++vv%%%vv++vvx
vvfFFfvv+vvhhhhvv
vffFFffv.vhhHHhhv
vffFFffv.vhhHHhhv
vvffffvv+vvhHHhvv
xvv++vvjjjvv++vvx
xxv..vjJJJjv..vxx
xxv..vjJJJjv..vxx
xvv++vvjjjvv++vvx
vvkKKkvv+vv''''vv
vkkKKkkv.v''LL''v
vkkKKkkv.+''LL''v
vvkkkkvvvvv'LL'vv
xvvkkvvvvvvv''vvx
xxv==vvvvvvvvvvxx
   @@
ENDMAP

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

NAME:   hangedman_staggered_hall
TAGS:   transparent allow_dup no_monster_gen
ORIENT: float
DEPTH:  Elf, !Elf:$, Crypt, !Crypt:$
: if you.in_branch("Crypt") then
TAGS:   patrolling
MONS:   skeletal warrior / eidolon, laughing skull band
MONS:   necromancer band / vampire mage band w:6
MONS:   vampire knight w:25 / vampire bloodprince w:5 / \
        bone dragon / revenant soulmonger / lich
SUBST:  x = e
: else
MONS:   deep elf zephyrmancer / deep elf knight / deep elf archer
MONS:   air elemental / thermic dynamo / dancing weapon
MONS:   deep elf knight band / deep elf archer band
MONS:   deep elf annihilator / deep elf sorcerer / deep elf high priest
: end
SUBST:  a : X., A : Y., b : XX., B : YY.
SUBST:  c : X.., C : Y., d : XX., D : YY.
SUBST:  X : xcccbv, Y : ccbv, e = c, % = %%$., * = %***|
MAP
     xxx.....................xxx
     x...........a.........X...x
     x..X.X...X.Xa....c...XXX..x
     x.XXXXXXXXXXb...c...d3XXX2x
     x..X%X%1%X%Xa........XXX..x
     x...........a.........X...xx
     xx...Y.........A...........x
      x..YYY........AY.Y...Y.Y..x
      x1YYY3D...C...BYYYYYYYYYY.x
      x..YYY...C....AY*Y%4%Y*Y..x
xxxxxxx...Y.........A...........x
x...........A.........Y...xxxxxxx
x..Y*Y%4%Y*YA....C...YYY..x
x.YYYYYYYYYYB...C...D3YYY1x
x..Y.Y...Y.YA........YYY..x
x...........A.........Y...xx
xx...X.........a...........x
 x..XXX........aX%X%1%X%X..x
 x2XXX3d..c....bXXXXXXXXXX.x
 x..XXX..c.....aX.X...X.X..x
 x...X.........a...........x
 xxx.....................xxx
ENDMAP

###############################################################################
# The air twists around and strikes you! The ettin shouts in stereo!
# The spriggan berserker goes berserk!
# The spriggan berserker moves out of view.
# You hear a shout! x27
#
# (Arguably doesn't work as well in Zot / entering Zot, but moths of wrath...)
NAME:   grunt_twist_and_shout
TAGS:   transparent
ORIENT: centre
DEPTH:  Depths, Zot, !Zot:$
PLACE:  Depths:$
{{
  if you.in_branch("Zot") then
     kmons("1 = draconian annihilator band")
     kmons("2 = moth of wrath")
     kmons("3 = base draconian")
     kfeat("1 = stone_stairs_down_i / stone_stairs_down_ii / "
           .. "stone_stairs_down_iii / escape_hatch_down")
     kfeat("t = petrified_tree")
     subst("*$RZ = .")
  elseif you.where() == dgn.level_name(dgn.br_entrance("Zot")) then
     kmons("1 = nonbase draconian")
     kmons("2 = base draconian")
     kitem("R = midnight gem")
     kfeat("1 = enter_zot")
     kfeat("Z = zot_statue")
     colour(".+123*$R = magenta")
     ftile(". = floor_depthstone")
     ftile("+123*$RZ = floor_zot_diamonds")
     nsubst("3 = 4:2 / 2 = 2. / *:.")
     kmons("* = golden dragon / shadow dragon / storm dragon / wyrmhole w:5"
           .. " / fire dragon / ice dragon")
     colour("c = lightmagenta")
  else
     local bigweight = you.absdepth() - 16
     local littleweight = 27 - you.absdepth()
     kmons("1 = titan w:" .. bigweight
           .. " / spriggan air mage w:" .. littleweight)
     kmons("2 = ettin w:" .. bigweight
           .. " / spriggan berserker w:" .. littleweight)
     kmons("3 = nothing")
     kitem("1 = superb_item")
     kitem("2 = any")
     subst("R = $")
     subst("Z = .")
  end
}}
SUBST:  G = GTt
NSUBST: @ = 1:@ / *:.
MAP
 .x...   .@.   .x...
...x...  ...  ...x...
..3x3.x...G.....3x3.x
.xx2xx.c.......xx2xx.
x.3x..c.......x..x3..
...x..c..cccccc..x...
 ...xcc.cc.Z..ccc.x.
  ...c..c........c.
  ...c..c+ccccc....
.....c..cR*$+.cc.....
@.G..c..c*1*c..c..G.@
.....cc.+$*$c..c.....
  ....ccccc+c..c...
  .c........c..c...
 .x.ccc..Z.cc.ccx...
...x..cccccc..c..x...
..3x..x.......c..x3.x
.xx2xx.......c.xx2xx.
x.3x3.....G...x.3x3..
...x...  ...  ...x...
 ...x.   .@.   ...x.
ENDMAP

NAME:   grunt_double_whammy
ORIENT: float
DEPTH:  Depths, !Depths:$
MONS:   ettin / deep troll
MONS:   deep elf blademaster / ettin
MAP
   cccccccc     cccccccc
  cc|*2...ccccccc......cc
 cc|**..2.+......cccccc.c
  cc|*2...ccccccccccccc.c
ccccccccccccccccccccccc.cc
@...1...1........1...1...@
..........................
@.1.....1........1.....1.@
..........................
@...1...1........1...1...@
cc.ccccccccccccccccccccccc
 c.ccccccccccccc...2*|cc
 c.cccccc......+.2..**|cc
 cc......ccccccc...2*|cc
  cccccccc     cccccccc
ENDMAP

# TODO: get this working for a random Pan demonic rune vault.
NAME:    grunt_bruiser_brothers
TAGS:    transparent no_monster_gen no_item_gen
TAGS:    depths_entry uniq_depths_entry chance_depths_entry zot_entry
ORIENT:  centre
DEPTH:   D:12-, !D:$, Depths, !Depths:$
PLACE:   D:$, Depths:$
WEIGHT:  2 (D:$, Depths:$), 5
SHUFFLE: })]b
: if you.in_branch("D") then
:   if you.where() ~= dgn.level_name(dgn.br_entrance("Depths")) then
MONS:    laughing skull band / efreet, skeletal warrior
MONS:    centaur warrior zombie, deep troll, boulder beetle
KITEM:   })] = demon whip / demon trident / demon blade / \
               hand cannon w:2 / book of the dragon / grand grimoire w:2
TILE:    b = bedevilled_crystal_gehenna
TILE:    c = wall_stone_scorched
:   else
MONS:    hell knight, deep troll, spriggan berserker zombie
MONS:    guardian sphinx zombie, red ugly thing
KMONS:   )] = occultist / rakshasa w:5
KITEM:   b = smoky gem
KFEAT:   } = enter_depths
TILE:    c = stone_wall_depths_entry
:   end
: else
:   if you.where() ~= dgn.level_name(dgn.br_entrance("Zot")) then
MONS:    juggernaut, hell knight, rakshasa, fire giant, flayed ghost
TILE:    b = bedevilled_crystal_gehenna
:   else
MONS:    black draconian knight, yellow draconian
MONS:    black draconian, juggernaut zombie, flayed ghost
KMONS:   "b = nonbase draconian w:30 / wyrmhole / \
              shadow dragon / golden dragon / storm dragon
KITEM:   b = midnight gem
KFEAT:   } = enter_zot
KFEAT:   )] = zot_statue
FTILE:   '"})]b = floor_zot_diamonds
FTILE:   .12345defgh-+& = floor_depthstone
:   end
: end
ITEM:    arbalest w:190 / hand cannon, javelin q:2, potion of curing pre_id
ITEM:    potion of heal wounds pre_id, potion of invisibility pre_id
KFEAT:   - = broken_door
NSUBST:  2 = 2:2 / 2:3 / 2:4 / * = 222334
SHUFFLE: 345
: single_cloud(_G, "O", "flame", false)
: set_feature_name("crystal_wall", "bedevilled crystal wall")
MAP
             cccc
             c})c
             c]bc
             c""c
             c''c
             c''c
             c++c
             c..c
             c2gc
            cc2ecc
            cc..cc
            c....c
            c....c
           cc....cc
           c......c
          cc......cc
ccccccccccc........ccccccccccc
c.h........................g.c
cc..e....................e2.cc
 cc....2................2..cc
  ccc.2..................ccc
    cc.....ccc..ccc.....cc
     ccc...c1c&.c1c...ccc
       cc..c-c..c-c..cc
        c............c
       cc............cc
       c..............c
       c..............c
      cc......++......cc
      c......c++c......c
      c....ccc..ccc....c
     cce2.cc c..c cc.2ecc
     cf2.cc  c..c  cc.2dc
     c.ccc   c..c   ccc.c
     ccc     c..c     ccc
             c..c
             c..c
             c..c
            cc..cc
           ccO..Occ
           c......c
           c......c
           cc....cc
            cc..cc
             c++c
              @@
ENDMAP

NAME:   kennysheep_kobold_lugonu_temple
TAGS:   transparent no_item_gen no_monster_gen no_trap_gen
DEPTH:  D:10-
ORIENT: float
MONS:   kobold demonologist
KMONS:  P = demonic plant
KMONS:  p = plant
KFEAT:  C = altar_lugonu
NSUBST: p = 3 = xctvmW.' / 5:P, x = 15 = xxctvm / *:x
NSUBST: - = 30 = Pxxxcctvm / 5:' / *:., . = 9:', ` = 3:'
SUBST:  mn : mn, G = GbP
MARKER: C = lua:fog_machine { cloud_type= "purple smoke", \
             pow_min = 2, pow_max = 4, delay = 15, \
             size = 2, walk_dist = 20, spread_rate= 33 }
FTILE:  'P1vbtmn = floor_pebble_red
TILE:    b = bedevilled_crystal_abyss
: vault_granite_statue_setup(_G, "G", "scintillating statue")
: set_feature_name("crystal_wall", "bedevilled crystal wall")
MAP
    ---------
  --....-....--
  -.-xxxxxxx-.-
 -.-.x--G--x.-.-
 -..-x-.-.-x-..-
-.xxxx-...-xxxx.-
-.x--p.-1-.p--x.-
.-x-...1C1...-x-.
.-xp.-.-`-.-.px-.
-.x--p..`..p--x.-
-.xxxxx+++xxxxx.-
 -.p--p.`.p--p.-
 -..pp..`..pp..-
  --...-`-...--
  -.--.-`-.--.-
   -----`-----
        @
ENDMAP

NAME:   kennysheep_demon_hangout
TAGS:   no_item_gen no_monster_gen no_trap_gen
ORIENT: float
DEPTH:  D:12-
MONS:   common demon, lesser demon
KFEAT:  t = demonic_tree
MAP
  lx@@@xl
 lll...lll
lll.....lll
ll.......ll
ll..1*2..ll
ll...t...ll
ll...2...ll
ll.......ll
lll.....lll
 lll...lll
  lx@@@xl
ENDMAP

NAME:   kennysheep_the_goblin_king
TAGS:   no_monster_gen no_trap_gen
ORIENT: float
DEPTH:  D:2-4
KMONS:  1 = Ijyb / hobgoblin, hobgoblin
KMONS:  2 = goblin
KMONS:  S = stack of scrap
KFEAT:  F = cache_of_fruit / cache_of_meat / cache_of_baked_goods
SUBST:  F : F.., S : SS.
MAP
xxxxxxxxx
xF.%1%.Fx
xG2...2Gx
x.2SSS2.x
xc2...2cx
x.......x
xc.....cx
x.......x
xG.....Gx
 @@@@@@@
ENDMAP

NAME:   kennysheep_steamy
TAGS:   no_monster_gen
ORIENT: float
DEPTH:  D:5-10
MONS:   steam dragon, fungus
KFEAT:  ^ = shaft
SUBST:  p = .....^22222wwwww
MAP
x                   xxxx
xxxxx             xxxppxxx
@pppxxx     xxxxxxxppppppx
@pppppxxxxxxxpppppppp...pxx
@ppppppppp..............1px
@.........ppppppppppp....px
@pppppppppxxxxxxxxxpp.1.ppx
@ppxxxxxxxx        xpppppxx
xxxx               xxpppxx
x                   xxxxx
ENDMAP

NAME:   ragdoll_tomb_raider
TAGS:   no_item_gen no_monster_gen patrolling
DEPTH:  D:14-, Depths, Crypt, !Crypt:$
ORIENT: float
KMONS:  1 = mummy
KMONS:  25 = guardian mummy
KMONS:  36 = mummy priest
KMONS:  47 = royal mummy
KMONS:  H = guardian sphinx
: if you.in_branch("Crypt") then
KMONS: M = Khufu, royal mummy
: elseif you.absdepth() <= 17 then
KMONS: M = Menkaure, mummy priest
: else
SUBST: M = 6
: end
KITEM:  $ = amulet_of_vitality / any good_item
KITEM:  12345d = gold / any / nothing
KITEM:  67M = superb_item / any
KFEAT:  ~ = trap_zot
: if you.absdepth() <= 17 then
SUBST: 12 = 12d, 3 = 123, 4 = 6, H = .
: else
SUBST: 4 = 67, 3 = 345, 2 = 23d, 1 = 12, H = H`
: end
SUBST:  C = c
NSUBST: ~ = 2:~ / 1:~. / *:.
COLOUR: Gc = yellow
TILE:   G = dngn_sarcophagus_sealed
TILE:   c = wall_tomb
COLOUR: C = white
TILE:   C = wall_lab_stone
FTILE:  .~cCG1234567M$ = floor_sandstone
: set_feature_name("granite_statue", "sealed sarcophagus")
MAP
xxxxxxxxxxxxxxxxxxxxx
xcccccccccccccccccccx
xc3cccGcccMcccGccc3cx
xc.c.....c.c.....c.cx
xcc...c...c...c...ccx
xccc.ccc.....ccc.cccx
xcc...ccc...ccc...ccx
xcGc...cc...cc...cGcx
xccc....cC.Cc....cccx
xc2.c...c.$.c...c.2cx
xccccc.ccC4Ccc.cccccx
xc2.c...ccGcc...c.2cx
xccc.....ccc.....cccx
xccG..C.......C..Gccx
xccc.....c.c.....cccx
xcc.c...cc3cc...c.ccx
xc1ccc...ccc...ccc1cx
xccccGc...c...cGccccx
xccccccc.....cccccccx
xccHHHcccC.CcccHHHccx
xc`````cc```cc`````cx
x`````````@`````````x
ENDMAP

## Plants, beasts, and humanoids alike gather in a splendid palace devoted to
## the worship of a life-bringing water deity.
NAME:     gammafunk_depths_water_palace
TAGS:     no_monster_gen patrolling no_pool_fixup
DEPTH:    Depths, !Depths:$
ORIENT:   float
KPROP:    a"E = no_tele_into
# The loot items need KITEM and KFEAT to place in water
KITEM:    % = %
KITEM:    $ = $
KITEM:    * = *
KITEM:    6| = |
KMONS:    1 = tengu warrior / tengu conjurer / ettin / stone giant / \
              spriggan berserker
KMONS:    2 = occultist / deep troll earth mage / spriggan air mage / \
              kobold fleshcrafter / deep elf high priest
KMONS:    3 = fire dragon / ice dragon / iron dragon / storm dragon
KMONS:    4 = tengu reaver / spriggan air mage / guardian sphinx
KMONS:    5 = golden dragon / quicksilver dragon / storm dragon
KMONS:    6 = juggernaut / spark wasp band / caustic shrike
KMONS:    F = orange crystal statue
KMONS:    KL = merfolk impaler / merfolk javelineer
KMONS:    M = elemental wellspring
KMONS:    N = ettin / stone giant / frost giant / fire giant
KMONS:    O = juggernaut
KMONS:    P = titan
KMONS:    Q = enchantress band
# Place either a giant band headed by a titan or the Enchantress band, if the
# latter is available.
: if not you.uniques("Enchantress") then
SHUFFLE:  NOP / kkQ
: end
KMONS:    h = plant / fungus
KITEM:    PQ = wellspring talisman / wellspring talisman randart w:2
KFEAT:    -"h3456HJK%$*| = W
KFEAT:    L = w
KFEAT:    t = mangrove
SHUFFLE:  FH / IJ
SUBST:    i : ch, j : ch, a' = hhhhW, k = .
SUBST:    E = 5, I = G, J = 4, K = KW, L = Lw, M = LM, R = 45
NSUBST:   F = F / G
COLOUR:   c = white
COLOUR:   .12NOPQ = lightblue
COLOUR:   x = blue
TILE:     x = wall_pebble_cyan
FTILE:    .TUwWah123456DFHMNO|$*%$+xctG = floor_sprouting_squares
MAP
      ccccccccccccccccccccccccc
    cccttct1t.t.-Gx-Fx-Fx-tctTccc
   cc-...+....2.------H----+-wwwcc
  ccG-.1.+.t1t.t--Gx-Fx-Fx-+---wwcc
  ccc-.Gccciiccccccccccccccc----wwc
  ccGK.cca""cccccUGUccccc''-3x---Lc
 cccc-.naE"cccc--*6*--cccc'-t-t--wcc
 cT---.n""accc---$%$---ccc'--x4t-wwc
 ct1...c"acccR---ccc---Rccc'-t-x--wc
 cccc++c"accc--cccGccc--ccc'--t3t-Mc
cctGt..caacc--cc*%$%*cc--cc''--x--wcc
c..1...caccc--ct-----tc--cccG-t-t-wTc
+.---..ntcU|$----NON------++-5----llc
+.-U-.2nUcG6|----.P.--5---++---U--lGc
+.---..ntcU|$----NON------++-5----llc
c..1...caccc--ct-----tc--cccG-t-t-wTc
cctGt..caacc--cc*%$%*cc--cc''--x--wcc
 cccc++c"accc--cccGccc--ccc'--t3t-Mc
 ct1...c"acccR---ccc---Rccc'-t-x--wc
 cT---.n""accc---$%$---ccc'--x4t-wwc
 cccc-.naE"cccc--*6*--cccc'-t-t--wcc
  ccGK.cca""cccccUGUccccc''-3x---Lc
  ccc-.Gcccjjccccccccccccccc----wwc
  ccG-.1.+.t1t.t----Ix-----+---wwcc
   cc-...+....2.------J----+-wwwcc
    cccttct1t.t.-Gx----Ix-tctTccc
     ccccccccccccccccccccccccccc
ENDMAP

NAME:   cheibrodos_breeding_chamber
TAGS:   no_item_gen no_monster_gen
DEPTH:  D:10-
ORIENT: float
MONS:   arcanist, occultist, ugly thing, very ugly thing
SUBST:  y = * |:4, r = *:2 %
NSUBST: ' = 6:3 / *:.
: if you.depth() > 11 then
SUBST:  1 = 11222
NSUBST: " = 1:4 / *:.
: else
NSUBST: " = 1:3 / *:.
: end
MAP
    cccccccccc         cccccccccc
   cccccGcccccc       ccccccGccccc
  ccc.WW'''WWcccc   ccccWWW'''''ccc
 cccW''''WW''WcccccccccWWWWW''''Wccc
 cccWWccGccW'''cccUccc'''WccGccWWccc
 ccWWccccccc''''WWWWW''''cccccccWWcc
 ccWWccccccccWW''WWW''WWccccccccWWcc
 cccWWccrrrcccW''''''WWcccyrrccWWccc
 cccWWWW"""yccc''''''Wcccr"1""WWWccc
  cccWW""1"rcccW'''''Wcccy"""WWWccc
   cccccrryccccW.....Wccccrrrccccc
    cccccccccccW....WWccccccccccc
      cccccccccc...WWcccccccccc
             ccccn+ncccc
                 .@.
ENDMAP

NAME:   cheibrodos_poisonous_passages
TAGS:   no_item_gen no_monster_gen transparent
DEPTH:  Depths, !Depths:$
ORIENT: float
: local brnd = crawl.random2(15)
: if brnd >= 10 then
MONS:   mana viper / naga warrior / naga mage
MONS:   nagaraja / naga ritualist / w:8 green death
: elseif brnd >= 5 then
MONS:   jumping spider / wolf spider / tarantella
MONS:   emperor scorpion / w:8 green death / w:3 ghost moth
: else
MONS:   skeletal warrior ; long sword ego:venom | broad axe ego:venom | \
                           partisan ego:venom
:   mons("reaper ; " .. scythe("venom") .. " / green death w:8 / " ..
:        "ancient champion ; battleaxe ego:venom | glaive ego:venom")
: end
KMONS:  A = lich
KFEAT:  A = stone_arch
KPROP:  '? = no_tele_into
KMASK:  '? = opaque
NSUBST: - = 4:| / 4:* / 4:% / *:.
SUBST:  G : G.
MARKER: ? = lua:fog_machine { cloud_type = "poison gas", pow_min = 2, \
        pow_max = 7, delay = 30, start_clouds = 1, size_min = 1, \
        size_max = 7, spread_rate = 1 }
: vault_metal_statue_setup(_G, "G", "alchemical conduit")
MAP
                  ccccccc
                cccc'?'cccc
              ccc'''''''''ccc
             cc?'''nnnnn'''?cc
            cc'''nnn---nnn'''cc
           cc'''nn...1...nn'''cc
           c'''nn-..2A2..-nn'''c
           c''nn-..1.2.1..-nn''c
           c'''nn-...G...-nn'''c
           cc?''nn.......nnn'?cc
            cc'''nn.....nn'''cc
             cc'''nn...nn'''cc
              cc'''n...n'''cc
     ccccc     cc''n...n''cc     ccccc
   ccc'''ccc  cc?''n...n''?cc  ccc'''ccc
  cc?'''''?cccc'''ccc+ccc'''cccc?'''''?cc
 cc'''nnn''''''''cc.....cc''''''''nnn'''cc
 c''nnn-nnn''''ccc.......ccc''''nnn-nnn''c
cc'nn-...-nnnnnc...cncnc...cnnnnn-...-nn'cc
c''n..2.1......c...n'''n...c......1.2..n''c
c?'n..A1.G.....+...c'?'c...+.....G.1A..n'?c
c''n..2.1......c...n'''n...c......1.2..n''c
cc'nn-...-nnnnnc...cncnc...cnnnnn-...-nn'cc
 c''nnn-nnn''''ccc.......ccc''''nnn-nnn''c
 cc'''nnn'''''cc cc.....cc cc'''''nnn'''cc
  cc?'''''?cccc   ccc+ccc   cccc?'''''?cc
   ccc'''ccc                   ccc'''ccc
     ccccc                       ccccc
ENDMAP

NAME:   cheibrodos_birdhouse
TAGS:   no_item_gen no_monster_gen no_pool_fixup no_descent
DEPTH:  Depths, !Depths:$
ORIENT: float
MONS:   tengu warrior, tengu conjurer, chonchon, tengu reaver
KFEAT:  m = iron_grate
KFEAT:  F = cache_of_fruit / cache_of_meat / cache_of_baked_goods
NSUBST: " = 2 = FFF1W / * = ........1W
NSUBST: ' = 2:4 / 1:3 / 1:3. / 4=12 / *:.
NSUBST: ? = 3:* / *:%
MAP
           .........
          ..wwwWwww..
          .wwwWWWwww.
          .wwWxmxWww.
          .wWxx"xxWw.
          .WWm"""mWW.
          .wWxx"xxWw.
          .wwWx+xWww.
          .wwWx'xWww.
         ..wWxx'xxWw..
 .........WWWx?'?xWWW.........
..wwwWwwwWWWWx'''xWWWwwwwWwww..
.wwwWWWwwWWW+x'''x+WWWwwWWWwww.
.wwWxmxWWxxxx'''''xxxxWWxmxWww.
.wWxx"xxxx?'''''''''?xxxx"xxWw.
.WWm"""+'''''''''''''''+"""mWW.
.wWxx"xxxx?'''''''''?xxxx"xxWw.
.wwWxmxWWxxxx'''''xxxxWWxmxWww.
.wwwWWWwwWWW+x'''x+WWWwwWWWwww.
..wwwWwwwwWWWx'''xWWWwwwwWwww..
 .........WWWx?'?xWWW.........
         ..wWxx'xxWw..
          .wwWx'xWww.
          .wwWx+xWww.
          .wWxx"xxWw.
          .WWm"""mWW.
          .wWxx"xxWw.
          .wwWxmxWww.
          .wwwWWWwww.
          ..wwwWwww..
           .........
ENDMAP

NAME: cheibrodos_magma_flow
TAGS: no_item_gen no_monster_gen
DEPTH: D:11-, !D:$, Lair:3-, !Lair:$
ORIENT: float
KMONS: ' = lava snake
KMONS: ? = molten gargoyle
KFEAT: ?-' = lava
NSUBST: - = 2:?
NSUBST: l = 5:'
MAP
                              xx@@xx
                              xx..xxx
         xxxxx xxxx          xxx..llx
  xxx  xxxlllxxxllxxxx       xxx..llx
 xx[xxxxlllx-llll..llxx     xxx..lllx
 xx.xxllllxxxxl.....llxx    xxx..lllx
xxl.lllllxxxxx...ll..lxx   xxxx..lllx
xGll....lxxxx...llll.llxx xxxx..llllx
xxl.lll...xx...lllxx..llxxxx..xxlllxx
 xx.xxlll.....ll-xxxx........xxxllxx
 xx(xxxxlll.lllxxx  xll...llxxxlllx
  xxx  xxxllllxx    xxlllllxxllll-x
         xxxxxx      xxllllllllllxx
                      xxllllllllxx
                       xx-lxxxxxx
                        xxxxx
ENDMAP

NAME:   kennysheep_slugbush
DEPTH:  D:3-7
ORIENT: float
MONS:   dart slug
NSUBST: w = 15 : xxc / *:w
NSUBST: . = 1:[GG.. / 1:(GG.. / 1:G. / 5:%
SUBST:  G : GtT
SUBST:  1 = 11111..
KPROP:  w = no_tele_into
MAP
         @
    @  WW1WW  @
     1wWwwwww1
    wwwWwwwwwww
 @ wwwwWWWwwwwww @
  1wwwwwwWWwwwww1
  wwwwwwwwWwwwwww
 wwww.wwwWWwwwwwww
 www.www...w...www
@1ww.....{.....ww1@
 www..ww...ww.wwww
 wwwwwwwWWwwwwwwww
  wwwwwwWwwwwwwww
  1wwwwwWwwwwwww1
 @ wwwwwWWwwwwww @
    wwwwwWWwwww
     1wwwwwWw1
    @  WW1WW  @
         @
ENDMAP

NAME:    hangedman_elemental_death_ray
TAGS:    transparent patrolling no_descent
DEPTH:   D:12-, !D:$, Depths, !Depths:$
ORIENT:  float
MONS:    arcanist ; staff of fire | quarterstaff ego:flaming . \
                    robe ego:resistance
MONS:    occultist ; staff of cold | quarterstaff ego:freezing . \
                     robe ego:resistance
MONS:    frost giant ; great sword ego:flaming
MONS:    fire giant ; battleaxe ego:freezing
MONS:    ettin simulacrum, hell hog
KMONS:   7 = harpy simulacrum
KMONS:   8 = efreet
KMONS:   9 = thermic dynamo
KITEM:   d = *, triple crossbow ego:flaming pre_id
KITEM:   e = *, lajatang ego:freezing pre_id
SHUFFLE: 12, 34, 5df / 6eF, {[(<
FTILE:   fF'@{[(< = floor_pebble_darkgray
COLOUR:  fF'@ = white
MARKER:  f = lua:fog_machine {cloud_type = "freezing vapour", \
             pow_min = 6, pow_max = 6, delay = 150, \
             size_min = 2, size_max = 2, walk_dist = 0, start_clouds = 1 }
MARKER:  F = lua:fog_machine {cloud_type = "flame", \
             pow_min = 6, pow_max = 6, delay = 200, \
             size_min = 2, size_max = 2, walk_dist = 0, start_clouds = 1 }
:  if you.in_branch("D") then
SUBST:   3 = 1, 4 = 2
NSUBST:  5 = 1:7 / 1:7. / *:., 6 = 1:8 / 1:8. / *:.
:  end
MAP
 ......                    @{[
..bbbb..                   xxx
.bb51bb..
.+53dbfF''fF'
.bb59bb..   'fF'
..bbbb..       'fF@
 ......           'fF'           ......
                     @fF'       ..bbbb..
                        'fF'   ..bb96bb.
                           'fF''fFbe46+.
                               ..bb26bb.
          xxx                   ..bbbb..
          (<@                    ......
ENDMAP

# the +4 great sword "Dinovoldo's Tail" {explosions}
NAME:   regret_index_qazlal_generations
TAGS:   no_monster_gen no_item_gen no_pool_fixup
TAGS:   depths_entry chance_depths_entry
DEPTH:  Depths, !Depths:$, Zot, !Zot:$
PLACE:  D:$, Depths:$
WEIGHT: 1 (Depths:$), 2 (D:$), 10
ORIENT: float
KMONS:  q = fire elemental / rime drake / basilisk
KMONS:  r = red ugly thing / white ugly thing / cyan ugly thing w:15
KMONS:  s = deep elf pyromancer / cyclops
KMONS:  t = lindwurm / wind drake / boulder beetle
KMONS:  u = arcanist / occultist / tengu conjurer
KMONS:  1 = red very ugly thing / white very ugly thing / \
            cyan very ugly thing w:15
KMONS:  2 = fire dragon / ice dragon
KMONS:  3 = dancing weapon ; broad axe ego:flaming | scimitar ego:freezing | \
                             partisan ego:electrocution | flail ego:heavy
KMONS:  4 = stone giant w:15 / fire giant / frost giant
KMONS:  5 = spark wasp / catoblepas
KMONS:  6 = storm dragon / iron dragon / titan / war gargoyle
KMONS:  7 = spriggan defender ; staff of fire | staff of cold | \
                                staff of air | staff of earth . \
                                robe ego:resistance good_item pre_id
KMONS:  8 = tengu reaver ; battleaxe ego:flaming | great sword ego:freezing | \
                           halberd ego:electrocution | lajatang ego:heavy . \
                           fire dragon scales | ice dragon scales
KMONS:  9 = red draconian / white draconian / black draconian
KMONS:  0 = red draconian stormcaller / white draconian stormcaller / \
            black draconian stormcaller
KMONS:  ! = orb of appropriateness / electric golem / ice fiend / iron giant
KMONS:  & = ancient lich
KITEM:  $ = $ no_pickup
KITEM:  y = $ no_pickup, smoky gem
KITEM:  z = $ no_pickup, midnight gem
KITEM:  | = staff of cold randart artprops:fire&Stlth:-2 / \
            staff of fire randart artprops:ice&Stlth:-2 / \
            staff of air randart artprops:earth&Stlth:-2 / \
            staff of earth randart artprops:air&Stlth:-2 / \
            storm dragon scales plus:6 randart artprops:rF&rC&Stlth:-2 / \
            fire dragon scales plus:6 randart artprops:rElec&Stlth:-2 / \
            storm talisman randart artprops:rC&Stlth:-2 / \
            dragon-coil talisman randart artprops:rElec&Stlth:-2 / \
            book of annihilations / manual of invocations w:2
KFEAT:  ~ = .
KFEAT:  _ = altar_qazlal
KFEAT:  Y = enter_depths
KFEAT:  Z = enter_zot
KFEAT:  ? = zot_statue
SUBST:  A = 1 3:14, B = 2 4:14, C = 5:14 6
: if you.where() == dgn.level_name(dgn.br_entrance("Depths")) then
TAGS:   uniq_depths_entry
SUBST:  1 = q, 2 = r, 3 = s, 4 = t, 56 = u
NSUBST: ! = 1:1 / 1:2 / *:?, | = 2:| / *:*
SUBST:  } = Y, ] = $, ) = y, ? = l
FTILE:  ?_$|*yY12 = floor_depthstone
TILE:   c = wall_stone_scorched
: elseif you.where() == dgn.level_name(dgn.br_entrance("Zot")) then
SUBST:  } = Z, ] = $, ) = z, 1 = 9
NSUBST: ! = 1:8 / 1:9 / 2  = 80
FTILE:  .234569+ = floor_depthstone
: elseif you.in_branch("Zot") then
SUBST:  ) = ))>, ] = ]]>, 1 = 9, 4 = 0, ? = l
NSUBST: ! = 1:6 / 1:0 / 1:! / 1:&
: else
SUBST:  )] = ., ? = l
NSUBST: ! = 2:6 / 1:77& / 1:8, 45 = 1:78&
: end
SHUFFLE: '"-`
COLOUR:  ' = red
COLOUR:  " = white
COLOUR:  - = lightblue
COLOUR:  ` = brown
FTILE:   ' = floor_pebble_red
FTILE:   " = floor_pebble_white
FTILE:   - = floor_pebble_cyan
FTILE:   ` = floor_pebble_brown
FTILE:   ~$ = floor_pebble_darkgray
KPROP:   ~wl = no_tele_into
MAP
                 bbbb
                bbbbbb
     .@.       bbb..bbb       .@.
    ..c..     bbb....bbb     ..c..
   ..cnc..   bbbB.bb.Cbbb   ..cnc..
  ..cncnc.. bbb.....b..bbb ..cncnc..
  @cncccnc.bbb..bb''b...bbb.cncccnc@
  ..cncccncbb..b.``'".b..bbcncccnc..
   ..cncccbb+..b.`-"".b..+bbcccnc..
    ..cncbb2+b...b--bb..b+4bbcnc..
     ..cbb4.nbb..b.....bbb.2bbc..
      bbb2.nnnbbC.bb.Bbbw+n.4bbb
     bbb++nnl~wbb....bbw$l+bbbbbb
    bbb..bbn~l~wbb..bbw$l$wbb..bbb
   bbb....bbw~l~wbbbbw$l$wbb....bbb
  bbb...b..bbw~l~wbbw$l$wbb...'..bbb
 bbbB..''b.Bbbw~?nnn+l$wbbA.`..'.Abbb
bbb..b.b'....bbwnn|!n+wbb..`..b.'..bbb
bb..b``..b"...bbn|]}!nbb..`.b.......++
bb...`b..""b..bbn!_)|nbb.......b."..++
bbb....-b.b..bbwnn!|nnwbb..-.b.."..bbb
 bbbB.b--..Bbbw~lnnnn?~wbbA.-..".Abbb
  bbb..b...bbw~l~wbbw~l~wbb..-...bbb
   bbb....bbw~l~wbbbbw~l~wbb....bbb
    bbb..bbn~l~wbb..bbw~l~nbb..bbb
     bbb++nnl~wbb....bbw~lnn++bbb
      bbb2.nnnbbA.'b.Bbbnnn.1bbb
     ..bbb1.nbb...b'...bbn.2bbc..
    ..cncbb2+b....'.....b+1bbcnc..
   ..cncccbb+..b`..."b"..+bbcccnc..
  ..cncccnbbb..`b`..."b..bbcncccnc..
  @cncccnc.bbb.....-....bbb.cncccnc@
  ..cncnc.. bbb...-b...bbb ..cncnc..
   ..cnc..   bbbB.b-.Abbb   ..cnc..
    ..c..     bbb....bbb     ..c..
     .@.       bbb..bbb       .@.
                bbbbbb
                 bbbb
ENDMAP

NAME:    regret_index_uskayaw_diablada_macabre
TAGS:    no_monster_gen no_item_gen patrolling
DEPTH:   Depths:2-, !Depths:$
ORIENT:  float
# The dances of angels and devils, of blessed birds and antagonist serpents...
# and perhaps the stinger plunging into the poor toro de lidia?
MONS:    dancing weapon ; glaive ego:antimagic
MONS:    cherub, rakshasa, angel / daeva w:15, balrug / blizzard demon
MONS:    caustic shrike, spectral quicksilver dragon
KMONS:   8 = tengu reaver
KMONS:   9 = shadow dragon
KMONS:   0 = hornet
KMONS:   & = minotaur
KMONS:   ? = spark wasp
KMONS:   ! = catoblepas
KFEAT:   _ = altar_uskayaw
# Rotate pillars, monster sets, stairs.
# No doors to aide the wasps, but still use doors to nerf the birds.
SHUFFLE: vb, ABCDEF, 2345+ / 6789+ / 0&!?-, {}, {[(, }])
SUBST:   A = c, B : c., C : c., DEF- = .
MAP
      xx.@...xx
    xxxvvvcbbbxxx
   xxvvv$$c$$bbbxx
  xxvv.........bbxx
 xxvv...b.4.v...bbxx
xxvv.3.bb+c+vv.4.bbxx
xbb...bb2...2vv...vvx
.b**bbb...B...vvv%%v.
.b*bb....A.C....vv%v.
.bbb....F1..D}...vvv@
.nnnnn.E.._..E.nnnnn.
@bbb...{D..1F....vvv.
.b%bb....C.A....vv*v.
.b%%bbb...B...vvv**v.
xbb...bb3...3vv...vvx
xxvv.5.bb+c+vv.2.bbxx
 xxvv...b.5.v...bbxx
  xxvv.........bbxx
   xxvvv$$c$$bbbxx
    xxvvvvcbbbxx
     xx....@.xx
ENDMAP

################################################################################
# An octagon series
#
NAME:   minmay_shoctagon
DEPTH:  D:12-, Elf, Depths
ORIENT: float
ITEM:   book of air / book of lightning / book of storms / \
        manual of air magic / staff of air pre_id / lightning rod w:20 / \
        storm dragon scales w:5 / storm talisman w:5
KITEM:  2 = arc blade / quick blade ego:electrocution randart pre_id / \
        glaive of the guard / \
        demon trident ego:electrocution randart pre_id / storm bow
: if you.in_branch("D") then
:     if you.depth() < 14 then
MONS:   raiju / sixfirhy w:5
KMONS:  2 = shock serpent / deep elf zephyrmancer
:     else
MONS:   raiju / sixfirhy
KMONS:  2 = deep elf zephyrmancer / shock serpent / storm dragon
:     end
: elseif you.in_branch("Elf") then
MONS:   air elemental / deep elf zephyrmancer
KMONS:  2 = storm dragon
# Depths
: else
MONS:   spark wasp w:20 / storm dragon
KMONS:  2 = titan
: end
: minmay_elemental_octagon_setup(_G)
MAP
    xxx@xxx
   xxp...pxx
  xxp..r..pxx
 xxp.......pxx
xxp...aaa...pxx
xp...11111...px
x...a1DdD1a...x
@.r.a1dqd1a.r.@
x...a1DdD1a...x
xp...11111...px
xxp...aaa...pxx
 xxp.......pxx
  xxp..r..pxx
   xxp...pxx
    xxx@xxx
ENDMAP

NAME:   minmay_roctagon
DEPTH:  D:10-, Elf, Depths
ORIENT: float
ITEM:   book of geomancy / book of the earth / book of iron / \
        manual of earth magic / staff of earth pre_id / \
        ring of protection pre_id / tin of tremorstones / \
        crystal plate armour w:5 / granite talisman w:5
KITEM:  2 = devastator / eveningstar ego:heavy randart pre_id \
        / dark maul
: if you.in_branch("D") then
:     if you.depth() < 13 then
MONS:   two-headed ogre / basilisk / gargoyle / boulder beetle w:5
KMONS:  2 = catoblepas w:30 / stone giant / deep troll earth mage
:     else
MONS:   basilisk / gargoyle / boulder beetle / catoblepas
KMONS:  2 = stone giant / deep troll earth mage / crystal guardian
:     end
: elseif you.in_branch("Elf") then
MONS:   earth elemental w:20 / stone giant / war gargoyle
KMONS:  2 = iron dragon / crystal guardian
# Depths
: else
MONS:   iron troll w:20 / stone giant w:20 / iron dragon \
        / walking earthen tome / walking crystal tome / juggernaut
KMONS:  2 = iron giant
: end
: minmay_elemental_octagon_setup(_G)
MAP
    xxx@xxx
   xxp...pxx
  xxp..r..pxx
 xxp.......pxx
xxp.a.a.a.a.pxx
xp...11111...px
x...a1DdD1a...x
@.r..1dqd1..r.@
x...a1DdD1a...x
xp...11111...px
xxp.a.a.a.a.pxx
 xxp.......pxx
  xxp..r..pxx
   xxp...pxx
    xxx@xxx
ENDMAP

NAME:   minmay_coctagon
DEPTH:  D:10-, Elf, Depths
ORIENT: float
ITEM:   book of frost / book of ice / book of winter / \
        book of the tundra / manual of ice magic / \
        wand of iceblast pre_id / staff of cold pre_id / \
        phial of floods / ice dragon scales w:5 / \
        dragon-coil talisman w:5
KITEM:  2 = frostbite / battleaxe ego:freezing randart pre_id \
        / broad axe ego:freezing randart pre_id
: if you.in_branch("D") then
:     if you.depth() < 13 then
MONS:  simulacrum / polar bear / rime drake
KMONS: 2 = ice dragon / freezing wraith
:     else
MONS:  simulacrum place:D:$ / rime drake / freezing wraith
KMONS: 2 = ice dragon / frost giant
:     end
: elseif you.in_branch("Elf") then
MONS:  deep elf blademaster simulacrum / freezing wraith / ice dragon \
       / deep elf knight
KMONS: 2 = frost giant / walking frostbound tome w:5
: else -- Depths
MONS:   simulacrum w:20 / ice dragon / frost giant
KMONS:  2 = ice fiend / walking frostbound tome
: end
: minmay_elemental_octagon_setup(_G)
MAP
    xxx@xxx
   xxp...pxx
  xxp..r..pxx
 xxp.......pxx
xxp..aa.aa..pxx
xp..a11111a..px
x...a1DdD1a...x
@.r..1dqd1..r.@
x...a1DdD1a...x
xp..a11111a..px
xxp..aa.aa..pxx
 xxp.......pxx
  xxp..r..pxx
   xxp...pxx
    xxx@xxx
ENDMAP

NAME:   minmay_firetagon
DEPTH:  D:10-, Elf, Depths
ORIENT: float
ITEM:   book of flames / book of fire / everburning encyclopedia / \
        manual of fire magic / staff of fire pre_id / \
        fire dragon scales w:5 / dragon-coil talisman w:5
KITEM:  2 = firestarter / eveningstar ego:flaming pre_id \
        / demon whip ego:flaming randart pre_id
: if you.in_branch("D") then
:     if you.depth() < 13 then
MONS:   fire bat / fire elemental / smoke demon w:5
KMONS:  2 = deep elf pyromancer / efreet / salamander tyrant / fire dragon
:     else
MONS:   fire elemental / smoke demon / sun demon / efreet / deep elf pyromancer
KMONS:  2 = salamander tyrant / fire dragon / fire giant
:     end
: elseif you.in_branch("Elf") then
MONS:   fire elemental / deep elf pyromancer / fire dragon
KMONS:  2 = fire giant
# Depths
: else
MONS:   fire dragon / fire giant / salamander tyrant
KMONS:  2 = hellephant
: end
: minmay_elemental_octagon_setup(_G)
MAP
    xxx@xxx
   xxp...pxx
  xxp..r..pxx
 xxp.......pxx
xxp.aa...aa.pxx
xp..a11111a..px
x....1DdD1....x
@.r..1dqd1..r.@
x....1DdD1....x
xp..a11111a..px
xxp.aa...aa.pxx
 xxp.......pxx
  xxp..r..pxx
   xxp...pxx
    xxx@xxx
ENDMAP

NAME:    minmay_guarded_unrand_majin_bo
ORIENT:  float
DEPTH:   Depths, Crypt
: if you.in_branch("Depths") then
MONS:    necromancer w:5 / chonchon w:5 / vampire mage
: else
MONS:    necromancer / vampire mage
: end
MONS:    lich w:40 / ancient lich / dread lich
ITEM:    majin-bo no_pickup pre_id
ITEM:    any magical staff / any book
NSUBST:  d = 1:d / *:e
NSUBST:  1 = 4:1 / 8=1... / .
SUBST:   2 = 2.
SUBST:   c : c b:2 v:2
SUBST:   Y : YVbn .:40
MAP
 ccc       ccc
cc.cccccccccdcc
@.c...c1c...cdc
cc.....c.....cc
 c..Y.1c1.Y.2c
cc...1.c.1...cc
c1c.1.c1c.1.c1c
cc1ccc1c1ccc1cc
c1c.1.c1c.1.c1c
cc...1.c.1...cc
 c..Y.1c1.Y..c
cc.....c...2.cc
cdc.2.c1c...cdc
ccdcccccccccdcc
 ccc       ccc
ENDMAP

NAME:    minmay_guarded_unrand_sceptre_of_torment
ORIENT:  float
DEPTH:   Depths, Crypt
MONS:    mummy priest, royal mummy
KITEM:   d = sceptre_of_torment no_pickup pre_id
KMONS:   d = royal mummy
: if you.in_branch("Depths") then
FTILE:   .12d = floor_necro_squares
: end
MAP
ccccccccccc@ccccccccccc
 cc2.....cc..c.....1cc
  cc..cc..cc...cc..cc
   cc..cc..cc1cc..cc
    cc..cc..ccc..cc
     cc..cc..c..cc
      cc..cc...cc
       cc..cc2cc
        cc..ccc
         ccdcc
          ccc
ENDMAP

# Until somebody comes up with a gimmick to revive the old unrand and its
# name, this just provides a randart using the brand it was graduated into.
NAME:    minmay_guarded_unrand_sword_of_power
TAGS:    vaults_orient_e
DEPTH:   D:13-, Vaults, !Vaults:$
ORIENT:  float
WEIGHT:  3 (Vaults), 10
MONS:    vault guard
: item("great sword randart ego:valour plus:" .. crawl.random_range(6, 9))
: vaults_hard_standard(_G)
MAP
 vvvvvvvv
vv......vv
v.8..G811vv
v.....11..vv
v...vvv....v
v...+dn....@
v...vvv....v
v.....11..vv
v.8..G811vv
vv......vv
 vvvvvvvv
ENDMAP

NAME:    minmay_guarded_unrand_guard
TAGS:    vaults_hard vaults_orient_n
DEPTH:   D:12-, Vaults, !Vaults:$
WEIGHT:  5 (Vaults), 10
ORIENT:  float
ITEM:    glaive_of_the_guard no_pickup
SUBST:   b : bxcmG.T
NSUBST:  3:9 / 4=9. / ., 8 = 2:8 / 6=8.. / .
: if you.in_branch("Vaults") then
SUBST:   @ = .
:   vaults_hard_standard(_G)
: end
MAP
vvvvvvv@vvvvvvv
v...v*v.v*v...v
v8b8.*n.n*.8b8v
v.8.v*v.v*v.8.v
vv.vvvv.vvvv.vv
v.9.vv.9.vv.9.v
v.b9..9b9..9b.v
v.9.vv...vv.9.v
vv.vvvvnvvvv.vv
vv.vvv...vvv.vv
v.8.v..*..v.8.v
v8b8..*d*..8b8v
v...v..*..v...v
vGvGvv...vvGvGv
vvvvvvvvvvvvvvv
ENDMAP

NAME:    cheibrodos_frozen_isle
TAGS:    no_item_gen no_monster_gen no_pool_fixup vaults_hard
DEPTH:   D:8-, Vaults, !Vaults:$, Zot
ORIENT:  float
ITEM:    rimehorn talisman / rimehorn talisman randart w:2
: if you.branch() == "Zot" then
# No blinking off, no scorching.
MONS:    white draconian stormcaller / white draconian annihilator / \
         white draconian monk / white draconian knight ; glaive ego:freezing . \
                                                         cloak
MONS:    white draconian ; halberd ego:freezing . cloak
KMONS:   8 = orb of winter
NSUBST:  . = 1:{} / 1 = ):50 / 1 = ]:40 >
NSUBST:  - = 4:1 / 4:2 / 2 = 122 / *:-
SHUFFLE: {([, })]
SUBST:   b : bm
# Something terrible can still follow you away from the island regardless.
:   if dgn.zot_orb_type() == "orb of winter" then
NSUBST:  1 = 1:8 / 1:2 / *:1
:   end
:   vault_metal_statue_setup(_G, "b", "icy conduit")
: elseif you.branch() == "Vaults" then
MONS:   ironbound frostheart, arcanist / white very ugly thing w:2
SUBST:  @ = ., b = m
NSUBST: - = 2:1 / 2:2 / 2 = 122 / *:-
:   vaults_hard_standard(_G)
FTILE:  - = floor_metal_gold
: else -- D
:   if you.depth() > 11 then
MONS:   arcanist / deep elf knight w:2, ice devil
NSUBST: - = 3:1 / 3:2 / 2 = 122 / *:-
:   else
MONS:   arcanist, ice devil, ufetubus
NSUBST: - = 1:1 / 3:2 / 4:3 / 4 = 12 / *:-
:   end
SUBST:  b = bmm
TILE:   b = bedevilled_crystal_cocytus
:   set_feature_name("crystal_wall", "bedevilled crystal wall")
: end
KMONS:  8 = ice statue
KFEAT:  8 = >
NSUBST: ' = 5=*$ / *:%, $ = 1:dd$ / *:$
KPROP:  -W1238$%* = no_tele_into
KMASK:  -W1238$%* = opaque
MAP
        ...
       ..x..
  ......xxx......
  .xx..wwwww..xx.
  .xxxwwWWWwwxxx.
  ..xxWW---WWxx..
  ..wWW-----WWw..
 ..wwW-bm-mm-Www..
..xwW--m'''m--Wwx..
@xxwW---'8'---Wwxx@
..xwW--m'''m--Wwx..
 ..wwW-mm-mb-Www..
  ..wWW-----WWw..
  ..xxWW---WWxx..
  .xxxwwWWWwwxxx.
  .xx..wwwww..xx.
  ......xxx......
       ..x..
        ...
ENDMAP

NAME:    cheibrodos_iron_armory
TAGS:    no_item_gen no_monster_gen no_descent
DEPTH:   D:6-11
ORIENT:  float
MONS:    rust devil, orc warrior
ITEM:    scimitar / scimitar good_item w:1
ITEM:    halberd / halberd good_item w:1
ITEM:    war axe / war axe good_item w:1
ITEM:    morningstar / morningstar good_item w:1
ITEM:    plate armour / plate armour good_item w:1
ITEM:    chain mail / chain mail good_item w:1
ITEM:    fortress talisman
SHUFFLE: defg
KPROP:   ')+12defghij = no_tele_into
MAP
    .....
  ...vnv...
 ..nvvAvvn..
 .vvv1'1vvv.
..vd'''''ev..
.vvv''j''vvv.
.vh+'2G2'+iv.
.vvv'''''vvv.
..vf'''''gv..
 .vvv===vvv.
 ..nvv)vvn..
  ...vnv...
    .....
ENDMAP

NAME:   cheibrodos_quashed
TAGS:   no_item_gen no_monster_gen
DEPTH:  D:4-8
ORIENT: float
MONS:   drude
KPROP:  -A = no_tele_into
NSUBST: - = 2:1 / 2=1. / 1:* / 5=%$.
MAP
 .......
..xxxxx..
.xx---xx.
@m--A--m@
.xx---xx.
..xxxxx..
 .......
ENDMAP

NAME:   cheibrodos_shockbox
TAGS:   no_item_gen no_monster_gen
DEPTH:  D:7-11
ORIENT: float
KMONS:  - = sixfirhy
KITEM:  - = star_item / w:1 superb_item / w:1 demon blade ego:electrocution / \
            w:1 glaive ego:electrocution / w:1 broad axe ego:electrocution
MAP
..@..
.vnv.
.n-n.
.v=v.
.....
ENDMAP

NAME:   cheibrodos_two_vegetables
TAGS:   no_item_gen no_monster_gen no_pool_fixup
DEPTH:  D:5-10
ORIENT: float
KMONS:  1 = electric eel
KMONS:  C = plant
ITEM:   eel talisman
KFEAT:  1 = w
KFEAT:  C = W
KFEAT:  F = cache_of_fruit
SUBST:  ; = .W, d = d...
NSUBST: - = 3:1 / w, _ = 3:1 / w, A = 3:% / 1:* / 1:F / 1:. / W
NSUBST: B = 2:% / 1:* / 1:F / 2:. / W, ` = 7:C / 4:. / W
SUBST:  F : F..
MAP
  xxxxxxxxxx
 xx0..;WWWWxx
xx;xxxxxxxx;xx
xWxx..`BB_xx0x
xWx...``B__x.x
x;x...d`BB_m.x
x.x+..``B__x;x
x..x..`BB_xxWxx
xx;xxxxxxxxxxWxx
 xWWxx..`AA-xxWx
 xxWx...``A--x;x
  x;x...d`AA-m.x
  x.x+..``A--x.x
  x..x..`AA-xx+x
  xx9xxxxxxxx.@.
   xxx
ENDMAP

NAME: cheibrodos_hall_of_evolution
TAGS: no_item_gen no_monster_gen no_pool_fixup
DEPTH: Depths
ORIENT: float
NSUBST: A = 6:l / *:., l = 4=hi / *:l, B = 2:j / 1:k / 2=jjjk / 4:W / *:.
NSUBST: w = 2:p / 1:q / 2=pppq / *:w, C = 5:P / 1:3 / *:.
NSUBST: D = 4:% / 3:* / 1:| / *:$
MONS: juggernaut, stone giant
KMONS: 3 = spriggan defender band
KMONS: h = fire elemental
KMONS: i = salamander
KMONS: jp = hydra simulacrum
KMONS: kq = water elemental
KMONS: P = plant
KFEAT: hi = l
KFEAT: jk = W
KFEAT: pq = w
MAP
     ccccc  cccccc     ccccc  cccccc
   ccclllccccwwwwcc  ccctttccccDDD.cc
  ccllAAAlc.wBBBBwccccttCCCtc..DGD.Tcc
 ccAAA....+......BBc.CCC....+..DDD..2c
@+......AAc.BBB....+......CCc....DDD1c
 cclAAAAlccccwwBBBwc.tCCCCtccccT.DGD2c
  ccllllcc  cccwwwccccttttcc  cccDDDcc
   cccccc     ccccc  cccccc     ccccc
ENDMAP

NAME:    cheibrodos_quadrivalence
TAGS:    no_item_gen no_monster_gen no_pool_fixup no_descent
DEPTH:   D:12-, Depths
ORIENT:  float
: if you.in_branch("Depths") then
MONS:    smoke demon / salamander tyrant w:5, balrug
MONS:    caustic shrike simulacrum / thermic dynamo
MONS:    blizzard demon / nothing w:2
: else
MONS:    red devil ; trident, sun demon / smoke demon w:5
MONS:    ice devil, thermic dynamo / ynoxinul w:5 / nothing w:2
: end
KFEAT:   yz = b
SUBST:   y : yccc, 2 = 2 .:2
SHUFFLE: l2'y / w4Bz
NSUBST:  ' = 3:1 / 3=1. / *:., B = 3:3 / 3=3. / *:., - = 2=|* / 4:* / 6=$%
TILE:    y = bedevilled_crystal_gehenna
TILE:    z = bedevilled_crystal_cocytus
: set_feature_name("crystal_wall", "bedevilled crystal wall")
MAP
...................
.ccccc.......ccccc.
.c-c-ccccccccc-c-c.
.cc2c+y'''''c+c2cc.
.c-cnc'lllll.cnc-c.
.cc+c'll...l..c+cc.
..cc'll..l..l..yc..
..c'll..lll..ll'c..
..c'l..lllll..l'c..
..c'l.ll.)lll.l'c..
..c'l.....ll..l'c..
..c'll...ll..ll'c..
..cy'll..l..ll'cc..
.cc+c'll...ll'c+cc.
.c-cnc'lllll'cnc-c.
.cc2c+c'''''y+c2cc.
.c-c-ccccccccc-c-c.
.ccccc.......ccccc.
...................
ENDMAP

NAME:   cheibrodos_tormentor_scu
TAGS:   no_item_gen no_monster_gen
DEPTH:  D:11-, Depths
ORIENT: float
: if you.in_branch("Depths") then
MONS: tzitzimitl, hell knight / skeletal warrior / w:2 lich
: else
MONS: tormentor
MONS: skeletal warrior / phantasmal warrior w:5 / \
      wraith w:5 / freezing wraith w:1
: end
ITEM: demon whip ego:pain / demon whip ego:draining / demon blade ego:pain / \
      demon blade ego:draining / demon trident ego:pain / \
      demon trident ego:draining
SUBST:  b = bccc
NSUBST: " = 2 = d| / 5:* / 5 = %$$
NSUBST: ' = 3:* / 6:% / *:$, ` = 5:2 / 4 = 2.
KPROP:  "1 = no_tele_into
KFEAT:  - = iron_grate
TILE:   b = bedevilled_crystal_tartarus
: set_feature_name("crystal_wall", "bedevilled crystal wall")
MAP
@..xxxxxxxxxxxxxxx
.................x
..............-c.x
x...`````````-c-.x
x..``````````--..x
x..```''''cc-``..x
x..``''-----c``..x
x..``'--"""-c``..x
x..``'-""1"-'``..x
x..``'-"1""-'``..x
x..``c-"""--'``..x
x..``c-----''``..x
x..``-cc''''```..x
x..--``````````..x
x.-b-`````````...x
x.c-..............
x.................
xxxxxxxxxxxxxxx..@
ENDMAP

# Certain creatures are attracted to an abandoned site of magical significance
NAME:   cheibrodos_forgotten_conduit
TAGS:   no_item_gen no_monster_gen
DEPTH:  Spider, Snake
ORIENT: float
: if you.in_branch("Spider") then
MONS:   wolf spider w:5 / tarantella / redback, demonic crawler / orb spider
MONS:   spark wasp
: else
MONS:   anaconda w:5 / black mamba / water moccasin, mana viper, shock serpent
: end
ITEM:   star_item w:60 / staff of air / lightning rod w:20
NSUBST: " = 1:2 / 1:1 / 3=12., ' = 1:2 / 1:1 / 3=12., - = 2:3, ` = 2=*% / *:%
SUBST:  G : Gb
: vault_metal_statue_setup(_G, "G", "storm conduit")
MAP
@...........
....ccccccc..
.....""ccccc..
...""""""`ccc..
.c."m"""m"`ccc.
.c""""mm..'`cc.
.c"""mb-G.''cc.
.cc""m-d-m''cc.
.cc"".G-bm'''c.
.cc`"..mm''''c.
.ccc`'m'''m'.c.
..ccc`''''''...
 ..ccccc''.....
  ..ccccccc....
   ...........@
ENDMAP

NAME:   cheibrodos_grave_circle
TAGS:   no_item_gen no_monster_gen
DEPTH:  D:7-11
ORIENT: float
MONS:   place:D:7 draugr w:5 / place:D:14 zombie, shadow imp, hellwing
KMONS:  t = withered plant
: if you.depth () < 10 then
NSUBST: . = 3:1 / 3=1. / 3:2 / 2=2., " = 1:*% / 3 = $%., 3 = 1:3 / *:.
: else
NSUBST: . = 5:1 / 3=1. / 3:2 / 2=2., " = 1:*% / 5 = $%.
: end
SUBST:  . = .....--__tG
FTILE:  - = floor_pebble_brown
FTILE:  _ = floor_pebble_darkgray
: vault_granite_statue_setup(_G, "G", "gravestone")
MAP
  ....@....
 ...........
.............
.............
.............
.....""3.....
@...."A"....@
.....3"".....
.............
.............
.............
 ...........
  ....@....
ENDMAP

NAME:   cheibrodos_greedy_goblins
TAGS:   no_item_gen no_monster_gen
DEPTH:  D:2-4
ORIENT: float
MONS:   goblin, hobgoblin
KFEAT:  % = cache_of_fruit / cache_of_meat / cache_of_baked_goods
SUBST:  - = 112..., " = 12`, ' = 12`
NSUBST: ` = 1:%. / *:.
MAP
    .....
   ..xxx..
   .xx$xx.
 ...x$$$x...
..xxxx+xxxx..
.xx'm---m"xx.
.x''+---+""x.
.xx'm---m"xx.
..xxxx+xxxx..
 ...x...x...
   .xx.xx.
   ..x+x..
    ..@..
ENDMAP

NAME: cheibrodos_thug_alley
TAGS: no_item_gen no_monster_gen
DEPTH: D:3-6
ORIENT: float
KPROP: w;W = no_tele_into
MONS: kobold ; club / kobold ; dagger, hobgoblin ; club
MONS: kobold brigand ; dart ego:poisoned | dart ego:curare w:5 \
          . club | w:3 dagger ego:venom | w:3 dagger ego:draining \
              | w:3 dagger ego:speed
NSUBST: - = 2=1 / 2=12., " = 3=1 / 3=12. / ., ' = 3 / 3. / 1. / ., ` = *% / %
SUBST: ; = WWWw
MAP
               WWWWW
   xxxxxxx    WW;;;WWW
 xxx-----xxxWWW;www;xxxxxx
@...-----..xxxxxxwxxx''``x
@...xxmxx.."""""xmx..''``x
 xxxxwwwxxx""""""""..xxxxx
  WW;;w;;Wxxxxxx"""xxx
   WWWWWWWWW   xxxxx
     WWW
ENDMAP

NAME:   cheibrodos_fertilizer
TAGS:   no_item_gen no_monster_gen no_tele_into
DEPTH:  D:3-8
ORIENT: float
KMONS:  A = fungus / toadstool
: if you.absdepth() > 5 then
MONS:   kobold / kobold brigand w:6, endoplasm / jelly, slime creature
: else
MONS:   kobold, endoplasm, jelly
: end
ITEM:   goblin skeleton / hobgoblin skeleton / rat skeleton / bat skeleton
ITEM:   human skeleton, star_item
KFEAT:  M = cache_of_meat
KFEAT:  P = c
NSUBST: ' = 3:1 / 5 = 1. / 1:% / 2 = %.
NSUBST: " = 5:2 / 5 = 2' / 1:3 / 2 = 3` / 2:d / 3 = d` / *:`
NSUBST: A = 2 = dAA` / 1:` / * = A`, B = 2 = dAA. / 1:` / * = A`
NSUBST: C = 2 = dAA` / 1:` / * = A`, D = 2 = dAA` / 1:` / * = A`
SUBST:  M = M..
TILE:   P = wall_stone_puffball
FTILE:  `2ABCDd = floor_mud
COLOUR: `2ABCDd = brown
MAP
        xxxxxxxxxxxxx
  xxxxxxxxxxxxxxxxcPx
 xxxxxxxxxxxx""""""cx
 xxx'''''Mxx+AAAAAAxx
.xx'''''''x1x""""""xx
.+.'''''''x.xBBBBBBxx
@+.'''''''x.x""""""xx
.+.'''''x+x.xCCCCCCxx
.xx'''''x.x.x""""""xx
 xxx''''x.x.xDDDDDDxx
 xxxxxxxxx.xx"""""ecx
  xxxxxxxxxxxxxxxxcPx
        xxxxxxxxxxxxx
ENDMAP

NAME:   cheibrodos_monumental
TAGS:   no_item_gen no_monster_gen
DEPTH:  D:12-
ORIENT: float
MONS:   ogre / two-headed ogre
KMONS:  2 = stone giant / frost giant w:3 / fire giant w:3
KMONS:  PB = plant
KMONS:  p = pile of debris
KMONS:  C = cyclops
KFEAT:  A = granite_statue
KFEAT:  C = W
KFEAT:  2 = cache_of_fruit / cache_of_meat / floor w:30
SUBST:  p : pPP, P = PPP..
NSUBST: " = 2:C / 2=CW / *:W, ' = 2:1 / 2=1., ` = 2:1 / 2=1.
NSUBST: ; = 2:1 / 2=1., _ = 2:1 / 2=1., - = 1:| / 2=|* / 2:* / 1=*% / *:%
FTILE:  2$|*%AB = floor_grass_dark
COLOUR: 2$|*%AB = green
MAP
   ....._.c.'.....
  @..c__c_G'c''c..@
 @..c__c_PWP'c''c..@
....____pWWWp''''....
..c__c_GWW"WWG'c''c..
.c__c_PWWWWWWWP'c''c.
.____PWWWWWWWWWP''''.
._c_GWW"WWAWW"WWG'c'.
_c_pWWWWWB-BWWWWWb'c'
._PWWWWWB-$-BWWWWWp'.
cGWW"WWA-$2$-AWW"WWGc
.;PWWWWWB-$-BWWWWWp`.
;c;pWWWWWB-BWWWWWb`c`
.;c;GWW"WWAWW"WWG`c`.
.;;;;PWWWWWWWWWP````.
.c;;c;PWWWWWWWP`c``c.
..c;;c;GWW"WWG`c``c..
....;;;;pWWWp````....
 @..c;;c;PWP`c``c..@
  @..c;;c;G`c``c..@
   .....;.c.`.....
ENDMAP

NAME:   cheibrodos_pilgrimage
TAGS:   no_item_gen no_monster_gen
DEPTH:  D:2-4
ORIENT: float
MONS:   orc priest, orc priest band , orc
SUBST:  ' : cG.w
: if you.depth() == 4 or you.depth() == 3 and crawl.coinflip() then
SUBST:  1 = 2
: end
MAP
 ...........
..ccccccccc.
.ccc........
.cc..'3..'..
.c$........@
@nT.1.......
.c$........@
.cc..'3..'..
.ccc........
..ccccccccc.
 ...........
ENDMAP

NAME:   cheibrodos_statue_roulette
TAGS:   no_item_gen no_monster_gen vaults_hard
DEPTH:  D:8-, Vaults, !Vaults:$
WEIGHT: 5 (Vaults), 10
ORIENT: float
: if you.in_branch("Vaults") then
KMONS:  1 = war gargoyle
KMONS:  2 = vault sentinel
KMONS:  S = stack of scrap
KITEM:  12 = % / * w:4
NSUBST: - = 3:1 / 2:2 / 2 = 1G / *:G
SUBST:  @ = ., '" = ., G : GGS
:   vault_metal_statue_setup(_G, "G", "silver statue")
:   vaults_hard_standard(_G)
: else
:   if you.depth() > 12 then
KMONS:  1 = molten gargoyle
KITEM:  1 = % / * w:2
SUBST:  " = l
NSUBST: - = 3:1 / 2=1GG / *:G
: else
KMONS:  1 = gargoyle
KITEM:  1 = %
NSUBST: - = 2:1 / 2=1GG / 1:* / *:G
:   end
CLEAR:  '
: end
MAP
     ''' '''
    .........
  ...ccccccc...
  .ccc-ccc-ccc.
 ..c-cc+.+cc-c..
 .ccc+.....+ccc.
'.cGc.......c-c.'
'......"""..+cc.'
@......"G"...cc.
'......"""..+cc.'
'.cGc.......c-c.'
 .ccc+.....+ccc.
 ..c-cc+.+cc-c..
  .ccc-ccc-ccc.
  ...ccccccc...
    .........
      '' ''
ENDMAP

NAME: cheibrodos_steamvent
TAGS: no_monster_gen
DEPTH: D:6-11
ORIENT: float
MONS: steam dragon
SHUFFLE: VGA
NSUBST: " = 1=1..
SUBST: A = .
MAP
             .@.
            xx.xx
    xxxxxx xx...xx
 xxxxwwwwxxx.....x
xxwww.."""xx..V.lx
xww1..x""""x..1llx
xw.V..xx"""..lllxx
x.....xxxllllxxxx
xx...xx xxxxxx
 xx.xx
  .@.
ENDMAP

NAME:   cheibrodos_wizards_tower
TAGS:   no_pool_fixup
DEPTH:  D:8-, Elf
ORIENT: float
ITEM:   robe good_item / cloak good_item / scarf / pair of boots good_item \
        / pair of gloves good_item / hat good_item
ITEM:   randbook w:40 / any magical staff
: if you.in_branch("D") then
MONS:   arcanist / orc sorcerer, occultist, deep elf annihilator
:   if you.depth() < 11 then
NSUBST: " = 1:1 / 1:1... / *:., - = 1:d / 1:*% / 1:%$.. / *:.
:   elseif you.depth() < 13 then
NSUBST: " = 1:1 / 1:112... / *:., - = 1:de / 1:|* / 1:%$ / *:.
:   else
NSUBST: " = 1:2 / 2 = 1. / 1:23.. / *:., - = 1:d / 1:e / 1:|* / 1:%$ / *:.
:   end
: else
MONS:   deep elf sorcerer / deep elf annihilator
NSUBST: " = 2:1 / 3 = 1. / ., - = 1:d / 1:e / 2 = |* / 1:*% / 1:%$.. / *:.
: end
SHUFFLE: AB / CD / EF
SUBST:   A = ., B = W, CDEF = w
FTILE:   .de$%*|123 = floor_mystic_chasm
MAP
 ````@````
``wwFEFww``
`wwxb.bxww`
`wxx...xxw`
`Bb"-"-"bW`
@A.."-"...@
`Bb"-"-"bW`
`wxx...xxw`
`wwxb.bxww`
``wwDCDww``
 ````@````
ENDMAP

NAME: cheibrodos_witchhunters_guild
TAGS: no_item_gen no_monster_gen
DEPTH: Depths
ORIENT: float
MONS: mana viper, orc knight ; battleaxe | great mace | broad axe \
          | w:3 battleaxe ego:antimagic | w:3 great mace ego:antimagic \
          | w:3 broad axe ego:antimagic . plate armour \
          | plate armour ego:willpower \
      / w:2 orc warlord ; battleaxe | great mace | broad axe \
          | w:3 battleaxe ego:antimagic | w:3 great mace ego:antimagic \
          | w:3 broad axe ego:antimagic . plate armour \
          | plate armour ego:willpower
MONS: deep troll / iron troll / w:5 ettin
MONS: spriggan berserker ; rapier | quick blade | demon whip \
          | w:3 rapier ego:antimagic | w:3 quick blade ego:antimagic \
          | w:3 demon whip ego:antimagic
MONS: spriggan defender ; quick blade ego:antimagic \
          | demon whip ego:antimagic, quicksilver dragon
KMONS: T = stone giant
KMONS: Y = orc knight ; battleaxe | great mace | broad axe \
               | w:3 battleaxe ego:antimagic | w:3 great mace ego:antimagic \
               | w:3 broad axe ego:antimagic . plate armour \
               | plate armour ego:willpower \
           / w:2 orc warlord ; battleaxe | great mace | broad axe \
               | w:3 battleaxe ego:antimagic | w:3 great mace ego:antimagic \
               | w:3 broad axe ego:antimagic . plate armour \
               | plate armour ego:willpower
KMONS: U = deep troll / iron troll / w:5 ettin
KMONS: r = lich w:40 / ancient lich / dread lich
KMONS: E = w:3 plant / nothing
KITEM: r = |
KFEAT: H = iron_grate
KFEAT: a = cache_of_meat
SHUFFLE: AB, CD
SUBST: A = ., B = x, C = ., D = x
NSUBST: - = 1:| / 1=|* / 2=*$ / 3=*%, q = 3:* / 3 = $$%%a / * = $$$%%
NSUBST: _ = 2:T / 2:Y / 2=Yu / 1:U / 1=Uu / *:u, ; = 2:3 / 1=3. / 1:4 / 1=4.
NSUBST: ' = 1:1 / 1=1. / 1:2 / 1=2. / 1:4, ` = 1:1 / 1=1. / 1:2 / 1=2. / 1:4
NSUBST: p = 2:1 / 2=1.
FTILE: s = floor_mud
COLOUR: s = brown
FTILE: uETYU_ = floor_grass_dark
COLOUR: uETYU_ = green
MAP
ttttttttttttttttttttttttttttt
txxxxxxxxxxxxxxxxxxxxxxxxxxxt
txxxxHrHxxx-------xxxHrHxxxxt
txxxmm=mmx+xHHHHHx+xmm=mmxxxt
txxx..3..x.G..5..G.x..3..xxxt
txxxp...px...6.6...xp...pxxxt
txxxx...xx.........xx...xxxxt
txtxxx+xxxx2.....2xxxx+xxxtxt
txtEB...Buxx.....xxuA...BEtxt
txtEA;;;Bu_xx+++xx_uA;;;BEtxt
txtEA;;;Au_________uA;;;BEtxt
txtEA;;;But__sss__tuA;;;AEtxt
txtEA;;;But__sVs__tuB;;;AEtxt
txtEB;;;Bu___sss___uB;;;AEtxt
txtEB...Au_t__s__t_uB...BEtxt
txtxx...xxuuu_s_uuuxx...xxtxt
txxxq'''.xDDCxHxCCDx.```qxxxt
txxxq'G'.m2...s...2m.`G`qxxxt
txxxq'''.m....s....m.```qxxxt
  xxxqqqxxCCCxHxDDCxxqqqxxx
  .xxxxxx....sss....xxxxxx.
  .........t.sss.t.........
   ..........@@@..........
ENDMAP

NAME:    gammafunk_sealed_library
TAGS:    no_monster_gen no_trap_gen transparent no_descent
# Allow placement in Vaults as a room.
TAGS:    vaults_hard no_wall_fixup passable
DEPTH:   Crypt, D:12-, Depths, Elf, Snake, Vaults, Zot
ORIENT:  float
KMASK:   -UT_QR12345defg|*$+ = opaque
ITEM:    any book, any manual, any jewellery good_item
ITEM:    robe good_item / cloak good_item / scarf good_item \
         / pair of boots good_item / pair of gloves good_item / hat good_item
# Do this nsubst now so some branches can adjust monster placement.
NSUBST:  4 = 4 / 2=433 / 2=53 / 3, 3 = 3=3 / 3=3222 / 2
NSUBST:  ' = d2 / 2, 2 = 2=211- / 6=2 / 4=2--- / -
# Monster glyph counts after these nsubst:
# 1:0-2 (ave 1.0), 2:6-12 (ave 7.5), 3:3-6 (ave 3.75), 4:1-3 (ave 1.66)
# 5:0-2 (ave 1)
: if you.in_branch("Crypt") then
MONS:    phantasmal warrior
MONS:    necromancer / vampire mage / vampire knight / deep elf death mage \
         / eidolon
MONS:    revenant soulmonger / ancient champion / lich, ancient lich / dread lich
SUBST:   4 = 23, 5 = 4
: elseif you.in_branch("D") then
MONS:    glass eye
MONS:    boggart / kobold demonologist / deep elf pyromancer w:5 / \
         deep elf zephyrmancer w:5 / tengu conjurer
MONS:    arcanist w:5 / occultist w:5 / necromancer / orc sorcerer / ogre mage
MONS:    deep elf annihilator / deep troll earth mage / \
         sphinx marauder / tengu reaver
SUBST:   4 = 23, 5 = 4
: elseif you.in_branch("Vaults") then
MONS:    glowing orange brain / great orb of eyes / phantasmal warrior
MONS:    boggart / ironbound mechanist / ogre mage / arcanist
MONS:    deep elf sorcerer / deep elf annihilator / deep elf demonologist \
         / deep elf high priest / deep elf death mage / deep troll earth mage
MONS:    sphinx marauder / tengu reaver / lich / fire giant / frost giant
MONS:    titan / ancient lich w:5 / dread lich w:5 / glowing shapeshifter
FTILE:   -UT_QR12345defg|*$+G = floor_metal_gold
FTILE:   t = floor_pebble_brown
: elseif you.in_branch("Depths") then
MONS:    glass eye / great orb of eyes / glowing orange brain / \
         phantasmal warrior
MONS:    chonchon / rakshasa / kobold fleshcrafter / occultist / necromancer
MONS:    deep elf sorcerer / deep elf annihilator / deep elf demonologist / \
         deep elf high priest / deep troll earth mage / \
         spriggan air mage / vampire mage / glowing shapeshifter
MONS:    guardian sphinx / deep elf death mage / lich / fire giant / frost giant
MONS:    titan / ancient lich w:5 / dread lich w:5 / tengu reaver
: elseif you.in_branch("Elf") then
MONS:    water elemental / shapeshifter
MONS:    deep elf pyromancer / deep elf zephyrmancer / w:2 orc sorcerer
MONS:    deep elf sorcerer / deep elf annihilator / deep elf demonologist \
         / deep elf death mage
MONS:    glowing shapeshifter
SUBST:   4 = 23, 5 = 4
: elseif you.in_branch("Snake") then
MONS:    mana viper / guardian serpent
MONS:    naga mage / naga ritualist / salamander mystic
MONS:    nagaraja / salamander tyrant
SUBST:   5 = 4, 4 = 23
: elseif you.in_branch("Zot") then
MONS:    ghost moth / death cob / curse toe
MONS:    nonbase draconian / protean progenitor w:2
MONS:    ancient lich / dread lich, orb of appropriateness
KFEAT:   t = petrified_tree
SUBST:   3 = 2, 4 = 3, 5 = 4
FTILE:   -UT_QRtGT12345defg|*$+ = floor_zot_diamonds
: end
KFEAT:   _ = altar_sif_muna / altar_vehumet
TILE:    c = wall_studio
SHUFFLE: efg
NSUBST:  R = R / tGT
MARKER:  P = lua:transp_loc("sealed_library_entry")
MARKER:  Q = lua:transp_dest_loc("sealed_library_entry")
MARKER:  R = lua:transp_loc("sealed_library_exit")
MARKER:  S = lua:transp_dest_loc("sealed_library_exit")
MAP
.........................
.cccccccccncncnccccccccc.
.cG-3c'c'c'c'c'c'c3--$Rc.
.n-4---------------b4$*c.
.nT--bb2bb2bb2--2--bb--c.
.n-4----------bbb-----Gn.
.cG-3-Gc---bbbb---2-b3-c.
.ccc+cccc+ccT---bbbbb--c.
...nedUnG--c-----G-G-$tn..
@.Pnfd_nQ--+--------4|UnS@
...ngdUnG--c-----G-G-$tn..
.ccc+cccc+ccT---bbbbb--c.
.cG-3-Gc---bbbb---2-b3-c.
.n-4----------bbb-----Gn.
.nT--bb2bb2bb2--2--bb--c.
.n-4---------------b4$*c.
.cG-3c'c'c'c'c'c'c3--$Rc.
.cccccccccncncnccccccccc.
.........................
ENDMAP

NAME:    gammafunk_jiyva_shrine
TAGS:    no_monster_gen no_trap_gen no_descent
DEPTH:   D:8-, Depths
ORIENT:  float
: item(dgn.loot_scrolls .. " / " .. dgn.loot_potions)
ITEM:    any jewellery good_item, any jewellery randart
# Choose random landing site with exit placed far from this.
SHUFFLE: Qq / Rr / Ss
NSUBST:  q = q / '
SUBST:   RSrs = '
: if you.in_branch("D") then
:   if you.depth() < 10 then
MONS:    slime creature, glowing orange brain / great orb of eyes
NSUBST:  ' = de / 2=|* / *% / -, - = 4=1 / 5=1. / 2. / .
:   elseif you.depth() < 13 then
MONS:    slime creature
MONS:    glowing orange brain / great orb of eyes / eye of devastation
NSUBST:  ' = de / 2=|* / * / %$-- / -, - = 4=1 / 6=1. / 2=2. / .
:   else
MONS:    slime creature
MONS:    glowing orange brain / great orb of eyes / eye of devastation \
         / golden eye / shining eye
MONS:    acid blob / azure jelly / rockslime
NSUBST:  ' = d / e / 2=|* / *% / %$-- / -
NSUBST:  - = 4=1 / 6=1. / 2 / 2. / 2=3. / .
:   end
# Depths
: else
MONS:    slime creature
MONS:    glowing orange brain / shining eye / glass eye / golden eye \
         / eye of devastation
MONS:    acid blob / azure jelly / rockslime
NSUBST:  ' = 2=d / f / 3=|* / * / %$-- / -
NSUBST:  - = 4=1 / 6=1. / 2 / 2=2. / 3=3 / 4=3. / .
: end
MARKER:  P = lua:transp_loc("jiyva_chamber_entry")
MARKER:  Q = lua:transp_dest_loc("jiyva_chamber_entry")
MARKER:  q = lua:transp_loc("jiyva_chamber_exit")
MARKER:  Z = lua:transp_dest_loc("jiyva_chamber_exit")
COLOUR:  c = green
COLOUR:  n = lightgreen
KFEAT:   _ = altar_jiyva
MAP
    ccccccc
   ccscccscc
  cc''cRc''cc
 .cq'-----''c.
 .ncc-----ccn.
@Pnn---_--QnnZ@
 .ncc-----ccn.
 .cq'-----''c.
  cc''cSc''cc
   ccrcccrcc
    ccccccc
ENDMAP

NAME:   gammafunk_beogh_shrine
TAGS:   no_monster_gen no_trap_gen no_descent
DEPTH:  D:7-, Orc
ORIENT: float
: item(dgn.loot_scrolls .. " / " .. dgn.loot_potions)
ITEM:   cloak good_item / scarf good_item / helmet good_item \
        / hat good_item / pair of gloves good_item / pair of boots good_item
ITEM:   cloak randart / helmet randart / hat randart / pair of gloves randart \
        / pair of boots randart
NSUBST: R = R / -
: if you.in_branch("D") then
:   if you.depth() < 10 then
MONS: orc, ogre / w:40 orc warrior / w:5 troll / w:5 two-headed ogre
MONS: orc wizard / orc priest
MONS: cyclops / ogre mage / orc knight
NSUBST: - = 4=1 / 4=1. / 2=2 / 2=2. / 3=3 / 4=3. / 4... / .
NSUBST: ' = de / 2=|* / *% / 3=$ / .
:   elseif you.depth() < 13 then
MONS: orc / orc wizard / orc priest
MONS: ogre / w:30 orc warrior / two-headed ogre / cyclops / troll
MONS: orc sorcerer / orc high priest / ogre mage
MONS: w:20 orc knight / ettin / orc warlord / stone giant
NSUBST: - = 6=1 / 6=1. / 3=2 / 3=2. / 3 / 3. / 4... / .
NSUBST: ' = de / 2=|* / * / %$.. / 3=$ / .
:   else
MONS: orc priest / orc warrior / cyclops, two-headed ogre / orc knight w:20
MONS: orc sorcerer / orc high priest / ogre mage
MONS: ettin / orc warlord / stone giant
NSUBST: - = 5=1 / 5=1. / 3=2 / 4=2. / 3 / 3=3. / 4 / 2=4. / .
NSUBST: ' = d / f / 2=|* / *% / %$.. / 3=$ / .
:   end
# Orc
: else
MONS: orc / orc wizard / orc priest
MONS: orc warrior / two-headed ogre / orc knight
MONS: orc high priest / orc sorcerer, ettin / orc warlord / stone giant
NSUBST: - = 5=1 / 5=1. / 3=2 / 4=2. / 3 / 2=3. / 4 / 4. / .
NSUBST: ' = d / e / 2=|* / %$ / 3=$ / .
: end
KFEAT:  _ = altar_beogh
MARKER: P = lua:transp_loc("beogh_ambush_entry")
MARKER: Q = lua:transp_dest_loc("beogh_ambush_entry")
MARKER: R = lua:transp_loc("beogh_ambush_exit")
MARKER: S = lua:transp_dest_loc("beogh_ambush_exit")
: decorative_floor(_G, 'B', "orcish standard")
MAP
   ccccccccccc
  cc----R--..cc
  c---ncncn...c
  c---'c'c'...c
 Bc-n'-----'n.c.
 .n-cc-I-I-cc.n.
@PnRn'--_--'nQnS@
 .n-cc-I-I-cc.n.
 Bc-n'-----'n.c.
  c---'c'c'...c
  c---ncncn...c
  cc----R--..cc
   ccccccccccc
ENDMAP

NAME:   gammafunk_corrupted_shrine
TAGS:   no_monster_gen no_trap_gen no_descent
DEPTH:  D:8-, Depths, Abyss
ORIENT: float
: item(dgn.loot_scrolls .. " / " .. dgn.loot_potions)
ITEM:    any jewellery good_item, any jewellery randart
SUBST:  p = b.
NSUBST: ' = R / '
: if you.in_branch("D") then
:   if you.depth() < 11 then
MONS:   small abomination, unseen horror / ancient zyme / neqoxec w:2, ugly thing
MONS:   raiju / large abomination / shapeshifter
NSUBST: ' = de / 2=|* / *% / -, - = 2=1 / 3=1. / 2. / 2=3 / 2=3. / 4... / .
:   elseif you.depth() < 13 then
MONS:   small abomination / ugly thing / neqoxec w:2
MONS:   unseen horror / ancient zyme / worldbinder
MONS:   large abomination / raiju / shapeshifter
MONS:   very ugly thing / thrashing horror
NSUBST: ' = de / 2=|* / * / %$-- / -, - = 3=1 / 3=1. / 2. / 2=3 / 3=3. / 4. / .
:   else
MONS:   ugly thing / large abomination / shapeshifter / raiju
MONS:   unseen horror / ancient zyme / worldbinder / lurking horror w:5
MONS:   thrashing horror / very ugly thing
MONS:   glowing shapeshifter / apocalypse crab / tentacled starspawn
NSUBST: ' = d / f / 2=|* / *% / %$-- / -
NSUBST: - = 3=1 / 4=1. / 2=2. / 2=3 / 4=3. / 2=4. / .
:   end
: elseif you.in_branch("Depths") then
MONS:   very ugly thing / thrashing horror / \
        large abomination / kobold fleshcrafter
MONS:   lurking horror / ancient zyme / worldbinder / apocalypse crab / \
        wyrmhole w:2
MONS:   tentacled starspawn / glowing shapeshifter / tentacled monstrosity w:5
MONS:   starcursed mass / wretched star
NSUBST: ' = 2=d / f / 3=|* / *% / %$-- / -
NSUBST: - = 4=1 / 5=1. / 2 / 2. / 3=3 / 4=3. / 4 / 2=4. / .
# Abyss
: else
MONS:   very ugly thing / thrashing horror / large abomination
MONS:   lurking horror / ancient zyme / worldbinder / apocalypse crab
MONS:   tentacled starspawn / glowing shapeshifter / tentacled monstrosity w:5
MONS:   starcursed mass / wretched star
KITEM:  % = amulet of regeneration / amulet of magic regeneration / \
            any weapon ego:distortion pre_id
KITEM:  * = any talisman / any wand charges:2 / demon blade w:2
KITEM:  | = randbook disc:alchemy / any magical staff
NSUBST: ' = 2=d / f / 3=|* / * / %$ / -
NSUBST: - = 5=0 / 5=0. / 2 / 2. / 3=3 / 4=3. / 4 / 2=4. / .
: end
KFEAT:  _ = altar_lugonu
MARKER: P = lua:transp_loc("corrupted_shrine_entry")
MARKER: Q = lua:transp_dest_loc("corrupted_shrine_entry")
MARKER: R = lua:transp_loc("corrupted_shrine_exit")
MARKER: S = lua:transp_dest_loc("corrupted_shrine_exit")
COLOUR: bc = magenta
COLOUR: n = lightmagenta
MAP
 cccc..@..cccc
cc''nc...cn''cc
c''pbc...cbp''c
c'p--nnPnn--p'c
ccb---nnn---bcc
 ccc-------ccc
   cc-----cc
    c--_--c
   cc-----cc
 ccc---Q---ccc
ccb---nnn---bcc
c'p--nnSnn--p'c
c''pbc...cbp''c
cc''nc...cn''cc
 cccc..@..cccc
ENDMAP

NAME:   gammafunk_steamed_eel
TAGS:   no_monster_gen no_trap_gen no_tele_into no_pool_fixup no_descent
DEPTH:  D:3-9
ORIENT: float
KMONS:  p = plant
KMONS:  1 = electric eel
ITEM:   wand of flame pre_id, eel talisman / $ w:30
KFEAT:  1p = W
NSUBST: 1 = 2:1 / 1WW
SUBST:  - : D., D=WWWWp, t = ttTU
MARKER: P = lua:transp_loc("steamed_eel_entry")
MARKER: Q = lua:transp_dest_loc("steamed_eel_entry")
MARKER: R = lua:transp_loc("steamed_eel_exit")
MARKER: S = lua:transp_dest_loc("steamed_eel_exit")
MAP
 .................
 .nnnnnnnnnnnnnnn.
 .nGpnWWW1W1WnpGn.
..n..n..-----n*.n..
@PnQd+..-t---+.RnS@
..n..n..-----ne.n..
 .nGpnWWW1W1WnpGn.
 .nnnnnnnnnnnnnnn.
 .................
ENDMAP

NAME:   gammafunk_wand_slinger
TAGS:   no_monster_gen no_trap_gen no_tele_into no_pool_fixup no_descent
DEPTH:  D:3-13
ORIENT: float
KMASK:  LM = no_item_gen
ITEM:   wand of flame
ITEM:   any blast wand / any beam wand
ITEM:   wand of mindburst / wand of paralysis \
        / wand of charming / wand of polymorph w:5
MONS: shadow imp, orc priest, kobold demonologist
MONS: deep elf knight / fire crab / orc high priest / orc sorcerer
KMONS:  p = plant
KFEAT:  p = W
KFEAT:  - = iron_grate
: if you.depth() <= 5 then
NSUBST: L = 1:1 / 1=12N / N, M = 1:1 / 1=12N / N, N = 1:2 / 3..... / .
SUBST: * = ., | = *
# Always place one wand, and make it more likely to be flame
SUBST: D = d:20 e f
: elseif you.depth() <= 8 then
NSUBST: L = 1:1 / 1:2 / 2=12N / N, M = 1:1 / 1:2 / 2=12N / N
NSUBST: N = 1:3 / 1=3. / 4..... / .
SUBST: | = .
# 50% chance to place one, 50% chance to place two
SHUFFLE: DEF / HJK
: else
NSUBST: L = 1:2 / 1:3 / 2=23N / N, M = 1:2 / 1:3 / 2=23N / N
NSUBST: N = 1:4 / 2=4. / .
# 25% chance to place one, 75% chance to place two
SHUFFLE: DEF / HJK / HJK / HJK
: end
SHUFFLE: JK
SUBST: D = def, EFH = ., J = de, K = ef, t = ttTU, W=WWWWWp
MARKER: P = lua:transp_loc("wand_slinger_entry")
MARKER: Q = lua:transp_dest_loc("wand_slinger_entry")
MARKER: R = lua:transp_loc("wand_slinger_exit")
MARKER: S = lua:transp_dest_loc("wand_slinger_exit")
MAP
 .................
 .nnnnnnnnnnnnnnn.
 .nGpnLLLLLLL-WGn.
 .np.nwwwwwwwn.pn.
..n.En..WWW..n*$n..
@PnQD+..WtW..+|RnS@
..n.Fn..WWW..n*$n..
 .np.nwwwwwwwn.pn.
 .nGpnMMMMMMM-WGn.
 .nnnnnnnnnnnnnnn.
 .................
ENDMAP

NAME:   nzn_motion_control
TAGS:   no_pool_fixup no_monster_gen
DEPTH:  D:10-, Lair:3-, Shoals:2-, !Shoals:$
ORIENT: float
SHUFFLE: HY / 12, $%, eE / rR
SUBST:  ER = ., r = x, e = + .
: if you.in_branch("Shoals") then
NSUBST: S = 1:s / *:W
KFEAT:  s = W
KMONS:  s = merfolk avatar
SUBST:  $ = % $:20, % = %:40 *, H = 1, Y = 2
: elseif you.absdepth() < 12 then
SUBST:  % = $:30 .:15 %:5, HYS = .
: else
SUBST:  $ = $:20 %:5, H = 1, Y = 2, S = .
: end
MONS:  manticore, catoblepas
MAP
xxxxxE@Exxxxx
xH..xxExx..2x
x.%WWxexWW$.x
x.WSSwSwSSW.x
xxWSSSSSSSWxx
RxxwSWWWSwxxR
@RrSSW{WSSrR@
RxxwSWWWSwxxR
xxWSSSSSSSWxx
x.WSSwSwSSW.x
x.$WWxexWW%.x
x1..xxExx..Yx
xxxxxE@Exxxxx
ENDMAP

NAME:  gammafunk_mikee_crab_dinner
TAGS:  no_monster_gen no_trap_gen patrolling
DEPTH: D:10-, Depths, Lair:3-, Swamp, Zot
ORIENT: float
KMONS: F = apocalypse crab
KITEM: F = |
: if you.in_branch("D") then
MONS:  fire crab, ghost crab, entropy weaver
: elseif you.in_branch("Depths") then
MONS:  apocalypse crab
KMONS: 2 = apocalypse crab
KMONS: 3 = flayed ghost
KITEM: 2 = *
SUBST: = = +, E = D
: elseif you.in_branch("Lair") then
MONS:  fire crab, ghost crab, entropy weaver
SUBST: c = x
: elseif you.in_branch("Swamp") then
MONS:  ghost crab, apocalypse crab, spriggan druid
SUBST: c = xxxt
: elseif you.in_branch("Zot") then
MONS:  apocalypse crab
KMONS: 2 = apocalypse crab
KMONS: 3 = curse toe
KITEM: 2 = *
SUBST: = = +, E = D
: end
SUBST: D = 1., E = 2.
NSUBST: 3 = 2:3 / 3.
KITEM: - = troll skeleton / minotaur skeleton / dwarf skeleton / ogre skeleton
MAP
ccccccccccc
=.-...1.-.c
ccccccccc.c
c.3...E.c1c
c.ccccc.c.c
c-c-*3c.c-c
c.c.c*c.c.c
c1c.c*c2c3c
c.c2c|c.c.c
c.c.cFc-c.c
c-c.c|c.c.c
cDc.ccc3cDc
c.cE....c-c
c.ccccccc.c
c.-3...1..c
ccccccccccc
ENDMAP

NAME:   gammafunk_cloud_chamber
TAGS:   no_monster_gen no_trap_gen no_tele_into no_descent
DEPTH:  D:4-, Lair
ORIENT: float
KMASK:  -'DE12 = no_item_gen
# Cancellation placed only for mutagenic clouds.
ITEM:   potion of resistance pre_id, potion of cancellation pre_id q:2
# TODO: add scrolls of poison when appropriate
# Replaces a gold pile in late Dungeon
: item(dgn.good_aux_armour)
# Monsters appropriate for the cloud type must be defined in order of
# cloud_types and come in pairs. Some levels define a more difficult monster on
# '2', otherwise the monster is repeated.
: if you.in_branch("D") then
:   if you.depth() <= 6 then
:       cloud_types = {"flame", "freezing vapour", "poison gas"}
KMONS:  1 = fire bat
KMONS:  2 = nothing
KMONS:  34 = ice beast
KMONS:  56 = ogre zombie ; giant club ego:venom | giant spiked club ego:venom \
           / orc warrior zombie ; hand axe ego:venom | war axe ego:venom \
               | short sword ego:venom | long sword ego:venom \
               | flail ego:venom | mace ego:venom \
           / gnoll sergeant zombie ; spear ego:venom | trident ego:venom
# In earliest 3 levels, thin out monsters and downgrade loot a bit.
SUBST:  | = %, ' = -
NSUBST: 1 = 1 / 2 / 1- / 1---- / -
:   elseif you.depth() <= 9 then
:      cloud_types = {"flame", "freezing vapour", "poison gas", "acidic fog"}
MONS:   fire bat, fire elemental / hell hound
MONS:   ice beast, simulacrum place:D:15
MONS:   water moccasin
KMONS:  6 = ogre zombie ; giant club ego:venom | giant spiked club ego:venom \
           / orc warrior zombie ; hand axe ego:venom | war axe ego:venom \
               | short sword ego:venom | long sword ego:venom \
               | flail ego:venom | mace ego:venom \
           / gnoll sergeant zombie ; spear ego:venom | trident ego:venom
KMONS:  7 = jelly
KMONS:  8 = acid dragon
SUBST:  | = *
NSUBST: 1 = 2=1 / 2 / 12-, $ = f / $
:   elseif you.depth() <= 12 then
:     cloud_types = {"flame", "poison gas", "acidic fog"}
MONS: fire bat / fire elemental, hell hound w:20 / fire crab
MONS: water moccasin w:40 / cane toad / black mamba
KMONS:  4 = two-headed ogre zombie \
               ; dire flail ego:venom | great mace ego:venom \
               . giant club ego:venom | giant spiked club ego:venom \
           / orc knight zombie ; war axe ego:venom | battleaxe ego:venom \
               | long sword ego:venom | great sword ego:venom \
               | dire flail ego:venom | great mace ego:venom \
           / tengu warrior zombie ; partisan ego:venom | glaive ego:venom \
               | bardiche ego:venom
KMONS:  5 = jelly / acid dragon
KMONS:  6 = acid dragon
NSUBST: 1 = 2=1 / 2 / 12-, $ = f / $
:   else
:       cloud_types = {"acidic fog", "mutagenic fog"}
MONS:   acid dragon, acid dragon / acid blob
MONS:   ugly thing, ugly thing / very ugly thing
SUBST:  ' = n
NSUBST: 1 = 2=1 / 2 / 12-, $ = f / * / $
:   end
: elseif you.in_branch("Lair") then
:       cloud_types = {"flame", "freezing vapour", "poison gas"}
MONS:   fire bat / fire elemental, hell hound / fire crab
MONS:   simulacrum place:Lair
MONS:   dire elephant simulacrum / anaconda simulacrum \
        / wolf spider simulacrum / hydra simulacrum
MONS:   cane toad / black mamba, swamp dragon
NSUBST: 1 = 2=1 / 2 / 12-, $ = f / * / $
: end
# Any ' not replace with floor or wall above become cloud squares
SUBST:  ' = E
{{
  -- Choose the cloud theme; the monster glyphs are defined in pairs in the
  -- order as cloud_types. The D and E glyphs become fog machines of sizes 2
  -- and 1, respectively, for the chosen cloud type.
  local i = crawl.random2(#cloud_types) + 1
  local mon_num = 2 * (i - 1) + 1

  subst("1 = " .. tostring(mon_num))
  subst("2 = " .. tostring(mon_num + 1))
  lua_marker("D", fog_machine { cloud_type = cloud_types[i], pow_min = 3,
      pow_max = 5, delay = 5, start_clouds = 3, size = 2, spread_rate = 0,
      excl_rad = 0 })
  lua_marker("E", fog_machine { cloud_type = cloud_types[i], pow_min = 3,
      pow_max = 5, delay = 5, start_clouds = 3, size = 1, spread_rate = 0,
      excl_rad = 0 })
  if cloud_types[i] == "mutagenic fog" then
    subst("d = e")
  end
}}
MARKER: P = lua:transp_loc("cloud_chamber_entry")
MARKER: Q = lua:transp_dest_loc("cloud_chamber_entry")
MARKER: R = lua:transp_loc("cloud_chamber_exit")
MARKER: S = lua:transp_dest_loc("cloud_chamber_exit")
MAP
         ccccccc
  cccccccc1---1c
  c-D--D-c-D--Dc
..c------c--''-n
..n--n.n.+1-'$*n..
@PnD-Qd..+D-'|RnS@
..n--n.n.+1-'$*n..
  c------c1-''-n
  c-D--D-c-D--Dc
  cccccccc1---1c
         ccccccc
ENDMAP

###############################################################################
# The kobolds from kennysheep's sewer church have taken their cult mainstream
NAME:   wander_kiku_kobolds
TAGS:   no_monster_gen no_item_gen
DEPTH:  D:8-12
ORIENT: float
KMONS:  1 = kobold demonologist
KMONS:  2 = shadow imp
KMONS:  k = kobold w:9 / kobold brigand w:3 / kobold geomancer w:1
KMONS:  u = kobold draugr w:4 / kobold zombie w:12 / spectral kobold w:4
KITEM:  ?1 = kobold skeleton
KPROP:  ?A1 = bloody
KFEAT:  O = altar_kikubaaqudgha
NSUBST: ' = 1:* / 4:%%- / *:-
FTILE:  uk-?A12O*%V = floor_necro_squares
: decorative_floor(_G, 'V', "mourning vase")
MAP
       ccccc
cccccccc'V'cccccccc
ckkVccc'''''cccVkkc
ck-cc--2?A?2--cck-c
c--c----?O?----c--c
c--+-uu-?1?-uu-+--c
c--c--uu---uu--c--c
ckkc--uuuuuuu--ckkc
c--cc---uuu---cc--c
c---ccc-----ccc---c
c---c-cc+++cc-c---c
c-k-c--G---G--c-k-c
c-k-c---------c-k-c
c-k-+--kkkkk--+-k-c
c-k-c--kkkkk--c-k-c
ccccc---kkk---ccccc
....c---------c....
   .cc-------cc.
   ..ccc+++ccc..
    ...G...G...
     ...@@@...
ENDMAP

# Inspired by lemuel_castle_with_subvaults
NAME:    gammafunk_gnarly_gnolls
TAGS:    no_pool_fixup
DEPTH:   D:3-8
ORIENT:  float
ITEM:    any manual
ITEM:    any jewellery, any jewellery good_item, any jewellery randart
KMONS:   p = plant
MONS:    gnoll, gnoll bouda, gnoll sergeant, grum band
KMONS:   D = gnoll ; wand of flame | any beam wand | \
                wand of polymorph | wand of charming | \
                wand of paralysis | wand of mindburst \
            . spear w:20 | halberd | club | whip | flail | nothing w:15
# Define some gnolls with reach weapons.
{{
    local basic_weapons = {["halberd"] = 1, ["spear"] = 1}
    local sgt_weapons = {["trident"] = 1, ["spear"] = 1}
    egos = {["venom"] = 15, ["vampirism"] = 5, ["pain"] = 5,
            ["electrocution"] = 5, ["chaos"] = 5}

    local basic_def = dgn.random_item_def(basic_weapons, egos, nil, "|")
    local sgt_basic_def = dgn.random_item_def(sgt_weapons, egos, nil, "|")

    local quality = crawl.one_chance_in(3) and "randart" or "good_item"
    local good_def = dgn.random_item_def(basic_weapons, egos, quality, "|")
    local sgt_good_def = dgn.random_item_def(sgt_weapons, egos, quality, "|")

    kmons("E = gnoll ; " .. basic_def .. " . throwing net | nothing")
    kmons("F = gnoll ; " .. good_def .. " . throwing net | nothing")
    kmons("H = gnoll sergeant ; " .. sgt_basic_def ..
          "    . buckler | kite shield | nothing w:40" ..
          "    . ring mail | scale mail")
    kmons("J = gnoll sergeant ; " .. sgt_good_def ..
          "    . buckler good_item | buckler randart w:5 " ..
          "        | kite shield good_item | kite shield randart w:5 " ..
          "    . ring mail good_item | ring mail randart w:5 " ..
          "        | scale mail good_item | scale mail randart w:5")
}}
# Sometimes add an additional pairs of doors near the landing area. Also
# randomize exit transporters and tower inner walls.
SHUFFLE: qK / rL
NSUBST:  R = R / '
SUBST:   q = c, r = ~, K = T, L = -, s : ccG-
# Scale loot and monsters with depth.
: if you.depth() < 5 then
SUBST:   h = %$, ij= `, 2 = 2'
NSUBST:  - = 2=1 / 2=1. / D / D. / ., ' = E / E. / FFFJ / .
NSUBST:  R = R / E / E.
: elseif you.depth() < 7 then
SUBST:   e = f, h = *, i = %$, j= `
NSUBST:  - = 2=1 / 2=1. / D / D. / ., ' = E / E. / 3 / H. / J / .
: else
SUBST:   e = g, h = |*, i = *, j = %$
NSUBST:  - = 2=1 / 2=1. / D / 2=D. / ., ' = E / 2=E. / 3 / 3. / 2=H. / J / .
:     if not you.uniques("Grum") and crawl.one_chance_in(3) then
NSUBST:   3 = 4 / 3
:     end
: end
KFEAT:   ~ = closed_clear_door
MARKER:  P = lua:transp_loc("ghostless_gnarly_gnolls_entry")
MARKER:  Q = lua:transp_dest_loc("ghostless_gnarly_gnolls_entry")
MARKER:  R = lua:transp_loc("ghostless_gnarly_gnolls_exit")
MARKER:  S = lua:transp_dest_loc("ghostless_gnarly_gnolls_exit")
TILE:    c = wall_stone_smooth
COLOUR:  `defghij|*%$O = cyan
FTILE:   `defghij|*%$O = floor_cobble_blood
COLOUR:  " = brown
FTILE:   " = floor_mud
MAP
...........................
.wwwwwwwwwwwwWwwwwwwwwwwww.
.wwwwwwwwwwwwWwwwwwwwwwwww.
.wwncccn...........ncccnww.
.wwc's-c.cnc.S.cnc.c-s'cww.
.wwc---cncRccnccRcnc---cww.
.wwncc---------------ccnww.
.ww.Gc-cnqncc~ccncnc-cG.ww.
.ww.cc-cpKpcp-Gcej$c-cc.ww.
.WW.n'-~-----QTcd9$~-2n.WW.
.ww.cc-cpKpcp-Gchi$c-cc.ww.
.ww.Gc-cnqncc~ccncnc-cG.ww.
.wwncc---------------ccnww.
.wwc---cncRccnccRcnc---cww.
.wwc's-c.cnc.P.cnc.c-s'cww.
.wwncccn...........ncccnww.
.wwwwwwwwwww"""wwwwwwwwwww.
.wwwwwwwwwww"""wwwwwwwwwww.
...........................
ENDMAP

NAME:   gammafunk_worm_tunnel
TAGS:   no_monster_gen no_trap_gen no_tele_into no_item_gen no_descent
DEPTH:  Lair, D:10-, Swamp
ORIENT: float
: item(dgn.good_aux_armour)
: item(dgn.randart_aux_armour)
ITEM:   any good_item jewellery, any randart jewellery
KMONS:  p = briar patch
MONS:   swamp worm
: if you.in_branch('D') then
:   if you.depth() < 12 then
KFEAT:  ^ = trap_net
SUBST:  F = E, D = 1ttttt
:   elseif you.depth() < 14 then
KFEAT:  ^ = trap_net
SUBST:  d = dde, f = ffg, % = %%*, F = E, D = 1tt
# From D:14 and later we use Zot traps.
:   else
KFEAT:  ^ = trap_zot
SUBST:  d = de, f = fg, % = %*, D = 1t, F = ^
:   end
: elseif you.in_branch('Lair') then
KFEAT:  ^ = trap_net
SUBST:  F = E
:   if you.depth() < 4 then
SUBST:  d = dddde, f = ffffg, % = %%%%*, F = E, D = 1tttt
:   else
SUBST:  d = ddde, f = fffg, % = %%%*, F = E, D = 1ttt
:   end
# Swamp
: else
KFEAT:  ^ = trap_zot
SUBST:  d = e, f = g, % = *, D = 11t, F = ^
: end
MARKER: E =  lua:fog_machine { cloud_type = "foul pestilence", pow_min = 5,  \
                               pow_max = 10, delay = 10, start_clouds = 1, \
                               size = 1, spread_rate = 0, excl_rad = -1 }
MARKER: P = lua:transp_loc("worm_tunnel_entry")
MARKER: Q = lua:transp_dest_loc("worm_tunnel_entry")
MARKER: R = lua:transp_loc("worm_tunnel_exit")
MARKER: S = lua:transp_dest_loc("worm_tunnel_exit")
MAP
  ...S...
  .cnnnc.
  .cdRfc.
...c%%%c.
.cccc+cccc.
.cclpFpl1n.
.n1lp^plcc.
.ccnE^plDn.
.nDlp^Encc.
.cclp^pl1n.
.n1lp^plcc.
.cclp^plDn.
.cccpQpccc.
 ..cnnnc..
  ...P...
ENDMAP

# Based on the idea of the former vault called boulder_indie, made by mumra,
# originally suggested by ZorbaBeta, which was a lua trap vault that placed a
# boulder beetle in a long corridor. This vault uses a similar concept, but
# places the boulder beetles in a non-spoilery way and greatly enhances the
# theme and detail.
NAME:    gammafunk_indiana_jones
TAGS:    no_monster_gen no_trap_gen
DEPTH:   D:8-, Lair
ORIENT:  float
# Item qualities that can upgrade with depth.
ITEM:    whip good_item w:20 / snakebite w:1
ITEM:    whip randart w:15 / demon whip w:4 / snakebite w:1
ITEM:    demon whip good_item, hat good_item tile:thelm_hat_explorer
ITEM:    hat randart tile:thelm_hat_explorer
ITEM:    any jewellery good_item, any jewellery randart
: item(dgn.loot_potions .. " / " .. dgn.loot_scrolls)
# We use boulder beetles at every depth, and lava snakes need a shared marker
# definition, so defined here.
KMONS:   2 = boulder beetle
KMONS:   L = lava snake
KMONS:   p = plant
KFEAT:   KL = l
# Outer rock with normal tile, and inner chamber statues for Tomb theme in late
# Dungeon and Spider.
KFEAT:   a = x
KFEAT:   qr = G
# Randomize corpse and corpse loot loctions.
SHUFFLE: dgF
# Replace a small number of outer chamber walls with floor or trap.
SUBST:   E = xD
NSUBST:  H = D / x
: if you.in_branch("D") then
:     if you.depth() < 12 then
KMONS:   1 = redback / jumping spider w:5
KMONS:   3 = lindwurm
KFEAT:   3^ = trap_net / trap_dispersal
# Outer chamber: place monsters and traps. We add one more monster and one half
# more trap on-average with each depth increase condition. The D glyph will
# always be either floor or a trap so that players can see somewhat into the
# vault from the runed door.
NSUBST:  D = ^- / -, - = 2=1 / 2=1. / .
# Boulder beetle gate: We add one half more boulder beetle with each depth
# increase condition.
NSUBST:  J = 2 / 2. / .
# Inner chamber: place gold and potion/scroll loot, adding one half more of
# each on average with each depth increase condition. Also add one half more
# lava snake and one half more lindwurm with each depth increase.
NSUBST:  O = k. / $. / ., K = L / 2=LK / K, M = 3 / .
# The "ruins" theme for earlier Dungeon and Lair.
FTILE:   dgik$F123KLN^-.rxc = floor_pebble_yellow
FTILE:   = = floor_pebble_yellow
TILE:    x = wall_brick_brown_vines
TILE:    r = dngn_statue_ancient_evil
:     elseif you.depth() < 14 then
KMONS:   1 = redback / jumping spider / tarantella w:5 / wolf spider w:5
KMONS:   3 = lindwurm
KFEAT:   3^ = trap_net / trap_dispersal
SUBST:   d = e
NSUBST:  D = ^ / 2=^- / -, - = 4=1 / 4=1. / .
NSUBST:  J = 2=2 / 2=2. / .
SUBST:   i = j
NSUBST:  N = $ / ., O = 2=k / $, M = 2=3 / 3. / ., K = 2=L / 3=LK / K
FTILE:   egjk$F123KL^.rxc = floor_pebble_yellow
FTILE:   = = floor_pebble_yellow
TILE:    x = wall_brick_brown_vines
TILE:    r = dngn_statue_ancient_evil
:     else
# We replace the ruins theme with the Tomb theme for D:14-15 and Spider.
# Spectrals and death scarabs place in the inner chamber, with miasma cloud
# generators replacing lava + fire clouds.
KMONS:   1 = redback / jumping spider / tarantella / wolf spider
KMONS:   Q = spectral wolf spider
KMONS:   3 = death scarab
KFEAT:   3^ = trap_zot w:20 / trap_net / trap_dispersal
SUBST:   d = f
NSUBST:  D = ^ / 3=^- / -, - = 4=1 / 6=1. / .
NSUBST:  J = 2=2 / 2.
# Inner chamber: we have 4 available M squares for traps/scarabs.
SUBST:   i = j
NSUBST:  O = 2=k / k$, N = 2=$ / M, M = 2=3 / 3., K = 2=Q / 4=QP / P
# Set Tomb theme visuals. Rock becomes stone, and set tombish tiles for floor,
# wall, and statues, the latter being themed as sarcophagi.
SUBST:   x = c
TILE:    c = wall_tomb
COLOUR:  c = yellow
FTILE:   fgjk$F123PQ^.rc = floor_sandstone
FTILE:   = = floor_sandstone
: vault_granite_statue_setup(_G, "r", "sarcophagus")
:     end
: elseif you.in_branch("Lair") then
KMONS:   3 = lindwurm
KFEAT:   3^ = trap_net / trap_dispersal
:     if you.depth() < 4 then
KMONS:   1 = redback / jumping spider / tarantella w:5 / wolf spider w:5
NSUBST:  D = 2=^- / -, - = 2=1 / 4=1. / .
NSUBST:  J = 2 / 2=2. / .
NSUBST:  O = $ / k / ., K = L / 3=LK / K, M = 3 / 3. / .
:     else
KMONS:   1 = redback / jumping spider / tarantella w:5 / wolf spider w:5
# We start upgrading quality of one of three weapon, hat, or jewellery items
# with each depth increase.
SUBST:   d = e
NSUBST:  D = ^ / ^- / -, - = 3=1 / 4=1. / .
NSUBST:  J = 2 / 3=2. / .
NSUBST:  O = $ / k / $k, K = 2=L / 2=LK / K, M = 3 / 2=3. / .
:     end
# Add a border of ruined rock and plants for Lair.
SUBST:   ' = a:9 p:1 '
TILE:    r = dngn_statue_ancient_evil
FTILE:   degik$F123KLN^.rxc = floor_pebble_yellow
FTILE:   = = floor_pebble_yellow
TILE:    x = wall_brick_brown_vines
# Spider
: else
KITEM:   N = $
KMONS:   1 = jumping spider / tarantella / wolf spider / emperor scorpion w:5
KMONS:   Q = spectral wolf spider / spectral emperor scorpion
KMONS:   3N = death scarab
KFEAT:   3^ = trap_zot w:20 / trap_net / trap_dispersal
SUBST:   d = f, g = h
NSUBST:  D = 2=^ / 2=^- / -, - = 5=1 / 6=1. / .
NSUBST:  J = 3=2 / 2.
# Inner chamber: of of the six M+N squares, we use three for gold, additionally
# placing a scarab on one, two for scarabs plus traps, and one more for 50%
# chance of scarab + trap.
SUBST:   i = j, O = k
NSUBST:  K = 3=Q / 3=QP / P, NM = 2=$ / N / 2=3 / 3.
# A border of ruined rock for Spider, but without plants. Then set up Tomb
# theme for the interior.
SUBST:   ' = a', x = c
TILE:    c = wall_tomb
COLOUR:  c = yellow
FTILE:   fhjk$F123NPQ^.rc = floor_sandstone
: vault_granite_statue_setup(_G, "G", "sarcophagus")
: end
TILE:    q = dngn_statue_ancient_hero
CLEAR:   '
MARKER:  K = lua:fog_machine { cloud_type = "flame", pow_max = 20, \
                 delay_min = 30, delay_max = 50, size = 1, walk_dist = 0, \
                 excl_rad = 0 }
MARKER:  L = lua:fog_machine { cloud_type = "flame", pow_max = 20, \
                 delay_min = 30, delay_max = 50, size = 1, walk_dist = 0, \
                 excl_rad = 0 }
MARKER:  P = lua:fog_machine { cloud_type = "foul pestilence", pow_min = 10, \
                 pow_max= 20, delay = 10, size = 1, walk_dist = 0, \
                 excl_rad = 0 }
MARKER:  Q = lua:fog_machine { cloud_type = "foul pestilence", pow_min = 10, \
                 pow_max = 20, delay = 10, size = 1, walk_dist = 0, \
                 excl_rad = 0 }
: dgn.delayed_decay(_G, 'F', 'human corpse')
MAP
'''''''@'''''''''
'aaaaapaaaaaaaaa'
'aaaaaqpqaaaaaaa'
'acxxxx=xxcaaaaa'
'acxx---xxcaaaaa'
'acx-xxxDxccaaaa'
'acxx---dxxcccaa'
'accxxxEFExxxcca'
'aacccxxEg--xxca'
'aaaaccxxHHH-xca'
'aaaacxxx---xxca'
'aaaccx---xxxcca'
'aaacxx===xxccaa'
'aaacxJJJJJxcaaa'
'aaacxx===xxcaaa'
'aaacxKMMMKxcaaa'
'aaacxKNNNKxcaaa'
'aaacxKOOOKxcaaa'
'aaacxKrirKxcaaa'
'aaacxxxxxxxcaaa'
'aaacccccccccaaa'
'aaaaaaaaaaaaaaa'
'''''''''''''''''
ENDMAP

NAME:   gammafunk_boulding_lane
TAGS:   no_monster_gen no_trap_gen no_descent
DEPTH:  D:8-, Lair, Spider
ORIENT: float
ITEM:   pair of boots ego:rampaging pre_id
ITEM:   pair of boots ego:rampaging good_item pre_id
ITEM:   pair of boots randart pre_id
MONS:   boulder beetle, torpor snail
: if you.in_branch("D") then
:     if you.depth() < 11 then
SUBST:  * = ., D = G
NSUBST: 1 = 1 / .
:     elseif you.depth() < 14 then
SUBST:  d = e, D = G
NSUBST: 1 = 1 / 1., * = * / .
:     else
SUBST:  d = ef, D = 2
NSUBST: 1 = 2=1 / 1., * = * / *. / .
:     end
: elseif you.in_branch("Lair") then
:     if you.depth() < 4 then
SUBST:  d = de, D = G
NSUBST: 1 = 1 / 1. / ., * = *. / .
:     else
SUBST:  d = e, D = 2G
NSUBST: 1 = 1 / 1., * = * / .
:     end
: else
SUBST: d = f, D = 2
: end
MARKER: P = lua:transp_loc("boulding_lane_entry")
MARKER: Q = lua:transp_dest_loc("boulding_lane_entry")
MARKER: R = lua:transp_loc("boulding_lane_exit")
MARKER: S = lua:transp_dest_loc("boulding_lane_exit")
MAP
.cccccccccc
...n*1..cGc
...ndnnn.cccc
@SPnR1...QlDn@
...n.nnn.cccc
...n*1..cGc
.cccccccccc
ENDMAP

# If you keep messing around with terrain-based magic in the same area,
# sometimes things get messy. Monster set focuses on monsters that modify
# terrain (Primal Wave, Eruption, Hurl Sludge, Dig, water aura, etc.) and/or use
# it tactically (Waterstrike, Awaken Forest, Pyroclastic Surge, LRD, etc.).
NAME:     nicolae_terramorphic_expanse
TAGS:     patrolling no_pool_fixup transparent
DEPTH:    Depths
ORIENT:   float
KITEM:    12% = % w:30 / * / | w:5
KMONS:    1 = salamander tyrant / merfolk aquamancer / water nymph / \
              fenstrider witch / spriggan druid / eleionoma / \
              deep elf elementalist / deep troll earth mage
KMONS:    2 = salamander / merfolk / water nymph / spriggan / deep troll
KFEAT:    % = W / . w:40
NSUBST:   1 = 2=1 / 112
SUBST:    " = %-, - = c:90 Wwlxt...., ` = cc_
# Saving on glyph usage through recursive subvaults.
# nicolae_terramorphic_biome is where all the meat and potatoes happens.
SUBVAULT: D : nico_terraquarter
SUBVAULT: E : nico_terraquarter
SUBVAULT: F : nico_terraquarter
SUBVAULT: H : nico_terraquarter
SUBVAULT: J : nico_terraquarter
SUBVAULT: K : nico_terrabiome
SUBVAULT: L : nico_terrabiome
SUBVAULT: M : nico_terrabiome
SUBVAULT: N : nico_terrabiome
CLEAR:    _
MAP
``````````      ``````````
`cccccccccc-@@-cccccccccc`
`cc""%DD.--.KK.--.EE%""cc`
`c"1.DDDD..KKKK..EEEE.1"c`
`c"..DDDD..KKKK..EEEE.."c`
`c%DD.DD.DD.KK.EE.EE.EE%c`
`cDDDD..DDDD..EEEE..EEEEc`
`cDDDD..DDDD..EEEE..EEEEc`
`c.DD.DD.DD.JJ.EE.EE.EE.c`
`c-..DDDD..JJJJ..EEEE..-c`
 c-..DDDD..JJJJ..EEEE..-c
 -.LL.DD.JJ.JJ.JJ.EE.MM.-
 @LLLL..JJJJ%%JJJJ..MMMM@
 @LLLL..JJJJ%%JJJJ..MMMM@
 -.LL.FF.JJ.JJ.JJ.HH.MM.-
 c-..FFFF..JJJJ..HHHH..-c
`c-..FFFF..JJJJ..HHHH..-c`
`c.FF.FF.FF.JJ.HH.HH.HH.c`
`cFFFF..FFFF..HHHH..HHHHc`
`cFFFF..FFFF..HHHH..HHHHc`
`c%FF.FF.FF.NN.HH.HH.HH%c`
`c"..FFFF..NNNN..HHHH.."c`
`c"1.FFFF..NNNN..HHHH.1"c`
`cc""%FF.--.NN.--.HH%""cc`
`cccccccccc-@@-cccccccccc`
``````````      ``````````
ENDMAP

NAME:     nicolae_terramorphic_quarter
TAGS:     nico_terraquarter unrand allow_dup no_pool_fixup transparent no_dump
SUBVAULT: D : nico_terrabiome
SUBVAULT: E : nico_terrabiome
SUBVAULT: F : nico_terrabiome
SUBVAULT: H : nico_terrabiome
MAP
    DD
   DDDD
   DDDD
 HH DD EE
HHHH  EEEE
HHHH  EEEE
 HH FF EE
   FFFF
   FFFF
    FF
ENDMAP

NAME:  nicolae_terramorphic_biome
TAGS:  nico_terrabiome unrand allow_dup patrolling no_pool_fixup transparent \
       no_item_gen no_monster_gen no_trap_gen no_dump
# Monster glyphs:
# 1234 are the usual glyphs. 12 have a chance to place lava/water.
# yz always place lava/water. pq never place lava/water.
# Each glyph has a total weight of 180 and a 1/9 chance of nothing.
# The glyphs have a 2/9 chance to place weaker versions of the main monsters
# for that glyph, to keep the vault slightly less of a murder zone.
KMONS: 1py = salamander tyrant w:120 / salamander w:40 / nothing w:20
KMONS: 2qz = merfolk aquamancer w:50 / water nymph w:50 / \
            elemental wellspring w:20 / merfolk w:40 / nothing w:20
KMONS: 3 = fenstrider witch w:20 / spriggan druid w:20 / eleionoma w:40 / \
           dryad w:40 / spriggan w:40 / nothing w:20
KMONS: 4 = deep elf elementalist w:60 / deep troll earth mage w:60 / \
           deep troll w:40 / nothing w:20
KMONS: 5 = elemental wellspring w:120 / merfolk aquamancer w:20 / \
           water nymph w:20 / nothing w:20
KITEM: $ = $ / $ good_item w:5
KFEAT: ! = mangrove
KFEAT: ` = demonic_tree
KFEAT: ' = petrified_tree
KFEAT: 1 = l / .
KFEAT: 2 = w / W / . w:20
KFEAT: y = l
KFEAT: 5z = w
# 1/21 chance for a biome to be a rare type (~ glyph), the vault has 24 biomes,
# chance of all biomes in vault being nonrare is (25/26)^24 = ~31%
# Each biome tile has 1/15 chance of putting a monster, chance of a given
# biome having no monsters is (14/15)^12 = ~43.7%.
# 24 biomes with 12 tiles each, placing monsters on about 1/15 of tiles, gives
# 19.2 monster glyphs per vault on average. With each monster glyph having a
# 1/9 chance of nothing, that's about 17.1 monsters per vault, plus the 4
# guaranteed monsters in the corners of the main vault.
SUBST: . : D:4 E:4 F:4 H:4 J:4 ~:1, ~ : KLMNOPQR
# Volcano (Common)
SUBST: D = l:100 x:20 .:20 1
# Watery (Common)
SUBST: E = w:60 W:50 .:30 2
# Rocky (Common)
SUBST: F = x:80 .:40 c:20 4
# Forest (Common)
SUBST: H = t:100 .:40 3
# Swampy (Common)
SUBST: J = !:85 W:35 .:20 3
# Oops, All Liquids! (Rare, contains no walkable space)
SUBST: K = l:70 w:70 y:5 z:5
# Hellish (Rare)
SUBST: L = `:70 .:50 l:20 1:5 3:5
# Melange (Rare)
SUBST: M = l:20 x:20 w:20 W:20 t:20 !:20 .:20 -, - = 1234
# Precious Minerals (Rare)
SUBST: N = x:40 b:40 $:40 .:20 4
# Wellspring (Rare, only place for elemental wellsprings to generate)
SUBST: O = w:90 .:50 5
# Petrified (Rare)
SUBST: P = ':70 x:30 .:30 c 3:5 4:5
# Chunk Of Metal (Rare, contains no walkable space)
SUBST: Q = v:130 l y
# Flat Empty Terrain (Rare)
SUBST: R = .:140 -, - = pq34
MAP
 ..
....
....
 ..
ENDMAP

NAME:   dreamdust_black_sun_cult
TAGS:   transparent no_monster_gen
ORIENT: float
DEPTH:  D:13-, Zot, !Zot:$
WEIGHT: 25 (Zot), 10
: if you.in_branch("D") then
KMONS:  1 = salamander mystic / cognitogaunt w:1
KMONS:  2 = sun demon
KMONS:  3 = salamander / large abomination w:5
KITEM:  1 = manual of fire magic w:5 / manual of necromancy w:5 / \
            randbook disc:fire disc2:necromancy spells:scorch \
            slevels:8 numspells:4 title:Dead_Stars, \
            staff of fire / staff of necromancy / scroll of immolation q:3 / \
            scroll of torment q:3 / any weapon ego:flaming / \
            any weapon ego:draining
: else
KMONS:  1 = orb of fire
KMONS:  2 = sun moth / balrug w:4 / cognitogaunt w:1
KMONS:  3 = draconian scorcher / draconian monk w:5
KITEM:  1 = manual of fire magic / manual of necromancy, \
            randbook disc:fire disc2:necromancy spells:starburst \
            slevels:25 numspells:4 title:Dead_Stars, \
            any weapon ego:flaming randart / any weapon ego:draining randart
: end
COLOUR: bm = red
TILE:   m = dngn_transparent_wall_red
FTILE:  -mA1 = floor_volcanic
: single_cloud(_G, "!", "flame", false)
NSUBST: - = 2=2 / 2=2- / 3=3 / 3=3- / -
veto {{
  return you.in_branch("Zot") and dgn.zot_orb_type() ~= "orb of fire"
}}
MAP
 .........
..!bbbbb!..
.!bb---bb!.
.bb-----bb.
.b--mAm--b.
.b--m1m--b.
.b--mmm--b.
.bb-----bb.
.!bb---bb!.
..!bb+bb!..
 .........
ENDMAP

NAME:   dreamdust_cat_pyramid
TAGS:   no_monster_gen transparent no_rotate
DEPTH:  Crypt, Depths
ORIENT: float
# Offerings of gold, valuable items, or good potions to the Cat God.
: kitem("d = star_item w:100 / " .. dgn.loot_potions)
MONS:   guardian sphinx
KFEAT:  ap = granite_statue
NSUBST: 1 = 2=1 / 1--
TILE:   c = wall_tomb
COLOUR: c = yellow
TILE:   p = dngn_sarcophagus_pedestal_left
TILE:   aG = dngn_statue_cat
FTILE:  -d$1+ap = floor_sandstone
MAP
       ...
      ..c..
     ..ccc..
    ..ccdcc..
   ..ccdpdcc..
  ..cc1$$$1cc..
 ..cc--111--cc..
..cccca---acccc..
.cccccc+++cccccc.
......G...G......
     .......
     .G...G.
     ...@...
ENDMAP

NAME:    dreamdust_experimentation
TAGS:    no_monster_gen no_item_gen
DEPTH:   D:13-, Depths
ORIENT:  float
KPROP:   23 = no_tele_into
KFEAT:   t = demonic_tree
: item(dgn.loot_potions .. " / potion of mutation w:40")
KMONS:   p = human perm_ench:berserk generate_awake \
             / human perm_ench:wretched generate_awake \
             / human perm_ench:confusion generate_awake \
             / human perm_ench:blind generate_awake
KMONS:   q = felid perm_ench:berserk generate_awake \
             / octopode perm_ench:wretched generate_awake \
             / spriggan perm_ench:confusion generate_awake ; nothing \
             / minotaur perm_ench:blind generate_awake ; nothing
: if you.in_branch("D") then
KMONS:   1 = arcanist / occultist
KMONS:   2 = shapeshifter / large abomination
KMONS:   3 = ugly thing
NSUBST:  - = 1 / 2=1- / 2=2 / 2=2- / -, d = 2=d / 4=d-
: else
KMONS:   1 = kobold fleshcrafter
KMONS:   2 = large abomination / glowing shapeshifter w:20
KMONS:   3 = very ugly thing
NSUBST:  - = 2=1 / 3=1- / 3=2 / 5=2- / -
: end
# Human (shapeshifters and large abominations) or animal (ugly things)
# experimentation.
SHUFFLE: 2p / 3q
COLOUR:  c = white
TILE:    G = dngn_statue_demonic_bust
TILE:    x = wall_brick_white
FTILE:   -+G123pqd = floor_rough_white
MAP
 .ccccccccccccccc
..cGGccpcpcpcGcdc
.tc--ccncncnc-cdc
@.+--+--------+dc
@.+--+--------+dc
.tc--ccncncnc-cdc
..cGGccpcpcpcGcdc
 .ccccccccccccccc
ENDMAP

# everyone's favorite mechanic
NAME:   hellmonk_paralyzer
TAGS:   transparent no_monster_gen
DEPTH:  D:10-, Orc, Depths, Zot
ORIENT: float
MONS:   hornet, orc sorcerer / ogre mage, jorogumo / fenstrider witch
MONS:   guardian sphinx / vampire knight, dread lich
# scroll of vulnerability as fallback if paralysis isn't generated this game
ITEM:   wand of paralysis w:9999 / scroll of vulnerability w:1
NSUBST: 1 = 1:1 / *:1.
: if you.in_branch("D") and you.absdepth() < 13 then
NSUBST:  - = 16 = 1... / 1:2 / *:.
: elseif you.in_branch("Orc") then
NSUBST:  - = 8 = 1... / 12 = 2... / *:.
: elseif you.in_branch("Depths") then
NSUBST: -  = 8 = 3... / 12 = 4... / 1:5 / *:.
: elseif you.in_branch("Zot") then
NSUBST: - = 8 = 4... / 12 = 5... / 8 = 0... / *:.
SUBST: ' = |'
: else
NSUBST: - = 8 = 1... / 12 = 2... / 1:3 / *:.
: end
NSUBST: ' = 1:* / * = *..
SUBST:  G : GG.
TILE:   v = dngn_metal_wall_yellow
: vault_metal_statue_setup(_G, "G", "misfortune conduit")
MAP
ccccccccccccccc
c-----'''-----c
c-vv--'d'--vv-c
c---vv'''vv---c
c-----vvv-----c
c-vv-------vv-c
c---vv---vv---c
c-----vvv-----c
c.vv-------vv.c
c...vv...vv...c
c1....vvv....1c
cc...........cc
 cccG.....Gccc
   cccc+cccc
      .@.
ENDMAP

###############################################################################
# The dwarves delved too greedily and too deep...
NAME:    dreamdust_dug_too_deep
TAGS:    no_monster_gen no_pool_fixup
ORIENT:  float
DEPTH:   D:11-, !D:$, Orc, !Orc:$
KMONS:   A = balrug
KFEAT:   A = stone_arch
KFEAT:   C = c
SUBST:   - = ---..!
KPROP:   -! = bloody
: set_feature_name("granite_statue", "a statue of a dwarf")
TILE:    C = stone_wall_pyre
TILE:    G = dngn_statue_dwarf
: dgn.delayed_decay_extra(_G, "?", "dwarf corpse", "helmet / \
: cloak, plate armour, war axe good_item / broad axe / \
: battleaxe / executioner's axe / arga w:1")
: dgn.delayed_decay(_G, "!", "dwarf corpse")
MAP
     wwwww
wwwwwwcccwwwwww
wcccccc>ccccccw
wcG....G....Gcw
wc..-------..cw
wcc+cV---Vc+ccw
wwc.ccc=ccc.cww
 wc.cC---Cc.cw
wwc.cC-?-Cc.cww
wcc+cc-A-cc+ccw
wc...ccccc...cw
wc...........cw
wcG.........Gcw
wcccccc+ccccccw
wwwwwwG.Gwwwwww
     ww.ww
      w.w
      G.G
       @
ENDMAP

###############################################################################
NAME:   dreamdust_wu_jian_sword_trials
TAGS:   no_monster_gen no_item_gen no_descent no_pool_fixup
ORIENT: float
DEPTH:  D:12-, Orc, Elf
# Three possible monster sets
: if you.in_branch("D") then
KMONS:  1 = human ; ring mail . \
            falchion good_item | long sword good_item
KMONS:  2 = vault guard ; chain mail . \
            scimitar good_item | great sword good_item
KMONS:  3 = vault warden ; plate armour . \
            autumn katana w:1 | demon blade good_item | \
            double sword good_item | great sword good_item | \
            triple sword good_item | great sword ego:spectral
: elseif you.in_branch("Orc") then
KMONS:  1 = orc warrior ; ring mail . \
            falchion good_item | long sword good_item
KMONS:  2 = orc knight ; chain mail . \
            scimitar good_item | great sword good_item
KMONS:  3 = orc warlord ; plate armour . \
            autumn katana w:1 | demon blade good_item | \
            double sword good_item | great sword good_item | \
            triple sword good_item | great sword ego:spectral
: else
KMONS:  1 = elf ; ring mail . \
            falchion good_item | long sword good_item
KMONS:  2 = deep elf knight ; leather armour . \
            scimitar good_item | great sword good_item
KMONS:  3 = deep elf blademaster ; leather armour . \
            autumn katana w:1 | demon blade good_item | \
            double sword good_item | great sword good_item | \
            triple sword good_item | great sword ego:spectral
: end
KMONS:  s = sacred lotus
KFEAT:  s = w
KFEAT:  O = altar_wu_jian
KPROP:  -QRSTUVOt$123 = no_tele_into
TILE:   G = dngn_statue_sword
COLOUR: t = lightred / red w:3
TILE:   t = dngn_tree_lightred / dngn_tree_red w:4 / dngn_tree_yellow w:4
MARKER: P = lua:transp_loc("sword_trial_1_entry")
MARKER: Q = lua:transp_dest_loc("sword_trial_1_entry")
MARKER: R = lua:transp_loc("sword_trial_2_entry")
MARKER: S = lua:transp_dest_loc("sword_trial_2_entry")
MARKER: T = lua:transp_loc("sword_trial_3_entry")
MARKER: U = lua:transp_dest_loc("sword_trial_3_entry")
MARKER: V = lua:transp_loc("sword_trial_exit")
MARKER: W = lua:transp_dest_loc("sword_trial_exit")
MAP
   .....
  ..GWG..
...ccncc...
.ccc$V$ccc.
.ct$$3$$tc.
.ct$$$$$tc.
.cs-tOt-sc.
.ct-----tc.
.ct-----tc.
.ccc-U-ccc.
..GcccccG..
 .GccTccG.
 .cc2-2cc.
 .c-----c.
 .n--t--n.
 .c-----c.
 .cc-S-cc.
 .GcccccG.
 .GccRccG.
 .cc111cc.
 .c-----c.
 .n-----n.
 .c-----c.
 .cc-Q-cc.
 .ccccccc.
 ..ccPcc..
  ..GOG..
   ..@..
ENDMAP

NAME:    dreamdust_merry_men
TAGS:    no_monster_gen transparent patrolling
DEPTH:   Depths
ORIENT:  float
MONS:    centaur warrior / deep elf archer
MONS:    deep elf master archer, alderking
KMONS:   ? = deep elf master archer ; longbow good_item
KITEM:   ? = quick blade good_item / cloak good_item / gold q:1000
KFEAT:   % = cache_of_fruit
SUBST:   - = .tt, ' = ..t, % : %..
NSUBST:  . = 1:3 / 2 = 22. / 3:1 / 4 = 1. / .
TILE:    G = dngn_statue_archer
: set_feature_name("granite_statue", "a statue of an archer")
MAP
.'''.'''.'''.'''.'''.''
'.'.'.'.'.'.'.'.'.'.'.'
''.'''.'''.'''.'''.'''.
'.'.-.-.-.-.-.-.-.-.'.'
''.-----------------.''
'.'.--t-t-t-t-t-t--.'.'
.''-.--.........--.-''.
'.'.--t.........t--.'.'
''.-.--.........--.-.''
'.'.--t...xxx...t--.'.'
.''-.--%..x?x..%--.-''.
'.'.--t...x+x...t--.'.'
''.-.--..G...G..--.-.''
'.'.--t.........t--.'.'
.''-.--.........--.-''.
'.'.--t-t-t.t-t-t--.'.'
''.-.------t..tt--.-.''
'.'.-.-.-.-.tt.tt.-.'.'
.'''.'''.'.tt..tt'.'''.
'.'''.'''.t..tt.'''.'.'
.'.'.'.'.t.t.t.'.'.'.''
ENDMAP

NAME:    dreamdust_tengu_aerie
TAGS:    no_monster_gen no_item_gen no_pool_fixup no_descent
DEPTH:   Depths, !Depths:$
ORIENT:  float
KMONS:   % = tengu warrior / tengu conjurer
KMONS:   ? = chonchon
KMONS:   ! = tengu reaver
KITEM:   $?!> = gold w:30 / any jewellery / star_item / superb_item
KFEAT:   > = escape_hatch_down
NSUBST:  x = 2:A / 2:x / * = xxxA, b = 1:. / 4:b / * = bbbbbbbb.
NSUBST:  $ = 2:% / 1:? / 2:! / 3 = %%%%?!!! / 4 = %$ / *:$
# FIXME: The %syn for dngn_statue_depths is already the tengu one,
#        so it'll get other statues if we specify just that one.
TILE:    G = dngn_statue_tengu
: set_feature_name("granite_statue", "a statue of a tengu")
MAP
  wwwwwwwwwwwwwwwwwww@@
 wwwwwwwwwwwwwwwwwwwww@
wwwwwwxxxxxxxxxxxwwwwww
wwwxxxx.........xxxxwww
wwxx...bbbbbbbbb...xxww
wwx..bbb.......bbb..xww
wwx.bb...cc.cc...bb.xww
wwx.bG.ccc$$$ccc.Gb.xww
wwx.b..c$$$$$$$c..b.xww
ww..b..c$$$>$$$c..b.xww
wwx.b..c$$$$$$$c..b.xww
wwx.bG.ccc$G$ccc.Gb.xww
wwx.bb...ccccc...bb.xww
wwx..bbb.......bbb..xww
wwxx...bbbb.bbbb...xxww
wwwxxxx.........xxxxwww
wwwwwwxxxxxxxxxxxwwwwww
 wwwwwwwwwwwwwwwwwwwww
  wwwwwwwwwwwwwwwwwww
ENDMAP

NAME:    dreamdust_hydra_shepherd
TAGS:    no_monster_gen transparent
ORIENT:  float
DEPTH:   Depths
KFEAT:   .! = floor / shallow_water
TILE:    G = dngn_statue_hydra
: set_feature_name("granite_statue", "a statue of a hydra")
# Woe to whoever gets an iron giant as the shepherd
# Throwing hydras seems strong :)
KMONS:   S = stone giant / iron giant w:2
KMONS:   ! = nothing / nine-headed hydra / ten-headed hydra / \
             eleven-headed hydra / twelve-headed hydra / twenty-headed hydra w:1
KMONS:   . = nothing w:300 / hydra
MAP
.............
.............
..Gxxx.xxxG..
..x!.....!x..
..x!..S..!x..
..x!.....!x..
..Gxxx.xxxG..
.............
.............
ENDMAP

# Home of Duvessa and Dowan.
# They're usually off killing adventurers...
NAME:   dreamdust_elfheim
TAGS:   no_monster_gen transparent
ORIENT: float
DEPTH:  D:4-7
KMONS:  1 = generate_awake training dummy
KMONS:  ? = duvessa band
SUBST:  ? = ?-
TILE:   G = dngn_statue_twins
FTILE:  -?m+1GTV = floor_hall
: decorative_floor(_G, 'V', "floral vase")
: set_feature_name("clear_rock_wall", "a polished mirror")
MAP
..........
.xxxxxxxx.
.xTGTx-mx.
.x---+--x.
.x-?-xxxx.
.x---+--x.
.xV--x11x.
.xx+xxxxx.
..........
ENDMAP

NAME:    tekkud_shrikecote
TAGS:    no_trap_gen no_monster_gen
DEPTH:   Depths
ORIENT:  float
MONS:    chonchon, caustic shrike, spriggan druid
MONS:    tengu warrior, tengu conjurer, tengu reaver
KMONS:   p = plant / bush
KFEAT:   - = +
KFEAT:   d = cache_of_meat
KFEAT:   e = cache_of_fruit / cache_of_baked_goods w:4
SHUFFLE: mno, de / de / ~~
SUBST:   n : xxm, o = x, '~ = t:2 p:3 `
NSUBST:  2 = 2 = 112 / 2:_ / *:2
FTILE:   _`%*|det-1234567p = floor_grass_dark
MAP
  .........     ..........
 ..xxmmmxx..   ..xxnnnxxx.
..xx%*'''xx.. ..xx''''%1x.
.xx1d222''xx. .xx''4'5`'x.
.x*'`'`''''xx+xx'''`'`'|o.
.o'````'`'`-..x-``````6'o.
.o'3```````-x..-`'`'```'o.
.x|'`'`''''xx+xx'''`'`'*o.
.xx1'222''xx. .xx''4'5e'x.
..xx%''''xx.. ..xx'''*%1x.
 ..xxnnnxx..   ..xxmmmxxx.
  .........     ..........
ENDMAP

# All those mummy chaos knights have to rest somewhere.
NAME:    skrybe_chaotic_catacombs
TAGS:    no_monster_gen depths_entry chance_depths_entry
DEPTH:   D:12-, !D:$, Depths
PLACE:   D:$
WEIGHT:  2 (D:$), 10
ORIENT:  float
: if you.in_branch("D") then
MONS:    vampire ; rapier ego:chaos | long sword ego:chaos . ring mail
KMONS:   H = rakshasa ; demon whip ego:chaos | demon trident ego:chaos | \
                        demon blade ego:chaos
:   if you.where() ~= dgn.level_name(dgn.br_entrance("Depths")) then
MONS:    skeletal warrior, flayed ghost
MONS:    guardian mummy ; orcbow ego:chaos | longbow ego:chaos . \
                          quarterstaff ego:chaos
MONS:    ugly thing, chaos spawn
MONS:    dancing weapon ; mace ego:draining | hand axe ego:draining | \
                          spear ego:draining
KMONS:   0 = shapeshifter
KMONS:   B = shapeshifter zombie
KMONS:   C = shapeshifter simulacrum
KMONS:   D = spectral shapeshifter
KMONS:   E = laughing skull band
KMONS:   F = vampire mage
KMONS:   G = golden eye
SUBST:   3 = ., ; = ., X = c
:   else
KMONS:   2 = ugly thing zombie
KMONS:   3 = vampire mage ; quarterstaff ego:chaos . robe
KMONS:   47 = very ugly thing / glowing shapeshifter w:5
KMONS:   56 = ugly thing
KMONS:   0 = culicivora perm_ench:shapeshifter / \
             black mamba perm_ench:shapeshifter / \
             unseen horror perm_ench:shapeshifter
KMONS:   BCD = shapeshifter simulacrum
KMONS:   E = very ugly thing
KMONS:   F = flayed ghost
KMONS:   G = glowing orange brain
KITEM:   ; = smoky gem
KFEAT:   ~ = enter_depths
KFEAT:   X = c
SUBST:   ' = "
FTILE:   ;~" = floor_depthstone
TILE:    X = stone_wall_depths_entry
:   end
SUBST:   ^ = .
NSUBST:  7 = 1:B / 1:C / *:., I = 1:I / *:2, 8 = 1:8. / *:8
: else
MONS:    guardian mummy ; orcbow ego:chaos | longbow ego:chaos . \
                          athame ego:chaos
MONS:    vampire knight ; great sword ego:chaos | war axe ego:chaos . \
                          chain mail | plate armour
MONS:    ancient champion / vampire bloodprince w:2, lich
MONS:    very ugly thing / kobold fleshcrafter w:4, zykzyl w:4 / chonchon band
MONS:    dancing weapon ; great mace ego:draining | \
                          battleaxe ego:draining | glaive ego:draining
KMONS:   0 = glowing shapeshifter
KMONS:   B = glowing shapeshifter zombie / apis zombie
KMONS:   C = glowing shapeshifter simulacrum / fire giant simulacrum
KMONS:   D = spectral glowing shapeshifter / spectral pearl dragon
KMONS:   E = laughing skull band
KMONS:   F = mummy priest god:Xom
KMONS:   G = tentacled monstrosity
:   kmons("H = reaper ; " .. scythe("chaos"))
KFEAT:   ^ = trap_harlequin
SUBST:   ^ = ^..., ; = ., ~ = ', X = c
: end
ITEM:    potion of mutation q:4 pre_id
ITEM:    potion of ambrosia q:4 pre_id / protean talisman randart w:5 / \
         sanguine talisman randart w:5 / talisman of death randart w:5 / \
         randbook owner:Xom disc:alchemy disc2:necromancy numspells:6
KFEAT:   _ = altar_xom
KFEAT:   ? = altar_kikubaaqudgha mimic
KFEAT:   ! = altar_yredelemnul mimic
NSUBST:  9 = 3:0 / 1:1 / 2:2 / 1:E / 5 = 1E 0:30 / *:., I = 1:4 / 1:6 / *:.
NSUBST:  A = 2:8 / 2 = 8. / *:., 8 = 1:3 / 1:4 / 1:6 / 1:7 / 2:H / * = 36E 0:30
SHUFFLE: BCD
NSUBST:  ' = 6:$ / 6:* / 4:f / *:., $ = 6:* / * = $% .:20
NSUBST:  f = 1:d / 3:| / * = $% .:20, | = 1:e / *:|
SUBST:   v : xv
# Mashing up Crypt, Yred, and Kiku colours in both tiles and console.
COLOUR:  ` = magenta
COLOUR:  g = mountain
TILE:    x = wall_undead_magenta / wall_undead_darkgray
TILE:    v = dngn_metal_wall_red / dngn_metal_wall_cyan
FTILE:   `+ = floor_pebble_magenta / floor_pebble_red
FTILE:   .^f_$%*|?!12345670BCDEF : floor_tomb / floor_necro_squares w:5
: vault_granite_statue_setup(_G, "g", "scintillating statue")
: decorative_floor(_G, 'f', "broken floral vase")
MAP
  ccccccccccccccccccccccccccccccccc
  ccccccccccccXXXXXXXXXcccccccccccc
ccccc........`.'''3'''.`........ccccc
cccc..........`.''~''.`..........cccc
ccc.....vv.....`.'''.`.....vv.....ccc
ccc.....vv7.....`F.F`.....7vv.....ccc
ccc..vv....vv..I.`^`.I..vv....vv..ccc
ccc..vv....vv....._.....vv....vv..ccc
ccc.....vv.......`^`.......vv.....ccc
ccc.....vv......`...`......vv.....ccc
ccc..........cc`..;..`cc..........ccc
cccc....^...ccccc...ccccc...^....cccc
ccgccc``cccccf.........fccccc``cccgcc
ccc..^.....cf....vvv....fc.....^..ccc
ccc.......ccf...vvvvv...fcc.......ccc
ccc....9cccc*...9vvv9...*cccc9....ccc
ccc...8cccccc8....8....8cccccc8...ccc
ccc..ccccccccc..||G||..ccccccccc..ccc
ccc.....ccccccccccccccccccccc.....ccc
ccc........cc...ccccc...cc........ccc
ccc........`......c......`........ccc
cccccc.09..`....$$c$$....`..90.cccccc
ccccccccc.^c...$$1c1$$...c^.ccccccccc
cccgcc.....c...5$$c$$5...c.....ccgccc
cccc.......cc....ccc....cc.......cccc
ccccc....9ccccccccccccccccc9....ccccc
ccccc....ccccccccccccccccccc....ccccc
  cccc..ccccA.....9.....Acccc..ccccc
  ccc..1..c...............c..1..ccc
  ccc.B...c...vvv9^9vvv...c...C.ccc
  cccB....+..Avvv...vvvA..+....Cccc
  ccc.B...+..vvv.._..vvv..+...C.ccc
  ccc..4..c..vvv.....vvv..c..4..ccc
  cccc...cc......?.!......cc...cccc
  cccccccccc..^.......^..cccccccccc
    ccccccccccccc+++ccccccccccccc
ENDMAP

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

# Swarm, Rangers, Dance, Elements, Pentagram.
NAME:    regret_index_nemelex_summoning_deck_glade
TAGS:    transparent no_monster_gen no_pool_fixup
DEPTH:   D:12-, Depths
ORIENT:  float
: if you.in_branch("D") then
MONS:    killer bee, queen bee, centaur warrior, naga sharpshooter
MONS:    dancing weapon ; hand axe ego:venom plus:-4 | mundane hand axe plus:-4
MONS:    molten gargoyle / sun demon w:5, polar bear / ice devil w:5
KMONS:   8 = raiju
KMONS:   9 = rakshasa
NSUBST:  ? = 2:1 / 2:3 / 1:13. / 2:5 / *:.
SUBST:   9 = ', ! = 9
: else
MONS:    meliai band, queen bee, naga sharpshooter, deep elf master archer
MONS:    dancing weapon ; trident ego:flaming | trident ego:freezing | \
                          long sword ego:flaming | long sword ego:freezing
MONS:    fire dragon / balrug w:5, ice dragon / blizzard demon w:5
KMONS:   8 = shock serpent
KMONS:   9 = shadow demon
NSUBST:  1 = 1:1 / 1:11. / *:., ? = 1:1 / 3:3 / 3:5 / 1:1335..
SUBST:   ! = '
: end
KITEM:   d = potion of ambrosia pre_id
KFEAT:   X = x
KFEAT:   C = altar_nemelex_xobeh
KFEAT:   F = cache_of_fruit
SUBST:   T = tt., F : FF.
SHUFFLE: 678
COLOUR:  x = yellow
COLOUR:  b = white
TILE:    x = wall_wax
TILE:    b = dngn_crystal_white
FTILE:   '*|67890 = floor_pebble_darkgray
: vault_granite_statue_setup(_G, "G", "scintillating statue")
: decorative_floor(_G, 'P', "flower patch")
MAP
 XXXXXXXXXX
XX..T..T.....
X.............     @.....
X..G.tt.tttt..   ....bb...
XT.....t...tt..t....bbbb...
X..t...t.?t.ttttt.bbbbbbb..
X..t..t.??..ttttttbbb*|bbb..
XT..tt.???..tx''xbbb6''8bbb.
X..t..????..t...'bb''bb'*bb.
X..t.?????tt..T..wb'b''7bbb.
X..t?????t..t....w'b'''bbb..
 ..t.t..t...t....9G'bbbbbb..
 ..ttF..t..P.....!9llbbb....
  ..tttt.tt.T.......'bbt...
  ..ttb........U.....'xtt..
   .tt..T.....C.....T.'tt.
  ..ttb......U........xtt..
  ...txx........T.tt.tttt..
 ....xxx...4.....P..t..Ftt..
 ..xxxxx.x......t...t..t.t..
 ..xxx..xGx.....t..t????.t..X
 .xxx1..1x....T..tt?????.t..X
 .xxd.xx..xx....t..????..t..X
 .xxx2..1xxxb..bt..???.tt..TX
 ..xxxddxxxtttttt..??.t..t..X
  ..xxxxxxx.ttttt.t?.t...t..X
  ...xxxx....t..tt...t.....TX
   ...xx....   ..tttt.tt.G..X
     .....@    .............X
                .....T..T..XX
                  XXXXXXXXXX
ENDMAP

# A revival of an ancient Elf endvault, now refurbished
# for D / V elementals meeting with elves instead.
NAME:    dpeg_index_elf_rogue_hall
TAGS:    no_monster_gen no_item_gen no_rotate no_trap_gen no_pool_fixup
TAGS:    vaults_orient_s
DEPTH:   D:9-, Vaults
WEIGHT:  20 (Vaults), 10
ORIENT:  float
: if you.in_branch("D") then
:   if you.depth() < 12 then
MONS:    orc wizard, deep elf pyromancer, deep elf archer
MONS:    sky beast, fire bat, ice beast, shapeshifter
NSUBST:  3 = 2:1
:   else
MONS:    deep elf pyromancer / deep elf archer, deep elf knight
MONS:    deep elf zephyrmancer, gargoyle
MONS:    fire elemental, water elemental
MONS:    glowing shapeshifter / thermic dynamo w:2
:   end
SUBST:   z = c
TILE:    c = dngn_stone_wall_blue
TILE:    C = wall_stone_magic_shelf
: tile("Z = " .. crackle_def(_G))
NSUBST:  4 = 1:. / 1:4 / * = 4., 56 = 3:., ? = 2:. / 3 = 23.. / * : 23
: else -- Vaults
MONS:    deep elf death mage / deep elf high priest
MONS:    deep elf sorcerer / deep elf demonologist w:5
MONS:    deep elf annihilator, glowing shapeshifter
MONS:    war gargoyle, crystal guardian, golden dragon / storm dragon
SUBST:   @ = ., c = x
NSUBST:  2 = 1:14 / *:2, 23 = 1:., 4 = 1:. / 2:4 / * = 4., 56 = 4:.
NSUBST:  7 = 1:. / 1:56 / *:7, ? = 2 = 1. / 2 = 1233... / * : 233
NSUBST:  % = 2:| / 4:% / *:$
CLEAR:   z
:   vaults_hard_standard(_G)
: end
KFEAT:   CZ = c
KFEAT:   ^ = trap_teleport
KFEAT:   ~ = trap_archmage
KFEAT:   _ = altar_sif_muna / altar_vehumet
KITEM:   | = any book w:5 / any magical staff / any ring / any amulet / \
             any misc / any talisman w:5 / any wand w:5
SUBST:   ! = 56
SHUFFLE: wl
MAP
 zzzzzzzzzzzzzzzzzzz   zzzzzzzzzzzzzzzzzzz
zzcccccccccccCcccccc   ccccccCccccccccccczz
zccccc$$+e...3..%|ccccccc|%..2....c$$cccccz
zcC..c$.c....7..%%ZcccccZ%%..7....c.$c..Ccz
zc..%+.+cccc.7.ccccccccccccc.7.c+ccc.c.*.cz
zc.*.cc+.c.ccwcc.%.ccZcc.%.cclcc.c.cc+%..cz
zcc..cc..c..ccc..c.?c_c?.c..ccc..c..cc..ccz
zcc.ccc......c...c..!U!..c...c......ccc.ccz
 cc.cc$..c......4c...?...c4......c..$cc.cc
  c.cc$$$c%%.c...%...c...%...c.%%c$$$cc.c
  c.cc$ccccccc..ccc+ccc+ccc..ccccccc$cc.c
  c.ccccc...cccccb...?...bccccc...ccccc.c
  c.ccZ.......ccb...bbb...bcc.......Zcc.c
  c.ccc.2.!.?.cc.6.CcccC.5.cc.?.!.3.ccc.c
  c.cc.........+.4bcccccb4.+.........cc.c
 zc.cc.........c.6bcccccb5.c.........cc.cz
zcc+ccc..c.c..cc...CcccC...cc..c.c..+cc.ccz
zcc..ccccc+cccccb...bbb...bccccc+cccc+..ccz
zc..%ccc.....ccclb...?...bwccc.....ccc%..cz
zc.%.cc.......ccccccccccccccc.......cc.%.cz
zcC..cc...!...cccc~..^..~cccc...!...cc..Ccz
zcccclc.......ccc..cc.cc..ccc.......cwccccz
zzzzzccc.1..5..$..ccc.ccc..$..6..1.ccczzzzz
    zzccZ...ccccccccc.ccccccccc...Zcczz
    zzzcccccccccccccc@cccccccccccccczzz
ENDMAP

NAME:    regret_index_early_branch_jog
TAGS:    no_monster_gen no_item_gen no_pool_fixup
TAGS:    vaults_hard vaults_orient_n vaults_orient_w vaults_orient_s
DEPTH:   D:9-, !D:$, Vaults, !Vaults:$
WEIGHT:  20 (Vaults), 10
ORIENT:  float
KFEAT:   O = any shop
NSUBST:  W = 3:W / 2 = W. / *:.
: if you.in_branch("D") then
SHUFFLE: dDW / fFl, dDW / eEw, @&A
:   if you.depth() < 12 then
MONS:    yak / bullfrog w:5, wyvern / komodo dragon, orc warrior / orc priest
MONS:    jelly, large slime creature, water elemental, deep elf pyromancer
KMONS:   dD = vampire mosquito
KMONS:   eE = cyclops / manticore
KMONS:   fF = water moccasin
NSUBST:  dD = 2:d / 1:d. / *:., eE = 1:e / *:., fF = 2:f / 1:f. / *:.
:   else
MONS:    basilisk w:5 / wyvern, boulder beetle / catoblepas
MONS:    orc knight / orc high priest / orc sorcerer
MONS:    slime creature / very large slime creature w:1
MONS:    great orb of eyes / glowing orange brain w:1
MONS:    deep elf pyromancer / deep elf zephyrmancer
MONS:    deep elf knight w:15 / deep elf archer
KMONS:   d = vampire mosquito
KMONS:   D = hydra
KMONS:   e = harpy
KMONS:   E = cyclops
KMONS:   f = water moccasin
KMONS:   F = salamander
KMONS:   g = redback
KMONS:   G = wolf spider
KFEAT:   ^ = web
SHUFFLE: fFl / gG^
NSUBST:  e = 2:e / 1:e. / *:., f = 1:f / 1:F / 2 = fF. / *:.
NSUBST:  g = 1:g / 2:g. / *:., 2 = 2:2 / 1:% / *:.
:   end
KMONS:   P = plant
SUBST:   z = x, W = WWt, P = Pxx...
NSUBST:  1 = 4:1 / 1:1. / 1:% / *:., 2 = 1:2 / 1:% / *:.
: else -- Vaults
MONS:    lindwurm / boulder beetle, dire elephant, orc warlord / orc knight
MONS:    great orb of eyes / glowing orange brain, titanic slime creature
MONS:    crystal guardian / deep elf death mage / deep elf high priest
MONS:    deep elf annihilator / deep elf sorcerer / deep elf demonologist
KMONS:   D = sphinx marauder band / harpy band
KMONS:   F = entropy weaver band
KMONS:   0 = arcanist / death knight / ironbound mechanist
KMONS:   9 = stone giant / tengu reaver / sphinx marauder
KMONS:   P = bush
NSUBST:  1 = 4:1 / 1:12. / 1:% / *:., 2 = 2:2 / 1:% / *:.
NSUBST:  d = 1:D. / *:., f = 1:F. / *:., P = 2:G / *:P
SUBST:   @&A = ., Wl = ., c = b, P = PPx..
SHUFFLE: DF
:   vault_metal_statue_setup(_G, "G", "mystic cage")
CLEAR:   z
: end
SUBST:   & : xx@, A : x@@, X = x.
: if you.in_branch("Vaults") then
FTILE:   .%*|+n0123456789DFGI = floor_metal_gold
FTILE:   P = floor_pebble_brown
: end
MAP
  xxxxxxz@@@@zzzzzzzzzzzzzzzzzzzzzzzzzzc
 xx.X..XX...xxxxxxxxxxxxxxzzccccccccccccc
xx.0.XX.0...xxx..d%%d.d.Wxxxcc$.ccc...ccz
x..XX..XX..xxxW.........dDxxc*..6ccn...cz
x..xxxxxxxxxxxxW.....dWxxxxxc|.7...+..7cz
x.......X..P.xxx.WW.xxxxxxxxc*..6ccn...cz
x....x...........xx...X..xxxcc$.ccc....cz
xX..XcX...XXX............9Xxccccccccn++cz
x...XXX..2XcX..XXX.........xxX$X$X.....cz
xX........PXP..XcX...XXX...xx.X.X....3Icz
x..............XPX...PcX.............3Ocz
zP.....11.......1....XXX.......X.X...3Icz
&.....XPPX...2.............xx.X$X$X....cz
&X....xccX...xX....X......Xxxxxxxxxxxxxcc
&X....xccX...Xx....X......Xxxxxxxxxxxxxcc
&.....XPPX...2.............xx.........xcz
zP.....11.......1....XXX.........cc...4cz
x..............XPX...PcX........cc%....cz
xX........PXP..XcX...XXX...xx..cc4..cc.cz
x...XPX..2XcX..XXX.........xx..c%...5c4cz
xX..XcX...XXX............9Xxc..........cz
x....x...........xx...X..xxxc.c5...%c..cz
x.......X..P.xxx.ll.xxxxxxxxc.cc..*cc..cz
x..xxxxxxxxxxxxl.....flxxxxxc....%cc...cz
x..XX..XX..xxxl.........fFxxc....cc....cz
xx.0.XX.0...xxx..f%%f.f.lxxxcx4..4....xcz
 xx.X..XX...xxxxxxxxxxxxxxzzccccccccccccc
  xxxxxxzAAAAzzzzzzzzzzzzzzzzzzzzzzzzzzc
ENDMAP

NAME:    regret_index_dithmenos_penumbral_divide
TAGS:    no_monster_gen
DEPTH:   D:8-, Depths
ORIENT:  float
# One half is relatively standard humanoid picks for the depth.
# Its wavering mirror is full of shadows, hexer "stabbers", and duplicators.
: if you.in_branch("D") then
:   if you.depth() < 12 then
MONS:    kobold brigand / centaur w:5 / ogre
MONS:    two-headed ogre / troll
MONS:    cyclops / gargoyle / boggart
MONS:    shadowghast, vampire, rakshasa
SUBST:   ' = 1, | = *, & = |
:   else
MONS:    tengu warrior / gargoyle / yaktaur
MONS:    centaur warrior / ogre mage / orc knight
MONS:    boggart band / deep elf knight / deep elf archer / ettin
MONS:    shadowghast, rakshasa, vampire knight
MONS:    shadowghast / vampire w:5
NSUBST:  4 = 3 = 77. / *:4
:   end
: else
MONS:    tengu conjurer / phantasmal warrior / necromancer
MONS:    frost giant / stone giant / ettin / spriggan air mage / chonchon w:5
MONS:    titan w:5 / tengu reaver / spriggan defender w:5 / alderking w:5
MONS:    rakshasa, vampire knight, shadow dragon
SUBST:   ' = 12, " = 56
: end
KITEM:   & = shadow dragon scales randart / manual of stealth / \
             pair of boots ego:stealth good_item pre_id / \
             cloak ego:stealth good_item pre_id / \
             scroll of fog q:3 pre_id
KFEAT:   B = cache_of_baked_goods
KFEAT:   _ = altar_dithmenos
KFEAT:   C = c
NSUBST:  ? = 1:1 / 1:2 / 1:4 / 1:5 / 2 = 112245..
SHUFFLE: Hh / Ii / Jj / Kk / Ll / Mm
SUBST:   HI = C, hi = c, J : C., j : c., K : C., k : c., LlMm = ., & = &|
TILE:    C = dngn_stone_dark
MAP
 xxxxxxxx                      xxxxx
xx......                        ...
x.0....@                        ..@
x..l....                        ...
x....ccccccccccccccccccccccccccc...x
x...ccccccccccccccccccccccccc....h.x
x.@.ccc'...........1cc2...cc.......x
x   ccc%3h....i..i.2cc.k..cc.m..   x
    ccc*...........ccc....+c....
    ccc|2.%cccc++ccccc..4.+..iix
    ccc*..%ccc............+c....
x   ccc%3h%cc.j..j......l.cc.m..
x.@.ccc'..%ccB.....1..2..1cc....   x
x...ccccccccccccccccccccccccc......x
x...ccccccccccccccccccccccccc....j.x
x.k..ccccccccccccccccccccccccccc...x
x........m.........m.........l.....xx
xxx.....?.?..?..?x...x?..?..?.?.....xxx
  xx.....L.........M.........M........x
   x...CCCCCCCCCCCCCCCCCCCCCCCCCCC..K.x
   x.J....CCCCCCCCCCCCCCCCCCCCCCCCC...x
   x......CCCCCCCCCCCCCCCCCCCCCCCCC...x
   x   ....CC4..5..4.....BCC%.4"CCC.@.x
       ..M.CC.K......J..J.CC%H6%CCC   x
       ....C+.............CC%..*CCC
       xII..+..1.CCCCC++CCCC%._&CCC
       ....C+....CCC...........*CCC
   x   ..M.CC..L.CC5.I..I....H6%CCC   x
   x.......CC...5CC4..........5"CCC.@.x
   x.H....CCCCCCCCCCCCCCCCCCCCCCCCC...x
   x...CCCCCCCCCCCCCCCCCCCCCCCCCCC....x
    ...                        ....L..x
    @..                        @....0.x
    ...                        ......xx
   xxxxx                      xxxxxxxx
ENDMAP

NAME:    regret_index_condemned_cage
TAGS:    no_monster_gen no_item_gen no_pool_fixup
TAGS:    depths_entry chance_depths_entry zot_entry
DEPTH:   D:9-, !D:$, Depths, !Depths:$
PLACE:   D:$, Depths:$
ORIENT:  float
WEIGHT:  2 (D:$, Depths:$), 10
: local dmn = "perm_ench:drained perm_ench:bound_soul att:neutral ; nothing"
: kmons("C = human " .. dmn .. " / elf " .. dmn .. " / gnoll " .. dmn ..
:        " / orc " .. dmn .. " / kobold " .. dmn .. " / spriggan " .. dmn)
SHUFFLE: 23ly / 45wY / 67Gz / 89dZ, efgh, HIJKL
SUBST:   H : v.., I : v.., JKL = .
: if you.branch() == "D" then
:   if you.depth() < 12 then
MONS:    kobold demonologist / water moccasin simulacrum / acid dragon
MONS:    deep elf pyromancer, efreet, water moccasin simulacrum
MONS:    centaur warrior simulacrum, wraith, vampire
KMONS:   8 = wight
KMONS:   9 = gargoyle
KMONS:   0 = skeletal warrior
KFEAT:   0 = stone_arch
NSUBST:  & = 2:% / *:&
:   elseif you.where() ~= dgn.level_name(dgn.br_entrance("Depths")) then
MONS:    orc sorcerer / simulacrum / shadow / brown ugly thing
MONS:    efreet, hell knight, freezing wraith, frost giant
MONS:    necromancer, shadow wraith
KMONS:   8 = gargoyle
KMONS:   9 = skeletal warrior
KMONS:   0 = flayed ghost / shadow dragon w:1
KFEAT:   0 = stone_arch
:   else
TAGS:    uniq_depths_entry
MONS:    spriggan berserker zombie / storm dragon zombie  / \
         guardian sphinx simulacrum
MONS:    occultist, hell knight, white ugly thing, frost giant
MONS:    necromancer, flayed ghost
KMONS:   8 = tengu warrior
KMONS:   9 = brown very ugly thing
KMONS:   0 = vampire mage
KITEM:   R = $, smoky gem
KFEAT:   0 = enter_depths
NSUBST:  $ = 1:R / *:$
FTILE:   "O1$%*efgh&R = floor_depthstone
:   end
KITEM:   & = demon blade / demon whip / demon trident
NSUBST:  2468 = 2:., 3579 = 1:.
: else
:   if you.where() ~= dgn.level_name(dgn.br_entrance("Zot")) then
MONS:    hell knight / spriggan defender simulacrum / \
         flayed ghost / brown very ugly thing
MONS:    fire giant, salamander tyrant, frost giant, titan
MONS:    shadow dragon, lich
KMONS:   8 = caustic shrike
KMONS:   9 = walking crystal tome
KMONS:   0 = dread lich
KFEAT:   0 = stone_arch
NSUBST:  2468 = 1:., 3579 = 2:.
:   else
MONS:    red draconian w:25 / white draconian w:25 / hell knight / \
         spriggan defender simulacrum / flayed ghost
MONS:    fire giant, red draconian scorcher
MONS:    frost giant, white draconian stormcaller, shadow dragon, lich
KMONS:   8 = caustic shrike
KMONS:   9 = yellow draconian annihilator
KMONS:   0 = golden dragon
KITEM:   R = $, midnight gem
KFEAT:   0 = enter_zot
KFEAT:   ? = zot_statue
NSUBST:  $ = 1:R / *:$, yYzZ = 2:?
FTILE:   "O1$%*efgh&R = floor_depthstone
TILE:    v = dngn_metal_wall_magenta
:   end
KITEM:   & = demon blade good_item / demon whip good_item / \
             demon trident good_item
: end
KITEM:   d = mundane trident, mundane long sword, mundane mace
KITEM:   e = parchment disc:fire
KITEM:   f = parchment disc:ice
KITEM:   g = parchment disc:necromancy
KITEM:   h = parchment disc:forgecraft
KFEAT:   yYzZ = b
KFEAT:   m = iron_grate
KPROP:   Cn" = bloody
KPROP:   C = no_tele_into
TILE:    G = dngn_gravestone
TILE:    y = bedevilled_crystal_gehenna
TILE:    Y = bedevilled_crystal_cocytus
TILE:    z = bedevilled_crystal_tartarus
TILE:    Z = bedevilled_crystal_dis
: set_feature_name("granite_statue", "a gravestone")
: set_feature_name("crystal_wall", "bedevilled crystal wall")
MAP
      xxxxxx        xxxxxx
      xvvvvx        xvvvvx
      xvllvx        xvwwvx
    xxxv3lvx        xvw5vxxx
   xxvvv..vx        xv..vvvxx
   xvvCv.2vxxxxxxxxxxv4.vCvvx
xxxxvCCv..vxxxvvvvxxxv..vCCvxxxx
xvvvvvvn..vvvvv11vvvvv..nvvvvvvx
xvl3....H..............J....5wvx
xvll.2...I............K...4.wwvx
xvvvvvvv..vvvvvmmvvvvv..vvvvvvvx
xxxxxxxv..vvvyvvvvYvvm..vxxxxxxx
......mv..vv&e*%%%$$vm..vxx
@.L1..mv..vvf2....4.vv..vxx
......"+..mv&..0"...++..vxx
......"+..mv&.."1...++..vxx
@.L1..mv..vvg6....8.vv..vxx
......mv..vv&h*%%%$$vm..vxx
xxxxxxxv..vvvzvvvvZvvm..vxxxxxxx
xvvvvvvv..vvvvvmmvvvvv..vvvvvvvx
xvGG.6...K............I...8.ddvx
xvG7....J..............H....9dvx
xvvvvvvn..vvvvv11vvvvv..nvvvvvvx
xxxxvCCv..vxxxvvvvxxxv..vCCvxxxx
   xvvCv.6vxxxxxxxxxxv8.vCvvx
   xxvvv..vx        xv..vvvxx
    xxxv7Gvx        xvd9vxxx
      xvGGvx        xvddvx
      xvvvvx        xvvvvx
      xxxxxx        xxxxxx
ENDMAP

# The original draft for Ozocubu's Refrigerator, made into an icy castle.
# Consider this also randbook_hoarfrost and randbook_splinterfrost.
NAME:    due_index_antique_fridge
TAGS:    no_monster_gen no_item_gen no_trap_gen no_wall_fixup vaults_hard
ORIENT:  float
DEPTH:   D:12-, !D:$, Vaults, !Vaults:$, Elf, !Elf:$
DEPTH:   Depths, !Depths:$, Zot, !Zot:$
PLACE:   D:$, Depths:$
WEIGHT:  2 (D:$, Depths:$), 20 (Vaults), 10
KFEAT:   C = c
SHUFFLE: DEF
: local f = "good_item ego:freezing"
: if you.branch() == "D" then
:   if you.where() ~= dgn.level_name(dgn.br_entrance("Depths")) then
:     mons("tengu warrior ; long sword " .. f .. " | mace " .. f ..
:          " . ring mail / skeletal warrior w:6 ; any weapon good_item " ..
:          " . mundane ice dragon scales / vampire w:2")
MONS:    ice statue, arcanist, freezing wraith
MONS:    centaur warrior simulacrum, ice dragon
SUBST:   ^)] = .
:   else
MONS:    tengu warrior / tengu conjurer w:1 / \
         white ugly thing w:1 / necromancer w:1
MONS:    ice statue, spriggan rider simulacrum, white very ugly thing
:     mons("rakshasa ; long sword " .. f .. " | mace " .. f .. " . robe ")
MONS:    frost giant
KFEAT:   ) = enter_depths
KITEM:   R = smoky gem
SHUFFLE: )]
SUBST:   ^V = ., ] = R
TILE:    c = stone_wall_depths_entry
FTILE:   )R' = floor_depthstone
:   end
NSUBST:  | = 1:d / 1:f / *:%
NSUBST:  DEF = 1:1, D = 1:. / *:D, E = 1:. / *:E, F = 1:. / *:F
: elseif you.branch() == "Elf" then
MONS:    deep elf knight / deep elf blademaster simulacrum w:2
MONS:    deep elf death mage / deep elf elementalist, thermic dynamo
:   mons("deep elf archer ; leather armour . longbow " .. f)
MONS:    dancing weapon ; scimitar ego:freezing
MONS:    deep elf blademaster ; ice dragon scales . rapier ego:freezing . \
                                                    rapier ego:freezing
SUBST:   )] = ., 6 = 5, ^ = .
NSUBST:  | = 1:de / 1:e / 1:f / *:d, 1 = 1:116 / *:1
NSUBST:  DEF = 2:129 / 2:.
: elseif you.branch() == "Vaults" then
:   mons("arcanist w:12 ; robe ego:cold_resistance . arbalest " .. f .. " / " ..
:        "vault guard w:6 ; dire flail " .. f .. " . scale mail / " ..
:        "phantasmal warrior w:2")
MONS:    deep elf knight, ironbound frostheart, deep elf death mage
:   mons("orc knight ; battleaxe " .. f .. " . scale mail")
MONS:    undying armoury
KFEAT:   ^ = trap_alarm / trap_net w:4
SUBST:   @)] = .
NSUBST:  | = 1:de / 1:e / 1:g / *:d, w = m
NSUBST:  D = 1:12 / *:D, E = 2:12 / *:E, F = 1:12 / *:F
:   if you.depth() == dgn.br_depth("Vaults") - 1 then
SUBST:   > = <
:   end
: elseif you.branch() == "Depths" then
:   if you.where() ~= dgn.level_name(dgn.br_entrance("Zot")) then
MONS:    frost giant / white very ugly thing / spriggan defender simulacrum w:4
MONS:    ice dragon, lich
:     mons("vampire knight ; great sword " .. f .. " | great mace " .. f ..
:          " . ice dragon scales")
MONS:    walking frostbound tome, golden dragon
KFEAT:   ^ = trap_alarm
NSUBST:  ^ = 2:^. / *:.
NSUBST:  D = 1:112 / 1:. / *:D, E = 1:112 / 1:. /  *:E, F = 1:112 / 1:. / *:F
SHUFFLE: })]<
:   else
MONS:    white draconian / black draconian w:2 / frost giant w:1
MONS:    ice dragon, lich, golden dragon
MONS:    white draconian stormcaller, black draconian knight
KFEAT:   ) = enter_zot
KFEAT:   ^ = trap_alarm / trap_zot
KFEAT:   U = zot_statue
KITEM:   R = midnight gem
NSUBST:  ^ = 2:^. / *:., 1 = 2 = 26 / *:1
NSUBST:  D = 1:12 / *:D, E = 1:12 / *:E, F = 1:12 / *:F
SHUFFLE: )]
SUBST:   ] = R
FTILE:   ' = floor_depthstone
FTILE:   )R = floor_zot_diamonds
:   end
NSUBST:  | = 1:d / 1:e / 1:g / * = de
: else   -- Zot
MONS:    white draconian, white draconian stormcaller
MONS:    white draconian monk, white draconian knight / white draconian shifter
MONS:    lich, golden dragon, orb of winter
KFEAT:   ^ = trap_zot
NSUBST:  ^ = 2:^. / *:., 1 = 1:2 / 1:345 / 1:6 / *:1
NSUBST:  $ = 1:} / *:$, | = 2:e / 1:g / *:d
SHUFFLE: })]
SUBST:   ) = ):70 >, ] = 40:] >, G = P
: single_cloud(_G, "U", "freezing vapour", true)
:   if dgn.zot_orb_type() == "orb of winter" then
SUBST:   6 = 677
:   end
: end
ITEM:    ice dragon scales w:15 / kite shield ego:cold_resistance / \
         helmet ego:ice w:4 / staff of cold w:3 / rimehorn talisman w:2
ITEM:    ice dragon scales randart w:15 / tower shield ego:cold_resistance / \
         ring of protection from cold randart w:4 / helmet ego:ice randart w:4 / \
         staff of cold randart w:3 / rimehorn talisman randart w:2
ITEM:    randbook numspells:3 disc1:ice spells:frozen_ramparts&hoarfrost_cannonade
ITEM:    randbook numspells:5 disc1:ice spells:hoarfrost_cannonade&splinterfrost_shell
KITEM:   % = $ no_pickup, any weapon ego:freezing no_pickup
KMONS:   P = pillar of rime
KFEAT:   M = cache_of_meat
SUBST:   D = 3, E = 4, F = 5
# Wall-smearing everywhere besides V, tile set-up across branches.
: if you.branch() == "Vaults" then
SUBST:   ' = .
:   tile('v = dngn_metal_wall_lightblue')
:   decorative_floor(_G, 'V', "floral vase")
TILE:    G = dngn_statue_dwarf / dngn_statue_archer / \
             dngn_statue_axe / dngn_statue_polearm
: else
:   smear_map({iterations=20, smear='x', onto='.xx', boxy=false})
:   smear_map({iterations=40, smear='x', onto='.xx', boxy=false})
:   decorative_floor(_G, 'V', "mourning vase")
:   if you.where() == dgn.level_name(dgn.br_entrance("Depths")) then
SUBST:   v = C
TILE:    G = depths_column
TILE:    C = stone_wall_depths
:   else
:     if you.where() ~= dgn.level_name(dgn.br_entrance("Zot")) then
SUBST:   ' = .
:     end
SUBST:   vC = c
TILE:    cC = dngn_stone_wall_lightblue
:     vault_granite_statue_setup(_G, "G", "gravestone")
:   end
: end
SUBST:   X = x
: if you.branch() == "Zot" then
TILE:    x = wall_ice
FTILE:   x.%defg})]>123456789VUPMG^+ = floor_pebble_lightblue
: else
TILE:    x = wall_ice_block
FTILE:   x.%$*defg})]>123456789VUPMG^+ = floor_ice
: end
COLOUR:  x = white
: set_feature_name("rock_wall", "ice covered rock wall")
MAP
     X@@X
  xxxX.Xxxx
XXx.......xx    xxxx     xxxx
@..........xx  xx..XXXXxxx..xx  xxxx
@X..........xxx....X.XX.....XX XX.XX
Xxx..........................XXX...Xx
  xxx..............'c....''''....c'.Xx
    xx.............ccccccc++ccccccc..xx
     xx.............c|%DMc^.cME%|c....xx
      xx............c%%DDc.^cEE%%c.....xx
     XX.............c.E%%c^.c%%F.c....xx
    vv...........2c.c..%|c.^c|%..c.c...Xx
   xvGV..........cccc+cccc++cccc+cccc.XX
    vv....www.....c...c........c...c..X   xxxx
    xXX..wwxww....c.1.cV......Vc.1.c.XX  xccccc
      xxxxxxwxx...c...cG......Gc...c..vvxxccc*cc
       xxxxwwwx...cc+ccccc++ccccc+cc.VGvxxc$$$*cc
        xxxwwxx...c...c.F....F.c...c..vvxxcc$$$*c
     xxxXXwwxx....c.1.c..U..U..c.1.c.XXxxxccc$$cc
    xx.XXwwwxxx..cc...c.F....D.c...ccxccxxc324xx
   xx|..w.wwwxxccccc+ccccc++ccccc+cccccXX.....xx
   x..6..wwwwwxc.......C''''''C.......c........XX
   xx>.4XXXwwww+.1..1..+')'']'+..1..1.+...xX.V..x
    xx.xxxxxwxxc.......C''''''C.......cXXxxXvGvxx
     xxx   xxxxccccccccccccccccccccccccxx   vvv
ENDMAP

####

# IX: An experiment, where transporters aren't necessary for entering a vault's
#     given contents, but which connect deliberately disjoint sections.
NAME:     darby_doomed_tower
TAGS:     no_monster_gen
DEPTH:    D:5-10, Depths:2-, !Depths:$, Crypt:2, !Crypt:$
ORIENT:   float
: if you.in_branch("D") then
KMONS:    123 = drude
KMONS:    4 = phantom / sky beast / steam dragon
KMONS:    5 = orc wizard / kobold geomancer / sleepcap
KMONS:    6 = ufetubus band / shadow imp / bes kemwar band
KMONS:    7 = bombardier beetle / clockroach / jelly
:   if you.depth() < 8 then
NSUBST:   56 = 1:'
:   else
NSUBST:   ' = 1:5 / *:'
:   end
NSUBST:   d = 1:d / *:", e = 1:e / *:', f = 1:f / *:'
TILE:     c = wall_stone_scorched
: else
NSUBST:   d = 1:d / 1:d"" / *:", e = 1:e / 1:e' / *:', f = 1:f / 1:f'' / *:'
:   if you.in_branch("Depths") then
KMONS:    123 = cacodemon
KMONS:    4 = chonchon band / glowing orange brain / guardian sphinx
KMONS:    5 = occultist / necromancer band / kobold fleshcrafter band / \
              vampire mage band / tengu conjurer band / tengu reaver / \
              lich / spriggan air mage / walking frostbound tome / \
              walking earthen tome / walking crystal tome / walking divine tome
KMONS:    6 = rakshasa band w:20 / ugly thing band / very ugly thing band
KMONS:    7 = wyrmhole w:20 / fire giant / salamander tyrant
KFEAT:    mM = n
TILE:     mM = dngn_transparent_stone_darkgray
:   elseif you.in_branch("Crypt") then
KMONS:    123 = draugr
KMONS:    4 = cognitogaunt
KMONS:    5 = necromancer / vampire mage / deep elf death mage / lich
KMONS:    6 = cognitogaunt / soul eater / reaper
KMONS:    7 = revenant soulmonger / bone dragon
KMONS:    8 = vampire bloodprince
KFEAT:    c = v
FTILE:    ptD- = floor_grey_dirt
TILE:     v = dngn_metal_wall_magenta
NSUBST:   4 = 1:48 / *:4
:   end
: end
: if not you.in_branch("Depths") then
KFEAT:    M = m
SUBST:    A = ;
TILE:     mM = dngn_transparent_wall_darkgray
: end
KMONS:    p = withered plant
KMONS:    F = fungus / toadstool
KITEM:    d = wand of warping w:40 no_pickup / dart ego:disjunction no_pickup / \
              any weapon ego:distortion no_pickup
KITEM:    e = randbook disc:translocation numspells:2 / \
              randbook disc:summoning numspells:2
KITEM:    f = scroll of summoning pre_id w:60 / parchment of call imp / \
              parchment of malign gateway / parchment of summon horrible things
KITEM:    g = scroll of blinking pre_id / scroll of teleportation pre_id w:5
KFEAT:    BC = c
KFEAT:    HIJ = G
KFEAT:    ^ = trap_dispersal
KFEAT:    ~ = trap_archmage
KFEAT:    _ = trap_teleport
SHUFFLE:  {<, g>
NSUBST:   # = 1:1 / 1:" / * = 1"", & = 1:3 / 1:` / *=3``
NSUBST:   ? = 1:2 / 1:' / * = 2'', ! = 1:2 / 1:' / *=2''
SUBST:    p = p -:5, F = F ':5
KMASK:    pD- = no_item_gen
KPROP:    pD- = no_tele_into
MARKER:   K = lua:transp_loc("doomed_tower_upper_library")
MARKER:   L = lua:transp_dest_loc("doomed_tower_upper_library")
MARKER:   N = lua:transp_loc("doomed_tower_upper_lab")
MARKER:   O = lua:transp_dest_loc("doomed_tower_upper_lab")
MARKER:   P = lua:transp_loc("doomed_tower_lower_library")
MARKER:   Q = lua:transp_dest_loc("doomed_tower_lower_library")
MARKER:   R = lua:transp_loc("doomed_tower_lower_lab")
MARKER:   S = lua:transp_dest_loc("doomed_tower_lower_lab")
MARKER:   D = lua:fog_machine { \
              pow_min = 8, pow_max = 12, delay = 25, \
              size = 2, walk_dist = 1, spread_rate= 33 }
MARKER:   A = lua:props_marker { portal=1 }
COLOUR:   t = brown
FTILE:    "dKMN14_{< = floor_pebble_white
FTILE:    'efmFLOPR256~^ = floor_pebble_lightgray
FTILE:    `gG37> = floor_pebble_darkgray
FTILE:    ;AQS = floor_vault
TILE:     B = wall_studio
TILE:     C = wall_stone_magic_shelf
TILE:     t = dngn_tree_dead
TILE:     b = bedevilled_crystal_abyss
: set_feature_name("tree", "dead tree")
: vault_metal_statue_setup(_G, "G", "dimensional conduit")
: set_feature_name("crystal_wall", "bedevilled crystal wall")
MAP
  xxxxxxxxxxx             xxxxxxxxxxx
  xxxxxxxxxxx             xxxxxxxxxxx
  xxccccxxxxx......@......xxxxxccccxx
  xxcFFccccxx.............xxcccc"{cxx
  xxcFFBBFcccc.BB.....BB.ccccdC"""cxx
  xxccF?'FBBFcccc.....ccccFM""""Bccxx
  xxxcC'''''FBBFccc.cccFBBFM"B""Bcxxx
  xxxcFF'B'B''eFFFc+cFFFe5'M"B""#cxxx
 xxxxccF'B'BF'''''~''''''F'M"B"Bccxxxx
xxxxttcC'BeBF'F''''?'''~'''M"""Bcttxxxx
xxxtttcF'B5BF'''''''F''''''M""""ctttxxx
xxtttpcc'B'B'mmmm'''''mmmm'M""Bccttttxx
xxttpppm'F'F'mG`mmmPmmm`Gm'M""Bctttttxx
xxttpDpm''?''m```7mmm```gmLM"""cpptttxx
xxtppppccmmmmm`;;;;m;;MMMMMM""ccpppttxx
xxtpppppc&`````;ll;Q;lM"""K4""Mppppttxx
xxttppppcc`````;;lllllM""""""ccppppptxx
xxt}-----+`````&AlllllM_d#""ccppDppptxx
xxttppppcc`````;;lllllM""""""ccppppptxx
xxttppppc&`````;ll;S;lM"""N4""Mppppptxx
xxttpppccmmmmm`;;;;m;;MMMMMM""ccpppttxx
xxtppDpm''!''m```7mmm```>mOM"""cpttttxx
xxtppppm'''''mG`mmmRmmm`Gm'M"""ctttttxx
xxttppcc''vv'mmmm'''''mmmm'M"""ccttttxx
xxxtttcf'vv''''''''''''''''M""""ctttxxx
xxxxttcC'vb6'''''''!'''^'''M"""vcttxxxx
 xxxxcc''vv'''''''^''''6'''M"_"bccxxxx
  xxxcf'''vv''vbv'c+c'vbv''M"""v#cxxx
  xxxcC''''''''fccc.cccf'''M"""""cxxx
  xxcc'''''''cccc.....cccc'M"""""ccxx
  xxc'''''cccc.vbv...vbv.ccccdC"""cxx
  xxc!'ccccxx.............xxcccc"<cxx
  xxccccxxxxx......@......xxxxxccccxx
  xxxxxxxxxxx             xxxxxxxxxxx
  xxxxxxxxxxx             xxxxxxxxxxx
ENDMAP

NAME:     darby_geomancy_lab
TAGS:     no_monster_gen no_pool_fixup
DEPTH:    D:5-11, Depths
ORIENT:   float
: if you.in_branch("D") then
KMONS:    1 = patrolling kobold geomancer
:   if you.depth() < 9 then
KMONS:    2 = kobold ; dagger . stone
KMONS:    3 = kobold brigand band
:   else
KMONS:    2 = kobold brigand
KMONS:    3 = kobold demonologist band ; dagger . robe . stone
:   end
KITEM:    % = parchment of sandblast
TILE:     b = wall_emerald
: elseif you.in_branch("Depths") then
KMONS:    1 = patrolling deep troll earth mage
KMONS:    2 = deep troll / iron troll
KMONS:    3 = deep troll shaman band
KITEM:    % = parchment of lee's rapid deconstruction
: end
ITEM:     tin of tremorstones w:20 / granite talisman / staff of earth w:5 / \
          manual of earth magic / orb randart artprops:earth w:5
ITEM:     wand of digging / damaged pair of boots ego:earth
ITEM:     stone no_pickup / large rock q:1 no_pickup
KFEAT:    BC = c
KFEAT:    X = x
KFEAT:    ~ = trap_archmage
KFEAT:    # = iron_grate
SUBVAULT: s : geo_lab
SHUFFLE:  BC, -_=
SUBST:    2 = 1:5 3, ~ = ~ .:5, -_ = +, = : c +:5
NSUBST:   3 = 1:3 / 1:23 / *:2, d = 1:d / 1:e / 1:% / *:.
TILE:     B = wall_studio
TILE:     C = wall_stone_magic_shelf
TILE:     X = wall_pebble_brown
: vault_metal_statue_setup(_G, "G", "earthen conduit")
MAP
     ccccccccccccccccccc
     c....+..3..+...sssc
     c3c.ccc.G.ccccccssc
     cdc+cccfffccccccssc
cccccccc.cccXbvccccccsscccccc
cllvdc1....cccccssssssssssssc
clfv.-......+..cssssssssssssc
clfG.-......+~.cssssssssssssc
clf..c2....ccc.cssssssssssssc
ccc==ccc.ccccc.cssssssssssssc
c.....Cc+ccccc.cssssssssssssc
cB....Cc.cCCcc.cssssssssssssc
cB.3..Cc.c..w#.cssssssssssssc
c.....Cc.+.1w#.cssssssssssssc
c.CCCCCc.c..w#.cssssssssssssc
c..d..3_.cBBcc.cssssssssssssc
cccccccccccccc+cccccccccccccc
 xbbbbbbbbbbbb+bbbbbbbbbbbbx
 xxxxx.....G.....G.....xxxxx
      .................
ENDMAP

NAME:     darby_geo_lab_end_default
TAGS:     unrand allow_dup geo_lab
DEPTH:    D:5-11, Depths
: if you.in_branch("D") then
KMONS:    12 = kobold geomancer
:   if you.depth() < 9 then
KMONS:    3 = kobold geomancer / kobold ; dagger . stone / kobold brigand band
:   else
KMONS:    3 = kobold geomancer / kobold brigand / \
              kobold demonologist band ; dagger . robe . stone
:   end
TILE:     b = wall_emerald
KITEM:    d = randbook disc:earth spells:lee's_rapid_deconstruction
KITEM:    e = gold q:2 no_pickup / gold q:3 no_pickup
: elseif you.in_branch("Depths") then
KMONS:    1 = deep troll earth mage
KMONS:    2 = deep troll / iron troll
KMONS:    3 = deep troll shaman band
MARKER:   O = lua:props_marker { portal=1 }
:   local s = util.random_from{ "permafrost_eruption", "magnavolt"}
:   kitem("d = randbook disc:earth spells:" .. s)
KITEM:    e = gold q:6 no_pickup / gold q:8 no_pickup
: end
KFEAT:    ~ = trap_archmage
KFEAT:    ^ = trap_net
KFEAT:    & = trap_alarm
SHUFFLE:  ^&
SUBST:    ~ = ~ .:5
FTILE:    'de1^& = floor_crystal
MAP
    ...
     ~.
     ++
     ..
2..........3
.O..........
............
..bbbbbbbb..
ccb'''1'eb++
..+''''eeb..
..+''^&edb..
..+''''eeb..
.~b'''1'eb..
..bbbbbbbb~.
............
ENDMAP

NAME:     darby_geo_lab_end_accident
TAGS:     unrand allow_dup geo_lab
DEPTH:    D:5-11, Depths
WEIGHT:   5
: if you.in_branch("D") then
:   if you.depth() < 9 then
KMONS:    1 = clockroach / phantom / bes kemwar band / drude
:   else
KMONS:    1 = shadowghast / wraith / unseen horror
:   end
:   dgn.delayed_decay(_G, 'f', 'kobold corpse')
: elseif you.in_branch("Depths") then
KMONS:    1 = glowing orange brain / flayed ghost / tentacled monstrosity
MARKER:   O = lua:props_marker { portal=1 }
:   dgn.delayed_decay(_G, 'f', 'deep troll corpse')
: end
KMONS:    D = pile of debris
KITEM:    d = parchment of hellfire mortar / parchment of shatter
KITEM:    e = stone no_pickup / large rock q:1 no_pickup
KFEAT:    X = x
KFEAT:    + = broken_door
NSUBST:   d = 1:d / *:., " = 4:f / *:"
SUBST:    " = Xl D:5 ':20, ' = .:20 ' e:5
FTILE:    ' = floor_pebble_darkbrown
TILE:     X = wall_pebble_brown
MAP
    ''"
     '1
     ++
     '"
...'''""....
.""l"'""""..
'"XX"''''''.
"XX"'1ll.X".
cXl''llXXX++
"X'''OllXX""
'''ll''"X"""
."llXX''""'.
.""llXX'""".
..""ll"'""..
d...""1'...d
ENDMAP

###############################################################################
#
# <<3>> Abstract or generic threat vaults.
#       098 randomness, really minimal specified content,
#       or very generic vault contents like statues and oklobs.
#
###############################################################################

##############################################################################
# Elevator
NAME:    lemuel_elevator
TAGS:    extra luniq_staircase luniq_generic_threat_stair no_descent
DEPTH:   D:2-, !D:$, Elf:2, Crypt:2-, !Crypt:$, Zot:2-, !Zot:$
ORIENT:  float
WEIGHT:  10 (D), 5
SUBST:   m:mn
: if you.in_branch("Zot") then
KMONS:   ]}) = orb of appropriateness / electric golem / draconian knight w:20
: elseif not you.in_branch("D") then
KMONS:   ]}) = 9
: end
KFEAT:   ] = ]
KFEAT:   } = }
KFEAT:   ) = )
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%
: if you.absdepth() < 6 then
SUBST:   9 = 0
: end
MAP
xxxxxxxxxxxxxxcccccxx
xxxx........xcc%.%ccx
xx......x...xc....%cc
xx..9..xx...x......%c
x......xx...+.......c
@....xxxx...x......%c
xxcccccxx...xc....%cc
xcc0.0ccx...xcc%.%ccx
cc0....cx...xxcccccxx
c0......x...xxxx....@
c.......+...xx......x
c0......x...xx..9..xx
cc0....cx...x......xx
xcc0.0ccx........xxxx
xxcccccxxxxxxxxxxxxxx
ENDMAP

##############################################################################
# Klotski a.k.a. what we learned from the elders.
NAME:    minmay_klotski
TAGS:    no_descent luniq_generic_threat_stair
DEPTH:   D:6-12
ORIENT:  float
MONS:    bush
SUBST:   0 = 0.., 9 = 9., 8 = 88.
SHUFFLE: }])>
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-
ORIENT:  float
MONS:    obsidian statue, orange crystal statue, ice statue
SHUFFLE: 123
: tile("c = " .. crackle_def(_G))
MAP
     ......
    ......cx
   cxc.....xx
  xx*xx.....xx
 cx...xx.....xc
xx*.1..xx..2.*xx
 cx.....xx...xc
  xx.....xx*xx
   xx.....cxc
    xc......
     ......
ENDMAP

##############################################################################
# Statue gallery
NAME:    minmay_statue_hallways
DEPTH:   D:8-
ORIENT:  float
MONS:    orange crystal statue / obsidian statue / ice statue
SUBST:   A : c.., B : c.., C : c..
: tile("c = " .. crackle_def(_G))
MAP
           xcx
           x1x
           x|x
          xx.xx
          x...x
         xx...xx
       xxx.....xxx
xxxxxxxx.........xxxxxxxx
@.......................@
........A.B.C.B.A........
xxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

NAME:   kennysheep_random_hallway
TAGS:   extra
ORIENT: float
DEPTH:  D:10-, Depths
SUBST:  c : ccxxb., t : ttGGbT., w : wwwl.
MAP
ccccccccccccccccccccccccccccccc
@wwwwwwwwwwwwwwwwwwwwwwwwwwwww@
@t...t...t...t...t...t...t...t@
@..............9..............@
@....0%........*........%0....@
@....0%........*........%0....@
@..............9..............@
@t...t...t...t...t...t...t...t@
@wwwwwwwwwwwwwwwwwwwwwwwwwwwww@
ccccccccccccccccccccccccccccccc
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
TAGS:    transparent
ORIENT:  float
DEPTH:   D:12-, Depths, !Depths:$
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

##############################################################################
# An old-fashioned vault, by Lemuel
NAME:   lemuel_traditional_vault
TAGS:   no_pool_fixup no_descent
DEPTH:  D:12-, Depths
ORIENT: float
SUBST:  9 = 9 0 8:2
SUBST:  0 = 0 .
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

##############################################################################
# An Ice Statue vault
NAME:    lemuel_ice_statue
TAGS:    no_pool_fixup no_descent
ORIENT:  float
DEPTH:   D:7-
MONS:    ice statue
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 = trap_teleport
: end
MAP
xxxxxxxxxxxxxxxxx
xbbbbbbbbbbbbbbbb
xb**....www.....T
xb**..A.www......
xbX*..B.w1w.....@
xb**..C.www......
xb**....www.....T
xbbbbbbbbbbbbbbbb
xxxxxxxxxxxxxxxxx
ENDMAP

#############################################################################
# Oklob gauntlet
# average of 2.2 oklobs, and at most 5 of them
NAME:    dpeg_oklob_gauntlet
DEPTH:   Lair, Swamp
ORIENT:  float
WEIGHT:  2
MONS:    plant, oklob plant, thorn hunter
SHUFFLE: ]}) / def
NSUBST:  ' = 2 / 4=11122 / 1, " = W / wwW, ` = W / wwW
SUBST:   def = |*, } = }..
: if you.in_branch("Lair") then
SUBST:   3 = ., - = x-
# Swamp
: else
NSUBST:  3 = 3 / 3.
SUBST:   x = t, - = t-, + = .
: end
CLEAR:   -
MAP
---------------
-xxxxxxxxxxxxx-
-xxxxx]})xxxxx-
-xxxxx.3.xxxxx-
-x'ww3...3ww'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:$ 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
TAGS:    no_descent
DEPTH:   Depths, !Depths:$, Lair:2-, Elf:2-
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

##############################################################################
# Shantytown, noun: An area containing a collection of shacks,
#                   shanties or makeshift dwellings. By Core Xii
#
NAME:   corexii_shantytown
TAGS:   no_monster_gen no_item_gen
DEPTH:  D:4-8
ORIENT: float
MONS:   plant
: if you.depth() < 6 then
MONS:   goblin / hobgoblin / kobold / orc / gnoll w:5
: else
MONS:   orc / gnoll / human / ogre / kobold brigand w:2 / gnoll sergeant w:2
MONS:   goblin rider
NSUBST: - = 1:3 / *:-
: end
ITEM:   any weapon / any missile / w:5 any armour / \
        w:5 any potion / w:5 any scroll, w:1 any misc
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, 1 = 1....
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
TAGS:   no_monster_gen no_item_gen
DEPTH:  D:3-8
ORIENT: float
MONS:   plant
: if you.depth() < 6 then
MONS:   goblin / hobgoblin / kobold / orc
: else
MONS:   orc / gnoll / human / ogre
: end
ITEM:   any weapon / any missile / w:5 any armour / w:5 any potion
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 .:40 M, M : M., 1 = 1....
SUBST:  T = T:50 V G 1 .:20
: decorative_floor(_G, 'M', "assortment of trash")
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

##############################################################################
# Marble ring (evilmike)
# outer ring contains 10 to 30 monsters, mean of 16.7
#
NAME:   evilmike_marble_ring
DEPTH:  Depths
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:  Depths
ORIENT: float
NSUBST: . = 7:0 / 2:9 / 1:8 / *:.
NSUBST: ' = 7:0 / 2:9 / 1:8 / *:.
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
TAGS:   no_descent
DEPTH:  Depths
ORIENT: float
SUBST:  x : xxxm
NSUBST: 9 = 6:. / *:9
NSUBST: 0 = 6:. / *:0
KPROP:  .089*| = no_tele_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:  Depths
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

##############################################################################
# Cross vault (evilmike)
NAME:   evilmike_cross
DEPTH:  Depths
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:  Depths
ORIENT: float
TAGS:   no_pool_fixup
SUBST:  w: wlll
NSUBST: . = 10:0 / 4:9 / *:.
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

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

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_arrow_trap
TAGS:    no_descent
ORIENT:  float
DEPTH:   D:12-, !D:$, Depths:2-, !Depths:$
MAP
xxxxxxxxxxxxxxxxxx
xcccccccxxcccccccx
x*xxxx*c[]c*xxxx*x
x..x9x9c..c9x9x..x
xc..x9xc..cx9x..cx
xcc..x0c00c0x..ccx
xxcc..xc00cx..ccxx
xxxcc..c++c..ccxxx
xxxxcc......ccxxxx
xxxxxcc....ccxxxxx
xxxxxxcc**ccxxxxxx
xxxxxxxccccxxxxxxx
       .@@.
ENDMAP

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

NAME:   wad_guarded_room
DEPTH:  D:6-, !D:$, Depths:2-, !Depths:$
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.xcxxxxx.xxxxxcx
...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-, !D:$, Depths:2-, !Depths:$
ORIENT: float
WEIGHT: 4
FTILE: ' = floor_pebble
FTILE: 12"t> = floor_grass_dark
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_mega_maze
ORIENT: float
WEIGHT: 4
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.XXXXXXXXXXXXX.X
X.XXXXXX.X.XX.XXXXXXX.XGXX.....X.X|X...XX....X.X
X......X.X.XXXXXXXXXXXXXXXXXXXXX.n|X.X.XX.XX.X.X
XXXXXX.X.X.......................X|+.X....XX.X.X
X.XXXX.X.X.XXXXXXXX.X.XXXXXXXXXX.XXXXXXXXXXX.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-, !D:$
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-, !D:$
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-, !D:$, Depths:2-, !Depths:$
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-, !D:$, Depths:2-, !Depths:$
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:  Depths, !Depths:$
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_cross_stitches
TAGS:    transparent no_monster_gen
ORIENT:  float
DEPTH:   D:6-, !D:$, Depths, !Depths:$, Elf, Snake
WEIGHT:  5 (Elf, Snake), 10
KMONS:   0 = 0
: if you.in_branch("D") and you.depth() < 9 then
:   kmons("9 = place:D:" .. you.depth() + 3)
: else
KMONS:   9 = 9
: end
KITEM:   09 = % / $ w:5
SHUFFLE: XzZ / '09
SUBST:   XzZ = x, ' = ., x : x:90 c
: if you.absdepth() < 13 then
NSUBST:  0 = 4:0 / * = 00., 9 = 1:9 / 1:90 / * = 0
: end
MAP
           .....................
          .......................
         ...X..'..X..'..X..'..X...
        ...'x'XxX'x'XxX'x'XxX'x'..
       .....X..'..X..'..X..'..X...
      ...X..'..z..9..X..0..X.....
     ...'x'XxX0x0ZxZ'x'zxz'x'...
    .....X..'..z..9..X..0..X...
   ...X..0..X..9..z..'..X.....
  ...'x'zxz'x'ZxZ0x0XxX'x'...
 .....X..0..X..9..z..'..X...
...X..'..X..'..X..'..X.....
..'x'XxX'x'XxX'x'XxX'x'...
...X..'..X..'..X..'..X...
 .......................
  .....................
ENDMAP

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

NAME:    hangedman_cross_veins
TAGS:    transparent no_monster_gen no_pool_fixup
ORIENT:  float
DEPTH:   D:8-, Depths, !Depths:$, Elf, Snake, Abyss
WEIGHT:  5 (Elf, Snake), 10
KMONS:   12 = 0
KMONS:   34 = 9
KMONS:   5 = 9 / 8
: if you.in_branch("Abyss") then
SUBST:   x = xxmmccbv, X = xxccvb, . = .:990 W
SUBST:   ' = .:55 WWwl G:5, 23 = 1, 45 = 2
KITEM:   1 = $
KITEM:   2 = barding / serpent talisman randart / \
             potion of curing pre_id / any magical staff / \
             randbook numspells:2 disc:alchemy disc2:earth
: else
KITEM:   1 = $ / % w:5
KITEM:   23 = % / $ w:5
KITEM:   45 = * / % w:5
:   if you.absdepth() > 20 then
SUBST:   x : x m:5, X : ccccbv, ' : .:70 w:20 l
:   elseif you.absdepth() > 11 then
SUBST:   x : x m:3, X : xcc, ' : .:80 wW
:   else
SUBST:   x : x m:2, X : xxc, ' : .:90 W, 5 = 4
:   end
: end
MAP
  xxxxxxxx
 xxXXXXXXxx
xxxX1'.1Xxxx
xXXXX.XXXXxx
xX.XX.XX1Xxx
+.'..'..'Xxxxxx
xX.XX.XX1Xxxxxxx
xXXXX.XXXXXXXXxxx
xXXX.'.XX5.'4Xxxxx
xX2XX.XXXXX.XXXXxx
xX.XX.XX.XX.XX4Xxx
xX'..'..'..'..'Xxxxxx
xX3XX.XX.XX.XX.Xxxxxxx
xXXXX.XXXXX.XX5XXXXXxxx
xxX3.'3XxX.'.XXX1'1XXXx
xxXXXXXXXXX.XXXXX.XX1Xx
 xxxxxxX3XX.XX.XX.XX.Xx
  xxxxxX'..'..'..'..'Xx
     xxX.XX.XX.XX.XX1Xx
     xxX3XX.XXXXX.XXXXx
     xxXXX3'.2XX.'.Xxxx
      xxxXXXXXXXX.XXxx
       xxxxxxxxxx+xxx
ENDMAP

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

NAME:   hangedman_cross_cluster
TAGS:   patrolling transparent no_monster_gen
DEPTH:  D:9-, !D:$, Depths, !Depths:$
ORIENT: float
SUBST:  C = CTUV, y : xc, z : ccvb, 1 = 0''
KMASK:  ' = !no_monster_gen
: if you.in_branch("D") then
SUBST:  8 = 009
: end
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.8c9.c'''''''x.0x$.x'
'...x.....ccc.....c.....ccc.....x...'
''.xxx.....c.....ccc.....c.....xxx.''
'''''...c.%c9.c.......c.8c%.c...'''''
 '''''..ccczccc..|C|..ccczccc..'''''
'''''...c.%c8.c.......c.9c%.c...'''''
''.xxx.....c.....ccc.....c.....xxx.''
'...x.....ccc.....c.....ccc.....x...'
'x.$x0.x'''''''c.9c8.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:   Depths, !Depths:$
ORIENT:  float
KFEAT:   ^ = trap_alarm
KFEAT:   z = c
KMASK:   ' = !no_monster_gen
SUBST:   1 = 0., " : W .:90, ^ : ^ .:190
TILE:    c = dngn_stone_wall_blue
: tile("z = " .. crackle_def(_G))
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"xzccczx"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''cczcc..xzccczx..ccccz..xcccccx''x
x''mmmmmmm..c*9$c..xxxxxxx..c.0$c''xx
xx''cczcc..xc9*$+x^.ccccz..x+1%0cx''x
x''xc0%1+x..zcccc.^x+$*9cx..cczcc''xx
xx''c$0.c..xxxxxxx..c$9*c..mmmmmmm''x
x''xcccccx..zcccc..xzccczx..cczcc''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"xzccczx"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:   evilmike_horseshoe
DEPTH:  D:12-, Depths, !Depths:$
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 transparent
DEPTH:  Depths, !Depths:$
ORIENT: centre
SHUFFLE: )]}>
SUBST:  } = }>
SUBST:  ] = ]>
KMONS:  0 = 0 band
KMONS:  8 = 8 band
FTILE:  '@ = floor_rough_blue
FTILE:  .%*08}])>+ = floor_mystic_chasm
MAP
               ccccc@
            cccc....'
           cc.......'
         ccc....cccccccccccc
        cc....ccc..........ccc
       cc...ccc..............ccc
      cc...cc.....cccccccc.....ccc
      c...cc...cccc......cccc....cc
     cc..cc...cc............ccc...cc
     c..cc...cc.....ccc.......cc...cc
    cc..c...cc...cccc%ccccc....cc...c
    c..cc..cc..ccc........ccc...cc..cc
   cc..c...c..cc....0.......cc...cc..cc
   c...c..cc..c....ccccccc...cc...c...c
   c..cc..c..cc..ccc0....ccc..cc..cc..c
   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
 c..cc..cc..ccc....0ccc..cc..c..cc..c
 c...c...cc...ccccccc....c..cc..c...c
 cc..cc...cc.......0....cc..c...c..cc
  cc..cc...ccc........ccc..cc..cc..c
   c...cc....ccccc%cccc...cc...c..cc
   cc...cc.......ccc.....cc...cc..c
    cc...ccc............cc...cc..cc
     cc....cccc......cccc...cc...c
      ccc.....cccccccc.....cc...cc
        ccc..............ccc...cc
          ccc..........ccc....cc
            cccccccccccc....ccc
                   '.......cc
                   '....cccc
                   @ccccc
ENDMAP

NAME: grunt_deathspiral_small
TAGS: patrolling uniq_deathspiral luniq_generic_threat_stair transparent
DEPTH: Depths, !Depths:$, Crypt, !Crypt:$, Zot, !Zot:$
ORIENT: centre
SHUFFLE: )]}>
SUBST:  } = }>
SUBST:  ] = ]>
# Like the door vault, pick interesting monsters for the 8s in branches,
# but use normal OOD for D.
# Also reduce the bits of loot for Zot.
: if you.in_branch("Crypt") then
KMONS:  8 = bone dragon / lich / ancient lich / dread lich / \
            vampire bloodprince w:5 / curse toe w:5 / zombie w:5 / \
            draugr w:5 / eidolon / reaper w:20 / soul eater / place:Crypt w:30
: else
:   if you.in_branch("Zot") then
KMONS:  8 = nonbase draconian w:35 / orb of appropriateness / electric golem / \
            killer klown / death cob / curse toe w:5 / ancient lich w:5 / \
            dread lich w:5 / protean progenitor w:15
SUBST:  *% = $
:   end
FTILE:  '@ = floor_pebble_blue
FTILE:  .$%*08}])>+ = floor_mystic_chasm
: end
KMONS:  0 = 0 band
MAP
       ccccc@
      cc....'
     cc.ccccccccccc
    cc.cc.........ccc
   cc.cc.ccccccccc..cc
   c.cc.cc..0....ccc.cc
  cc.c.cc.ccccccc..cc.cc
  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
 cc.cc..ccccccc.cc.c.cc
  cc.ccc....0..cc.cc.c
   cc..ccccccccc.cc.cc
    ccc.........cc.cc
      ccccccccccc.cc
            '....cc
            @ccccc
ENDMAP

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

NAME:    hangedman_box_tower
TAGS:    no_monster_gen no_item_gen no_pool_fixup transparent
DEPTH:   Depths, !Depths:$
ORIENT:  float
KMONS:   1 = patrolling 0
KMONS:   4 = 9 w:40 / 0 band
KITEM:   1d = % w:75 / $ w:20 / nothing w:4 / * w:1
KITEM:   $ = $ w:40 / nothing
KFEAT:   D = any shop
SHUFFLE: *|, CT, 23 / CT, 8w / 8w / w8
SHUFFLE: 1239 / 1239 / 1239 / 1239 / $444, wW / wW / wW / mm
NSUBST:  = = 1:+ / 1:==XX+ / *:=, - = 1:+ / 1:xxxx+ / *:x
NSUBST:  1 = 28:1 / 14 = 1dd / * = d.
SUBST:   X = x, 23 = 9, = : y:3 x:1, | : |:4 D:1
SUBST:   C : C:3 T:17, T = T:5 U:2 V:2 Y:1
SUBST:   x : x:13 y:1 c:1, G : G:1 c:1 y:8
SUBST:   z : y:3 v:1 b:1 x:1, y : c:13 v:1 b:1
FTILE:   .1489d$%*|+CTUVYGD = floor_etched
MAP
               '''''''''
               'xxx-xxx''''''
          ''''''x1...1xx-xxx'
          'xxx-xcxx+xxc1..1x'''
        '''x1..1c.....cxx+xxxx'
        'xxxx+xxc..2..c....x1x'
        'x1x....c..G..+..9.+.x'
        'x.+.9..+..T..c....x.-'x
       x'-.x....c.....c....x1x''''''
   ''''''x1x....ccx+xcccc+ccccx-xxx'
   'xxx-xcccc+cccc1.1ccc.....c1..1x'''
 '''x1..1c.....ccyy=yy1x...3.cxx+xxxx'
 'xxxx+xxc.3...x1y...y.+..G..c....x1x'
 'x1x....c..G..+.y.W.=.x.C...+..9.+.x'
 'x.+.9..+...C.x.=.0.y1x.....c....x.-'
 '-.x....c.....x1y.%.yyyxx+xcc....x1x'''
''x1x....ccx+xxyyy.z.%9y1..1cccc+ccccxx'
'xxccc+cccc1..1y9%....%yy=yyycc.....x1x'
'x1x.....ccyy=yy%.8*|8......y1x.....x.x'
'x.x.....x1y......|ww*.z%0W.=.+.TG2.+.-'
'-.+.2GT.+.=.W0%z.*ww|......y1x.....x.x'
'x.x.....x1y......8|*8.%yy=yycc.....x1x'
'x1x.....ccyyy=yy%....%9y1..1cccc+cccxx'
'xxcccc+cccc1..1y9%.z.yyyxx+xcc....x1x''
'''x1x....ccx+xxyyy.%.y1x.....c....x.-'
  '-.x....c.....x1y.0.=.x.C...+..9.+.x'
  'x.+.9..+...C.x.=.W.y.+..G..c....x1x'
  'x1x....c..G..+.y...y1x...3.cxx+xxxx'
  'xxxx+xxc.3...x1yy=yycc.....c1..1x'''
  '''x1..1c.....ccc1.1cccc+ccccx-xxx'
    'xxx-xcccc+ccccx+xcc....x1x''''''
    ''''''x1x....c.....c....x.-'x
        x'-.x....c..T..+..9.+.x'
         'x.+.9..+..G..c....x1x'
         'x1x....c..2..cxx+xxxx'
         'xxxx+xxc.....c1..1x'''
         '''x1..1cxx+xxcx-xxx'
           'xxx-xx1...1x''''''
           ''''''xxx-xxx'
                '''''''''
ENDMAP

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

NAME:   minmay_spiral_squares
DEPTH:  D:12-, !D:$, Depths, !Depths:$
ORIENT: float
SUBST:  0 = 0., 9 = 9.
SUBST:  x : x:7 c:3, c : c:8 v:1 b:1
MAP
x@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
x.x|+......+.....+....+...+..+.@
x+xxx......x.....x....x...x00xxx
x.0xx......x.....x....x000xxxx|x
x.0xx......x.....x0000xxxxxxxx+x
x+xxx......x00000xxxxxx.+0.....x
x..0x000000xxxxxxx......x0.....x
x..0x+xxxxxx......cccxxxx0.....x
x..0x..x9...ccccccc|c..9x0.....x
x+xxxx.x.cccc.....9cc.c.x0.....x
x...0x.x.....cccccc.c.c.x0.....x
x...0x.ccccccc......c.c.xxxxxx+x
x...0x.c|c..c0ccccccc.cc.x0....x
x...0x.cc9c.cc....c0cc.c.x0....x
x+xxxxx.c.c.c.9xx9.c.c.c.x0....x
x....0x.c.c.c.xxxx.c.c.c.x0....x
x....0x.c.c.c.xxxx.c.c.c.x0....x
x....0x.c.c.c.9xx9.c.c.c.xxxxx+x
x....0x.c.cc0c....cc.c9cc.x0...x
x....0x.cc.ccccccc0c..c|c.x0...x
x+xxxxxx.c.c......ccccccc.x0...x
x.....0x.c.c.cccccc.....x.x0...x
x.....0x.c.cc9.....cccc.x.xxxx+x
x.....0x9..c|ccccccc...9x..x0..x
x.....0xxxxccc......xxxxxx+x0..x
x.....0x......xxxxxxx000000x0..x
x.....0+.xxxxxx00000x......xxx+x
x+xxxxxxxx0000x.....x......xx0.x
x|xxxx000x....x.....x......xx0.x
xxx00x...x....x.....x......xxx+x
@.+..+...+....+.....+......+|x.x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@x
ENDMAP

NAME:   minmay_five_octagons
DEPTH:  D:12-, !D:$, Depths, !Depths:$
ORIENT: float
KPROP:  8 = no_tele_into
SUBST:  8 = .:130 8 |, 0 = 0 .:240
MAP
xxxxxxx@xxxxxxxxxxxxxxxx@xxxxxxx
xxxx0000000xxxxxxxxxx0000000xxxx
xxx000000000xxxxxxxx000000000xxx
xx00000000000xxxxxx00000000000xx
x0000000000000nxxn0000000000000x
x0000000000000nxxn0000000000000x
x0000000000000nxxn0000000000000x
@0000000000000nxxn0000000000000@
x0000000000000nxxn0000000000000x
x0000000000000nxxn0000000000000x
x0000000000000nxxn0000000000000x
xx00000000000nn==nn00000000000xx
xxx000000000nn8888nn000000000xxx
xxxx0000000nn888888nn0000000xxxx
xxxxxnnnnnnn88888888nnnnnnnnxxxx
xxxxxxxxxxx=88888888=xxxxxxxxxxx
xxxxxxxxxxx=88888888=xxxxxxxxxxx
xxxxxnnnnnnn88888888nnnnnnnnxxxx
xxxx0000000nn888888nn0000000xxxx
xxx000000000nn8888nn000000000xxx
xx00000000000nn==nn00000000000xx
x0000000000000nxxn0000000000000x
x0000000000000nxxn0000000000000x
x0000000000000nxxn0000000000000x
@0000000000000nxxn0000000000000@
x0000000000000nxxn0000000000000x
x0000000000000nxxn0000000000000x
x0000000000000nxxn0000000000000x
xx00000000000xxxxxx00000000000xx
xxx000000000xxxxxxxx000000000xxx
xxxx0000000xxxxxxxxxx0000000xxxx
xxxxxxx@xxxxxxxxxxxxxxxx@xxxxxxx
ENDMAP


NAME:   minmay_imperfect_grid
DEPTH:  D:8-, !D:$, Depths, !Depths:$
ORIENT: float
SUBST:  0 = 0., 9 = 9.
SUBST:  x : x:7 c:3, c : c:8 v:1 b:1
MAP
@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
x.c%ccc%ccc%ccc%ccc%ccc%ccc%cccx
xc0c0c0c0c0c0c0c0c0c0c0c0c0c9ccx
x%c.x.ccc.ccc.ccc.ccc.ccc.ccc9cx
xc0x.x.c.c.c.c.c.c.c.c.c.c.ccc%x
xcc.x.x.ccc.ccc.ccc.ccc.ccc.c0cx
xc0c.x.x.c.c.c.c.c.c.c.c.ccc.ccx
x%ccc.x.x.ccc.ccc.ccc.ccc.c.c0cx
xc0c.c.x.x.c.x.c.x.c.x.ccc.ccc%x
xcc.ccc.x.x.xxx.xxx.xxx.c.c.c0cx
xc0c.c.c.x.x.x.x.x.x.xxx.ccc.ccx
x%ccc.ccc.x.x.xxx.xxx.x.c.c.c0cx
xc0c.c.c.x.x.x.x.x.xxx.ccc.ccc%x
xcc.ccc.xxx.x.x.xxx.x.x.c.c.c0cx
xc0c.c.c.x.x.x.x.xxx.xxx.ccc.ccx
x%ccc.ccc.xxx.x.x.x.x.x.c.c.c0cx
xc0c.c.c.x.x.x.x.x.xxx.ccc.ccc%x
xcc.ccc.xxx.xxx.x.x.x.x.c.c.c0cx
xc0c.c.c.x.x.xxx.x.x.xxx.ccc.ccx
x%ccc.ccc.xxx.x.x.x.x.x.c.c.c0cx
xc0c.c.c.x.xxx.xxx.x.x.ccc.ccc%x
xcc.ccc.xxx.x.x.x.x.x.x.c.c.c0cx
xc0c.c.c.xxx.xxx.xxx.x.x.ccc.ccx
x%ccc.ccc.x.c.x.c.x.c.x.x.c.c0cx
xc0c.c.ccc.ccc.ccc.ccc.x.x.ccc%x
xcc.ccc.c.c.c.c.c.c.c.c.x.x.c0cx
xc0c.ccc.ccc.ccc.ccc.ccc.x.x.ccx
x%ccc.c.c.c.c.c.c.c.c.c.c.x.x0cx
xc9ccc.ccc.ccc.ccc.ccc.ccc.x.c%x
xcc9c0c0c0c0c0c0c0c0c0c0c0c0c0cx
xccc%ccc%ccc%ccc%ccc%ccc%ccc%c.x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@
ENDMAP

NAME:   minmay_quarter_circles
DEPTH:  D:8-, !D:$, Depths, !Depths:$
ORIENT: float
SUBST:  0 = 0., 9 = 99.
SUBST:  x : x:7 c:3, c : c:8 v:1 b:1
MAP
xxxxxxxxxxxxx@cccccccccccccccccc
@.............c*..0...0..+..0..c
c+cc..........c*..0...0..c..0..c
c..cccc.......cc00ccxxx00c00c00c
c..0..ccc......c..9cxxx..c..c..c
c..0....cc.....c...cxxx..c..c..c
c00c.....c.....cc..9ccc..c..c..c
c..xxx...cc.....c....9c00c..c..c
c..xxxc...c.....cc....0..c..c..c
c..xxxcc00c......ccc..0..c..c..c
c..c...0..cc.......cccc**c..c..c
c..c...0...c........+.cccc00c..c
c..c00cccc.+........c...0...c..c
c..c..c**cccc.......cc..0...c..c
c..c..c..0..ccc......c00ccxxx..c
c..c..c..0....cc.....c...cxxx..c
c..c..c00c9....c.....cc...xxx..c
c..c..c..ccc9..cc.....c.....c00c
c..c..c..xxxc...c.....cc....0..c
c..c..c..xxxc9..c......ccc..0..c
c00c00c..xxxcc00cc.......cccc..c
c..0..c......0..*c..........cc+c
c..0..+......0..*c.............@
cccccccccccccccccc@xxxxxxxxxxxxx
ENDMAP

NAME:   minmay_ornate_pinched
DEPTH:  D:8-, !D:$, Depths, !Depths:$
TAGS:   transparent
ORIENT: float
SUBST:  0 = 0., 9 = 99.
SUBST:  x : x:7 c:1 v:1 b:1
MAP
...........       ...........
.xx.......................xx.
.xxxxxx...............xxxxxx.
..xxxx.xxxx.......xxxx.xxxx..
..xxx.xx.0.xxcccxx.0.xx.xxx..
..xx.x..x..xxcccxx..x..x.xx..
..x.x.xxxxx..c.c..xxxxx.x.x..
...xx.xx...cc.0.cc...xx.xx...
...x.xx.x.0.cc.cc.0.x.xx.x...
...x0.x..x.c.ccc.c.x..x.0x...
...x..x.0.ccc...ccc.0.x..x...
 ...xx.c.ccc..x..ccc.c.xx...
 ...xx.cc.c.x.9.x.c.cc.xx...
 ...ccc.cc...c*c...cc.ccc...
 ...cc.0.c.x9*x*9x.c.0.cc...
 ...ccc.cc...c*c...cc.ccc...
 ...xx.cc.c.x.9.x.c.cc.xx...
 ...xx.c.ccc..x..ccc.c.xx...
...x..x.0.ccc...ccc.0.x..x...
...x0.x..x.c.ccc.c.x..x.0x...
...x.xx.x.0.cc.cc.0.x.xx.x...
...xx.xx...cc.0.cc...xx.xx...
..x.x.xxxxx..c.c..xxxxx.x.x..
..xx.x..x..xxcccxx..x..x.xx..
..xxx.xx.0.xxcccxx.0.xx.xxx..
..xxxx.xxxx.......xxxx.xxxx..
.xxxxxx...............xxxxxx.
.xx.......................xx.
...........       ...........
ENDMAP

NAME:   minmay_split_circle
DEPTH:  Depths, !Depths:$
TAGS:   transparent
ORIENT: float
SUBST:  0 = 01., 9 = 91.
SUBST:  c : cv b:1
MONS:   shapeshifter / glowing shapeshifter w:1
MAP
ccccccccccccccc@ccccccccccccccc
c.............................c
c.ccccccccccccc.ccccccccccccc.c
c.cccccccccc**c.c||cccccccccc.c
c.ccccccc.....c.c.....ccccccc.c
c.ccccc...0.c.c.c.c.....ccccc.c
c.cccc........c.c...9....cccc.c
c.ccc0........c.c.........ccc.c
c.ccc.........c.c.........ccc.c
c.cc....c...c.c.c.c...c....cc.c
c.cc......0...c.c.........9cc.c
c.cc..........c.c9.........cc.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%..0......0c.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.cc....0.....c.c.9.....9..cc.c
c.cc..........c.c..........cc.c
c.cc....c...c.c.c.c...c....cc.c
c.ccc.........c.c.........ccc.c
c.ccc0........c.c....9....ccc.c
c.cccc........c.c.......9cccc.c
c.ccccc.....c.c.c.c.....ccccc.c
c.ccccccc.....c.c.....ccccccc.c
c.cccccccccc0.c.c..cccccccccc.c
c.ccccccccccc.c.c.ccccccccccc.c
c.............c.c.............c
ccccccccccccccc@ccccccccccccccc
ENDMAP

NAME:   minmay_quantized_circle
DEPTH:  Depths, !Depths:$
TAGS:   transparent
ORIENT: float
SUBST:  0 = 0., 9 = 9., b : ccb, t : ttm, x : xxxxvb
MAP
xxxxxxxxxxxxxxc@cxxxxxxxxxxxxxx
x.x0x.x.x.x0x*c.c*x0x.x.x.x0x.x
xx.x0x.x.x.x9xc.cx9x.x.x.x0x.xx
x0x.x0x.x.x0x*c.c*x0x.x.x0x.x0x
xx0x.xxxxxxxccc.cccxxxxxxx.x0xx
x.x0x.xxxxxcc.....ccxxxxx.x0x.x
xx.xxx.xcccc.......ccccx.xxx.xx
x.x.xxx.c......t......c.xxx.x.x
xx.xxxcc......tct......ccxxx.xx
x.x.xxc...t....t....t...cxx.x.x
xx.xxxc..tbt.......tbt..cxxx.xx
x0x0xcc...t.........t...ccx0x0x
xx9xcc........ttt........ccx9xx
x*x*c........tbbbt........c*x*x
ccccc...t...tbbbbbt...t...ccccc
@......tbt..tbbbbbt..tbt......@
ccccc...t...tbbbbbt...t...ccccc
x*x*c........tbbbt........c*x*x
xx9xcc........ttt........ccx9xx
x0x0xcc...t.........t...ccx0x0x
xx.xxxc..tbt.......tbt..cxxx.xx
x.x.xxc...t....t....t...cxx.x.x
xx.xxxcc......tbt......ccxxx.xx
x.x.xxx.c......t......c.xxx.x.x
xx.xxx.xcccc.......ccccx.xxx.xx
x.x0x.xxxxxcc.....ccxxxxx.x0x.x
xx0x.xxxxxxxccc.cccxxxxxxx.x0xx
x0x.x0x.x.x0x*c.c*x0x.x.x0x.x0x
xx.x0x.x.x.x9xc.cx9x.x.x.x0x.xx
x.x0x.x.x.x0x*c.c*x0x.x.x.x0x.x
xxxxxxxxxxxxxxc@cxxxxxxxxxxxxxx
ENDMAP

NAME:   minmay_four_partial_circles
DEPTH:  D:8-, !D:$
TAGS:   transparent
ORIENT: float
WEIGHT: 7
SUBST:  ? : . x:8 b:1 v:1, ! : . x:2, 0 = 00.
SUBST:  x : x:9 c:1
MAP
  xxxxxx        xxxxxx
 xx0..0xx      xx0..0xx
xx......xx    xx......xx
x0..??..0x    x0..??..0x
x..????..x    x..????..x
x..????..x@..@x..????..x
x0..??............??..0x
xx....................xx
 xx0......!!!!......0xx
  xxxx...!!!!!!...xxxx
     @..!!!!!!!!..@
     ...!!!!!!!!...
     ...!!!!!!!!...
     @..!!!!!!!!..@
  xxxx...!!!!!!...xxxx
 xx0......!!!!......0xx
xx....................xx
x0..??............??..0x
x..????..x@..@x..????..x
x..????..x    x..????..x
x0..??..0x    x0..??..0x
xx......xx    xx......xx
 xx0..0xx      xx0..0xx
  xxxxxx        xxxxxx
ENDMAP

NAME:   minmay_eight_partial_circles
DEPTH:  D:12-, !D:$, Depths, !Depths:$
ORIENT: float
WEIGHT: 3
SUBST:  ? : . x:5 G:2 b:1 c:1 T:1, 0 = 0., 9 = 99., 8 = 8.
MAP
  xxxxx     xxxxx     xxxxx
 xx0.0xx   xx0.0xx   xx0.0xx
xx.....xx xx.....xx xx.....xx
x0.....0x x0.....0x x0.....0x
x...?...x@x...?...x@x...?...x
x0.........................0x
xx.........................xx
 xx0.....................0xx
  xxx.......cc+cc.......xxx
    @.....ccc...ccc.....@
  xxx....cc.......cc....xxx
 xx0.....c..xxxxx..c.....0xx
xx......cc.xx|||xx.cc......xx
x0......c9.x*****x.9c......0x
x...?...c..x..8..x..c...?...x
x0......c9.x.8.8.x.9c......0x
xx......cc.xx.9.xx.cc......xx
 xx0.....c..xx.xx..c.....0xx
  xxx....cc...9...cc....xxx
    @.....ccc9.9ccc.....@
  xxx.......ccccc.......xxx
 xx0.....................0xx
xx.........................xx
x0.........................0x
x...?...x@x...?...x@x...?...x
x0.....0x x0.....0x x0.....0x
xx.....xx xx.....xx xx.....xx
 xx0.0xx   xx0.0xx   xx0.0xx
  xxxxx     xxxxx     xxxxx
ENDMAP

NAME:   minmay_swirls_squares
DEPTH:  D:12-, !D:$, Depths, !Depths:$
TAGS:   transparent
ORIENT: float
SUBST:  9 = 999.
SUBST:  x : x:7 c:1 v:1 b:1
MAP
...............................
.xxxxx.........x.xx.xxx......x.
.....xxx....xx...xx.xxx.xx...x.
...x...xx...xx......xxx.xx.x.x.
........xx...................x.
..xx.x...x..xxx......xxxxx..xx.
..xx.x...xx.xxx....xxx......x..
.....x....x.xxx...xx.......xx..
.xxx.x....x......xx.......xx...
.xxx.xx...x..xx..x9.....xxx....
.xxx..x...xx.xx.xx99xxxxx......
......xx..9x..9.x|xxx..........
.xx....xx99xx9x9xxx....xxx.xx..
.xx.....xxx|x***x*9.xx.xxx.xx..
..........xxxxxxx*x9xx.xxx.....
.x..........9*xxx*9..........x.
.....xxx.xx9x*xxxxxxx..........
..xx.xxx.xx.9*x***x|xxx.....xx.
..xx.xxx....xxx9x9xx99xx....xx.
..........xxx|x.9..x9..xx......
......xxxxx99xx.xx.xx...x..xxx.
....xxx.....9x..xx..x...xx.xxx.
...xx.......xx......x....x.xxx.
..xx.......xx...xxx.x....x.....
..x......xxx....xxx.xx...x.xx..
.xx..xxxxx......xxx..x...x.xx..
.x...................xx........
.x.x.xx.xxx......xx...xx...x...
.x...xx.xxx.xx...xx....xxx.....
.x......xxx.xx.x.........xxxxx.
...............................
ENDMAP

NAME:    minmay_big_diamond_grid
DEPTH:   D:12-, !D:$, Depths, !Depths:$
ORIENT:  float
SHUFFLE: ABC
SUBST:   A = ., B = ., C = x, 0 = 0., 9 = 9.
SUBST:   x : x:7 c:1 v:1 b:1
MAP
x@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@x
x.xxx0......0xx0......0xx0......0xx0......0xxx.x
x.xxx........xx........xx........xx........xxx.x
x.x0.x......x..x......x00x......x..x......x.0x.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.A.....xx........xx0..**..0xx........xx.....B.x
x.A.....xx........xx0..**..0xx........xx.....B.x
x.x....x..x......x00x......x00x......x..x....x.x
x.x...x....x....x....x....x....x....x....x...x.x
x.x0.x......x..x......x99x......x..x......x.0x.x
x.xxx........xx0..**..9xx9..**..0xx........xxx.x
x.xxx........xx0..**..9xx9..**..0xx........xxx.x
x.x0.x......x..x......x99x......x..x......x.0x.x
x.x...x....x....x....x....x....x....x....x...x.x
x.x....x..x......x00x......x00x......x..x....x.x
x.B.....xx........xx0..**..0xx........xx.....A.x
x.B.....xx........xx0..**..0xx........xx.....A.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.x0.x......x..x......x00x......x..x......x.0x.x
x.xxx........xx........xx........xx........xxx.x
x.xxx0......0xx0......0xx0......0xx0......0xxx.x
x@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@x
ENDMAP

NAME:   minmay_blocking_statues
DEPTH:  D:12-, !D:$, Depths, !Depths:$
ORIENT: float
SUBST:  0 = 0., 9 = 99.
KMASK:  - = !opaque
MAP
@cccccccccccccccccc
-cccccccccccc99***c
-.GccG....GccGxxx*c
-0.cc.0..0.cc.xxx*c
-..G...xx.....xxx9c
-..G...xx......0c9c
-0.cc.0..0.cc...c0c
-.GccG....Gcc...c0c
-ccxxcc..ccxxcc.00c
-ccxxcc..ccxxcc.00c
-.GccG....Gcc...c0c
-0.cc.0..0.cc...c0c
-......xx...G..0c9c
-......xx...G.xxx9c
-0.cc.0..0.cc.xxx*c
-.GccG....GccGxxx*c
-cccccccccccc99***c
@cccccccccccccccccc
ENDMAP

NAME:   minmay_flawed_box
DEPTH:  D:6-10
TAGS:   transparent
ORIENT: float
SUBST:  X = x.
KMONS:  1 = orc wizard
SUBST:  1 = 1M
: decorative_floor(_G, 'M', "assortment of trash")
MAP
....................
.xxxxX...........Xx.
.XxxxxX.XxxX....Xxx.
..XxxX...XxxX..xxxx.
...xxX........Xxxxx.
...xxxX.......Xx.xX.
...xXxx......xxx.x..
...X.Xx......xX..x..
......xX..11Xx...X..
...X..xxx11Xxx......
...x...XxXXxx....X..
..Xx...1xxxxX1...x..
..xx..1.XxxX1...Xx..
..xX...1XxxX11..xx..
..X....1xxxxx...xX..
......xxxX1XxX..x...
..X...xX11..xxX.X...
..x..Xx...1.Xxx.....
..xXXxx......XxXX...
.XxxxxX.......xxx...
.xxxX.........Xxx...
.xxxxxX.xxX...XxxX..
.xxX....XxxX.XxxxxX.
.xX...........Xxxxx.
....................
ENDMAP

NAME:   minmay_four_inscribed_fans
TAGS:   transparent
DEPTH:  Depths
ORIENT: float
KPROP:  | = no_tele_into
KMASK:  | = opaque
SUBST:  x : x:7 c:3, c : c:8 v:1 b:1
SUBST:  9 = 999.
FTILE:  .09%*|xm = floor_etched
MAP
            ....             ....
            .xx...           .xx...
   ...     ..xxxx.. ...     ..xxxx..
   .x..    .xxxxxx...x..    .xxxxxx...
  ..xx...  .xx%%xxxx.xx...  .xx%%xxxx.
 ..xxxxx....xx%%xxx.xxxxx....xx%%xxx..
 .xxxxxxxxxx.9xxxx.xxxxxxxxxx.9xxxx..
..xx%%xxxxxx...xxx.xx%%xxxxxx...xxx.
.xxx%%x...x....xx.xxx%%x...x....xx..
.xxxxx9....9x..xx.xxxxx9....9x..xx.
...xxx...xxmx.xxx...xxx...xxmx.xxx.
  ....xx.9m|m9.xx..00..cc.9m|m9.xx....
     .xxx.xmxx...ccc...ccc.xmxx...xxx...
     .xx..x9....9ccccc.cc..x9....9xxxxx.
    ..xx....c...c%%ccc.cc....x...x%%xxx.
    .xxx...cccccc%%cc.ccc...xxxxxx%%xx..
   ..xxxx9.cccccccccc.cccc9.xxxxxxxxxx.
  ..xxx%%xx....ccccc.ccc%%cc....xxxxx..
  .xxxx%%xx..cc..cc9cccc%%cc..xx..xx..
  ...xxxxxx..cccc.c**9cccccc..xxxx.x.
   .x.xxxx..cccccc9**c.cccc..xxxxxx...
  ..xx..xx..cc%%cccc9cc..cc..xx%%xxxx.
 ..xxxxx....cc%%ccc.ccccc....xx%%xxx..
 .xxxxxxxxxx.9cccc.cccccccccc.9xxxx..
..xx%%xxxxxx...ccc.cc%%cccccc...xxx.
.xxx%%x...x....cc.ccc%%c...c....xx..
.xxxxx9....9x..cc.ccccc9....9x..xx.
...xxx...xxmx.ccc...ccc...xxmx.xxx.
  ....xx.9m|m9.cc......xx.9m|m9.xx....
     .xxx.xmxx...xxx...xxx.xmxx...xxx...
     .xx..x9....9xxxxx.xx..x9....9xxxxx.
    ..xx....x...x%%xxx.xx....x...x%%xxx.
    .xxx...xxxxxx%%xx.xxx...xxxxxx%%xx..
   ..xxxx9.xxxxxxxxxx.xxxx9.xxxxxxxxxx.
  ..xxx%%xx....xxxxx.xxx%%xx....xxxxx..
  .xxxx%%xx.  ...xx.xxxx%%xx.  ...xx..
  ...xxxxxx.    ..x...xxxxxx.    ..x.
    ..xxxx..     ... ..xxxx..     ...
     ...xx.           ...xx.
       ....             ....
ENDMAP

NAME:   minmay_concentric_multi
DEPTH:  D:12-, Depths
TAGS:   transparent
ORIENT: float
NSUBST: A = 1:+ / *:+xx, B = 1:+ / *:+cc, C = 1:+ / *:+xx
SUBST:  x : x:7 c:3, c : c:8 v:1 b:1
SUBST:  9 = 999., 0 = 000.
MAP
      .....................
     ...........x...........
    ...........xxx...........
   ...........xx9xx...........
  ...........xx...xx...........
 ...........xx.....xx...........
......xxxAxxx.......xxxAxxx......
......x.....0.......0.....x......
......x.....ccccBcccc.....x......
......A....cc.0...0.cc....A......
......x...cc..x...x..cc...x......
......x..cc...xx.xx...cc..x......
.....xx0cc....xxCxx....cc0xx.....
....xx..c....9x...x9....c..xx....
...xx...c0xxxxx.9.xxxxx0c...xx...
..xx....c..xx...|...xx..c....xx..
.xx9....B...C.9|x|9.C...B....9xx.
..xx....c..xx...|...xx..c....xx..
...xx...c0xxxxx.9.xxxxx0c...xx...
....xx..c....9x...x9....c..xx....
.....xx0cc....xxCxx....cc0xx.....
......x..cc...xx.xx...cc..x......
......x...cc..x...x..cc...x......
......A....cc.0...0.cc....A......
......x.....ccccBcccc.....x......
......x.....0.......0.....x......
......xxxAxxx.......xxxAxxx......
 ...........xx.....xx...........
  ...........xx...xx...........
   ...........xx9xx...........
    ...........xxx...........
     ...........x...........
      .....................
ENDMAP

NAME:   minmay_diamond_stairs
DEPTH:  D:8-, !D:$, Depths:2-, !Depths:$
TAGS:   no_descent
ORIENT: float
SUBST:  x : x:7 c:3, c : c:8 v:1 b:1
SUBST:  F : .:40 GTUb
SUBST:  9 = 9.
: if you.absdepth() < 12 then
SUBST:  8 = 9
: end
KMASK: - = !opaque
MAP
            -------
          ----9x9----
        -----ccccc-----
      -----xxc<.>cxx-----
    -----xxx.c.8.c.xxx-----
  -----xxx...c...c...xxx-----
-----xxx...F.c...c.F...xxx-----
--9xxx.......c...c.......xxx9--
-xxx{........+...+........}xxx-
--9xxx.......c...c.......xxx9--
-----xxx...F.c...c.F...xxx-----
  -----xxx...c...c...xxx-----
    -----xxx.c.8.c.xxx-----
      -----xxc<.>cxx-----
        -----ccccc-----
          ----9x9----
            -------
ENDMAP

NAME:   minmay_octo_star
TAGS:   transparent
DEPTH:  D:12-, Depths
ORIENT: float
SUBST:  x : x:7 c:3, c : c:8 v:1 b:1
SUBST:  9 = 999.
MAP
     .....................
    .........xx+xx.........
   ..........xx.xx..........
  ....cc.....x...x.....cc....
 ....cccc....x...x....cccc....
....cc**cc...x...x...cc**cc....
...cc**..cc..x...x..cc..**cc...
...cc*....cc.x...x.cc....*cc...
....cc..8..ccx.9.xcc..8..cc....
.....cc.....cc....cc....cc.....
......cc..9..cc....c+..cc......
.......cc.....cc....cccc.......
........cc..9..cc....cc........
.xxxxxxxxcc.....c+....xxxxxxxx.
.xx.......cc..9..cc.........xx.
.+......9..cc.....cc..9......+.
.xx.........cc..9..cc.......xx.
.xxxxxxxx....+c.....ccxxxxxxxx.
........cc....cc..9..cc........
.......cccc....cc.....cc.......
......cc..+c....cc..9..cc......
.....cc....cc....cc.....cc.....
....cc..8..ccx.9.xcc..8..cc....
...cc*....cc.x...x.cc....*cc...
...cc**..cc..x...x..cc..**cc...
....cc**cc...x...x...cc**cc....
 ....cccc....x...x....cccc....
  ....cc.....x...x.....cc....
   ..........xx.xx..........
    .........xx+xx.........
     .....................
ENDMAP

NAME:   minmay_central_circle
TAGS:   transparent
DEPTH:  Depths
ORIENT: float
SUBST:  x : x:8 c:2, c : c:8 v:2
SUBST:  9 = 999', 8 = 888'
FTILE:  '*98+x = floor_etched
MAP
.................................
...xxxxx.......xxx.......xxxxx...
..xx'''xx.....xx'xx.....xx'''xx..
.xx''9''xx....x'9'x....xx''9''xx.
.x'''''''x....xx'xx....x'''''''x.
.x'9'8'9'x.....x'x.....x'9'8'9'x.
.x'''''''x.............x'''''''x.
.xx''9'''x....cc+cc....x'''9''xx.
..xx'''''...ccc'''ccc...'''''xx..
...xxxxx..ccc'''''''ccc..xxxxx...
.........c+'''''9'''''+c.........
.........c''''9'''9''''c.........
........cc''9'xx+xx'9''cc........
........c''''+x***x+''''c........
..xxx..cc''9xx**b**xx9''cc..xxx..
.xx'xx.c''''x***b***x''''c.xx'xx.
.x'9''.+''9'+*bbbbb*+'9''+.''9'x.
.xx'xx.c''''x***b***x''''c.xx'xx.
..xxx..cc''9xx**b**xx9''cc..xxx..
........c''''+x***x+''''c........
........cc''9'xx+xx'9''cc........
.........c''''9'''9''''c.........
.........c+'''''9'''''+c.........
...xxxxx..ccc'''''''ccc..xxxxx...
..xx'''''...ccc'''ccc...'''''xx..
.xx''9'''x....cc+cc....x'''9''xx.
.x'''''''x.............x'''''''x.
.x'9'8'9'x.....x'x.....x'9'8'9'x.
.x'''''''x....xx'xx....x'''''''x.
.xx''9''xx....x'9'x....xx''9''xx.
..xx'''xx.....xx'xx.....xx'''xx..
...xxxxx.......xxx.......xxxxx...
.................................
ENDMAP

NAME:   minmay_strange_plus
TAGS:   transparent
DEPTH:  D:12-, Depths
ORIENT: float
SUBST:  9 = 999., 8 = 888.
MAP
        .............
       ....nnn.nnn....
      ....nn.....nn....
     ....nn.nn.nn.nn....
    .....n.nn...nn.n.....
   ......n.n.....n.n......
  ....9.......9.......9....
 ........n.n.....n.n........
........nn.n.....n.nn........
...nnn.nn.nn.....nn.nn.nnn...
..nn.....nn.......nn.....nn..
.nn.nn.nnn....8....nnn.nn.nn.
.n.nn...................nn.n.
.n.n.........|||.........n.n.
......9....8.|||.8....9......
.n.n.........|||.........n.n.
.n.nn...................nn.n.
.nn.nn.nnn....8....nnn.nn.nn.
..nn.....nn.......nn.....nn..
...nnn.nn.nn.....nn.nn.nnn...
........nn.n.....n.nn........
 ........n.n.....n.n........
  ....9.......9.......9....
   ......n.n.....n.n......
    .....n.nn...nn.n.....
     ....nn.nn.nn.nn....
      ....nn.....nn....
       ....nnn.nnn....
        .............
ENDMAP

NAME:   minmay_cut_squares
DEPTH:  D:11-, Depths
TAGS:   transparent
ORIENT: float
SUBST:  9 = 9.
SUBST:  x : x:7 c:1 v:1 b:1
MAP
.......................
.xxxxxx....xxxxxx....x.
.x|........x|..........
.x.........x......xx...
.x..9......x..9...xx...
.x...9.....x...9.......
.x.........x....x....x.
.......9.........9...x.
........9....xx...9..x.
.............xx......x.
....................|x.
.xxxxxx....x....xxxxxx.
.x|....................
.x......xx.............
.x..9...xx....9........
.x...9.........9.......
.x....x....x.........x.
.......9...x.....9...x.
...xx...9..x......9..x.
...xx......x.........x.
..........|x........|x.
.x....xxxxxx....xxxxxx.
.......................
ENDMAP

NAME:   minmay_bad_star
DEPTH:  D:12-, Depths
TAGS:   transparent
ORIENT: float
SUBST:  9 = 9., 8 = 8.
SUBST:  x : x:7 c:3, c : c:8 v:1 b:1
MAP
... . . . ...... . . . ...
.c.........x99x.........c.
..cc.......x..x.......cc..
 .c*ccc.....xx.....ccc*c.
...c99ccc...xx...ccc99c...
 ..c9c..cc..xx..cc..c9c..
...cc.x..ccc..ccc..x.cc...
 ...c..x...cccc...x..c...
....cc..x.c.cc.c.x..cc....
 ....cc..ccc**ccc..cc....
......c.ccc....ccc.c......
.xx...cc.c.x88x.c.cc...xx.
.9.xxx*cc*.8xx8.*cc*xxx.9.
.9.xxx*cc*.8xx8.*cc*xxx.9.
.xx...cc.c.x88x.c.cc...xx.
......c.ccc....ccc.c......
 ....cc..ccc**ccc..cc....
....cc..x.c.cc.c.x..cc....
 ...c..x...cccc...x..c...
...cc.x..ccc..ccc..x.cc...
 ..c9c..cc..xx..cc..c9c..
...c99ccc...xx...ccc99c...
 .c*ccc.....xx.....ccc*c.
..cc.......x..x.......cc..
.c.........x99x.........c.
... . . . ...... . . . ...
ENDMAP

NAME:   minmay_door_path
DEPTH:  D:1-4
TAGS:   transparent
ORIENT: float
SUBST:  0 = .0%
SUBST:  ? : .GTV
MAP
xxxxxxxxxxxxx
@...........x
x.xxxx.xxxx.x
x.x0.+.+..x.x
x.x..x.x.?x.x
x.x+xx.xxxx.x
x...........x
x.x+xx.xxxx.x
x.x..+.+.0x.x
x.x0.x.x..x.x
x.xxxx.xx+x.x
x...........x
x.xxxx.xx+x.x
x.x0.+.+..x.x
x.x..x.x.0x.x
x.x+xx.xxxx.x
x...........x
x.x+xx.xxxx.x
x.x..+.+.0x.x
x.x0.x.x..x.x
x.xxxx.xx+x.x
x...........x
x.xxxx.xx+x.x
x.x..+.+..x.x
x.x?.x.x.0x.x
x.xxxx.xxxx.x
x...........@
xxxxxxxxxxxxx
ENDMAP

NAME:   minmay_tri_box
DEPTH:  D:8-, Depths
TAGS:   transparent
ORIENT: float
SUBST:  9 = 9.
SUBST:  x : x:7 c:3, c : c:8 v:1 b:1
MAP
xxxxxxxxx.@.xxxxxxxxx
x......cc...cc......x
x9.xx..c..c..c..xx.9x
x99x..cc..c..cc..x99x
x.xx..c..ccc..c..xx.x
x|x..cc..c|c..cc..x|x
xxx..c..cc.cc..c..xxx
xx..cc..c999c..cc..xx
xx..c..cc...cc..c..xx
x..cc..c..x..c..cc..x
x..c..cc..x..cc..c..x
x.cc..c..xxx..c..cc.x
x.c..cc..x|x..cc..c.x
x.c..c..xx.xx..c..c.x
x...cc..x...x..cc...x
x...c..xx...xx..c...x
x..cc..x..x..x..cc..x
x..c..xx99x99xx..c..x
x.cc.............cc.x
x.....xx.....xx.....x
x.xx.............xx.x
@...................@
xxxxxxxxxxxxxxxxxxxxx
ENDMAP

NAME:   minmay_dotted_concentric_squares
DEPTH:  D:12-, Depths
TAGS:   transparent
ORIENT: float
SUBST:  9 = 9....
SUBST:  x : x:7 c:3, c : c:8 v:1 b:1
SUBST:  + : + G:1
# in case the loot chamber gets closed off by a statue:
KPROP:  * = no_tele_into
KMASK:  * = opaque
MAP
...........................
.ccc9xxx9xxx9x9xxx9xxx9ccc.
.c.......................c.
.c.ccc9xxx9cc9cc9xxx9ccc.c.
.9.c...................c.9.
.x.c.ccc9xxx9x9xxx9ccc.c.x.
.x.9.c...............c.9.x.
.x.x.c.ccc9xx9xx9ccc.c.x.x.
.9.x.9.c...........c.9.x.9.
.x.x.x.c.ccc9x9ccc.c.x.x.x.
.x.9.x.9.c.......c.9.x.9.x.
.x.x.x.x.c.xxxxx.c.x.x.x.x.
.9.x.9.x.9.x***x.9.x.9.x.9.
.x.9.x.9.x.x***x.x.9.x.9.x.
.9.x.9.x.9.x***x.9.x.9.x.9.
.x.x.x.x.c.xx+xx.c.x.x.x.x.
.x.9.x.9.c.......c.9.x.9.x.
.x.x.x.c.ccc+x+ccc.c.x.x.x.
.9.x.9.c...........c.9.x.9.
.x.x.c.ccc+xx+xx+ccc.c.x.x.
.x.9.c...............c.9.x.
.x.c.ccc+xxx+x+xxx+ccc.c.x.
.9.c...................c.9.
.c.ccc+xxx+xx+xx+xxx+ccc.c.
.c.......................c.
.ccc+xxx+xxx+x+xxx+xxx+ccc.
...........................
ENDMAP

NAME:   minmay_textured_paths
DEPTH:  D:12-, Depths
TAGS:   transparent
ORIENT: float
SUBST:  8 = 888., 9 = 9.
SUBST:  ? = .:70 GTUVm<>
SUBST:  x : x:7 c:3, c : c:8 v:1 b:1
MAP
...........................
.cccccccccccccccccccc.x.xc.
.x.x.x.x.x.x.x.x..99c.x..c.
.x.x.x.x.x.x.x.x...9cx.x.c.
..x.x.x.x.x.x.x.....c..x.c.
..x.x.x.x.x.x.x.....c.x.xc.
.ccccccccccccccc.x.xc.x..c.
.c99..xxx.x...8cx.x.cx.x.c.
.c9....x.x.....c.x.xc..x.c.
.c.....x.x.....cx.x.c.x.xc.
.c....x.xxx....c.x.xc.x..c.
.c.x..ccccc.........cx.x.c.
.c..x.c8....***.....c..x.c.
.c..xxc.....*?*.....c.x.xc.
.cxx..c.....***....8c.x..c.
.c.x..c.........cccccx.x.c.
.c..x.cx.xxc....x...x....c.
.c..xxc.xxxc....x.x.x....c.
.cxx..cx.xxc....x.x.x...9c.
.c.x..cxx.xc8.....x....99c.
.c..x.cxxx.ccccccccccccccc.
.c..xxc......x...x...x...x.
.cxx..c.....x...x...x...x..
.c.x..c9...x...x...x...x...
.c..x.c99.....x...x...x....
.c..cccccccccccccccccccccc.
...........................
ENDMAP

NAME:   minmay_distorted_concentric_squares
DEPTH:  D:8-, Depths
TAGS:   transparent
ORIENT: float
SUBST:  9 = 9., 0 = 0.
SUBST:  x : x:27 c:1 v:1 b:1
MAP
...................
..xxxxxxxx.........
..x.......xxxxxxxx.
..x.xxxxxx0......x.
..x.x0....xxxxxx.x.
..x.x.cccc....0x.x.
..x.x.c9..cccc.x.x.
..x.x.c.xx..9c.x.x.
..x0x.c.x*xx.c.x.x.
.x.x.c.x***x.c.x.x.
.x.x.c.xx*x.c.x0x..
.x.x.c9..xx.c.x.x..
.x.x.cccc..9c.x.x..
.x.x0....cccc.x.x..
.x.xxxxxx....0x.x..
.x......0xxxxxx.x..
.xxxxxxxx.......x..
.........xxxxxxxx..
...................
ENDMAP

NAME:   minmay_containers
DEPTH:  D:12-, Depths
TAGS:   transparent
ORIENT: float
SUBST:  C : B C:5
SUBST:  B : A B:5
SUBST:  A : x c:1 v:1 b:1
SUBST:  B : cvb
SUBST:  C : .:50 G:50 T U V m
SUBST:  8 = 88., 9 = 9.
MAP
@ccccccccccccccccccccxxx
c....................xxx
c.....................xx
c....AAAAAAAAAAAAAA.9..c
c...........9..........c
c..A.9..BBBBB..B..9.A..c
c..A...BB***B..BB...A..c
c..A..BBB...B..BBB..A..c
c..A.BBBB...B..BBBB.A..c
c..A.B*.............A..c
c..A.B*...8.........A..c
c..A.B*....8C..BBBB9A..c
c..A9BBBB..C8....*B.A..c
c..A.........8...*B.A..c
c..A.............*B.A..c
c..A.BBBB..B...BBBB.A..c
c..A..BBB..B...BBB..A..c
c..A...BB..B***BB...A..c
c..A.9..B..BBBBB..9.A..c
c..........9...........c
c..9.AAAAAAAAAAAAAA....c
xx.....................c
xxx....................c
xxxcccccccccccccccccccc@
ENDMAP

NAME:   minmay_curly_fans
DEPTH:  D:8-, Depths
TAGS:   transparent
ORIENT: float
SUBST:  x : x:7 c:1 v:1 b:1
SUBST:  9 = 9.
MAP
...................
.xxxxxxxxx.......x.
...xxx..xx.......x.
....x....xx.....xx.
....x.....xxx.xxxx.
.......x........xx.
....x..x9........x.
....x..xx.9xxx...x.
...xx..9x*xx9...xx.
.xxx....***....xxx.
.xx...9xx*x9..xx...
.x...xxx9.xx..x....
.x........9x..x....
.xx........x.......
.xxxx.xxx.....x....
.xx.....xx....x....
.x.......xx..xxx...
.x.......xxxxxxxxx.
...................
ENDMAP

NAME:   minmay_crescents
DEPTH:  D:12-, Depths
TAGS:   transparent
ORIENT: float
SUBST:  x : x:7 c:3, c : c:8 v:1 b:1
SUBST:  G = .GTU
SUBST:  9 = 9....
MAP
  xxxxxxx       xxxxxxx
 xxxxxxxxx     xxxxxxxxx
xxxx*99..xxx@xxx..99*xxxx
xxx999....x...x....999xxx
xx*99ccccc.....ccccc99*xx
xx99ccccccc...ccccccc99xx
xx9.cc*99.......99*cc.9xx
xx..cc99.........99cc..xx
xx..cc9.xxx...xxx.9cc..xx
 xx.cc..xxx...xxx..cc.xx
  xx.c..xx*.9.*xx..c.xx
  x........999........x
  @.......99G99.......@
  x........999........x
  xx.c..xx*.9.*xx..c.xx
 xx.cc..xxx...xxx..cc.xx
xx..cc9.xxx...xxx.9cc..xx
xx..cc99.........99cc..xx
xx9.cc*99.......99*cc.9xx
xx99ccccccc...ccccccc99xx
xx*99ccccc.....ccccc99*xx
xxx999....x...x....999xxx
xxxx*99..xxx@xxx..99*xxxx
 xxxxxxxxx     xxxxxxxxx
  xxxxxxx       xxxxxxx
ENDMAP

NAME:    minmay_nine_rooms
DEPTH:   Depths
ORIENT:  float
SHUFFLE: ABCDE
SUBST:   A : c:7 x:1 b:1 v:1
SUBST:   B : .:5 c:7 x:1 b:1 v:1
SUBST:   C : .:10 c:7 x:1 b:1 v:1
SUBST:   D : .:20 c:7 x:1 b:1 v:1
SUBST:   E : .:30 c:7 x:1 b:1 v:1
SUBST:   c : c:8 b:1 v:1
SUBST:   0 = 0....., 1 = 0...., 2 = 00...
SUBST:   3 = 9........., 4 = 99....., 5 = 99...
SUBST:   6 = 8..., 7 = 8888...
MAP
ccccccccccccccccccccccccc
........c...............c
c.A0EBA.c.C1B1C.c.22B2E.c
c.BDC0D.c.EA1A1.c.2C2CD.c
c.0C0C0.c.B1D1B.c.BDADB.c
c.D0CDB.c.1A1AE.c.DC2C2.c
c.ABE0A.c.C1B1C.c.E2B22.c
c...............c.......c
ccccccccccccccccccccccc.c
c...............c.......c
c.DC5AD.c.ECDB4.c.BDA3B.c
c.A555C.c.C4A4B.c.333ED.c
c.5EBE5.c.DA4AD.c.A3C3A.c
c.C555A.c.B4A4C.c.DE333.c
c.DA5CD.c.4BDCE.c.B3ADB.c
c.......c...............c
c.ccccccccccccccccccccccc
c.......c...............c
c.6AD6C.c.A7DCB.c.*****.c
c.ACBD6.c.CB7AE.c.*|||*.c
c.B6E6B.c.D777D.c.*|G|*.c
c.6DBCA.c.EA7BC.c.*|||*.c
c.C6DA6.c.BCD7A.c.*****.c
c...............c.......c
ccccccccccccccccccccccccc
ENDMAP

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

NAME:    hangedman_arch_fort
TAGS:    transparent no_monster_gen no_item_gen no_pool_fixup
ORIENT:  float
DEPTH:   Depths, !Depths:$
SUBST:   Y : y:8 b:2, y : c:9 b:1, z : Z:16 x:1 b:2 ":1, Z : x:9 b:1
SUBST:   X = .:19 x:1, G : G:12 c:1 b:1 v:1, w : w:3 l:1 .:1
SUBST:   + : +:24 W:1, " : .:24 W:1, 9 = 990, % = %%.
MAP
           ....  ..........  ...
          ........................
         ..Zxxx++xxxZ..Zxxx++xxxZ..
      .....x9%z..z%9x..x9%z..z%9x.....
    .......x%."..".%x..x%."..".%x.......
    .Zxxx++xz""..""zx++xz""..""zx++xxxZ.
   ..x9%z.......X..........X.......z%9x..
   ..x%."..........................".%x..
   ..xz""..yyyY..""zx++xz""..Yyyy..""zx..
  ...+.......9y..".%x..x%."..y9.......+...
 ....+....w%|.y..z%9x..x9%z..y.|%w....+....
 .Zxxx..y.%G%.y..xxxZ..Zxxx..y.%G%.y..xxxZ.
..x9%z..y.*%w....+........+....w%*.y..z%9x..
..x%."..y9.......+...  ...+.......9y..".%z..
..xz""..Yyyy..""zx..    ..xz""..yyyY..""zx..
 .+...........".%x..    ..x%."...........+.
 .+...X.......z%9x..    ..x9%x.......X...+.
..xz""..""zx++xxxZ..    ..Zxxx++xz""..""zx..
..x%."..".%x.......      .......x%."..".%x..
..x9%z..z%9x.....          .....x9%z..z%9x..
..Zxxx++xxxZ..                ..xxxx++xxxZ..
 ............                  ............
  ....  ....                    ....  ....
ENDMAP

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

NAME:   minmay_rotating_shell
TAGS:   transparent
ORIENT: float
DEPTH:  Depths
WEIGHT: 3
# 27 / 3 items!
KITEM:  d = |,|,|,|,|,|,|,|,|
SUBST:  A : ABB
SUBST:  B : BCC
SUBST:  C : CDD
SUBST:  D : DEE
SUBST:  E : .:100 x:1 v:1 b:1 G:1
SUBST:  D : .:100 x v b G:4
SUBST:  A : .:100 x v b:20 G:16
SUBST:  B : .:100 x v b:40 G:64
SUBST:  C : .:100 x v b:80 G:128
SUBST:  0 = 0..
SUBST:  9 = 9..
SUBST:  8 = 8.
MAP
          .............
        ...vvvvvvvvvvv...
      ...vvv....+...0vvv...
     ..vvv...vvvv.DD..0vvv..
    ..vv...vvv..v0.DDD..0vv..
   ..vv..vvv....vv0..DDD.0vv..
  ..vv..vv...AA.vvvv0..DD.0vv..
  .vv..vv..AAA..+..vvv0.DD.0vv.
 ..v..vv..AA..9vvv...vv0.DD.0v..
 .vv.vv..AA.9vvvvvvv..vv0.DD.vv.
..v..v..AA.9vv.....vv..vv0.D.0v..
.vv.vv.AA.9vv..vvv..vv..vv.DD.vv.
.v..v..A.9vv..vvvvv..vv..v0.D.0v.
.v.vv.AA.vv..vv.+8vv..vv.vv.DD.v.
.v.v..A.9v..vv..v88vv..v..v0.D.v.
.v.v...9vv.vv..vv888vv.vv.vv...v.
.v.v+vvvvv+vv.vvdvvvvv+vv.vv+vvv.
.v.v.vv....vv..vvv8....vv.vv.v0..
.v.v..v9.B.9vv..v..CC.8v..v..v.E.
.v.vv.vv.BB.9vv.+.CC.8vv.vv.vv.E.
.v..v..v9.BB.9vvv.C.8vv..v..v0.E.
.vv.vv.vv9.BB.9vv..8vv..vv.vv.EE.
..v..v..vv9.BB.9v.8vv..vv..v0.E..
 .vv.vv..vv9.BB.vvvv..vv..vv.EE..
 ..v..vv..vv9...vv...vv..vv0.E...
  .vv..vv..vvv9.+..vvv..vv0.EE...
  ..vv..vv...vvvvvvv...vv0.EE....
   ..vv..vvv...vvv...vvv0.EE.....
    ..vv...vvv.....vvv0..EE......
     ..vvv...vvvvvvv0..EEE.......
      ...vvv....+....EEE.........
        ...vvvvvv.EEEE...........
          .......................
ENDMAP

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

NAME:   grunt_crosshair
DEPTH:  Depths
PLACE:  Depths:$
ORIENT: centre
: if you.where() == dgn.level_name(dgn.br_entrance("Zot")) then
:   zot_entry_setup(_G, true)
TAGS:   patrolling no_monster_gen transparent
NSUBST: 0 = 6:1 / 2 = 1. / 2:0 / *:.
NSUBST: 9 = 2:3 / 1:9 / *:., | = 1:R / *:$
SUBST:  8 = 2
COLOUR: c = lightmagenta
COLOUR: -+2OR$ = magenta
FTILE:  -+2OR$ = floor_zot_diamonds
: else
KMONS:  8 = 8 band
KMONS:  9 = 9 band
KMONS:  0 = 0 band
KITEM:  O = superb_item
KITEM:  9 = any good_item
NSUBST: 0 = 4:. / *:0, 98 = 1:.
FTILE:  @.|O098+x = floor_etched
: end
MAP
      x@x
      x.x
   xxxx.xxxx
  xx0.0.0.0xx
  x0xxx9xxx0x
  x.xcc+ccx.x
xxx0xc|8|cx0xxx
@...9+8O8+9...@
xxx0xc|8|cx0xxx
  x.xcc+ccx.x
  x0xxx9xxx0x
  xx0.0.0.0xx
   xxxx.xxxx
      x.x
      x@x
ENDMAP

NAME:   grunt_x_marks_the_spot
DEPTH:  Depths
PLACE:  Depths:$
ORIENT: centre
: if you.where() == dgn.level_name(dgn.br_entrance("Zot")) then
:   zot_entry_setup(_G, true)
TAGS:   no_monster_gen transparent
NSUBST: 0 = 6:1 / 2 = 1. / 2:0 / *:.
NSUBST: 9 = 2:3 / 1:9 / *:., | = 1:R / *:$
SUBST:  8 = 2
COLOUR: c = lightmagenta
COLOUR: -+2OR$ = magenta
FTILE:  -+2OR$ = floor_zot_diamonds
: else
KMONS:  8 = 8 band
KMONS:  9 = 9 band
KMONS:  0 = 0 band
KITEM:  O = superb_item
KITEM:  9 = any good_item
SUBST:  Z = c
: end
MAP
        xxxxx@xxxxx
      xxx.........xxx
    xxx......0......xxx
   xx..0..xxxxxxx..0..xx
  xx....xxxxxxxxxxx....xx
  x..9.xxxxxxxxxxxxx.9..x
 xx.....xxxxxxxxxxx.....xx
 x.0.x...xxxxxxxxx...x.0.x
xx..xxx...xxxxxxx...xxx..xx
x...xxxx...xxxxx...xxxx...x
x..xxxxxx...cZc...xxxxxx..x
x..xxxxxxx.++c++.xxxxxxx..x
x..xxxxxxxc+|8|+cxxxxxxx..x
@.0xxxxxxxcc8O8ccxxxxxxx0.@
x..xxxxxxxc+|8|+cxxxxxxx..x
x..xxxxxxx.++c++.xxxxxxx..x
x..xxxxxx...cZc...xxxxxx..x
x...xxxx...xxxxx...xxxx...x
xx..xxx...xxxxxxx...xxx..xx
 x.0.x...xxxxxxxxx...x.0.x
 xx.....xxxxxxxxxxx.....xx
  x..9.xxxxxxxxxxxxx.9..x
  xx....xxxxxxxxxxx....xx
   xx..0..xxxxxxx..0..xx
    xxx......0......xxx
      xxx.........xxx
        xxxxx@xxxxx
ENDMAP

###############################################################################
# Megastairs vaults.
# "Mega" is only really in opposition to the ministair vaults (cf.
# mini_monsters.des).
# Intended to be generic and placeable in a large variety of locales.

NAME: grunt_megastairs_1
: grunt_megastairs_setup(_G)
MAP
          xxxxx
         xx.G.xx
         x.....x
         xG.{.Gx
         x.....x
         xx...xx
 xxxxxxx xxx+xxx xxxxxxx
xx..0..xxx.....xxx..0..xx
x.xxxxx.x.x.0.x.x.xxxxx.x
@.......x.x...x.x.......@
x...G.0.+.x.G.x.+.0.G...x
@...... x.x...x.x.......@
x.xxxxx.x.x.0.x.x.xxxxx.x
xx..0..xxx.....xxx..0..xx
 xxxxxxx xxx+xxx xxxxxxx
         xx...xx
         x.....x
         xG.[.Gx
         x.....x
         xx.G.xx
          xxxxx
ENDMAP

NAME: grunt_megastairs_2
: grunt_megastairs_setup(_G)
MAP
       xxxxx
      xx.G.xx
      x.....x
      xG.{.Gx
      x.....x
      xx...xx
      xxx+xxx
    xxx.....xxx
  xxx....0....xxx
 xx....xxxxx....xx
xx..x0xx...xx0x..xx
x..xx.........xx..x
x..x...G...G...x..x
@.0x0....[....0x0.@
x..x...G...G...x..x
x..xx.........xx..x
xx..x0xx...xx0x..xx
 xx....xxxxx....xx
  xxx....0....xxx
    xxx.....xxx
      xxx@xxx
ENDMAP

NAME: grunt_megastairs_3
: grunt_megastairs_setup(_G)
MAP
        xxxxx
       xx.G.xx
       x.....x
       xG.{.Gx
       x.....x
       xx...xx
       xxx+xxx
      xx.....xx
     xx...G...xx
    xx.........xx
   xx..G..[..G..xx
  xx.............xx
 xx..0....G....0..xx
 x.....x..0..x.....x
xx..G..x.....x..G..xx
x.....xx..G..xx.....x
x..0..xx.....xx.....x
x.....xx..0..xx..0..x
xx@x@xxx.....xxx@x@xx
       xx@x@xx
ENDMAP

NAME: grunt_megastairs_4
: grunt_megastairs_setup(_G)
MAP
xxxxx            xx@xx
x...xxxx         x...x
x.{....xxx      xx.G.@
x........xx     x...xx
xxxxx..0..xxxxxxx...x
    xxx..........0.xx
      xxx..0.G.0..xx
        xx.......xx
         x.G.0.G.x
        xx.......xx
       xx..0.G.0..xxx
      xx.0..........xxx
      x...xxxxxxx..0..xxxxx
     xx...x     xx........x
     @.G.xx      xxx....[.x
     x...x         xxxx...x
     xx@xx            xxxxx
ENDMAP

NAME: grunt_megastairs_5
: grunt_megastairs_setup(_G)
MAP
        xxxxx
      xxx.[.xxx
     xx.......xx
    xx.0..G..0.xx
   xx...xxxxx...xx
  xx.0.xxxxxxx.0.xx
  x...xxxxxxxxx...x
xxx...xxx...xxx...xxx
@...................@
xG..0..G..{..G..0..Gx
@...................@
xxx...xxx...xxx...xxx
  x...xxxxxxxxx...x
  xx.0.xxxxxxx.0.xx
   xx...xxxxx...xx
    xx.0..G..0.xx
     xx.......xx
      xxx.(.xxx
        xxxxx
ENDMAP

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

NAME:   grunt_arcs
ORIENT: float
TAGS:   transparent
DEPTH:  Depths
KMONS:  0 = 0 band
KMONS:  9 = 9 band
KMONS:  8 = 8 band
MAP
       ..................
      ..ccccc......ccccc..
     ...ccccccc..ccccccc...
     .......cccccccc.......
    ..cccc....cccc....cccc..
    .c+cc+c..cccccc..c+cc+c.
    .cc.0cc.c+c**c+c.cc0.cc.
    .cc0%ccccc.99.ccccc%0cc.
    .c+cccccccc..cccccccc+c.
   ...ccccccccc++ccccccccc...
  ........cccc....cccc........
 ........cccc..99..cccc........
..cccc...ccc........ccc...cccc..
.c+cc+c..cc$..8..8..$cc..c+cc+c.
.cc%0cc..cc|...||...|cc..cc0%cc.
.cc%0cc..cc|...||...|cc..cc0%cc.
.c+cc+c..cc$..8..8..$cc..c+cc+c.
..cccc...ccc........ccc...cccc..
 ........cccc..99..cccc........
  ........cccc....cccc........
   ...ccccccccc++ccccccccc...
    .c+cccccccc..cccccccc+c.
    .cc0%ccccc.99.ccccc%0cc.
    .cc.0cc.c+c**c+c.cc0.cc.
    .c+cc+c..cccccc..c+cc+c.
    ..cccc....cccc....cccc..
     .......cccccccc.......
     ...ccccccc..ccccccc...
      ..ccccc......ccccc..
       ..................
ENDMAP

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

NAME:   cheibrodos_orc_bank
TAGS:   no_item_gen no_monster_gen
DEPTH:  D:10-14, Orc, !Orc:$
ORIENT: float
MONS:   orc, orc warrior, orc knight, hobgoblin
KITEM:  $ = $ no_pickup
SUBST:  ? = $., " = .14
MAP
cccccccccccccccc
cccccccccccc???c
cc22+.....3+???c
cc..cccccccc???c
cc..cccccccc???c
cc..c......c???c
cc..+......c???c
ccccc1.1.1.c???c
cccccmmmmm+ccccc
    c""""""c
    c""""""c
    c""""""c
    cc+cc+cc
    ...@....
ENDMAP

NAME:   cheibrodos_leafed_vault
TAGS:   no_item_gen no_monster_gen
DEPTH:  D:14-, Depths:1-5
ORIENT: float
NSUBST: - = 4 = 8 / 8 = 9 / 90 = . / * = .:45 0
SUBST:  " = $:5 * |:3
FTILE:  '$tT$*| = floor_grass_dark
MAP
             ccc
            cc-cc
           cc---cc
           c-----c
      cccccc-----cccccc
     cc.c.c+-----+c.c.cc
    cc.c.c.c-----c.c.c.cc
    c.c.cccc-----cccc.c.c
    cc.cn'tc-----ct'nc.cc
    c.cc'T'cc---cc'T'cc.c
    cc.ct'''cc-cc'''tc.cc
  ccc+cccc'''c+c'''cccc+ccc
 cc------cc''"""''cc------cc
cc--------cc"""""cc--------cc
c----------c"""""c----------c
cc--------cc"""""cc--------cc
 cc------cc''"""''cc------cc
  ccc+cccc'''ccc'''cccc+ccc
    cc.ct'''cc-cc'''tc.cc
    c.cc'T'cc---cc'T'cc.c
    cc.cn'tc-----ct'nc.cc
    c.c.cccc-----cccc.c.c
    cc.c.c.c-----c.c.c.cc
     cc.c.c+-----+c.c.cc
      cccccc-----cccccc
           c-----c
           cc...cc
            cc.cc
             c+c
             .@.
ENDMAP

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

NAME:   kennysheep_funnel
TAGS:   no_trap_gen no_monster_gen no_descent
ORIENT: float
DEPTH:  D:12-, !D:$
MAP
  ccc
 ccGcc
cc...cc
cG...Gccccccccccccccccc
c......GcGcGcGcGcGcG..cc
c..{..............8..}.c
c......GcGcGcGcGcGcG..cc
cG...Gccccccccccccccccc
cc...cc
 ccGcc
  ccc
ENDMAP

NAME:   kennysheep_six_static_rooms
TAGS:   transparent
ORIENT: float
DEPTH:  D:2-, !D:$, Snake, Elf
MAP
  xxxxx   xxxxx   xxxxx
 xx...xx xx...xx xx...xx
xx.....xxx.....xxx.....xx
x...%...x...%...x...%...x
x...0...x...0...x...0...x
x.......x.......x.......x
xx.....xxx.....xxx.....xx
 xx...xxxxx...xxxxx...xx
  xx+xxxxxxx+xxxxxxx+xx
  @...................@
  @...................@
  @...................@
  xx+xxxxxxx+xxxxxxx+xx
 xx...xxxxx...xxxxx...xx
xx.....xxx.....xxx.....xx
x.......x.......x.......x
x...0...x...0...x...0...x
x...%...x...%...x...%...x
xx.....xxx.....xxx.....xx
 xx...xxxxx...xxxxx...xx
  xxxxxxxxxxxxxxxxxxxxx
ENDMAP

NAME:   kennysheep_big_flooded_room
DEPTH:  D:2-, !D:$
ORIENT: float
: ks_random_setup(_G, false)
: if you.absdepth() < 5 then
SUBST:  9 = 0, * = %
: end
MAP
     ccccFFcccc
    ccwwwHHwwwcc
   ccwwwwHHwwwwcc
  ccwwwwwHHwwwwwcc
 ccwwwwwwHHwwwwwwcc
ccwwwwwwwHHwwwwwwwcc
cwwwwwwwwHHwwwwwwwwc
cwwwwwwwwHHwwwwwwwwc
cwwwwwwwt.9twwwwwwwc
+........xx*EEEEEEED
+........xx*EEEEEEED
cwwwwwwwt.9twwwwwwwc
cwwwwwwwwHHwwwwwwwwc
cwwwwwwwwHHwwwwwwwwc
ccwwwwwwwHHwwwwwwwcc
 ccwwwwwwHHwwwwwwcc
  ccwwwwwHHwwwwwcc
   ccwwwwHHwwwwcc
    ccwwwHHwwwcc
     ccccFFcccc
ENDMAP

NAME:   kennysheep_cluttered_fort
DEPTH:  D:14-, Depths, !Depths:$
ORIENT: float
NSUBST: % : 1:|
SUBST:  % = *
SUBST:  9 = 9900.
: ks_random_setup(_G, false)
MAP
      cccFFFccc
     ccwwHHHwwcc
    ccwwx...xwwcc
   ccwwx.x.x.xwwcc
  ccwwx...x...xwwcc
 ccwwx.x.xtx.x.xwwcc
ccwwx...x...x...xwwcc
cwwx.x.x.cFc.x.x.xwwc
cwx...x.cc9cc.x...xwc
+..x.x.cc.%.cc.x.x.ED
+...xt.D9%%%9+.tx..ED
+..x.x.cc.%.cc.x.x.ED
cwx...x.cc9cc.x...xwc
cwwx.x.x.cFc.x.x.xwwc
ccwwx...x...x...xwwcc
 ccwwx.x.xtx.x.xwwcc
  ccwwx...x...xwwcc
   ccwwx.x.x.xwwcc
    ccwwx...xwwcc
     ccwwHHHwwcc
      cccFFFccc
ENDMAP

NAME:   kennysheep_bubble_arena
TAGS:   no_item_gen no_trap_gen
ORIENT: float
DEPTH:  D:14-, Depths, !Depths:$
NSUBST: % = 5:|
SUBST:  % : %$
: ks_random_setup(_G, false, true)
MAP
    ccccccccc
   ccwwwwwwwcc
  ccww.....wwcc
 ccwwt.....twwcc
ccww.........wwcc
cww....xtx....wwc
cwt....8x8....twc
cw...x9x%x9x...wc
cw...tx%%%xt...wc
cw...x%x%x%x...wc
cwt....%x%....twc
cww....xtx....wwc
ccww.........wwcc
 ccwwt.....twwcc
  ccww.....wwcc
   ccw.....wcc
    cc+++++cc
   ccw.....wcc
  ccww.9.9.wwcc
  cww...x...wwc
  cwt..%x%..twc
  cw...xtx...wc
  cwt..%x%..twc
  cww...x...wwc
  ccww.....wwcc
   ccww...wwcc
    ccc+++ccc
     cc...cc
    ccw.9.wcc
    cww...wwc
    cwt...twc
    cww...wwc
    ccw...wcc
     cc...cc
      c+++c
ENDMAP

NAME: nicolae_legendary_halls
DEPTH: Depths, !Depths:$
TAGS: transparent
ORIENT: float
SUBST: + : +..., $ = $$$$%*, % = %%%%$*, * = ****%|, 0 = 0009.., 9 = 998.
MAP
       cccc.@@.cccc
      cc$.c....c.$cc
     cc%..c....c..*cc
     c$.0.c.00.c.8.$c
     c....+....c....c
  cccccccccccc+c+ccccccc
 cc$.c....+....c....c.$cc
cc*..c.9..c....c..9.c..%cc
c$.8.c..9.c0..0c.9..c.0.$c
c....+....c....c....c....c
ccccccccccc....cccc+c+cccc
.....+..0........0..c.....
@..0.c......99......c.0..@
@..0.c......99......c.0..@
.....c..0........0..+.....
cccc+c+cccc....ccccccccccc
c....c....c....c....+....c
c$.0.c..9.c0..0c.9..c.8.$c
cc%..c.9..c....c..9.c..*cc
 cc$.c....c....+....c.$cc
  ccccccc+c+cccccccccccc
     c....c....+....c
     c$.8.c.00.c.0.$c
     cc*..c....c..%cc
      cc$.c....c.$cc
       cccc.@@.cccc
ENDMAP

# Originally a rather long D encompass vault, cropped, shrunk,
# and re-arranged to preserve the idea with less of the problems.
# (The monsters do wander a little too easily now, but the vault
# hardly sticks out compared to the rest of Depths.)
NAME: hangedman_grunt_twisty_little_passages
TAGS: no_monster_gen
DEPTH: Depths, !Depths:$
ORIENT: float
SHUFFLE: defghijk
SUBST: def = c, ghi = v, jk = b
KMONS: 8 = 8 band
KMONS: 9 = 9 band
KMONS: 0 = 0 band
KITEM: J = any good_item
NSUBST: | = 1:J / 2:* / *:|
SUBST: % = %., O = %
MAP
eeeeeeeeeffffffffffffffffffffffffffffffffkk
eeeeeeeeecfffffffffffffffffffffffffffffffkk
ee0......ecff%%.....................%Oxxxkk
ee........ecf%%.....................%%xxxkk
.ee...ee...ecf...0fffffffffffffff0...fcxxkk
@.ee...ee...ecf...fffffffffffffff...fci%Okk
...ee...ee...ecf...fff|%....8fff...fci.%%kk
e...ee...ee..0ecf...ff*%....9ff...fci....kk
ce...e...ee...eecf...ff...ffff...fci.....kk
dce.....ee...eeeecf...ff...ff...fci...0..kk
ddce...ee...ee0..ecf...ff...0..fci...ii..kk
ddgce0ee...ee.....ecf...ff....fci...iii..kk
ddggcee0..ee...e...ecf...ff..fci...iiii..kk
dd%%gce...ee0..ee...ecf..0fffci...iiiii..kk
dd%%.gce...ee...ee...ecf...cci...ii98ii..kk
dd....gce...ee...ee...ee...0ci..0ii..ii..kk
dd.....gce...ee...ee.........ii...i..ii..kk
dd..0...gce...ee...ee........8ii.....ii..kk
dd..gg...gce...ee...ee9...ci...ii....ii..kk
dd..ggg...gce...e..0ee...jjci...ii.%%ii..kk
dd..gggg...gce.....ee%..jj0jci...ii*|ii..kk
dd..ggggg...gce...ee%O%jj...jci...iiiii..kk
dd..gg*|gg...gce0ee..%jj.....jci...iiii..kk
dd..gg%%.gg...gcee...jj0..j...jci...iii..kk
dd..gg....gg...gc...9jj...jj...jci...ii..kk
dd..gg.....gg8........jj...jj...jci...0..kk
dd..gg..g...gg.........jj...jj...jci.....kk
dd..gg..gg0..gc0...jj...jj...jj...jci....kk
dd..gg89gg...gcc...ccj...jj...jj...jci.%%kk
dd..ggggg...gchhh0..hcj...jj..0jj...jci%%kk
dd..gggg...gch..hh...hcj...j...jj..0jjciikk
dd..ggg...gch....hh...hcj.....jj...jj0jcikk
dd..gg...gch...0..hh...hcj..0jj...jj...jckk
dd..0...gch...hh...hh...hcjjjj...jj.....jck
dd.....gch...hhhh...hh...hcjj...jj...j...jc
dd....gch...hh9....%|hh...hcj0..jj...jj...j
dd%%.gch...hhh8....%*hhh...hcj...jj...jj...
ddO%gch...hhhhhhhhhhhhhhh...hcj...jj...jj.@
ddxxch...0hhhhhhhhhhhhhhh0...hcj...jj...jj.
ddxxx%%.....................%%hcj........jj
ddxxxO%.....................%%hhcj......0jj
ddhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhcjjjjjjjjj
ddhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhjjjjjjjjj
ENDMAP

NAME: cheibrodos_spurs
TAGS: no_item_gen no_monster_gen
DEPTH: Depths
ORIENT: float
MONS: tentacled monstrosity
SUBST: ; = 0:5 9:15 1:3
NSUBST: ' = 5=* / 10=$ / *:%
SHUFFLE: G"/TW
SUBST: " = .
KMONS: 0 = 0 band
KMONS: 9 = 9 band
KMONS: 8 = 8 band
MAP
                     ccc
                    cc|cc
              cccc.cc...cc cccc
              c''cccc.8.cccc''c
              c'''cc.....cc'''c
              cc'+c.;...;.c+'cc
               ccc.........ccc
                c...cc+cc...c
    ccccccccc   c;.cc...cc.;c
   cc...0...cc  cccc.""".cccc
  cc.........cc  cc.""""".cc.@
 cc.....0.....ccccc0""G""0cc+c
 c....cc+cc.....;cc.""""".c..c
 c...cc...cc0.....cc.""".cc..c
 c..cc.""".cc.....0cc...cc...c
 c..c.""""".cc;.....cc+cc....c
 c+cc0""G""0ccccc.....0.....cc
 @.cc.""""".cc  cc.........cc
  cccc.""".cccc  cc...0...cc
  c;.cc...cc.;c   ccccccccc
  c...cc+cc...c
 ccc.........ccc
cc'+c.;...;.c+'cc
c'''cc.....cc'''c
c''cccc.8.cccc''c
cccc cc...cc cccc
      cc|cc
       ccc
ENDMAP

####

NAME:   kennysheep_gozag_temple
TAGS:   transparent no_monster_gen no_pool_fixup no_item_gen
TAGS:   uniq_kennysheep_gozag_temple
DEPTH:  Depths, !Depths:$
ORIENT: centre
KMONS:  1 = guardian serpent
KMONS:  B = golden dragon
KITEM:  | = gold good_item
KITEM:  13 = gold
KFEAT:  B = altar_gozag
COLOUR: c = yellow
FTILE:  .0_Gt = floor_grass_dark
FTILE:  $|B}+nc1-D = floor_limestone
FTILE:  " = floor_dirt
TILE:   c = wall_tomb
KFEAT:  _ = antiques shop name:Gozag greed:100 count:3 /\
            antique weapon shop name:Gozag greed:100 count:3 /\
            antique armour shop name:Gozag greed:100 count:3
: vault_metal_statue_setup(_G, "GD", "golden statue")
MAP
      ww    @    ww
     wwt..G"""G..tww
    www.."""""""..www
   wwwG.""c+++c"".Gwww
  www..""cc---cc""..www
  ww..t""cD---Dc""t..ww
 ww..."""cc+++cc"""...ww
 ww.t.""Gcc$$$ccG"".t.ww
 ww..0""cc$$$$$cc""0..ww
 w""""""n$$1|$$$n""""""w
@""G.""_n$$|B|$$n_"".G""@
 w""""".n$$$|1$$n."""""w
 ww.0"".cc$$$$$cc.""0.ww
 ww.."".Gcc$$$ccG.""..ww
 ww..""..0cnnnc0..""..ww
 ww.."""...._...."""..ww
  wwt.""""""""""""".tww
  wwwt.""""""""""".twww
   wwwt...G"""G...twww
    www     @     www
ENDMAP

NAME: pf_snail_temple
DEPTH: Depths, !Depths:$
ORIENT: float
TAGS: no_monster_gen
TILE: G = dngn_statue_snail
# foyer: 6/10 0s
NSUBST: 1 = 5:0 / 1:T / *:.
# 2nd corridor: 5/7 0s and 1/2 9s
NSUBST: 2 = 2:D / 2:0 / 1:T / *:.
NSUBST: 3 = 1:9 / *:.
# 3rd corridor: 10/17 0s and 1/2 9s
NSUBST: 4 = 3:D / 6:0 / 1:T / *:.
NSUBST: 5 = 1:9 / *:.
# sanctum: 5/7 0s, 2/3 9s, an 8, and a torpor snail on the altar
NSUBST: 6 = 2:E / 3:F / *:.
NSUBST: 7 = 2:H / *:.
KMONS: _ = torpor snail patrolling
KFEAT: _ = altar_cheibriados
KITEM: _ = plate armour good_item ego:ponderousness no_pickup /\
           crystal plate armour good_item ego:ponderousness no_pickup w:5
# general settings
KMONS: T = torpor snail
KMONS: D = 0 band
KMONS: 9 = 9 band
KMONS: E = 0 band patrolling
KMONS: F = 0 patrolling
KMONS: H = 9 band patrolling
KMONS: 8 = 8 patrolling
#loot
KITEM: 8 = any good_item
KITEM: 7 = *
MAP
                    ccc
                ccccccccccc
              ccccccc4cccccc
 ...        ccccc.G4G.4c.cccc
 .m..      cccc......4.+..cccc
..cc..     ccc.......4.+...cccc
.mccc.    ccc.5....G4G4c.2..ccc
...cc..  ccc...5..cccccc.....ccc
  ..cc.. ccc....ccc*GG*cc....ccc
   .ccc. cc4..4cc|7..6.6cc2..2cc
   ..cc. ccG44GcG8.._.6.*cG..Gcc
   ..cc..cc4..4cc|7.....Gc....cc
   ..cc..ccc....cc*GG6..Gc2..2cc
   ..ccc.0cc....4ccc+.6.7cG..Gcc
    ..cc0*ccc.4.....+.6.cc....cc
   ..ccccccccc...4..c6.cc..3.ccc
  ..cccccccccccccccccccc....cccc
 ..ccc.G..1G...G1..G1.c2.3..ccc
  .@++......1....1....+....ccc
   @++......1....1....+...cccc
   ccc.G..1G...G1..G1.c2cccc
   cccccccccccccccccccccccc
    ccccccccccccccccccccc
ENDMAP

NAME:   kennysheep_windowed_halls
DEPTH:  D:5-, Depths
ORIENT: float
SUBST:  c : cccvb
MAP
ccccccccccccccccccccccc
c0...0c0...0c0...0c***c
c.....c.....c.....c9|9c
c..c..c..c..c..c..c***c
c..c..c..c..c..c..ccc+c
c..c.....c.....c......c
c..c.....c.....c......c
c..cnnccccnnccccnnccccc
c.....................@
c.....................@
c..ccccnnccccnncccccccc
c..c.....c.....c......c
c..c.....c.....c......c
c..c..c..c..c..c..ccc+c
c..c..c..c..c..c..c000c
c.....c.....c.....c*G*c
c0...0c0...0c0...0c000c
ccccccccccccccccccccccc
ENDMAP

NAME: kennysheep_ambush_hall
DEPTH: D:8-, Depths, Elf, Zot
ORIENT: float
TAGS: transparent
SUBST: T : TGV.
MAP
      x..@..x
   xxxxxx.xxxxxx
  xx....x+x....xx
 xx....x...x....xx
 x...0x.....x0...x
xx..0x..T.T..x0..xx
x%..x.........x..%x
x...x.........x...x
x*..x..T...T..x..*x
x...x.........x...x
x%..x.........x..%x
xx..0x..T.T..x0..xx
 x...0x.....x0...x
 xx....x...x....xx
  xx....x+x....xx
   xxxxxx.xxxxxx
      x..@..x
ENDMAP

NAME:   kennysheep_blocky_hall
TAGS:   transparent
DEPTH:  D:8-, Depths, Elf
ORIENT: float
: if you.branch() == "D" and you.depth() < 12 then
SUBST:  9$ = .
: end
MAP
        xxxxxxxxxxxxx
        x...........x
        x.....0.....+
        x...........x
xx+xxxxxx...xxxxx...x
x...........xxxxx...x
x.........9$xxxxx...x
x.........$%xxxxx...x
x...xxxxxxxxxxxxx...xxxxx
x...xxxxxxxxxxxxx.......x
x.0.xxxxxxxxxxxxx.......x
x...xxxxxxxxxxxxx%......x
x...xxxxxxxxxxxxxxxxx...x
x......%xxxxxxxxxxxxx...x
x.......xxxxxxxxxxxxx.0.x
x.......xxxxxxxxxxxxx...x
xxxxx...xxxxxxxxxxxxx...x
    x...xxxxx%$.........x
    x...xxxxx$9.........x
    x...xxxxx...........x
    x...xxxxx...xxxxxx+xx
    x...........x
    +.....0.....x
    x...........x
    xxxxxxxxxxxxx
ENDMAP

NAME:   kennysheep_blocky_room
TAGS:   transparent
DEPTH:  D:8-, Depths, Elf, Zot
ORIENT: float
: if you.absdepth() < 5 then
SUBST:  9 = 0
NSUBST: * = 2:* / *:%
: end
MAP
        xxxxxxxxxxxxx
        x...........x
        x.....0.....+
        x...........x
xx+xxxxxx...xxxxx...x
x...........x..0x...x
x...........x...x...x
x...........x...x...x
x...xxxxxxx+x...x...xxxxx
x...x9........G.x.......x
x.0.x....G......x.......x
x...x.......*...+.......x
x...xxx+x..*%*..xxxxx...x
x.......x...*.......x...x
x.......x......G....x.0.x
x.......x.G........9x...x
xxxxx...x...x+xxxxxxx...x
    x...x...x...........x
    x...x...x...........x
    x...x0..x...........x
    x...xxxxx...xxxxxx+xx
    x...........x
    +.....0.....x
    x...........x
    xxxxxxxxxxxxx
ENDMAP

NAME: kennysheep_room_grid
DEPTH: D:12-, Depths, Elf, Zot
ORIENT: float
TAGS: transparent
MAP
 xxxxx xxxxx xxxxx
xx...x@x...x@x...xx
x.....x.....x.....x
x..0..x..0..x..0..x
x.....x.....x.....x
xx...xxx...xxx...xx
 @xxxxxxxxxxxxxxx@
xx...xxx...xxx...xx
x.....x.9*9.x.....x
x..0..x.*%*.x..0..x
x.....x.0*0.x.....x
xx...xxx...xxx...xx
 @xxxxxxx+xxxxxxx@
xx...xxx...xxx...xx
x.....x.....x.....x
x..0..x..0..x..0..x
x.....x.....x.....x
xx...x@x...x@x...xx
 xxxxx xxxxx  xxxx
ENDMAP

NAME: kennysheep_bubbly
DEPTH: D:12-, Depths, Elf, Zot
ORIENT: float
MAP
         xxxxxxx
       xxx.....xxx
      xx.........xx
     xx...........xx
     x.............x
    xx...0.xxx.0...xx
    x.....xxxxx.....x
    x....xxxxxxx....+
    x....xxxxxxx....+
    x....xxxxxxx....+
    x.....xxxxx.....x
    xx...0.xxx.0...xx
     x.............x
  xxxxx...........xx
 xx...xx.........xx
xx.....xx......xxx
+..0$0..xxx+++xx
+..$%$..x......xx
+..0$0..x.......xx
xx.....xx........xx
 xx...xx..........x
  xxxxx....0*9....x
      x....*%*....x
      x....9*0....x
      x...........x
      xx.........xx
       xx.......xx
        xx.....xx
         xxxxxxx
ENDMAP

NAME:   kennysheep_spiral_hall
TAGS:   transparent
DEPTH:  D:4-, Depths, Elf, Zot
ORIENT: float
SUBST:  G : GTV.
: if you.branch() == "Zot" then
MONS:   draconian shifter
NSUBST: % = 2:1 / 2:| / *:.
: end
MAP
          xxxxxxxxxxxxx
     xxxxxx...........xxxxx
   xxx...................Gxxxx
 xxx......................x..xxx
xx.........0xxxxxxxxx.....x....xx
x........xxxx...0...xxx..xx.....x
.......xxx......%........x.......
@......x.......%G%.......x......@
.......x........%......xxx.......
x.....xx..xxx...0...xxxx........x
xx....x.....xxxxxxxxx0.........xx
 xxx..x......................xxx
   xxxxG...................xxx
      xxxxx...........xxxxxx
          xxxxxxxxxxxxx
ENDMAP

NAME:   kennysheep_oblong_rooms
TAGS:   transparent
DEPTH:  D:$, Depths, Elf, Zot
ORIENT: float
SUBST:  G : GTV.
: if you.branch() == "Zot" then
NSUBST: . = 4:9 / *:.
: end
MAP
        ccccccccccccc
    ccccc...........ccccc
  ccc........0.0........ccc
  c...........G...........c
  +.....G....0.0....G.....+
  c.......................c
  ccc...................ccc
    ccccc...........ccccc
        ccccc+++ccccc
     cccc...........cccc
cccccc.................cccccc
c*cc.....................cc*c
c|8......G.........G......8|c
c*cc..........G..........cc*c
cccccc.................cccccc
     cccc...........cccc
        cccccc.cccccc
            cc8cc
            c*|*c
            ccccc
ENDMAP

NAME:    minmay_heptahexagon
DEPTH:   D:12-, Depths
ORIENT:  float
ITEM:    book of debilitation / book of hexes / book of misfortune
# randomize how open the hexagons are to each other
SUBST:   M : xx+., N : +@, O : +++.
# each hex other than the center either has monsters+loot, or nothing
SHUFFLE: ABCDEF / GHIJKL
SUBST:   BCDEF = A, HIJKL = G
SUBST:   A = *, G = 0009, 8 = 998
# feature randomization
SUBST:   x : xcvb
SUBST:   ! : xcvb m:3 G:3 t:3 .:49, ? : xcvb m:1 t:1 .:44
SUBST:   " : xcvbTmGt .:80, ' : xcvbTmGt d:80
: if you.in_branch("Depths") then
FTILE:   .098d*|TmGt+ = floor_etched
: end
MAP
          xxxNxxx
         xxF...Fxx
         x..L?L..x
        xx.?...?.xx
  xxxxxxxF.L.".L.Fxxxxxxx
 xxE...Exx.?...?.xxA...Axx
 N..K?K..M..L?L..M..G?G..N
xx.?...?.xxF...Fxx.?...?.xx
xE.K.".K.ExxxOxxxA.G.".G.Ax
xx.?...?.xx|...|xx.?...?.xx
 x..K?K..O..8!8..O..G?G..x
 xxE...Exx.!...!.xxA...Axx
  xxxMxxx|.8.'.8.|xxxMxxx
 xxD...Dxx.!...!.xxB...Bxx
 x..J?J..O..8!8..O..H?H..x
xx.?...?.xx|...|xx.?...?.xx
xD.J.".J.DxxxOxxxB.H.".H.Bx
xx.?...?.xxC...Cxx.?...?.xx
 N..J?J..M..I?I..M..H?H..N
 xxD...Dxx.?...?.xxB...Bxx
  xxxxxxxC.I.".I.Cxxxxxxx
        xx.?...?.xx
         x..I?I..x
         xxC...Cxx
          xxxNxxx
ENDMAP

NAME:   minmay_box_of_curves
ORIENT: float
DEPTH:  D:11-, Depths
SUBST:  x : cvb, ? : .TGtxcvbm
SUBST:  ' : '", ' : .:50 xcvbm, " : .:50 xcvbm
SUBST:  9 = 999., 8 = 888.
MAP
xxxxxxxxxxxxxxx@xxxxxxxxxxxxxxx
x|8..........x...x..........8|x
xxxx..."""...x...x...'''...xxxx
x8.xxx...""..x...x..''...xxx.8x
x....xx..9".xx...xx.'9..xx....x
x....|x.....x.."..x.....x|....x
x..xxxx....xx.."..xx....xxxx..x
x+xx..+..xxx...""..xxx..+..xx+x
x.x...xxxx......""...xxxx...x.x
x.x..9..+..'''.?."""..+..9..x.x
x.x.....x....''.......x.....x.x
x.xx...xx+xx..''...xx+xx...xx.x
x..xxxxx...xx..'..xx...xxxxx..x
x.....x.....x..'..x.....x.....x
x..9..+..9..x..?..x..9..+..9..x
x.....x.....x.."..x.....x.....x
x..xxxxx...xx.."..xx...xxxxx..x
x.xx...xx+xx...""..xx+xx...xx.x
x.x.....x.......""....x.....x.x
x.x..9..+..'''.?."""..+..9..x.x
x.x...xxxx...''......xxxx...x.x
x+xx..+..xxx..''...xxx..+..xx+x
x..xxxx....xx..'..xx....xxxx..x
x....|x.....x..'..x.....x|....x
x....xx..9'.xx...xx."9..xx....x
x8.xxx...''..x...x..""...xxx.8x
xxxx...'''...x...x..."""...xxxx
x|8..........x...x..........8|x
xxxxxxxxxxxxxxx@xxxxxxxxxxxxxxx
ENDMAP

NAME:   minmay_ambush_box
DEPTH:  D:11-, Depths, Elf
ORIENT: float
SUBST:  c : cvb
SUBST:  ' : .xcvb n:2 t:2 G:3 T:3
MAP
cccccc@cccccc
c|.9c...c9.|c
c.'.c...c.'.c
c...........c
c..cnc.cnc..c
c9..c...c..9c
ccc.n{([n.ccc
c9..c...c..9c
c..cnc.cnc..c
c...........c
c.'.c...c.'.c
c|.9c...c9.|c
cccccc@cccccc
ENDMAP

NAME:   minmay_gate_of_8
TAGS:   no_descent
DEPTH:  D:8-, Depths
ORIENT: float
KMONS:  8 = 8
KITEM:  8 = |
KPROP:  8 = no_tele_into
SUBST:  c : cvb, x : xcvb
MAP
 xxxxxx@xx
 x...x...x
 x.xx..x.x
 x.xxx...x
 xx.xxx.xx
ccnn=xxx.x
c888n.xx.x
c888nx...x
cc88cxxxxx
 cccc
ENDMAP

NAME:    minmay_shrinking_squares
DEPTH:   D:9-, Depths
ORIENT:  float
NSUBST:  9 = 1:9 / 1:. / * = 9.
NSUBST:  8 = 1:8 / 1:. / * = 8.
SUBST:   x : cvb
MAP
xxxxxxxxxx
xT+||x...+
xxx||x...x
x..88x...x
x..88x...x
x+xxxx...x
x.....999x
x.....999x
x.....999x
xxxxxxxxxx
ENDMAP

NAME:   minmay_chopped_fan
DEPTH:  D:9-, Depths
ORIENT: float
SUBST:  x : cvb
MAP
           xxx
           x8x
           x.xxx
           x.x0x
    @xx   xx.x.x@
  xxx.x   x.x.x.x
  x0.xxxx x.x.xxx
xxxxx..9x x.x9x
x8...xxxxxx.xxx
xxxxx....|x|x
    xxxxxxnxxxxxx
        x|x|....xxxxx
      xxx.xxxxxx...8x
      x9x.x x9..xxxxx
    xxx.x.x xxxx.0x
    x.x.x.x   x.xxx
    @x.x.xx   xx@
     x0x.x
     xxx.x
       x8x
       xxx
ENDMAP

NAME:   minmay_mutant_horseshoe
DEPTH:  D:11-
ORIENT: float
SUBST:  x : cvb
MAP
 xxxxxxxxx
xx...x...xx
x9xxx.xxx9x
x.x|x.x|x.x
x.x.x.x.x.x
x.xm8x8mx.x
xx.xxxxx.xx
 @xx   xx@
ENDMAP

NAME:   minmay_diamond_boxcup
DEPTH:  D:2-6
ORIENT: float
NSUBST: 0 = 4:0 / 8 = 0. / *:.
SUBST:  x : x:60 cvb
MAP
xxxxxxxxxxxxx
x0x0x...x0x0x
xx0x..x..x0xx
x0x..xxx..x0x
xx..xx0xx..xx
x..xx0.0xx..x
x.....*.0xx.@
x..xx0.0xx..x
xx..xx0xx..xx
x0x..xxx..x0x
xx0x..x..x0xx
x0x0x...x0x0x
xxxxxxxxxxxxx
ENDMAP

NAME:   minmay_glassy_protrusions
DEPTH:  D:11-, Depths
ORIENT: float
SUBST:  x : cvb
MAP
xxx@xxxxx@xxx
x..xx*x*xx..x
x.xn.x8x.nx.x
xn..xn8nx..nx
x*nx.x8x.xn*x
xx9xx*x*xx9xx
 xxxxx*xxxxx
     xxx
ENDMAP

NAME:   minmay_blocky_corners
DEPTH:  D:7-
ORIENT: float
SUBST:  x : cvb, 9 = 99.
MAP
xxxxx@xxxxx
x9|x...x|9x
x..x...x..x
x9xx...xx9x
xx9.xxx.9xx
 x.9x x9.x
 xxxx xxxx
ENDMAP

NAME:   minmay_wonky_spiral
DEPTH:  D:1-4
ORIENT: float
SUBST:  0 = 0.
MAP
x@xxxxxxx
x.x%%x.0x
x.x%...xx
x.xx...0x
x.0x0x.xx
x.xxxx..x
x.0x0xx+x
x.......x
xxxxxxxxx
ENDMAP

NAME:   minmay_cornered_nines
DEPTH:  D:6-13
ORIENT: float
SUBST:  x : x:90 cvb
MAP
xx@....xx
xxxxx.xxx
x*xxx.x*x
x9xx.x9xx
xx..xxxxx
x.x.xxx*x
x.x..xx.x
xx.xx.9xx
xxxxxxxxx
ENDMAP

NAME:   minmay_sliced_demisemicircle
DEPTH:  D:9-, Depths
ORIENT: float
SUBST:  x : ccvvb
NSUBST: 8 = 2:8 / 4 = 8. / *:.
NSUBST: 9 = 2:9 / 8 = 9. / *:.
MAP
xxxxxx
x.9..xxxx
+999...9xxx
x.9....999xx
xxxxxxxx+xxxx
x.8.xxx999x9x
x888..xx99+9xx
x.8....xx9x99x
xx+xxxx.xxx..x
xb8bbbx..xx..xx
xb8b|bx..xx...x
xb8b|bx.8.x.9.x
xb8||bx888+999x
xbbbbbx.8.x.9.x
xxxxxxxxxxxxxxx
ENDMAP

NAME:   minmay_roachtagon
DEPTH:  D:4-5
ORIENT: float
MONS:   clockroach
NSUBST: 1 = 5:1 / 10 = 1. / 2:% / 2 = %. / *:.
SUBST:  " = @x
MAP
  xxxx"x
 xx1111xx
xx111111xx
x11111111x
x11111111x
x11111111x
x11111111x
xx111111xx
 xx1111xx
  x@xxxx
ENDMAP

# The center is always reachable in these two vaults
# regardless of transformation arrangements.
NAME:    minmay_bloctagon
DEPTH:   D:8-, Depths
ORIENT:  float
SUBST:   x : x:60 c:15 v b:5
SHUFFLE: ABCE, 0%
SUBST:   0 = 0009, % = %%%*
SUBST:   A : .
SUBST:   B : .:50 C:52 xcvbm t:2
SUBST:   C : .:50 E:52 xcvbm t:2
SUBST:   E : .:102 xcvbm t:2
SUBST:   D : .:102 xcvbm t:2
SUBST:   F : .xcvbm G:2 t:2 T:2
MAP
    xxxxxxxxxx
    xxxxxxxxxx
  xxxx00DD%%xxxx
  xxxx00DD%%xxxx
xxxx..CCAABB..xxxx
xxxx..CCAABB..xxxx
xx..BBEE%%EECC..xx
xx..BBEE%%EECC..xx
..DDAA00FF00AADD.@
@.DDAA00FF00AADD..
xx..CCEE%%EEBB..xx
xx..CCEE%%EEBB..xx
xxxx..BBAACC..xxxx
xxxx..BBAACC..xxxx
  xxxx%%DD00xxxx
  xxxx%%DD00xxxx
    xxxxxxxxxx
    xxxxxxxxxx
ENDMAP

NAME:    minmay_bloctagon_deflated
DEPTH:   D:8-, Depths
ORIENT:  float
SUBST:   x : x:60 c:15 v b:5
SHUFFLE: ABCE, 9*
SUBST:   A : .
SUBST:   B : .:50 C:52 xcvbm t:2
SUBST:   C : .:50 E:52 xcvbm t:2
SUBST:   E : .:102 xcvbm t:2
SUBST:   D : .:102 xcvbm t:2
SUBST:   F : .xcvbm G:2 t:2 T:2
MAP
  xxxxx
 xx9D*xx
xx.CAB.xx
x.BE*EC.x
@DA9F9AD@
x.CE*EB.x
xx.BAC.xx
 xx*D9xx
  xxxxx
ENDMAP

NAME: cheibrodos_elevator_heist
DEPTH: D:8-,!D:$
TAGS: no_item_gen no_monster_gen no_descent
ORIENT: float
MAP
vvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvv
vv9...........]vv
vv0............vv
vv..vvvv.vvvn..vv
vv..v......9v..vv
vv..v.......v..vv
vv..v..*$%..v..vv
vv..v..$|$..v..vv
vv..v..%$*..v..vv
vv..v.......v..vv
vv..v9......v..vv
vv..nvvv.vvvv..vv
vv............0vv
vv[...........9vv
vvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvv
ENDMAP

NAME: cheibrodos_helix_gallery
DEPTH: D:1-12
ORIENT: float
NSUBST: - = 2:0
MAP
  ......@@......
  c............c
 cc........WW..cc
 cc.......W..W.cc
ccW...WW..W..WWWcc
cWW..W--W--W..WWWc
cWW..W--WT-W...WWc
cWW...W-TW--W..WWc
cWWW..W--W--W..WWc
ccWWW..W..WW...Wcc
 cc.W..W.......cc
 cc..WW........cc
  c............c
  ......@@......
ENDMAP

NAME: cheibrodos_histonic
DEPTH: D:8-
TAGS: no_item_gen no_monster_gen
ORIENT: float
NSUBST: ' = 3:0 / 2=0., _ = 3:0 / 2=0., ` = 1=90 / 2:0 / 3=0.
NSUBST: ; = 1=90 / 2:0 / 3=0., - = 1=|* / 2=*$ / 2=% / 6=%.
MAP
     ccccc      ccccc
    cc...cc    cc...cc
   cc..'..cccccc..;..cc
   c..'''..c--c..;;;..c
   c.'''''.n--c.;;;;;.c
   c..'''..c--c..;;;..c
  cc...'..cc+ccc..;..cc
 cc......cc....+c...cc
cc...cc.ccG.....cc.cccc@
c...cc..c..90..cc..cc.=c
c=.cc..cc..09..c..cc...c
@cccc.cc.....Gcc.cc...cc
  cc...c+....cc......cc
 cc..`..ccc+cc.._...cc
 c..```..c--c..___..c
 c.`````.c--n._____.c
 c..```..c--c..___..c
 cc..`..cccccc.._..cc
  cc...cc    cc...cc
   ccccc      ccccc
ENDMAP

NAME: cheibrodos_salmonella
DEPTH: Elf, Depths
TAGS: no_item_gen no_monster_gen no_pool_fixup
ORIENT: float
SHUFFLE: Tw / VW / Gl
NSUBST: - = 3=90 / 3:0. / 2=0.., ' = 2=90 / 2:0 / 3=0., ` = 2=90 / 2:0 / 3=0.
NSUBST: " = 1=*% / 1=%$ / 2:%, ; = 3=|* / 2=*$ / 2:% / 3=%$
MAP
         .@@@.
     ccccc...ccccc
   ccc..c.....c..ccc
  cc...............cc
 cc....wTc...cTw....cc
cc...wwwcc+++ccwww...cc
c...wwccc.....cccww...c
c...wcc---...---ccw...c
c...wc"----.----"cw...c
c...wc"----.----"cw...c
c```wcc---...---ccw'''c
c```wwccc..8..cccww'''c
cc```wwwcccncccwww'''cc
 c`````wwwwwwwww'''''c
 cc``````.....''''''cc
  cc`````.....'''''cc
   ccc;;;9...9;;;ccc
     cccc;;8;;cccc
        ccccccc
ENDMAP

NAME: cheibrodos_barr_body
TAGS: no_item_gen no_monster_gen transparent
DEPTH: D:4-12
ORIENT: float
NSUBST: " = 1:9 / 2:0 / 2=0., ; = 2:0 / 2=0.
NSUBST: ' = 2:0 / 2=0. , _ = 2:0 / 2=0.
MAP
.......@.......
.xxxx.....xxxx.
.x%;xx...xx"*x.
.x;;;xx.xx"""x.
.xx;;;x.x"""xx.
..xx;+x.x+"xx..
...xxx...xxx...
@......G......@
...xxx...xxx...
..xx'+x.x+_xx..
.xx'''x.x___xx.
.x'''xx.xx___x.
.x%'xx...xx_%x.
.xxxx.....xxxx.
.......@.......
ENDMAP

NAME: cheibrodos_old_hovel
TAGS: no_item_gen no_monster_gen transparent
DEPTH: D:2-4
ORIENT: float
KMONS: P = plant
NSUBST: " = 1:0 / 1:%, - = 2:P / 4=P.
SUBST: x = x:50 P.
MAP
..........
.xxxxxxxx.
.x------x.
.x------x.
.x--""--x.
.x--""--x.
.x----.-x.
.x---.--x.
.xxx++xxx.
....@@....
ENDMAP

NAME:   cheibrodos_fzero
TAGS:   no_item_gen no_monster_gen transparent
DEPTH:  D:5-
ORIENT: float
: if you.depth() < 9 then
:   kmons("9 = place:D:" .. you.depth() + 3)
: end
NSUBST: " = 3:0 / 3=0. / 1=9.., ` = 3:0 / 2=0. / 1=9..
NSUBST: ' = 3:0 / 3=0. / 2:9 / 1=9.
NSUBST: A = 1:% / 3=%., B = 2:* / 1=*%. / 1=%., C = 1:% / 3=%.
MAP
...................
@..x...x'.'x...x..@
..xAx...xBx...xCx..
.x"."x...x...x`.`x.
...................
@..x...x'.'x...x..@
..xAx...xBx...xCx..
.x"."x...x...x`.`x.
...................
@..x...x'.'x...x..@
..xAx...xBx...xCx..
.x"."x...x...x`.`x.
...................
@..x...x'.'x...x..@
..xAx...xBx...xCx..
.x"."x...x...x`.`x.
...................
ENDMAP

NAME: cheibrodos_ideogram_h
TAGS: no_item_gen no_monster_gen
DEPTH: D:8-
ORIENT: float
KMONS: 9 = 9
KMONS: - = 0
KITEM: 9 = * / %
KITEM: - = % / $
SUBST: x : xc
NSUBST: _ = 1:0 / 2=0., ` = 5:0 / 2=0., p = 1:0 / 3=0.
NSUBST: " = 1:9 / 1=99-, ; = 1:* / 3=%$
MAP
xwwwwwwwwwwwwwwwwx
wxxxxxxx00xxxxxxxw
wx`````x..+pppp.xw
wx`````x``xpppp.xw
wx.xx``x``xppxx.xw
wx;"x``x``xppx9|xw
wxxxx``+``xppxxxxw
w0.````xxxxpppp.0w
w0.````wwwxpppp.0w
wxxxx``wGwxpppp.0w
wx;.___wwwxxxxx+xw
wx-x____````````xw
wxxx____````````xw
w.______x``xxx``xw
w.___xx.x``x"x``xw
x.___x-;x..x;.``xw
.....xxxx00xxxxxxw
@.xwwwwwwwwwwwwwwx
ENDMAP

# The ghostless version of gammafunk_necropolis_ghost_arena.
NAME:   gammafunk_sealed_arena
TAGS:   no_monster_gen no_trap_gen transparent no_descent
# Allow placement in Vaults as a room.
TAGS:   vaults_hard no_wall_fixup passable
DEPTH:  Crypt, D:8-, Depths, Elf, Shoals, Snake, Spider, Swamp, Vaults, Zot
ORIENT: float
KMASK:  -QR189de|*$ = opaque
ITEM:   any jewellery good_item
ITEM:   cloak good_item / scarf good_item / helmet good_item / hat good_item \
        / pair of gloves good_item / pair of boots good_item
KITEM:  R = |
: if you.in_branch("Shoals") or you.in_branch("Spider") then
MONS:   orange crystal statue
: else
MONS:   orange crystal statue / obsidian statue
: end
# In earlier Dungeon depths, one d item and remove 1/3 of the 9 spawns
# on-average.  Elsewhere place one d item and one e item and don't reduce the 9
# spawns.
: if you.in_branch("D") and you.depth() < 12 then
SUBST: 1 = 1---, 9 = 99-, " = d, ' = $
: elseif you.in_branch("D") then
SUBST: 1 = 1-
: end
SUBST:  " = $, h : b-, i : b-
: if you.in_branch("Spider") or you.in_branch("Swamp") then
SUBST:  b : cx
: else
SUBST:  b : bcvx
: end
NSUBST: ' = d / e / $
: vaults_hard_standard(_G, false, "-QR189de|*$G")
MARKER: P = lua:transp_loc("sealed_arena_entry")
MARKER: Q = lua:transp_dest_loc("sealed_arena_entry")
MARKER: R = lua:transp_loc("sealed_arena_exit")
MARKER: S = lua:transp_dest_loc("sealed_arena_exit")
MAP
  ...........
 ..nnnnnnnnn..
 .nn9------nn.
 .nG-hi9ih-Gn.
 .n--ih-hi$*n.
..n9-----8'|n..
@Pn--Q-1--"RnS@
..n9-----8'|n..
 .n--ih-hi$*n.
 .nG-hi9ih-Gn.
 .nn9------nn.
 ..nnnnnnnnn..
  ...........
ENDMAP

NAME:    gammafunk_its_a_trap
TAGS:    no_monster_gen no_trap_gen no_tele_into no_item_gen transparent no_descent
# Allow placement in the Vaults branch as a room.
TAGS:    vaults_hard passable
DEPTH:   Crypt, D:14-, Depths, Elf, Snake, Pan, Vaults, Zot
ORIENT:  float
KMASK:   -+QR^01289de$*| = opaque
: item(dgn.loot_scrolls .. " / " .. dgn.loot_potions)
ITEM:    any randart jewellery
KFEAT:   ^ = trap_zot
SHUFFLE: FH / JK
NSUBST:  D = ^ / -, E = ^ / -, H = - / "
SUBST:   F = -, JK = ", ' = ^-, " = ^^-, d = dd$
# Supplement the 8s in Crypt, Zot, and Pan since OOD defs in these branches
# aren't very deep or are undefined.
: if you.in_branch("Crypt") then
KMONS:   1 = ancient lich / dread lich
NSUBST:  8 = 1 / 8
: elseif you.in_branch("Pandemonium") then
KMONS:   1 = greater demon w:20 / demonspawn soul scholar w:5 / \
             demonspawn blood saint w:5 / demonspawn corrupter w:5 / \
             demonspawn warmonger w:5
KMONS:   2 = executioner / brimstone fiend / ice fiend / tzitzimitl \
           / hell sentinel
SUBST:   8 = 29, 9 = 01
: elseif you.in_branch("Zot") then
KMONS:   1 = ancient lich w:5 / dread lich w:5 / protean progenitor / \
             orb of appropriateness / curse toe
SUBST:   8 = 18
: end
# In Vaults we let the layout dictate wall type and need a border of floor.
# In other branches, we remove the border squares.
: if you.in_branch("Vaults") then
SUBST:   c = x
FTILE:   -+QR^01289de$*| = floor_metal_gold
: else
CLEAR:   `
: end
MARKER:  P = lua:transp_loc("its_a_trap_entry")
MARKER:  Q = lua:transp_dest_loc("its_a_trap_entry")
MARKER:  R = lua:transp_loc("its_a_trap_exit")
MARKER:  S = lua:transp_dest_loc("its_a_trap_exit")
MAP
     ````````````
    ``cccccccccc``
   ``cccccccccccc```
 ```ccccccccccccccc```````
 `ccccccccDcc^ccccccccccc`
 `ccccccc-D----cccccccccc`
 `cccccc"-c-ccc--cccccccc`
 `ccc-''-"c"H-0'"-ce^dccc`
 `ccc''-c"FFc-9'"-c'*'nnn`
..nnn^--cFc"H-0'"^+|^dnnn..
@PnnnQ-^-"""c-8'""c'*RnnnS@
..nnn^--cJc"K-0'"^+|^dnnn..
 `ccc''-c"JJc-9'"-c'*'nnn`
 `ccc-''-"c"K-0'"-c|^eccc`
 `cccccc"-c-ccc--cccccccc`
 `ccccccc-E----cccccccccc`
 `ccccccccEcc^ccccccccccc`
 ```ccccccccccccccc```````
   ``cccccccccccc```
    ``cccccccccc``
     ````````````
ENDMAP

NAME:   gammafunk_dig_for_victory
TAGS:   no_monster_gen no_trap_gen no_tele_into no_item_gen transparent no_descent
# Allow placement in the Vaults branch as a room.
TAGS:   vaults_hard passable
# This must not place on a branch end so it can place a downhatch.
DEPTH:  Crypt, !Crypt:$, D:13-, !D:$, Depths, !Depths:$, Pan, Vaults, !Vaults:$
DEPTH:  Zot, !Zot:$
ORIENT: float
KMASK:  -QRHK012389def$*| = opaque
{{
-- Guarantee at least 5 charges, and on-average give 50% more than usual.
item("wand of digging pre_id charges:" .. tostring(5 + crawl.random2(6)))
item(dgn.loot_scrolls .. " / " .. dgn.loot_potions)
}}
ITEM:   any randart jewellery
KFEAT:  H = >
KFEAT:  K = {
KFEAT:  p = n
KITEM:  HK = victory no_pickup
# Do these substs now so they can be cleaned up by branch.
NSUBST: D = 8 / 2=9 / 0, F = 8 / 2=9 / 0, J = 8 / 2=9 / 0, f = 2=f / |
SUBST:  E = 89--, e = ee$
: if you.in_branch("D") or you.in_branch("Depths")
:    or you.in_branch("Vaults") then
KMONS:  1H = deep troll earth mage
COLOUR: p = blue
TILE:   p = dngn_transparent_stone_blue
: else
KMONS:  1HK = cacodemon
:   if you.in_branch("Crypt") then
KMONS:  2 = ancient lich / dread lich
NSUBST: 8 = 2 / 8
:   elseif you.in_branch("Pandemonium") then
# 8 and 9 spawns aren't a thing in Pan, so replace these with scary things.
KMONS:  2 = greater demon w:20 / demonspawn soul scholar w:5 / \
            demonspawn blood saint w:5 / demonspawn corrupter w:5 / \
            demonspawn warmonger w:5
KMONS:  3 = executioner / brimstone fiend / ice fiend / tzitzimitl \
           / hell sentinel
SUBST:  8 = 39, 9 = 02, H = K
:   elseif you.in_branch("Zot") then
KMONS:  2 = ancient lich w:5 / dread lich w:5 / orb of appropriateness / curse toe
SUBST:  8 = 28
:   end
COLOUR: p = yellow
TILE:   p = dngn_transparent_stone_yellow
: end
# In Vaults we let the layout dictate wall type and need a border of floor.
# In other branches, we remove the border squares.
: if you.in_branch("Vaults") then
SUBST:   c = x
FTILE:   -QRHK012389def$*| = floor_metal_gold
: else
CLEAR:   `
: end
MARKER: P = lua:transp_loc("dig_for_victory_entry")
MARKER: Q = lua:transp_dest_loc("dig_for_victory_entry")
MARKER: R = lua:transp_loc("dig_for_victory_exit")
MARKER: S = lua:transp_dest_loc("dig_for_victory_exit")
MAP
      ``````````````````
      `cccccccccccccccc`
      `cccccccccccccccc`
      `cccccccccccccccc``
 ``````ccp1mmDDDEEmmmcc``````
 `ccccccppppmDDDEmmmmccccccc`
 `c-----mmmmmmmmmmmmmpfm*mfc`
 `c-----mmmmmmmmmmmmmmmmmmmp`
 `c-----mmmmmmmmmmmmmp*memep`
..p-----mmmmmmmmmmJJmmmmmmmp..
@PpQ-d---------mmmHJmp|mRm|pS@
..p-----mmmmmmmmmmJJmmmmmmmp..
 `c-----mmmmmmmmmmmmmp*memep`
 `c-----mmmmmmmmmmmmmmmmmmmp`
 `c-----mmmmmmmmmmmmmpfm*mfc`
 `ccccccppppmFFFEmmmmccccccc`
 ``````ccp1mmFFFEEmmmcc``````
      `cccccccccccccccc`
      `cccccccccccccccc`
      `cccccccccccccccc`
      ``````````````````
ENDMAP

NAME:    emtedronai_trogs_sanctum
TAGS:    no_monster_gen no_trap_gen no_tele_into no_item_gen transparent no_descent
# Allow placement in the Vaults branch as a room.
TAGS:    vaults_hard passable
DEPTH:   D:13-, Orc, Depths, Vaults
ORIENT:  float
KMASK:   ap+-_Y$*defgDEQ1234567 = opaque
KMASK:   = = opaque
KPROP:   -_$*defgDEQ123456 = bloody w:5 / nothing
KITEM:   _ = necklace of bloodlust no_pickup / wrath of trog no_pickup
ITEM:    manual of armour w:30 / manual of fighting w:30 / \
         manual of long blades / manual of axes / manual of maces & flails / \
         manual of polearms / manual of dodging / manual of shields
: local g = "good_item no_pickup"
: local r = "randart no_pickup"
: item("executioner's axe " .. g .. " w:5 / battleaxe " .. r .. " / " ..
:      "broad axe " .. g .. " / triple sword " .. g .. " w:5 / " ..
:      "great sword " .. r .. " / double sword " .. g .. " / " ..
:      "great mace " .. g .. " / eveningstar " .. g .. " / " ..
:      "bardiche " .. g .. " w:5 / glaive " .. r .. " / partisan " .. g)
ITEM:    plate armour good_item randart w:20 no_pickup / \
         crystal plate armour good_item no_pickup / \
         chain mail good_item randart no_pickup
ITEM:    potion of berserk rage pre_id
KMONS:   4 = generate_awake moth of wrath
KMONS:   5 = deep troll earth mage
KMONS:   6 = silent spectre
KFEAT:   _ = altar_trog
KFEAT:   ap = iron_grate
SHUFFLE: def
: if you.in_branch("D") then
KMONS:   1 = patrolling ettin / patrolling iron troll
KMONS:   2 = troll w:15 / two-headed ogre w:15 / cyclops w:5 / deep troll w:5
KMONS:   3 = ogre mage / arcanist / occultist / deep elf pyromancer / \
             deep elf zephyrmancer / boggart / necromancer
: elseif you.in_branch("Orc") then
KMONS:   1 = patrolling stone giant / patrolling ettin
KMONS:   2 = troll w:15 / two-headed ogre w:15 / cyclops w:5 / deep troll w:5 \
         / orc knight
# The orcs mostly offer naughty elves to Trog's Sanctum, with a few naughty
# orcs and ogres thrown in.
KMONS:   3 = orc sorcerer w:5 / ogre mage w:5 / deep elf pyromancer w:30 \
         / deep elf zephyrmancer w:30 / deep elf sorcerer \
         / deep elf demonologist / deep elf annihilator
KMONS:   7 = deep elf elementalist
SUBST:   5 = 7, p = m
: elseif you.in_branch("Vaults") then
KMONS:   1 = patrolling ettin / patrolling iron troll
KMONS:   2 = two-headed ogre / cyclops / deep troll w:15 / stone giant
KMONS:   3 = arcanist / boggart / deep elf annihilator / deep elf demonologist \
          / deep elf sorcerer / deep elf high priest / titan / lich
: else -- Depths
KMONS:   1 = patrolling juggernaut
KMONS:   2 = deep troll w:15 / spriggan berserker w:15 / stone giant \
         / iron troll w:5 / ettin w:5
KMONS:   3 = tengu conjurer / deep elf annihilator / deep elf demonologist \
         / titan / deep elf sorcerer / spriggan air mage / lich / vampire mage
: end
KITEM:   DE = human skeleton
FTILE:   E = floor_rough_lightred
: single_cloud(_G, "E", "flame", false)
# In Vaults we let the layout set the wall type and need a border of floor.  In
# other branches, we remove the border squares.
: if you.in_branch("Vaults") then
SUBST:   v = x, @ = .
:   vaults_hard_standard(_G, true, ".`ap+-_Y$*defgDEQPR1234567")
: else
CLEAR:   `
TILE:    v = dngn_metal_wall_darkgray
: end
MARKER:  P = lua:transp_loc("trogsanc_entry")
MARKER:  Q = lua:transp_dest_loc("trogsanc_entry")
MARKER:  6 = lua:transp_loc("trogsanc_exit")
MARKER:  R = lua:transp_dest_loc("trogsanc_exit")
MAP
`````````...@...`````````
`vvvvvvvv.......vvvvvvvv`
`vvvvvvvv.......vvvvvvvv`
`vvvvvvvv.......vvvvvvvv`
`vvvvvvvvnv.P.vnvvvvvvvv`
`vvvvvvvv4vnnnv4vvvvvvvv`
`vvvvvvvvavnnnvavvvvvvvv`
`vvvvvvv--+-Q-+--vvvvvvv`
`vvvvvv---+-D-+---vvvvvv`
`vvvvv----v-g-v----vvvvv`
`vvvEa--vavnvnvav--aEvvv`
`vvvvv--a4vv6vv4a--vvvvv`
`vvv4p22vavn=nvav22p4vvv`
`vvv3v---$$e_f$$---v3vvv`
`vvv3p----$*d*$----p3vvv`
`vvv3v--Y--***--Y--v3vvv`
`vvv5p------1------p5vvv`
`vvvvv22---------22vvvvv`
`vvvvvavavvnnnvvavavvvvv`
`vvvvv4vEvvnnnvvEv4vvvvv`
`vvvvvvvvv..R..vvvvvvvvv`
`vvvvvvv4n.....n4vvvvvvv`
`vvvvvvvvv.....vvvvvvvvv`
``````````..@..``````````
ENDMAP

NAME:    nzn_random_ring
TAGS:    no_pool_fixup no_monster_gen no_trap_gen
DEPTH:   D:4-, !D:$, Depths, !Depths:$, Lair, !Lair:$, Zot, !Zot:$
NSUBST:  D = 4=0 / 4=0. / 4=^. / r / ., E = 20=W / 12=w / .
NSUBST:  F = 9 / 4=0 / 4=0. / 4=r / 4=^. / ., H = 0 / 9 / 4=09.. / 2=r / .
NSUBST:  J = wl, K = 1 / } / s / K, 2 = 2 / G
NSUBST:  h = 2:@ / c, j = 2:. / *:cv, k = . / *:bcv
: if you.absdepth() < 8 then
SHUFFLE: wW / LL
SUBST:   9 = 0, 1 = 9:40 8, 2 = G, r = $%, s = *, ^ = ^.
KFEAT:   ^ = shaft / trap_teleport / trap_alarm / trap_dispersal
: elseif you.in_branch("Dungeon") then
MONS:    ice statue
SHUFFLE: wW / LL
SUBST:   9 = 09, 1 = 98, 2 = G:50 1, r = $%, s =  *|, } = }>
KFEAT:   ^ = shaft / trap_teleport / trap_alarm / trap_dispersal
: elseif you.in_branch("Lair") then
KMONS:   p = plant
SHUFFLE: Ww / LL
SUBST:   9 = 09, 1 = 98, r = $%, s = *|,  2G = ., bcv = x, } = }>, K = p
KFEAT:   ^ = shaft / trap_teleport / trap_alarm / trap_dispersal
: elseif you.in_branch("Depths") then
MONS:    juggernaut / ancient lich / dread lich / golden dragon
MONS:    obsidian statue / orange crystal statue
SHUFFLE: Ww / ll
SUBST:   2 = G:50 2, r = $*, s = |
KFEAT:   ^ = shaft / trap_alarm / trap_zot
: elseif you.in_branch("Zot") then
MONS:    ancient lich w:5 / dread lich w:5 / orb of appropriateness
MONS:    orange crystal statue
SUBST:   2 = G:50 2, r = *:30 |, wW = l, K = ), s = ]
KFEAT:   ^ = trap_zot
: end
SUBST: K = TUV, L = .
MAP
        hhhhhhhh
      hhhDDDDDDhhh
    hhhDDDjjjjDDDhhh
  hhhDDDjjjFFjjjEDDhhh
 hhDDDDjjFFFFFFjjDDDDhh
hhDEDDjjFFkkkkFFjjDDEDhh
hDDDEjjFFkkHHkkFFjjEDDDh
hEDDDjFFkkJHHJkkFFjDDDEh
hDEEDj2FkHHmmHHkF2jDEEDh
hDDDEjFFkJHKKHJkFFjEDDDh
hDDDEjFFkJHKKHJkFFjEDDDh
hDEEDj2FkHHmmHHkF2jDEEDh
hEDDDjFFkkJHHJkkFFjDDDEh
hDDDEjjFFkkHHkkFFjjEDDDh
hhDEDDjjFFkkkkFFjjDDEDhh
 hhDDDDjjFFFFFFjjDDDDhh
  hhhDDEjjjFFjjjEDDhhh
    hhhDDDjjjjDDDhhh
      hhhDDDDDDhhh
        hhhhhhhh
ENDMAP

NAME:   minmay_skewed_foursquare
TAGS:   transparent
ORIENT: float
DEPTH:  D:2-
: if crawl.one_chance_in(10) then
SUBST:  ' : y, y = y., z : .
: elseif crawl.coinflip() then
SUBST:  z : +, ' : y
: else
SUBST:  y : ., z : ., ' : xcvbnGTUV .:90
: end
SUBST:  + : +..
SUBST:  x : xcvb
SUBST:  y : cvb n:4 G:1
SUBST:  " : xcvbnGTUV .:45
SUBST:  0 = 0..
MAP
                  x@x
                xxx.x
              xxx...xx
            xxx...'..x
        xxxxx...yyyy.xx
      xxx.+...yyy.0y..x
    xxx...xx.'y0...yy.xx
  xxx...'..x..y.."..y..x
xxx...yyyy.xx.yy...0y'.xx
@...yyy.0y..x..z..yyy...x
xx.'y0...yy.xx.yyyy...x+x
 x..y.."..y..x..'...xxx.x
 xx.yy....y'.xx...xxx...xx
  x..y0.yzy..0x0xxx...'..x
  xx.yyyy...xxxxx...yyyy.xx
   x..'...xxx0x0..yzy.0y..x
   xx...xxx...xx.'y....yy.xx
    x.xxx...'..x..y.."..y..x
    x+x...yyyy.xx.yy...0y'.xx
    x...yyy..z..x..y0.yyy...@
    xx.'y0...yy.xx.yyyy...xxx
     x..y.."..y..x..'...xxx
     xx.yy...0y'.xx...xxx
      x..y0.yyy...+.xxx
      xx.yyyy...xxxxx
       x..'...xxx
       xx...xxx
        x.xxx
        x@x
ENDMAP

NAME:   minmay_razor_zed
TAGS:   transparent
ORIENT: float
DEPTH:  D:2-
SUBST:  ' : x. ':2
SUBST:  ' = x.
SUBST:  x : xcvb
SUBST:  0 = 0., % = %.
MAP
xxxxxxxxxxxxxxxxxx
x..xxx0.%x.%x.%x%x
@..'.xxx0..xx.xx.x
x.'..'.xxx0...x..x
x+x.'..'.xxx0...xx
x.xxx.'..'.xxx0..x
x...xxx.'..'.xxx.x
xxx...xxx.'..'.x+x
x%xxx...xxx......x
x...xx.0xx.'..'.xx
xxx...0xx.'..'.xxx
x%xx.0xx.'..'.xx0x
x...0xx.'..'.xx0%x
xx.0xx.'..'.xx0.xx
x%0xx.'..'.xx0...x
x0xx.'..'.xx0.xx%x
xxx.'..'.xx0...xxx
xx.'..'.xx0.xx...x
x......xxx...xxx%x
x+x.'..'.xxx...xxx
x.xxx.'..'.xxx...x
x..0xxx.'..'.xxx.x
xx...0xxx.'..'.x+x
x..x...0xxx.'..'.x
x.xx.xx..0xxx.'..@
x%x%.x%.x%.0xxx..x
xxxxxxxxxxxxxxxxxx
ENDMAP

NAME:   minmay_recursive_quarters
TAGS:   transparent
ORIENT: float
DEPTH:  D:2-
# use an undiggable material to prevent players from wasting dig charges looking
# for secrets in the solid parts
SUBST:  y : c:9 v:1
# average of 4 monsters per item (yes, one item is better than the other one)
SUBST:  0 = 0...
MAP
xxxxxxxxxxx@xxbxxxxxxxx
x.....................x
x.....yyyy....b...yy..x
x...yyyyyy....y...yyy.x
x..yyyyyyb....yy..yyy.x
x..yy*0000...yyy......x
x.yyy0000b...yyyy.....x
x.yyy0000y...yyyyyy...x
x.yyy000yy..yyyyyyyyb.b
x.yyb0byyy..yyyyyy....x
x..........yyyy.......x
x.........yyy.........x
x.......yyyy..........x
x....yyyyyy..yyyb0byy.x
b.byyyyyyyy..yy000yyy.x
x...yyyyyy...y0000yyy.x
x.....yyyy...b0000yyy.x
x......yyy...0000%yy..x
x.yyy..yy....byyyyyy..x
x.yyy...y....yyyyyy...x
x..yy...b....yyyy.....x
x.....................x
xxxxxxxxbxx@xxxxxxxxxxx
ENDMAP

NAME:   minmay_general_purpose_star
TAGS:   transparent
ORIENT: float
DEPTH:  D:2-
SUBST:  y : xcvb n:5
SUBST:  z : xcvbnGTUV.
SUBST:  0 = 0..
ITEM:   morningstar
MAP
            x@x
            x.x
            x.x
            x.x
           xx.xx
           x...x
           x.y.x
          xx.y.xx
          x..y..x
         xx.yyy.xx
       xxx..y%y..xxx
    xxxx...yy0yy...xxxx
xxxxx....yyy000yyy....xxxxx
@.....yyyy%..z00....d.....@
xxxxx....yyy000yyy....xxxxx
    xxxx...yy0yy...xxxx
       xxx..y%y..xxx
         xx.yyy.xx
          x..y..x
          xx.y.xx
           x.y.x
           x...x
           xx.xx
            x.x
            x.x
            x.x
            x@x
ENDMAP

NAME:   minmay_evil_eye
TAGS:   transparent
ORIENT: float
DEPTH:  D:2-
SUBST:  0 = 0..
MAP
xxxxx
@..0xxxx
x.....0xxx
x.xxxx..0xx
x...0xxx..xx
x..x..0xx.0x
xx.x...0xx.xx
 x.xx...0x.0x
 x..xx...xx.x
 xx..xx..0x.xx
  xx..xxx.x.0x
   xx.....x..x
    xxxx.....x
       xxxxx@x
ENDMAP

NAME:   minmay_spotlight
TAGS:   transparent
ORIENT: float
DEPTH:  D:2-
SUBST:  0 = 0...
MAP
xxxx
x%%xxxx
x.x.x.xxxx
x...x..x.xxxx
x0x000x000x0xxxx
@...x...x......@
x0x000x000x0xxxx
x...x..x.xxxx
x.x.x.xxxx
x%%xxxx
xxxx
ENDMAP

NAME:    minmay_polygon_palace
ORIENT:  float
DEPTH:   D:4-,Depths
SHUFFLE: ''"
SUBST:   ' : +
SUBST:   " : x
SUBST:   x : cvb
SUBST:   y : xcvbn .:50
SUBST:   0 = 0.
MAP
          x.@x
         xx++xx
        xx....xx
       xx......xx
       x..y$$y..x
       x..$yy$..x
       x..$yy$..x
     xxx0.y$$y.0xxxxxxxxx
    xx.xx0....0xxx....00x
   xx0.0xx0000xxxx...$00x
  xx0.$..xxxx+xxxx.$yy..x
  x0.y.y..+......+..yy$.x
  x.$.y.$.xxxxxxxx..$...x
  x0.y.y..x......'......x
  xx.$.$.xx......xxxxxx"xx
   x.....x........xxxx...xx
xxxx'xxxxx..y$$y..xxx.....xx
x......."...$yy$...+.$y.y$0x
x..y.y..xx0.y$$y.0xx.y$y$y.x
xx.$$$.xxx........xx.$y$y$0x
 xx.y.xxxxx0....0xxx0....0.x
  x0.0x  xx..00..xxxxx000xxx
  xx0xx   xxxxxxxx   xxxxx
   xxx
ENDMAP

NAME:   minmay_clustersquares
DEPTH:  D:4-
ORIENT: float
SUBST:  x : cvb
SUBST:  " : xcvbn .:50
SUBST:  ' : xcvbn .:50
SUBST:  0 = 0.
MAP
xxxxxxxx
@.....0xxxxxxx
x.'..'.+....0x
x..""..x.'.'.x
x..""..x.."..x
x.'..'.x.'0'.x
x0.....x0...0x
xnxxxxxnxxx+xx
x9.+000x0..0x
x..x0"0x0''.x
xx+x000+.''0x
 x|nxxxx0..0x
 xxx   xxxxxx
ENDMAP

NAME:   minmay_angry_zag
TAGS:   transparent
DEPTH:  D:2-, Depths
ORIENT: float
SUBST:  0 = 0..
SUBST:  ' : x.
MAP
x@xxxx
x..'.xxxxxx
x.'.000.'.x
xxxxxx.'00x
x..'.xxxx0x
x.'.000.'.x
x0xxxx.'..x
x00'.xxxxxx
x.'.000.'.x
xxxxxx.'..x
     xxxx@x
ENDMAP

NAME:   minmay_bubble_buster
DEPTH:  D:3-, Depths
ORIENT: float
SUBST:  0 = 0...
SUBST:  c : cvb
MAP
      xxxx
     xx00xxxxxx
     x00..xx00xx
  xxxx....+..00x
 xx0.xx..xx....x
 x00..+c+ccc..xxxx
 x0...cc...cc+x..xx
 xx..cc.000.cc00..+
 xx+xc%.000.%c00..x
xx0.xc%.0G0.%cx..xx
x%000c%.000.%cx+xx
x%00.cc.000.cc..xx
xx00x+cc...cc....x
 xxxx..ccc+c+..00x
   x....xx..xx00xx
   x00..+....xxxx
   xx00xx.00.x
    xxxxxx00xx
         xxxx
ENDMAP

NAME:   minmay_inner_zag
TAGS:   transparent
ORIENT: float
DEPTH:  D:2-, Depths
SUBST:  0 = 00.
SUBST:  ' : xcvbn G:1
MAP
           xx.@.x
          xx.'.xxx
         xx.'.xx0xx
        xx.'.xx.'.xx
       xx.'.xx.'.'.xx
      xx.'.xx.'.x.'.xx
     xx.'.xx.'.xxx.'.xx
    xx.'.xx.'.xx0xx.'.xx
   xx.'.xx.'.xx.'.xx.'.xx
  xx.'.xx.'.xx.'.'.xx.'.xx
 xx.'.xx.'.xx.'...'.xx.'.xx
xx0'.xx0'.xx%%%%xx.'0xx.'0xx
 xx.'.xx.'...'.xx.'.xx.'.xx
  xx.'.xx.'.'.xx.'.xx.'.xx
   xx.'.xx.'.xx.'.xx.'.xx
    xx.'.xx0xx.'.xx.'.xx
     xx.'.xxx.'.xx.'.xx
      xx.'.x.'.xx.'.xx
       xx.'.'.xx.'.xx
        xx.'.xx.'.xx
         xx0xx.'.xx
          xxx.'.xx
           x.@.xx
ENDMAP

NAME:   minmay_octagon_keep
ORIENT: float
DEPTH:  D:3-, Depths
SUBST:  0 = 0.
SUBST:  ' : .:40 cvbG
MAP
 ccccc     ccccc
cc0.0cc   cc0.0cc
c0...0ccccc0...0c
c..'.........'..c
c.....cc+cc.....c
cc...cc...cc...cc
 cc.cc.....cc.cc
  c.c.......c.c
  c.c...|...c.c
  c.c0.....0c.c
 cc.cc0...0cc.cc
cc0..cc000cc..0cc
c0....ccccc....0c
c..'.........'..c
c0....cc+cc....0c
cc0..cc . cc..0cc
 ccccc  @  ccccc
ENDMAP

NAME:   minmay_alternating_diamond
TAGS:   transparent
ORIENT: float
DEPTH:  D:1-2
SUBST:  0 = 0.
MAP
         xx.@
        xx..
       xx..xx
      xx....xx
     xx..xx..xx
    xx..xx....xx
   xx..xx..xx..xx
  xx..xx....xx..xx
 xx..xx..xx..xx..xx
xx00xx00xx%x00xx00xx
 xx..xx..xx..xx..xx
  xx..xx....xx..xx
   xx..xx..xx..xx
    xx..xx....xx
     xx..xx..xx
      xx....xx
       xx..xx
        xx..
         xx.@
ENDMAP

NAME:   minmay_inside_and_out
ORIENT: float
DEPTH:  D:11-, Depths
SUBST:  x : cvb
SUBST:  9 = 000999..
KMASK:  ' = !opaque
MAP
                '
               '''
              ''x''
             ''xxx''
            ''xx9xx''
           ''xx...xx''
          ''.x%...%x.''
       ''''..xxx.xxx..''''
       'xxxxx..x.x..xxxxx'
       'x9.%x..x.x..x%.9x'
      ''x..xx.9x.x9.xx..x''
     ''.x%x.xx%x.x%xx.x%x.''
    ''..xxxx.xxx.xxx.xxxx..''
   ''xxx...xx.......xx...xxx''
  ''xx%x..9%x.{...G.x%9..x%xx''
 ''xx..xxxxxx.......xxxxxx..xx''
''xx9...........T...........9xx''
 ''xx..xxxxxx.......xxxxxx..xx''
  ''xx%x..9%x.G...}.x%9..x%xx''
   ''xxx...xx.......xx...xxx''
    ''..xxxx.xxx.xxx.xxxx..''
     ''.x%x.xx%x.x%xx.x%x.''
      ''x..xx.9x.x9.xx..x''
       'x9.%x..x.x..x%.9x'
       'xxxxx..x.x..xxxxx'
       ''''..xxx.xxx..''''
          ''.x%...%x.''
           ''xx...xx''
            ''xx9xx''
             ''xxx''
              ''x''
               '''
                .
ENDMAP

NAME:    minmay_chambers_of_ones
ORIENT:  float
DEPTH:   D:1-2
SUBST:   x : xxxxxcccvb
MAP
xxxxxxxxxxxxxx
x...+x..xx0..x
x%G.x.xx0x.x.x
x...xxxx.x.x.+
xxxxxxx.xx+xxx
x...x.+xx...xx
x+x.x.xxx.x..x
x.x.0.x...xx.x
x.xxxxx+x0...x
x0......xxxxxx
xxxxxxxxx
ENDMAP

NAME:    minmay_chambers_of_twos
ORIENT:  float
DEPTH:   D:2-4
SUBST:   x : xxxxxcccvb
SHUFFLE: $%
MAP
 xxxx
 x..xxxx  xxxx
 x..+.0xxxx0.x
 x..x........x
xx..x........x
x...x..xx+x..x
x..0xxxx..xxxx
xx..+.$x0.Gxxxxxx
xx.0x.$xx.......x
x...x%.xx.......+
x...x%.x0.Gxxxxxx
x+xxxxxx..xx
x..xx..xx+xx
x..........x
x0..0......x
xxxxxxxxxxxx
ENDMAP

NAME:    minmay_chambers_of_threes
ORIENT:  float
DEPTH:   D:3-6
SUBST:   x : xxxxxcccvb
MAP
xxxxxxxxxxxxxxxxxxxx
xxxx0.....+..xxx...x
xx%x0.....x0..x+.G.x
x.xx0.....xx0..x...x
x...xxx...+xx0.x...x
x...x%x...x.xxx+.G.+
x....xx...x.0x.x...x
x......xxx+xx0.x...x
x0.....x%xx.0xx+.G.x
x00.....xxxx.xxx...x
xxxxxxxxxxxxxxxxxxxx
ENDMAP

NAME:    minmay_chambers_of_fours
ORIENT:  float
DEPTH:   D:4-8
SHUFFLE: xm / xm / xm / xm / xm / cn / cn / cn / vn / bn
MAP
     xxxxxxx
  xxxxx....xx
  x%%x.xxxx0x
xxx%%m.xxxx.x
x9.xxx.xxxx.x
x..xxx.xxxx.x
xxx0.xx.x0.xx
xxx..xx.x..xx
x..xxxx.x+xxxx
x0.xxxx0x....+
xxx....xx.GG.x
  xxxxxxx.GG.x
        x....x
        xxxxxx
ENDMAP

NAME:    minmay_chambers_of_sixes
ORIENT:  float
DEPTH:   D:6-12
SHUFFLE: xm / xm / xm / xm / xm / cn / cn / cn / vn / bn
MAP
    xxxx
 xxxx.Gxxxx
xx..+..+..xx
x9.Gm9.mG.9x
x.mxx+xxxm.x
x+x%%%%%%x+x
x0xxmxxmxx0x
x..Gx.0xG..x
xx..+..+..xx
 xxxxG.xxxx
    xx+x
ENDMAP

NAME:   minmay_chambers_of_sevens
ORIENT: float
DEPTH:  D:7-14
SUBST:  T = TTTTV
SUBST:  x : xxxxxcccvb
MAP
xxxxxxxxxxxxxxx
x.0.9%*b*%9.0.x
xx...9***9...xx
 xx....0....xx
  xx.......xx
   xx.....xx
    xx...xx
     xx.xx
   xxxx+xxxx
   x.......x
   x.T.0.T.x
 xxx..T....xxx
xx0+...T...+0xx
x..x....T..x..x
x..x.T.0.T.x..x
x..x.......x..x
xx+xxxxxxxxx+xx
 x...xxGxx...x
 xx..+.0.+..xx
 x0x.xG.Gx.x0x
 xxxxxG.Gxxxxx
     xG.Gx
     xx+xx
ENDMAP

NAME:   minmay_slanted_spiral_squares
TAGS:   transparent
ORIENT: float
DEPTH:  D:7-, Depths, Elf
SUBST:  ' = 0.., " = 09..
SUBST:  c : ccccvb
MAP
           ccc
         ccc'c
       ccc..'cc
     ccc....''c
     c.....c.'cc
    ccc..ccc.''c
  ccc'+...ccc.'cc
ccc'''cc..c...''ccc
c'''...c......c+c.c
cc..c..cc...ccc...cc
.c......c.ccc......c
.cc...ccccc.....c..cc
..c.c+c0c.....ccc...c
..ccc...cc..ccc*cc..cc
 ...cc...c...+***n...c
  ...c.c+cc..cc*ccc..cc
   ..ccc..c...ccc.."""c
    ......cc..c.."""ccc
     ......c..."""ccc
      .....cc"""ccc
       .....c"ccc
        ....ccc
ENDMAP

# and here's the obligatory big vault with lots of xp and |s
NAME:    minmay_complete_graph
ORIENT:  float
TAGS:    transparent
DEPTH:   D:11-, Depths
# average of 16 0s, 8 9s, and 4 8s
SUBST:   0 = 0 .:170, 9 = 9 .:140, 8 = 8 .:50
SUBST:   x : xcvb, ! = .xcvbTV|9, ? : .:100 TTTTV
FTILE:   .098TV| = floor_etched
MAP
            xxx@G@xxx
          xxx0000000xxx
        xxx00x00000x00xxx
      xxx00xx0x000x0xx00xxx
    xxx00xxx0x0x0x0x0xxx00xxx
    xG000000000000000000000Gx
   xx0000x0xxx0x9x0xxx0x0000xx
   x0000x000x9xx9xx9x000x0000x
  xx000x0xxx99xx9xx99xxx0x000xx
  x0x0x0x9xx9x99?99x9xx9x0x0x0x
 xx0x000xx9x9x99999x9x9xx000x0xx
 x0xx0x0xxx999xx8xx999xxx0x0xx0x
xx0x00xx99999xxx8xxx99999xx00x0xx
x0x0x0x99xx9x8xx8xx8x9xx99x0x0x0x
x00x000xx99xxx8x8x8xxx99xx000x00x
@000x0xxx99xxxx|||xxxx99xxx0x000@
G00000999?98888|!|88889?99900000G
@000x0xxx99xxxx|||xxxx99xxx0x000@
x00x000xx99xxx8x8x8xxx99xx000x00x
x0x0x0x99xx9x8xx8xx8x9xx99x0x0x0x
xx0x00xx99999xxx8xxx99999xx00x0xx
 x0xx0x0xxx999xx8xx999xxx0x0xx0x
 xx0x000xx9x9x99999x9x9xx000x0xx
  x0x0x0x9xx9x99?99x9xx9x0x0x0x
  xx000x0xxx99xx9xx99xxx0x000xx
   x0000x000x9xx9xx9x000x0000x
   xx0000x0xxx0x9x0xxx0x0000xx
    xG000000000000000000000Gx
    xxx00xxx0x0x0x0x0xxx00xxx
      xxx00xx0x000x0xx00xxx
        xxx00x00000x00xxx
          xxx0000000xxx
            xxx@G@xxx
ENDMAP

NAME:   minmay_s_stair_smasher
TAGS:   transparent
ORIENT: float
DEPTH:  D:7-14
SUBST:  1 = 0.
MAP
@.....                     .....@
x+xx.....               .....xx+x
x..xxx.....           .....xxx..x
x..x.xx.....         .....xx.x..x
xxx.xxx.....        ......xxx.xxx
x..x..xx.....       .....xx..x..x
x1.x.1xx......     ......xx1.x.1x
xxx.xxxx.......   .......xxxx.xxx
x..x..xxx0.............0xxx..x..x
x1.x.1x.x0.............0x.x1.x.1x
xxx.xx.xxx0...........0xxx.xx.xxx
x..x..x11xx...........xx11x..x..x
x1.x.1x11*xxx...{...xxx*11x1.x.1x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP

NAME:    nicolae_hexawheel
TAGS:    transparent
DEPTH:   D:10-, Depths
ORIENT:  float
KITEM:   z = | / * w:20 / % w:60 / nothing w:90
KMONS:   z = 8 / 9 w:20 / 0 w:60 / nothing w:90
# Q: "Why is that one glyph an ! instead of a letter?"
# A: Because I used L twice by accident and didn't want to rewrite everything.
: local layout = crawl.random2( 5 )
: if layout == 0 then         -- Circle Within Circle
NSUBST:  EFHJKL = c / +, !MNOPQ = + / +c / c, RSZapq = c / +
: elseif layout == 1 then    -- Spokes
SUBST:   !MNOPQ = +
NSUBST:  ER = c / +, FS = c / +, HZ = c / +, Ja = c / +, Kp = c / +, Lq = c / +
: elseif layout == 2 then    -- Three Cycles
SHUFFLE: FS/Ja/Lq
NSUBST:  E!MR = c / +, HNOZ = c / +, KPQp = c / +, FS = c / +, Ja = c / +, \
         Lq = +c / c
: elseif layout == 3 then    -- Two Cycles
SUBST:   PM = c+
NSUBST:  EF!NRS = c / +, JKOQap = c / +, Lq = c / +, HZ = c / +
: else                        -- One Cycle
NSUBST:  EHK!MNOPQSaq = c / +, FJLRZp = +c / c
: end
NSUBST:  D = 2=+ / 1=+c / c
SUBST:   r = c:50 +, 0 = .0009
MAP
       cccccccDccccccc
       cz...........zc
      ccc...........ccc
      czc...........czc
     cc.cc....0....cc.cc
     c...E.........F...c
    cc...cc.......cc...cc
    D.....ccccMcccc.....D
   cc....ccc.....ccc....cc
   c..0..c.c.....c.c..0..c
  cc....cc.cc.0.cc.cc....cc
  c.....!...R...S...N.....c
 cc....cc.0.cc.cc.0.cc....cc
 cz....c....zczcz....c....zc
ccccLcccccqcccrcccZcccccHcccc
 cz....c....zczcz....c....zc
 cc....cc.0.cc.cc.0.cc....cc
  c.....Q...p...a...O.....c
  cc....cc.cc.0.cc.cc....cc
   c..0..c.c.....c.c..0..c
   cc....ccc.....ccc....cc
    D.....ccccPcccc.....D
    cc...cc.......cc...cc
     c...K.........J...c
     cc.cc....0....cc.cc
      czc...........czc
      ccc...........ccc
       cz...........zc
       cccccccDccccccc
ENDMAP

NAME:   nicolae_fronds_of_death
TAGS:   transparent
DEPTH:  D:12-, Depths
ORIENT: float
SUBST:  0 = .....0009, 9 = ....9999, % = %%%%***|
: if you.in_branch("Depths") then
FTILE:  .%*|098G+xvc = floor_etched
: end
MAP
ccccc                 ccccc
cG%%ccc             ccc%%Gc
c%..v9ccc         ccc9v..%c
c%.8..+9ccc @@@ ccc9+..8.%c
ccv...v.+9ccc.ccc9+.v...vcc
 c9..0..x.+0c+c0+.x..0..9c
 cc+v...v.x.+.+.x.v...v+cc
  c9......x.x.x.x......9c
  cc+xv...v0x.x0v...vx+cc
   c9.......x.x.......9c
   cc+xxv...v0v...vxx+cc
    c0..0..0...0..0...c
   @cc+xxxv.....vxxx+cc@
   @.+....0..G..0....+.@
   @cc+xxxv.....vxxx+cc@
    c0..0..0...0..0..0c
   cc+xxv...v0v...vxx+cc
   c9.......x.x.......9c
  cc+xv...v0x.x0v...vx+cc
  c9......x.x.x.x......9c
 cc+v...v.x.+.+.x.v...v+cc
 c8..0..x.+.c+c.+.x..0..8c
ccv...v.+9ccc.ccc9+.v...vcc
c%.8..+9ccc @@@ ccc9+..8.%c
c%..v8ccc         ccc8v..%c
cG%%ccc             ccc%%Gc
ccccc                 ccccc
ENDMAP

NAME:   nicolae_herringbone
TAGS:   transparent
DEPTH:  Depths
ORIENT: float
SUBST:  T = .U V:30 T:130, - = |**%%%$$$$, \
        0 = .:50 0, 9 = .:50 9, 8 = .:50 8
MAP
      c           c           c
     ccc         ccc         ccc
    cc-cc       cc-cc       cc-cc
   cc-..cc     cc-..cc     cc-..cc
  cc-....cc   cc-....cc   cc-....cc
 cc-.888..cc cc-.888..cc cc-.888..cc
cc-..8T8...ccc-..8T8...ccc-..8T8...cc
 cc..888....ccc..888....ccc..888....cc
  cc......9..ccc......9..ccc......9..cc
   cc....999..ccc....999..ccc....999..cc
    cc..99T99..ccc..99T99..ccc..99T99..cc
     cc..999..0.ccc..999..0.ccc..999..0.cc
      cc..9..000.ccc..9..000.ccc..9..000.cc
       cc...00000.ccc...00000.ccc...00000.cc
        cc.000T000.ccc.000T000.ccc.000T000.cc
       cc+c.00000.c+c+c.00000.c+c+c.00000.c+cc
      cc.c+c.000.c+c.c+c.000.c+c.c+c.000.c+c.cc
     cc...c+c.0.c+c.0.c+c.0.c+c.0.c+c.0.c+c.0.cc
    cc..0..c+c.c+c.000.c+c.c+c.000.c+c.c+c.000.cc
   cc..000..c+c+c.00000.c+c+c.00000.c+c+c.00000.cc
  cc@.00T00..ccc.000T000.ccc.000T000.ccc.000T000.cc
     @.000..ccc...00000.ccc...00000.ccc...00000.cc
      @.0..ccc..9..000.ccc..9..000.ccc..9..000.cc
       @..ccc..999..0.ccc..999..0.ccc..999..0.cc
        @ccc..99T99..ccc..99T99..ccc..99T99..cc
        ccc....999..ccc....999..ccc....999..cc
        cc......9..ccc......9..ccc......9..cc
       cc..888....ccc..888....ccc..888....cc
      cc-..8T8...ccc-..8T8...ccc-..8T8...cc
       cc-.888..cc cc-.888..cc cc-.888..cc
        cc-....cc   cc-....cc   cc-....cc
         cc-..cc     cc-..cc     cc-..cc
          cc-cc       cc-cc       cc-cc
           ccc         ccc         ccc
            c           c           c
ENDMAP
